线性形式相乘不允许错误

问题描述

我正在尝试解决设施位置问题。这是我的代码:

set S;
param prod{i in S};
param distri{i in S};
param fixed{i in S};
param cap{i in S};
param demand{i in S};

var x{i in S,j in S},>= 0;
var y{i in S},binary;

minimize obj :
  sum{i in S} fixed[i]*y[i] + 
  sum{i in S,j in S} x[i,j]*(prod[i] + distri[i])*y[i];


s.t. c1{i in S}:
    sum{j in S} x[i,j]*y[i] <= cap[i];
  

s.t. c2{i in S}:
    sum{j in S} x[j,i]*y[j] = demand[i];

display S;

solve;

printf '\n  Solution: \nMinimum Cost = %.2f\n',obj;

display x;
display y;

data;

set S := 0 1 2 3;

param prod :=
  0 20
  1 30
  2 40
  3 50;

param distri :=
  0 60
  1 70
  2 80
  3 90;

param fixed :=
  0 10
  1 15
  2 10
  3 15;

param cap :=
  0 100
  1 110
  2 120
  3 130;

param demand :=
  0 120
  1 60
  2 70
  3 100;

end;

运行此.mod文件时,出现以下错误:

example.mod:13: multiplication of linear forms not allowed
Context:  S } x [ i,j ] * ( prod [ i ] + distri [ i ] ) * y [ i ] ;
MathProg model processing error

这里x是设施'i'为客户'j'提供的部分需求。

我从提到的行中删除了y [i],错误消失了。但是,如果这样做,我会得到相同的乘法错误,但是这次是在c1约束中。

正确的方法是什么?谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)