支持 AMPL 中的“or”和“count”约束的优化器
Optimizer supporting `or` and `count` constraints in AMPL
我设计了一个AMPL模型。
我想给它添加一些约束,例如:
s.t. Max_dif_prod {t in 1..T}:
count {p in PRODUCTS} (production[p,t] > 0) <= max_dif_prod ;
s.t. Min_prod {p in PRODUCTS, t in 1..T}:
production[p,t] = 0 or production[p,t] >= min_production[p] ;
但 AMPL 网页中列出的默认求解器 (MINOS) 和开源非线性求解器(IPOPT、BONMIN 和 COUENNE)似乎都无法处理此类约束,而且由于我在演示中版本专有的 AMPL 非线性求解器是不可能的。
如果我想要这些限制,我可以使用什么求解器来代替?或者我如何用我上面提到的任何求解器可能能够解决的限制来替换它们?
AMPL书中的chapter about integer programming帮我解决了这个问题
我实施的解决方案是使用二进制变量重新制定限制,然后使用 CPLEX 求解器。
我设计了一个AMPL模型。
我想给它添加一些约束,例如:
s.t. Max_dif_prod {t in 1..T}:
count {p in PRODUCTS} (production[p,t] > 0) <= max_dif_prod ;
s.t. Min_prod {p in PRODUCTS, t in 1..T}:
production[p,t] = 0 or production[p,t] >= min_production[p] ;
但 AMPL 网页中列出的默认求解器 (MINOS) 和开源非线性求解器(IPOPT、BONMIN 和 COUENNE)似乎都无法处理此类约束,而且由于我在演示中版本专有的 AMPL 非线性求解器是不可能的。
如果我想要这些限制,我可以使用什么求解器来代替?或者我如何用我上面提到的任何求解器可能能够解决的限制来替换它们?
AMPL书中的chapter about integer programming帮我解决了这个问题
我实施的解决方案是使用二进制变量重新制定限制,然后使用 CPLEX 求解器。