
model:
sets:
row/113/:y;
col/115/;
link(row,col):a,d;
endsets
max=@sum(row:y);
@for(row(i):@sum(col(j):a(i,j))=1);
@for(col(j):@sum(row(i):a(i,j))<=1);
@for(link(i,j):a(i,j)d(i,j)y(i)<=3);
@for(link(i,j):y(i)<=a(i,j));
end
你这个求和的写法本身就不对 你这三个下标之间并没有关系 为什么不分开写
sets:
set1/18/:x,z;
set2/1150/:y;
endsets
这个和的表达式是
@sum(set1:x+z)+@sum(set2:y);
function x=linliu(c,A,b)
[n1,n2]=size(A);
A=[A,eye(n1)];c=[-c,zeros(1,n1)];
x1=[zeros(1,n2),b'];lk=[n2+1:n1+n2];
fp=fopen('f:\lium','wt');
fprintf(fp,'初始单纯形表:\n');
while(1)
x=x1(1:n2);
s1=[lk',b,A]
c
x1
fprintf(fp,' 基 b');
for j=1:n2+n1
fprintf(fp,' x%d ',j);
end
fprintf(fp,'\n');
for i=1:n1
fprintf(fp,'%41f %41f',lk(i),b(i));
for j=1:n2+n1
fprintf(fp,'%41f ',A(i,j));
end
fprintf(fp,'\n');
end
fprintf(fp,' ');
for i=1:n1+n2
fprintf(fp,'%41f ',c(i));
end
fprintf(fp,'\n解为:\n');
for i=1:n2+n1
fprintf(fp,'x(%d)=%32f,',i,x1(i));
end
cc=[];ci=[];
for i=1:n1+n2
if c(i)<0
cc=[cc,c(i)];
ci=[ci,i];
end
end
nc=length(cc);
if nc==0
fprintf('达到最优解');
fprintf(fp,'\n达到最优解');
break
end
cliu=cc(1);
cl=ci(1);
for j=1:nc
if abs(cc(j))>abs(cliu)
cliu=cc(j);
cl=j;
end
end
cc1=[];ci1=[];
for i=1:n1
if A(i,cl)>0
cc1=[cc1,A(i,cl)];
ci1=[ci1,i];
end
end
nc1=length(cc1);
if nc1==0
fprintf('无有界最优解');
fprintf(fp,'无有界最优解');
break
end
cliu=b(ci1(1))/cc1(1);
cl1=ci1(1);
for j=1:nc1
if b(ci1(j))/cc1(j)<cliu
cliu=b(ci1(j))/cc1(j);
cl1=ci1(j);
end
end
fprintf(fp,'\nx(%d)入基,x(%d)出基\n',cl,lk(cl1));
fprintf('\nx(%d)入基,x(%d)出基\n',cl,lk(cl1));
b(cl1)=b(cl1)/A(cl1,cl);
A(cl1,:)=A(cl1,:)/A(cl1,cl);
for k=1:n1
if k~=cl1
b(k)=b(k)-b(cl1)A(k,cl);
A(k,:)=A(k,:)-A(cl1,:)A(k,cl);
end
end
c=c-c(cl)A(cl1,:);
x1(lk(cl1))=0;
lk(cl1)=cl;
for kk=1:n1
x1(lk(kk))=b(kk);
end
x=x1(1:n2);
end
fclose(fp);
检验:p31页 运筹学 清华版
format rat
c=[2 3];A=[1 2;4 0;0 4];b=[8;16;12];
x=linliu(c,A,b)
以上就是关于哪位大侠帮助我们看一下这个lingo程序怎么写,有急用,高分跪求!!!!!!!!!全部的内容,包括:哪位大侠帮助我们看一下这个lingo程序怎么写,有急用,高分跪求!!!!!!!!!、用lingo求和,写出程序、lingo编写单纯形法的程序怎么写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)