c*******t 发帖数: 1095 | 1 本人用的 GLPK, 但是里面“条件”只能是 不等式 比如:
目标:求最小 X
条件: X《3, X+Y《8, Y>7 之类的
但是现在问题是“条件”里面需要出现 min 或max 函数,比如
目标:求最小 X
条件: X《3, X+Y《8, Y=min(Z1,Z2), Z1<=.......
如果只能用不等式,那么我只能写成 Y<= Z1, Y<=Z2, 但这样解出来的值是错误的,有
啥办法没有?
谢谢 | r*******y 发帖数: 1081 | 2 Y= min(Z1, Z2)当然不能只写成 Y <= Z1, Y<= Z2
【在 c*******t 的大作中提到】 : 本人用的 GLPK, 但是里面“条件”只能是 不等式 比如: : 目标:求最小 X : 条件: X《3, X+Y《8, Y>7 之类的 : 但是现在问题是“条件”里面需要出现 min 或max 函数,比如 : 目标:求最小 X : 条件: X《3, X+Y《8, Y=min(Z1,Z2), Z1<=....... : 如果只能用不等式,那么我只能写成 Y<= Z1, Y<=Z2, 但这样解出来的值是错误的,有 : 啥办法没有? : 谢谢
| c*******t 发帖数: 1095 | 3 我知道不能,我想问的是有人用过LP solver当中有没有什么选项可以实现的? | D*******a 发帖数: 3688 | 4 把Y乘上一个大系数放在目标函数中
【在 c*******t 的大作中提到】 : 本人用的 GLPK, 但是里面“条件”只能是 不等式 比如: : 目标:求最小 X : 条件: X《3, X+Y《8, Y>7 之类的 : 但是现在问题是“条件”里面需要出现 min 或max 函数,比如 : 目标:求最小 X : 条件: X《3, X+Y《8, Y=min(Z1,Z2), Z1<=....... : 如果只能用不等式,那么我只能写成 Y<= Z1, Y<=Z2, 但这样解出来的值是错误的,有 : 啥办法没有? : 谢谢
| d*****1 发帖数: 1837 | 5 引入binary variables, 线性化 min(z1, z2) | c*******t 发帖数: 1095 | 6 恩,这是种办法,还有一种办法是用yahoo group 的lp_solver 有个 SOS(special
order sets) 的功能,有人知道哪种快一点么?
【在 d*****1 的大作中提到】 : 引入binary variables, 线性化 min(z1, z2)
| d*****1 发帖数: 1837 | 7 let z = min(z1, z2)
z <= z1
z <= z2
z - z1 + M*y1 >= 0
z - z2 + M*y2 >= 0
y1 + y2 = 1 ;
y1, y2 are binary
M is big number
I don't know how to reformulate the SOS |
|