线性编程约束:优化变量的乘法

时间:2013-04-03 08:16:34

标签: matlab optimization constraints linear-programming

给出两个优化变量(x_in(t)x_out(t))的优化问题。对于任何时间步,当x_in非零时,x_out必须为零(反之亦然)。写作约束:

x_in(t)*x_out(t)=0

如何将这样的约束包含在Matlab的linprog函数中?

1 个答案:

答案 0 :(得分:4)

由于问题不完全是线性的,我不相信你可以使用linprog函数原样解决它。但是,您应该能够将问题重新表述为mixed integer linear programming问题。然后,您可以使用 Matlab Central 中的this extension来解决问题。

假设x_in(t)x_out(t)分别是上限为x_in_maxx_out_max的非负变量,那么您可以添加变量y_in(t)y_out(t)您的优化问题并包含以下约束:

(1) y_in(t) and y_out(t) are binary, i.e. 0 or 1
(2) x_in(t)  <= x_in_max  * y_in(t)
(3) x_out(t) <= x_out_max * y_out(t)
(4) y_in(t) + y_out(t) = 1

鉴于y_iny_out是二元变量,约束(2)和(3)将x_y_变量相互关联,并确保{ {1}}变量保留在边界内(x_变量的修复边界因此可以从问题公式中删除 。约束(4)确保x__in事件发生,但不能同时发生。