首页 > 解决方案 > 在 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] ;

但无论是默认求解器 (MINOS) 还是 AMPL 网页中列出的开源非线性求解器(IPOPT、BONMIN 和 COUENNE)似乎都无法处理这种类型的约束,而且由于我处于演示版本中,因此专有的 AMPL 非线性求解器是不可能的。

如果我想要这些限制,我可以使用什么求解器?或者我怎样才能用我上面提到的任何求解器都可以解决的限制来代替它们?

标签: optimizationsolverampl

解决方案


AMPL 书中关于整数规划的章节帮助我解决了这个问题。

我实施的解决方案是使用二进制变量重新制定限制,然后使用 CPLEX 求解器。


推荐阅读