给定一个具有两个优化变量 ( x_in(t)
, x_out(t)
) 的优化问题。对于任何时间步,当x_in
非零时,x_out
必须为零(反之亦然)。写成约束:
x_in(t)*x_out(t)=0
linprog
Matlab的函数中如何包含这样的约束?
给定一个具有两个优化变量 ( x_in(t)
, x_out(t)
) 的优化问题。对于任何时间步,当x_in
非零时,x_out
必须为零(反之亦然)。写成约束:
x_in(t)*x_out(t)=0
linprog
Matlab的函数中如何包含这样的约束?
由于问题不是完全线性的,我不相信您可以使用该linprog
函数原样解决它。但是,您应该能够将问题重新表述为混合整数线性规划问题。然后,您将能够使用例如来自Matlab Central的这个扩展来解决问题。
假设x_in(t)
和x_out(t)
分别是具有上限 和 的非负变量x_in_max
,x_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_in
andy_out
是二元变量,约束 (2) 和 (3) 将x_
andy_
变量相互关联并确保x_
变量保持在界限内(x_
因此可以并且应该从问题公式中删除变量的固定界限)。约束 (4) 确保事件_in
或_out
事件发生,但不能同时发生。