Código LINGO para resolver problemas de planificación


Escrito al principio:

  1. LINGO establece por defecto que todas las variables no son negativas.
  2. No hay <suma estricta >, <representante <=, >representante en LINGO >=.
  3. LINGO no distingue entre mayúsculas y minúsculas de variables.
  4. Los comentarios de LINGO !comienzan y ;terminan.

Programación lineal

Programación lineal escalar

Resuelve el siguiente problema:
Inserte la descripción de la imagen aquí
código:

model:
	min=2*x1+3*x2;

	x1+x2>350;
	x1>100;
	2*x1+x2<600;
end

Programación lineal matricial

Inserte la descripción de la imagen aquí
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

Inserte la descripción de la imagen aquí

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

Inserte la descripción de la imagen aquí

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.
Inserte la descripción de la imagen aquí

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.

Supongo que te gusta

Origin blog.csdn.net/DwenKing/article/details/108157807
Recomendado
Clasificación