Directorio de artículos
Escrito al principio:
- LINGO establece por defecto que todas las variables no son negativas.
- No hay
<
suma estricta>
,<
representante<=
,>
representante en LINGO>=
. - LINGO no distingue entre mayúsculas y minúsculas de variables.
- Los comentarios de LINGO
!
comienzan y;
terminan.
Programación lineal
Programación lineal escalar
Resuelve el siguiente problema:
código:
model:
min=2*x1+3*x2;
x1+x2>350;
x1>100;
2*x1+x2<600;
end
Programación lineal matricial
Código:
model:
sets:
warehouses/wh1..wh6/: capacity;
vendors/v1..v8/: demand;
links(warehouses,vendors): cost, volume;
endsets
!目标函数;
min=@sum(links: cost*volume);
@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J));
@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I));
data:
capacity=60 55 51 43 41 52;
demand=35 37 22 32 41 32 43 38;
cost=6 2 6 7 4 2 9 5
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
enddata
end
Programación no lineal
Sin restricciones especiales
model:
min=(x1)^2+(x2)^2+8;! 目标函数;
x1^2-x2>=0;
-x1-x2^2+2=0;
x1>=0;
x2>=0;! 约束条件;
end
Programación de enteros
model:
sets:
row/1..4/:b;
col/1..5/:c1,c2,x;
link(row,col):a;
endsets
data:
c1=1,1,3,4,2;
c2=-8,-2,-3,-1,-2;
a=1 1 1 1 1
1 2 2 1 6
2 1 6 0 0
0 0 1 1 5;
b=400,800,200,200;
enddata
max=@sum(col:c1*x^2+c2*x);
@for(row(i):@sum(col(j):a(i,j)*x(j))<b(i));
@for(col:@gin(x)); !表示x为整数
@for(col:@bnd(0,x,99));
end
01Planificación
Por lo general, es un tipo especial de programación lineal, pero el valor de la variable solo puede ser 0 o 1.
model:
max=3*x1-2*x2+5*x3;
x1+2*x2-x3<2;
x1+4*x2+x3<4;
x1+x2<3;
4x2+x3<6
@bin(x1);@bin(x2);@bin(x3);
end
Ps no sabe por qué siempre informo errores gramaticales cuando lo copio en el pasado, y no tengo este problema cuando uso QAQ.