我正在尝试设置一个约束,该约束取决于最小化的函数值。
我遇到的问题具有以下性质:
fmin =最小化(d1x1 + d2x2 ... + d5x5)
我希望通过以下约束来优化:
select "name" into myvar from "mytable" where "id" = 15 limit 1;
在这种情况下,y1 .. yn是标量常量。
x1+X2+x3+x4+x5 = 1
0.003 <x1 .. X5 < 0.05
d1x1/fmin = y1
(d2x2+d3x4)/fmin = y2
(d4x4+d5x5)/fmin = y3
所以我需要定义:
x1d1 / fmin = y1作为约束之一。
这里最佳值向量将是(d1 ... dn)。然而,这也必须满足约束d1 / minimize(d1 ... dn)= y1作为示例。
我该如何设置?我使用什么样的优化器?
我可以使用excel解算器轻松完成此操作 - 但现在我想在python中编写代码。我正在尝试使用scipy.linprog,但我不确定这是一个线性编程问题还是我需要使用另一种方法。我无法想到在linprog中为这个问题设置约束的方法。任何人都可以帮助我吗?
答案 0 :(得分:1)
假设d1, ..., dn
也是标量常量,那么例如约束
d1*x1/fmin==y1
可以改写为
d1*x1==y1*d1*x1+y1*d2*x2+...+y1*dn*xn
这可以归一化为
(d1-y1*d1)*x1 - y1*d2*x2 - y1*d3*x3 - ... - y1*dn*xn == 0
可用作线性求解器的输入。