Programación de software Lingo, ¡los expertos pueden ayudar!
1. En primer lugar: ¿ch9505 está enfermo? Recuerdo que hice una pregunta la última vez y él la copió directamente.
2. Entonces comencé a ayudarte a responder esta pregunta:
Todos los códigos son originales y me tomó alrededor de una mañana ayudarte a resolverlo. Aunque esta pregunta no es demasiado difícil, los datos son un poco engorrosos. Hay muchas declaraciones de cobro con diferentes dimensiones. Espero que pueda ayudarte.
Parte del programa:
MODELO:
CONJUNTOS:
program/1..4/;! Definir cuatro proyectos;
p>
factory/1, 2/: totaltime;! Definir dos talleres Nota: En este programa, acordamos que el comienzo de q representa la cantidad y el comienzo de c representa el costo. > almacén/1, 2, 3/;! Defina tres almacenes;
acero/A, B, C, D/;! Defina cuatro materiales de acero (el cuarto material de acero de la colección son puertas de acero de plástico y ventanas);
componente/1, 2/;! Definir dos componentes;
linka (acero, almacén): qlinka;! Tabla 2.1== Inventario de acero en el almacén;
linkb (componente, acero): qlinkb;! Tabla 2.2== Cantidad de acero requerida por unidad de componente;
linkc (fábrica, componente): tiempo, costo, qlinkc;! Tabla 2.3 2.4== Costo de producción del taller (amp; Consume tiempo);
linkd(programa, componente): cpdemand;! Tabla 2.5, cpdemand significa "demanda de componentes"
<; p> linke(programa, acero): stdemand;! Tabla 2.5, stdemand para "demanda de acero" Demanda de acerolinkf (fábrica, acero): qlinkf
deepa (fábrica); , programa, componente): qdeepa; !2*4*2=16 cantidades;
deepb(almacén, programa, acero): qdeepb;!3*4*4=48 cantidades;
deepc(acero, almacén, fábrica): qdeepc;! 4*3*2=24;
!deepd (fábrica, componente, acero): qdeepd;! ;
transa (fábrica, programa): qtransa, ctransa;! Transporte entre esta colección y las dos siguientes colecciones, almacén, taller y proyecto.
Tabla 2.6;
transb(almacén, programa): qtransb, ctransb;
transc(almacén, fábrica): qtransc, ctransc
ENDSETS
DATOS:
qlinka=
4000 4000 6000
3000 3500 2500
3000 5000 5000
200 250 100;
qlinkb=
15 10 20 0
20 10 15 0;
tiempo total= 35000 60000;
tiempo=100 200
200 100
costo=6600 7800
6500
cpdemanda; =
50 100
30 60
100 200
50 80
demanda estándar=
100 70 0 100
50 80 0 120
30 90 0 80
70 60 0 200;
ctransa =
100 150 80 70
50 60 80 90;
ctransb=
40 20 30 50
60 40 80 100
50 60 75 85;
ctransc=
40 80
100 20
80 40;
ENDDATA
MIN=@sum(linkc:coste*qlinkc) @sum(transa:qtransa*ctransa) @sum(transb:qtransb*ctransb) @sum (transc: qtransc*ctransc);
!1. Restricciones de requisitos de componentes
@for(linkd(i,j):@sum(factory(k):qdeepa(k) , i, j)) = cpdemand (i, j));
!2. Restricciones de demanda de acero
@for(linke(i, j): @sum(warehouse; (k): qdeepb(k, i, j)) = stdemand (i, j));
!3. Restricciones de horas de trabajo del taller
@for(factory(i); ) :@sum(component(j):time(i,j)*qlinkc(i,j))lt;=totaltime(i));
!4. p >
@for(linka(i,j):@sum(programa(k):qdeepb(j,k,i)) @sum(factory(m):qdeepc(i,j,m))lt ; =qlinka(i,j));
!5. Balanza de producción y envío;
@for(linkc(i,j):@sum(program(k):qdeepa(i,k,j))=qlinkc(i,j));
!6. Restricciones de cantidad;
@for(linkf(i, k): qlinkf(i, k)=@sum(component(j): qlinkc(i, j)*qlinkb(j, k))) ;
!7. Restricciones de volumen de transporte;
@for(transa(i, j): qtransa=@sum(component(k): qdeepa(i, j, k ) ));
@for(transb(i, j): qtransb=@sum(acero(k): qdeepb(i, j, k))); (transc(i,j):qtransc=@sum(steel(k):qdeepc(k,i,j)));
@for(linkf(i,j):qlinkf(i, j)=@sum(warehouse(k):qdeepc(j,k,i)));
END
Resultados parciales:
Solución óptima global encontrado en la iteración: 80
Valor objetivo: 5770900.
Valor variable Costo reducido
TOTALTIME( 1) 35000.00 0.000000
TOTALTIME (
QLINKA( B, 1) 3000.000 0.000000
QLINKA( B, 2) 3500.000 0.000000
QLINKA( B, 3) 2500.000 0.000000
QLINKA(C, 1) 3000.000 0.000000
QLINKA(C, 2) 5000.000 0.000000
p>
QLINKA( C, 3) 5000.000 0.000000
QLINKA( D, 1) 200.0000 0.000000
QLINKA( D, 2) 250.0000 0.000000
QLINKB( D, 3) 100.0000 0.000000
QLINKB( 1, A) 15.00000 0.000000
QLINKB( 1, B) 10.00000 0.000000
QLINKB( 1, C ) 20,00000 0,000000
QLINKB( 1, D) 0,000000 0,000000
QLINKB( 2, A) 20,00000 0,000000
QLINKB( 2, B) 10,00000 0,000000 p>
QLINKB( 2, C) 15.00000 0.000000
QLINKB( 2, D) 0.000000 0.000000
TIEMPO( 1, 1) 100.0000 0.000000
TIEMPO( 1, 2) 200.0000 0.000000
TIEMPO( 2, 1) 200.0000 0.000000
TIEMPO( 2, 2) 100.0000 0.000000
COSTO( 1, 1 ) 6600.000 0.000000
COSTO( 1, 2) 7800.000 0.000000
COSTO( 2, 1) 6500.000 0.00
0000
COSTO( 2, 2) 7300.000 0.000000
QLINKC( 1, 1) 150.0000 0.000000
QLINKC( 1, 2) 0.000000 17.50000
QLINKC( 2, 1) 80.00000 0.000000
QLINKC( 2, 2) 440.0000 0.000000
CPDEMAND( 1, 1) 50.00000 0.000000
CPDEMAND( 1, 2) 100.0000 0.000000
CPDEMAND( 2, 1) 30.00000 0.000000
CPDEMAND( 2, 2) 60.00000 0.000000
CPDEMAND( 3, 1) 100.0000 0.000000
CPDEMAND( 3, 2) 200.0000 0.000000
CPDEMAND( 4, 1) 50.00000 0.000000
CPDEMAND( 4, 2) 80.00000 0.000000
DEMAND EST (1, A) 100,0000 0,000000
DEMAND EST (1, B) 70,00000 0,000000
DEMAND EST (1, C) 0,000000 0,000000
DEMAND EST ( 1, D) 100,0000 0,000000
DEMANDA ESTÁNDAR( 2, A) 50,00000 0,000000
DEMANDA ESTÁNDAR( 2, B) 80,00000
0,000000
DEMANDA ESTÁNDAR( 2, C) 0,000000 0,000000
DEMAND ESTÁNDAR( 2, D) 120,0000 0,000000
DEMAND ESTÁNDAR( 3, A) 30,00000 0,000000
DEMAND EST (3, B) 90,00000 0,000000
DEMAND EST (3, C) 0,000000 0,000000
DEMAND EST (3, D) 80,00000 0,000000
DEMAND EST ( 4, A) 70.00000 0.000000
DEMAND ESTÁNDAR( 4, B) 60.00000 0.000000
DEMAND ESTÁNDAR( 4, C) 0.000000 0.000000
DEMAND ESTÁNDAR( 4, D) 200.0000 0,000000
QLINKF(1, A) 2250,000 0,000000
QLINKF(1, B) 1500,000 0,000000
QLINKF(1, C) 3000,000 0,000000
QLINKF( 1, D) 0.000000 0.000000
QLINKF( 2, A) 10000.00 0.000000
QLINKF( 2, B) 5200.000 0.000000
QLINKF( 2, C) 8200.000 0.000000
QLINKF( 2, D) 0.000000 0.000000
QDEEPA( 1, 1, 1) 0.000000
0.000000
QDEEPA( 1, 1, 2) 0.000000 70.00000
QDEEPA( 1, 2, 1) 0.000000 40.00000
QDEEPA( 1, 2, 2) 0.000000 110.0000
QDEEPA( 1, 3, 1) 100.0000 0.000000
QDEEPA( 1, 3, 2) 0.000000 20.00000
QDEEPA( 1, 4, 1 ) 50.00000 0.000000
QDEEPA( 1, 4, 2) 0.000000 0.000000
QDEEPA( 2, 1, 1) 50.00000 0.000000
QDEEPA( 2, 1, 2) 100.0000 0.000000
QDEEPA( 2, 2, 1) 30.00000 0.000000
QDEEPA( 2, 2, 2) 60.00000 0.000000
QDEEPA( 2, 3 , 1) 0.000000 50.00000
QDEEPA( 2, 3, 2) 200.0000 0.000000
QDEEPA( 2, 4, 1) 0.000000 70.00000
QDEEPA( 2, 4, 2) 80.00000 0.000000
QDEEPB( 1, 1, A) 100.0000 0.000000
QDEEPB( 1, 1, B) 70.00000 0.000000
QDEEPB( 1 , 1, C) 0,000000 62,50000
QDEEPB(1, 1, D) 0,0000
00 25.00000
QDEEPB( 1, 2, A) 50.00000 0.000000
QDEEPB( 1, 2, B) 80.00000 0.000000
QDEEPB( 1, 2, C ) 0.000000 42.50000
QDEEPB( 1, 2, D) 0.000000 25.00000
QDEEPB( 1, 3, A) 30.00000 0.000000
QDEEPB( 1, 3, B) 90.00000 0.000000
QDEEPB( 1, 3, C) 0.000000 52.50000
QDEEPB( 1, 3, D) 80.00000 0.000000
QDEEPB( 1, 4 , A) 70.00000 0.000000
QDEEPB( 1, 4, B) 60.00000 0.000000
QDEEPB( 1, 4, C) 0.000000 72.50000
QDEEPB( 1, 4, D) 120.0000 0.000000
QDEEPB( 2, 1, A) 0.000000 80.00000
QDEEPB( 2, 1, B) 0.000000 40.00000
QDEEPB( 2 , 1, C) 0.000000 80.00000
QDEEPB( 2, 1, D) 80.00000 0.000000
QDEEPB( 2, 2, A) 0.000000 80.00000
QDEEPB( 2, 2, B) 0,000000 40,00000
QDEEPB(2, 2, C)
0.000000 60.00000
QDEEPB(2, 2, D) 120.0000 0.000000
QDEEPB(2, 3, A) 0.000000 110.0000
QDEEPB(2, 3, B ) 0.000000 70.00000
QDEEPB( 2, 3, C) 0.000000 100.0000
QDEEPB( 2, 3, D) 0.000000 5.000000
QDEEPB( 2, 4, A) 0.000000 110.0000
QDEEPB( 2, 4, B) 0.000000 70.00000
QDEEPB( 2, 4, C) 0.000000 120.0000
QDEEPB( 2, 4 , D) 0.000000 5.000000
QDEEPB( 3, 1, A) 0.000000 50.00000
QDEEPB( 3, 1, B) 0.000000 10.00000
QDEEPB( 3, 1, C) 0.000000 50.00000
QDEEPB( 3, 1, D) 20.00000 0.000000
QDEEPB( 3, 2, A) 0.000000 80.00000
QDEEPB( 3 , 2, B) 0.000000 40.00000
QDEEPB( 3, 2, C) 0.000000 60.00000
QDEEPB( 3, 2, D) 0.000000 30.00000
QDEEPB( 3, 3, A) 0,000000 85,00000
QDEEPB(3, 3, B)
0.000000 45.00000
QDEEPB( 3, 3, C) 0.000000 75.00000
QDEEPB( 3, 3, D) 0.000000 10.00000
QDEEPB( 3, 4, A ) 0.000000 75.00000
QDEEPB( 3, 4, B) 0.000000 35.00000
QDEEPB( 3, 4, C) 0.000000 85.00000
QDEEPB( 3, 4, D) 80.00000 0.000000
QDEEPC( A, 1, 1) 2250.000 0.000000
QDEEPC( A, 1, 2) 0.000000 0.000000
QDEEPC( A, 2 , 1) 0.000000 120.0000
QDEEPC( A, 2, 2) 4000.000 0.000000
QDEEPC( A, 3, 1) 0.000000 80.00000
QDEEPC( A, 3, 2) 6000.000 0.000000
QDEEPC( B, 1, 1) 1500.000 0.000000
QDEEPC( B, 1, 2) 0.000000 40.00000
QDEEPC( B , 2, 1) 0.000000 80.00000
QDEEPC( B, 2, 2) 3500.000 0.000000
QDEEPC( B, 3, 1) 0.000000 40.00000
QDEEPC( B, 3, 2) 1700.000 0.000000
QDEEPC(C, 1
, 1) 3000.000 0.000000
QDEEPC( C, 1, 2) 0.000000 62.50000
QDEEPC( C, 2, 1) 0.000000 57.50000
QDEEPC( C, 2, 2) 5000.000 0.000000
QDEEPC( C, 3, 1) 0.000000 17.50000
QDEEPC( C, 3, 2) 3200.000 0.000000
QDEEPC( D , 1, 1) 0.000000 85.00000
QDEEPC( D, 1, 2) 0.000000 125.0000
QDEEPC( D, 2, 1) 0.000000 100.0000
QDEEPC( D, 2, 2) 0.000000 20.00000
QDEEPC(D, 3, 1) 0.000000 90.00000
QDEEPC(D, 3, 2) 0.000000 50.00000
( 1, 1) 0,000000 0,000000
QTRANSA( 1, 2) 0,000000 0,000000
QTRANSA( 1, 3) 100,0000 0,000000
QTRANSA( 1, 4) 50,00000 0,000000
QTRANSA(2, 1) 150,0000 0,000000
QTRANSA(2, 2) 90,00000 0,000000
QTRANSA(2, 3) 200,0000 0,000000
QTRA
NSA( 2, 4) 80.00000 0.000000
CTRANSA( 1, 1) 100.0000 0.000000
CTRANSA( 1, 2) 150.0000 0.000000
CTRANSA( 1, 3 ) 80.00000 0.000000
CTRANSA( 1, 4) 70.00000 0.000000
CTRANSA( 2, 1) 50.00000 0.000000
CTRANSA( 2, 2) 60.00000 0.000000 p>
CTRANSA( 2, 3) 80.00000 0.000000
CTRANSA( 2, 4) 90.00000 0.000000
QTRANSB( 1, 1) 170.0000 0.000000
QTRANSB( 1, 2) 130,0000 0,000000
QTRANSB( 1, 3) 200,0000 0,000000
QTRANSB( 1, 4) 250,0000 0,000000
QTRANSB( 2, 1 ) 80.00000 0.000000
QTRANSB( 2, 2) 120.0000 0.000000
QTRANSB( 2, 3) 0.000000 0.000000
QTRANSB( 2, 4) 0.000000 0.00000 < / p>
QTRANSB( 3, 1) 20.00000 0.000000
QTRANSB( 3, 2) 0.000000 0.000000
QTRANSB( 3, 3) 0,000000 0,000000
QTRANSB( 3, 4) 80,00000 0,000000
CTRANSB( 1, 1) 40,00000 0,000000
CTRANSB( 1, 2 ) 20.00000 0.000000
CTRANSB( 1, 3) 30.00000 0.000000
CTRANSB( 1, 4) 50.00000 0.000000
CTRANSB( 2, 1) 60.00000 0.000000 p>
CTRANSB( 2, 2) 40.00000 0.000000
CTRANSB( 2, 3) 80.00000 0.000000
CTRANSB( 2, 4) 100.0000 0.000000
CTRANSB( 3, 1) 50.00000 0.000000
CTRANSB( 3, 2) 60.00000 0.000000
CTRANSB( 3, 3) 75.00000 0.000000
CTRANSB( 3, 4 ) 85.00000 0.000000
QTRANSC( 1, 1) 6750.000 0.000000
QTRANSC( 1, 2) 0.000000 0.000000
0 p>
QTRANSC( 2, 2) 12500,00 0,000000
QTRANSC( 3, 1) 0,000000 0,000000
QTRANSC( 3, 2) 10900.00 0.000000
CTRANSC( 1, 1) 40.00000 0.000000
CTRANSC( 1, 2) 80.00000 0.000000
CTRANSC( 2, 1 ) 100.0000 0.000000
CTRANSC( 2, 2) 20.00000 0.000000
CTRANSC( 3, 1) 80.00000 0.000000
CTRANSC( 3, 2) 40.00000 0.000000 p>
Finalmente: acabo de verificar la demanda de los resultados y descubrí que son satisfactorios. Si encuentra algún problema, puede informarme y lo ajustaré. Además, hay algunas partes en mi declaración de colección que puedes modificar si te resultan engorrosas. Información de contacto: 511757449@qq.com, o deje un mensaje directamente en Baidu HI.