如何解决线性形式相乘不允许错误
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
约束中。
正确的方法是什么?谢谢。
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。