Optimization zimpl中意外的VARSYM

Optimization zimpl中意外的VARSYM,optimization,linear-programming,scip,Optimization,Linear Programming,Scip,我在Zimpl代码中得到一个意外的VARSYM。以下是我代码的一部分: param T := 0.8; var S[Sensors] binary; minimize nb_sensors : sum < i > in Sensors : S[ i ]; subto fd: 1- prod <k,l> in Sensors*Pipe : (1-ord(Proba[k,l],1,1) * S[k]) >= T; 参数T:=0.8; var S[传

我在Zimpl代码中得到一个意外的VARSYM。以下是我代码的一部分:

param T := 0.8;
var S[Sensors] binary;

minimize nb_sensors : sum < i > in Sensors : S[ i ];

subto fd:

     1- prod <k,l>  in Sensors*Pipe : (1-ord(Proba[k,l],1,1) * S[k])  >= T;
参数T:=0.8;
var S[传感器]二进制;
最小化传感器中的nb_传感器:和:S[i];
小计fd:
1-传感器中的产品*管道:(1-ord(概率[k,l],1,1)*S[k])>=T;

这个错误似乎是因为我在函数(
prod
)中有一个变量(
S[]
),你知道这个问题吗?

什么是T,变量还是常量?您是否尝试将产品写在括号中:

1- (prod <k,l>  in Sensors*Pipe : (1-ord(Proba[k,l],1,1) * S[k]))  >= T;
1-(传感器中的产品*管道:(1-ord(Proba[k,l],1,1)*S[k])>=T;
或者重写为:

prod <k,l>  in Sensors*Pipe : (1-ord(Proba[k,l],1,1) * S[k]) + T <= 1;

prod-in-Sensors*Pipe:(1-ord(Proba[k,l],1,1)*S[k])+T是的,我尝试了这两种方法,但出现了相同的错误。但是,当我试图用
sum
替换
prod
时,没有发生错误!!你怎么认为?这可能是
prod
功能中的一个错误吗?好的。我认为问题在于zimpl不能处理大小大于2的可变乘积项,即双线性项是可以的。您的fd类型的每个约束看起来像:((1-a)*S[1])*((1-b)*S[2])*((1-k)*S[k])每个约束看起来像:
(1-(a*S[1])*(1-(b*S[2])*(1-(c*S[3])…
您认为这种情况下的解决方案是什么?您知道任何其他可以处理此类产品的语言吗??谢谢你的评论。有一些商业语言,例如mosel(xpress)和gams,可能会处理这些限制。我认为在你的情况下,这将是最简单的方式来实现你的问题,直接在一个解决方案,例如,scip。