matlab - 线性规划约束 : multiplication of optimization variables

标签 matlab optimization constraints linear-programming

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

x_in(t)*x_out(t)=0

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

最佳答案

由于问题不完全是线性的,我认为您不能使用 linprog 函数按原样解决它。但是,您应该能够将问题重新表述为 mixed integer linear programming问题。然后你就可以使用例如 this extensionMatlab Central 解决问题。

假设 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_ 变量并确保 x_ 变量保持在范围内(修复 x_ 变量的范围因此可以并且应该移除来自问题的表述)。约束 (4) 确保 _in_out 事件发生,但不会同时发生。

关于matlab - 线性规划约束 : multiplication of optimization variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15782146/

相关文章:

ios - 以编程方式添加时,rightAnchor 约束不适用 - swift

c# - 为所有枚举添加扩展方法,而不仅仅是特定类型

matlab - 如何 append 到 Octave 中的矢量?

MATLAB调试: smarter way to stop the code with an specific condition?

javascript - html5 canvas - 保存路径或剪辑区域以重复使用

MySQL 查询优化快把我逼疯了!几乎一样,但又截然不同

multidimensional-array - 在系统verilog中的约束条件下求和二维数组

matlab - 如何在matlab中通过命令触发断点

algorithm - 这条线在matlab中是什么意思? Dijkstra算法的简单实现

java - 如何优化这个SQL删除