约束转化
OPTIMake中支持对约束进行软化、无效化与硬化的操作, 以满足不同的需求:
- 约束软化为建模时指定约束为软约束, 以减少内存占用与计算时间
- 约束无效化及硬化则为在求解时动态调整约束的有效性与软硬属性
约束软化
OPTIMake中内置了对约束软化的支持, 通过该 接口能够减少内存占用与计算时间.
约束软化可分为对等式约束的软化与对不等式约束的软化, OPTIMake在以下接口中提供了约束软化支持:
variable(变量的上下限, 不等式约束)inequality(不等式约束)equality(等式约束)start_equality(等式约束)end_equality(等式约束)
软化的惩罚类型支持:
'quadratic''l1'
上面的问题定义章节中介绍了如何使用这些接口软化约束, 我们以以下的通用问题形式介绍OPTIMake中约束软化的问题设定. 需要注意的是, 下面的代表slack变量而非参数.
等式约束软化
当软化的惩罚类型为'quadratic'时, 软化问题的定义如下 ( 为惩罚权重, 为约束软化的slack变量):