问题描述
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;
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
约束中。
正确的方法是什么?谢谢。