最小费用问题——lingo求解的三种常见解法

最小费用问题

方法一 系数矩阵0-1规划法

代码

由于没有lingo类型的代码涂色格式,我先给个截图,也许会看的清晰一些
在这里插入图片描述

model:

sets:
node/1..6/;
road(node,node)/1,2,1,3,2,4,2,5,3,4,3,5,4,6,5,6/:w,f;
endsets

data:
w=2,1,5,3,4,3,0,0;
enddata

n=@size(node);

min=@sum(road(i,j):w(i,j)*f(i,j));

@for(node(i)|i#ne#1 #and# i#ne#n:
	@sum(road(i,j):f(i,j))=@sum(road(j,i):f(j,i))
);

@sum(road(i,j)|i#eq#1:f(i,j))=1;
@sum(road(j,i)|i#eq#n:f(j,i))=1;

运行结果

‘’
在这里插入图片描述

方法二 动态规划

代码

在这里插入图片描述

model:

sets:
node/1..6/:L;
road(node,node)/1,2,1,3,2,4,2,5,3,4,3,5,4,6,5,6/:c;
endsets

data:
c=2,1,5,3,4,3,0,0;
enddata

L(1)=0;

@for(node(i)|i#gt#1:
	L(i)=@min(road(j,i)|j#ne#i:L(j)+c(j,i))
);


end

运行结果

在这里插入图片描述

方法三 邻接矩阵法

代码

在这里插入图片描述

model:

sets:
node/1..6/:L;
road(node,node):a,w;
endsets

data:
a=
0,1,1,0,0,0,
0,0,0,1,1,0,
0,0,0,1,1,0,
0,0,0,0,0,1,
0,0,0,0,0,1,
0,0,0,0,0,0;
w=
9,2,1,9,9,9,
9,9,9,5,3,9,
9,9,9,4,3,9,
9,9,9,9,9,0,
9,9,9,9,9,0,
9,9,9,9,9,9;
enddata

L(1)=0;
@for(node(i)|i#ne#1:
	L(i)=@min(road(j,i)|j#ne#i #and# a(j,i)#ne#0:
		L(j)+w(j,i)));

end

运行结果

在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41563270/article/details/108424940