用Lingo编写个程序,求最大值.
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/22 13:11:03
用Lingo编写个程序,求最大值.
求目标函数Z的最大值以及所有b,s,x,m.
条件:已知y(i),d(i),dist(i,j);
s>0;x取整;m>0;
1
求目标函数Z的最大值以及所有b,s,x,m.
条件:已知y(i),d(i),dist(i,j);
s>0;x取整;m>0;
1
![用Lingo编写个程序,求最大值.](/uploads/image/z/386809-25-9.jpg?t=%E7%94%A8Lingo%E7%BC%96%E5%86%99%E4%B8%AA%E7%A8%8B%E5%BA%8F%2C%E6%B1%82%E6%9C%80%E5%A4%A7%E5%80%BC.)
说实话你写的很乱 有些地方表达都是混乱的 我只能给你写成这样
sets:
sj/1..154/:s;
si/1..21/:b,y,d;
sij(si,sj):m,x,dist,t;
endsets
calc:
@for(sij:t=@if(dist#eq#0,1,@if(dist#le#10,2,3.33)));
endcalc
max=@sum(sj:s)+@sum(si:y*b);
@for(sj(j):s(j)=@sum(si(i):m(i,j)));
@for(si(i):y(i)=@sum(sj(j):x(i,j)));
@for(si(i):d(i)=@sum(sj(j):t(i,j)*m(i,j)+t(i,j)*x(i,j)));
@for(sij(i,j):s(j)>=20*x(i,j);s(j)
sets:
sj/1..154/:s;
si/1..21/:b,y,d;
sij(si,sj):m,x,dist,t;
endsets
calc:
@for(sij:t=@if(dist#eq#0,1,@if(dist#le#10,2,3.33)));
endcalc
max=@sum(sj:s)+@sum(si:y*b);
@for(sj(j):s(j)=@sum(si(i):m(i,j)));
@for(si(i):y(i)=@sum(sj(j):x(i,j)));
@for(si(i):d(i)=@sum(sj(j):t(i,j)*m(i,j)+t(i,j)*x(i,j)));
@for(sij(i,j):s(j)>=20*x(i,j);s(j)