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
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
温馨提示:答案为网友推荐,仅供参考