最近在用线性规划,有一个比较有趣的问题,记录一下思路。
如何用线性规划约束一个矩形在Polygon内部?
- 问题:有如下图蓝色矩形,用线性规划表示出绿色矩形被约束在polygon内部,矩形的中心坐标是(x, y),宽和高为w,h。
方式如下所示:
- 可以拆分为下述两个矩形,分割方式为,首先找到多边形的一个顶点,这个顶点相邻边的延长线,可以将多边形分为两部分,之后在分割之后的四个矩形中选中两个矩形,这两个矩形有overlap区域。如下图所示
- 此时,分别求矩形在两个约束矩形的并集就行,通过提添加一个大的参数M以及一个整数变量z,这个z只能取0和1,即可通过线性规划的表达式表示绿色矩形被约束在多边形内部。
- 这里M是一个比较大的数,当Z = 1时,表示满足第一个矩形的约束,当Z=0时,表示满足第二个矩形的约束,所以两个矩形约束的并集如下表示:
- 当polygon的边增多也能解决,可以通过多次分割,转换为多个矩形约束的并集即可。如下图所示
结束。