Optimization 优化器支持AMPL中的`or`和`count`约束

Optimization 优化器支持AMPL中的`or`和`count`约束,optimization,solver,ampl,Optimization,Solver,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] ; s.t.Max

我设计了一个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] ;
s.t.Max_dif_prod{t in 1..t}
产品中的计数{p}(生产[p,t]>0)=最小生产[p];
但无论是默认解算器(MINOS)还是AMPL网页中列出的开源非线性解算器(IPOPT、BONMIN和COUENNE),似乎都无法处理这种类型的约束,因为我在演示版本中,专有AMPL非线性解算器是不可能的

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

AMPL书中的内容帮助我解决了这个问题


我实现的解决方案是使用二进制变量重新设置限制,然后使用CPLEX解算器。

。。。您的模型基于什么文档?它告诉您哪些解算器受支持?如果没有AMPL exp,快速搜索会让我想到
,co保留给CP解算器和CPLEX。你可以自己做一个基于MIP的配方。随便找一本关于整数规划的书,或者从开始<代码>生产[p,t]=0或生产[p,t]>=min_生产[p]
只是rhs的指标公式,然后
(1-生产[p,t])+指标>=1
(假设产品为bin)。