如何设置依赖于临时最小化函数的约束?
How to setup a constraint that depends on interim minimized function?
我正在尝试设置一个取决于最小化函数值的约束。
我遇到的问题具有以下性质:
fmin = 最小化 (d1x1 +d2x2 ... +d5x5)
我想在以下限制条件下优化的地方:
x1+X2+x3+x4+x5 = 1
0.003 <x1 .. X5 < 0.05
d1x1/fmin = y1
(d2x2+d3x4)/fmin = y2
(d4x4+d5x5)/fmin = y3
在这种情况下,y1..yn 是标量常数。
The problem I am having is that I dont know how to setup the A_ub or A_eq
In linprog so that B_ub = y1*fmin for d1x1 for example.
所以我需要以某种方式定义:
x1d1/fmin = y1 作为约束之一。
此处最优值向量为 (d1 .. dn)。但是,这也必须满足约束条件 d1/minimized(d1.. dn) = y1 作为示例。
我该如何设置?我使用哪种优化器?
我可以使用 excel 求解器轻松完成此操作 - 但现在我想在 python 中对此进行编码。我正在尝试使用 scipy.linprog 但我不确定这是线性规划问题还是我需要使用其他方法。我想不出一种方法来为这个问题在 linprog 中设置约束。谁能帮帮我?
假设 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
可用作线性求解器的输入。
我正在尝试设置一个取决于最小化函数值的约束。
我遇到的问题具有以下性质:
fmin = 最小化 (d1x1 +d2x2 ... +d5x5)
我想在以下限制条件下优化的地方:
x1+X2+x3+x4+x5 = 1
0.003 <x1 .. X5 < 0.05
d1x1/fmin = y1
(d2x2+d3x4)/fmin = y2
(d4x4+d5x5)/fmin = y3
在这种情况下,y1..yn 是标量常数。
The problem I am having is that I dont know how to setup the A_ub or A_eq
In linprog so that B_ub = y1*fmin for d1x1 for example.
所以我需要以某种方式定义:
x1d1/fmin = y1 作为约束之一。
此处最优值向量为 (d1 .. dn)。但是,这也必须满足约束条件 d1/minimized(d1.. dn) = y1 作为示例。
我该如何设置?我使用哪种优化器?
我可以使用 excel 求解器轻松完成此操作 - 但现在我想在 python 中对此进行编码。我正在尝试使用 scipy.linprog 但我不确定这是线性规划问题还是我需要使用其他方法。我想不出一种方法来为这个问题在 linprog 中设置约束。谁能帮帮我?
假设 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
可用作线性求解器的输入。