Def*_*_Os 5 python optimization numpy
我的优化问题涉及数以千计的线性约束。我想通过找到冗余约束来降低我的问题的复杂性,例如3 * x + 4 * y < 10
,如果我已经有一个约束是4 * x + 5 * y < 10
(x
并且y
是>= 0
,这就是我的问题的情况)。
所以,我有一个包含所有系数的 numpy 数组,它看起来像这样,例如:
[[0.1, 3.0, 4.8, 0.2],
[1.0, 4.7, 5.3, 0.1],
[2.2, 4.3, 5.2, 1.1]]
Run Code Online (Sandbox Code Playgroud)
表示约束:
0.1 * w + 3.0 * x + 4.8 * y + 0.2 * z < 10
1.0 * w + 4.7 * x + 5.3 * y + 0.1 * z < 10
2.2 * w + 4.3 * x + 5.2 * y + 1.1 * z < 10
Run Code Online (Sandbox Code Playgroud)
我如何有效地找出哪些是多余的?
我的常识告诉我做一个循环(伪代码):
for i, row1 in enumerate(array):
for j, row2 in enumerate(array):
if j > i:
if all(row1 > row2):
delete row
Run Code Online (Sandbox Code Playgroud)
但这对于数千个缓慢的约束。有什么办法可以加快速度?
归档时间: |
|
查看次数: |
651 次 |
最近记录: |