这个Lingo程序如何写?为什么我算了之后没有可行解? 数据没有错

d(i,j)=a1(i,j)/a2(i,j)
k(i,j)=b(i,j)/a2(i,j)
d(i,j)<=k(i,j)<=1
b(i,j)每一列求和<=Z(j)
b(i,j)>=0

目标:s(i,j)与k(i,j)每行对应元素乘积之和的和最大,即为i个乘积和的和最大

a1(i,j),a2(i,j),s(i,j)为已知,Z(j)为已知

a1=350 50 48 15 320
4500 600 600 100 3500
1800 180 300 300 1200
90 6 9 10 64
14 3.5 3.5 1.5 9.6;

a2=500 100 80 30 400
5000 1000 1000 2000 5000
2000 300 500 500 2000
100 10 15 20 80
14 7 7 3 12;

z=4000 10000 4000 250 40;

s=0.4746 0.4036 0.2765 0.4146 0.4886
0.1403 0.1681 0.0999 0.1624 0.0643
0.1475 0.1905 0.1564 0.1832 0.0685
0.0626 0.0311 0.0619 0.0316 0.0453
0.1750 0.2067 0.4053 0.2082 0.3333;

你写的应该有点问题 按你给的数据来看 好像题目说每行求和<=z(i)才对
model:
sets:
set/1..5/:z;
ss(set,set):a1,a2,b,k,s,d;
endsets
data:
a1=350 50 48 15 320
4500 600 600 100 3500
1800 180 300 300 1200
90 6 9 10 64
14 3.5 3.5 1.5 9.6;

a2=500 100 80 30 400
5000 1000 1000 2000 5000
2000 300 500 500 2000
100 10 15 20 80
14 7 7 3 12;

z=4000 10000 4000 250 40;

s=0.4746 0.4036 0.2765 0.4146 0.4886
0.1403 0.1681 0.0999 0.1624 0.0643
0.1475 0.1905 0.1564 0.1832 0.0685
0.0626 0.0311 0.0619 0.0316 0.0453
0.1750 0.2067 0.4053 0.2082 0.3333;
enddata
max=@sum(ss:s*k);
@for(ss:
d=a1/a2;
k=b/a2;
d<=k;
k<=1);
@for(set(i):@sum(set(j):b(i,j))<=z(i));
end
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网