El problema del costo mínimo: tres soluciones comunes para la jerga

Problema de costo mínimo

Método uno método de programación de matriz de coeficientes 0-1

Código

Dado que no hay un formato de coloración de código de tipo jerga, primero daré una captura de pantalla, tal vez sea más claro
Inserte la descripción de la imagen aquí

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;

resultado de la operación

''
Inserte la descripción de la imagen aquí

Método dos de programación dinámica

Código

Inserte la descripción de la imagen aquí

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

resultado de la operación

Inserte la descripción de la imagen aquí

Método tres Método de matriz de adyacencia

Código

Inserte la descripción de la imagen aquí

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

resultado de la operación

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_41563270/article/details/108424940
Recomendado
Clasificación