在这个例子中, 我们演示了如何在OPTIMake的框架下构建并求解通用优化问题, 即stage数为1的问题.
当stage数设置为1时, OPTIMake的建模接口退化为:
v1minl(v1,p)subject tofs(v1,p)=0,g(v1,p)≥0
- 上述优化问题为通用的优化问题形式, 其中目标函数, 等式约束, 不等式约束分别通过建模接口函数
objective, start_equality, inequality定义
- stage数为1时, 涉及到多stage的建模接口函数不可调用:
end_objective, end_equality, equality
OPTIMake并不是针对大规模通用优化问题的求解所设计. 当满足以下条件时, OPTIMake能实现对通用优化问题 (stage数为1问题)的高效建模与求解:
- 变量/约束维度小于100
- 具备固定的维度与稀疏结构
问题描述
圆和矩形之间的最近距离 (圆与矩形相交时, 最近距离为0) 可以构建为优化问题求解.
设矩形的中心为 (x,y),长宽分别为 l,w, 圆心在原点,半径为 r.
假设(xr,yr)和(xo,yo)分别为矩阵和圆内的点, 那么最近距离问题可以描述为最小化(xr,yr)和(xo,yo)之间的距离, 即
dmin2=min(xr−xo)2+(yr−yo)2subject to(xr,yr)∈Rectangle,(xo,yo)∈Circle
(xo,yo)在圆内可以通过下面的二次约束描述:
xo2+yo2≤r2
(xr,yr)在矩形内可以通过多种方式描述, 这里我们采用矩形的顶点来描述.
设矩形的四个顶点为(v1,v2,v3,v4). 那么矩阵内的点可以描述为4个顶点的加权平均, 即
(xr,yr)=θ1v1+θ2v2+θ3v3