MC: Programaci´ on Matem´ atica Software
Melilla, Mayo 2014
V´ıctor Blanco Dpt. M´etodos Cuantitativos para la Econom´ıa y la Empresa UGR
Contenidos
1 Programaci´on Matem´atica
2 PhPSimplex
3 SOLVER MS Excel
4 Maxima
5 XPRESS
Programaci´ on Matem´ atica
m´ax (´o m´ın) f (x ) s.a.
x ∈ X
Programaci´on Lineal:
m´ax (´o m´ın) c1x1+· · · + cnxn
s.a.
a11x1+· · · + a1nxn ≤ (≥)b1
..
. ...
am1x1+· · · + amnxn ≤ (≥)bm
xi∈ R+
Programaci´on Entera OPT GEST EMPR 3 / 37
Programaci´ on Matem´ atica
m´ax (´o m´ın) f (x ) s.a.
x ∈ X
Programaci´on Lineal:
m´ax (´o m´ın) c1x1+· · · + cnxn
s.a.
a11x1+· · · + a1nxn ≤ (≥)b1
.. ..
Programaci´ on Matem´ atica
Programaci´on Lineal ENTERA
m´ax (´o m´ın) c1x1+· · · + cnxn
s.a.
a11x1+· · · + a1nxn ≤ (≥)b1
..
. ...
am1x1+· · · + amnxn ≤ (≥)bm
xi ENTEROS
Programaci´on Entera OPT GEST EMPR 4 / 37
Programaci´ on Matem´ atica
Programaci´on Lineal ENTERA
m´ax (´o m´ın) c1x1+· · · + cnxn
s.a.
a11x1+· · · + a1nxn ≤ (≥)b1
..
. ...
am1x1+· · · + amnxn ≤ (≥)bm
xi ENTEROS
Programaci´ on Matem´ atica
Programaci´on No Lineal:
m´ax (´o m´ın) f (x ) s.a.
g1(x ) ≤ (≥)0
..
. ...
gm(x ) ≤ (≥)0
Programaci´on Entera OPT GEST EMPR 5 / 37
Programaci´ on Matem´ atica
Programaci´on No Lineal:
m´ax (´o m´ın) f (x ) s.a.
g1(x ) ≤ (≥)0
..
. ...
gm(x ) ≤ (≥)0
Software disponible
• COIN-OR SYMPHONY GPL.
• AIMMS
• CPLEX
• Gurobi
• MOSEK
• TOMLAB
• XPRESS.
• Software c´alculo simb´olico generales: Maple, Matlab, wxmaxima, ..
• Phpsimplex
Programaci´on Entera OPT GEST EMPR 6 / 37
http://www.phpsimplex.com/
SOLVER de Excel
Resolver problemaspeque˜nossin sofware espec´ıcifico:
INSTALACI ´ON:
• Disponible en MS Excel desde Excel 2003...
• Herramientas→ Solver.
• Si no est´a instalado: Herramientas→ Complementos e instalarlo.
• Tambi´en para Mac desde MS Excel 2011 y para OpenOffice.
Programaci´on Entera OPT GEST EMPR 8 / 37
SOLVER de Excel
Resolver problemaspeque˜nossin sofware espec´ıcifico:
INSTALACI ´ON:
• Disponible en MS Excel desde Excel 2003...
• Herramientas→ Solver.
• Si no est´a instalado: Herramientas→ Complementos e instalarlo.
• Tambi´en para Mac desde MS Excel 2011 y para OpenOffice.
SOLVER de Excel: Men´ u
• Celda objetivo: debe indicar la celda donde se encuentra la f´ormula que calcula la funci´on objetivo a maximizar o minimizar.
• Valor de la celda objetivo: debe especificarse si la funci´on objetivo debe ser minimizada, o maximizada. Si la casilla Valores de se encuentra activada, la soluci´on buscada intentar´a que la funci´on objetivo sea igual al valor ah´ı indicado.
• Cambiando las celdas: contiene la ubicaci´on de las variables de decisi´on del problema.
• Sujeto a las siguientes restricciones→ Agregar.
Programaci´on Entera OPT GEST EMPR 9 / 37
SOLVER de Excel: Restricciones
• Referencia de celda: Especifica la ubicaci´on de la celda con la f´ormula correspondiente a la restricci´on que se va a a˜nadir.
• Tipo de restricci´on: Se pueden a˜nadir restricciones del tipo ≤, ≥, =, int, bin.
• Restricci´on: Para el caso de restricci´on tipo ≤, ≥, = debe especificarse aqu´ı un valor num´erico o una referencia a una celda con un valor constante (no una funci´on).
SOLVER de Excel: Opciones
• Tiempo: N´umero de segundos antes de que Solver se detenga.
• Iteraciones.
• Precisi´on: Exactitud en los c´alculos num´ericos del algoritmo Solver.
• Tolerancia: Se especifica para programaci´on entera. Indica un porcentaje dentro del cual se garantiza la optimalidad de la soluci´on.
• Convergencia.
• Adoptar modelo lineal: Algoritmos espec´ıficos para programaci´on lineal (y entera).
• Asumir no negativos: si todas las variables son ≥ 0 (evita tener que escribirlas).
• Usar escala autom´atica: En el caso de que varias variables y datos del problema tengan escalas muy diferentes, el marcar esta casilla realiza un ajuste en la misma.
• Mostrar resultado de iteraciones: Marcar esta casilla en el caso de que se desee que Excel muestre la evoluci´on de las variables de decisi´on en cada una de las iteraciones del algoritmo, donde se va aproximando hacia el ´optimo.
• Estimaci´on, Derivadas, Hallar por: Para programaci´on no lineal.
Programaci´on Entera OPT GEST EMPR 11 / 37
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotaci´on de ganado, debe decidir qu´e piensos ha de comprar para la alimentaci´on de sus animales.
El cat´alogo de piensos disponibles es corto, ya que ´unicamente puede seleccionar 4 tipos de piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientes M y N.
Las conversaciones con el veterinario de la granja le indican que las necesidades de ali- mentaci´on, medidas en kg de nutrientes que deben ingerir la suma de sus animales al d´ıa, es de 5500 kg de nutriente M y 8700 kg de nutriente N.
Las necesidades de alimentaci´on deben ser cubiertas a trav´es de las compras diarias de piensos que deben realizarse. Para ello el granjero se basa en datos del cat´alogo de cada pienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90
B 150 270 81
C 100 140 40
D 45 90 24
Teniendo en cuenta que el granjero s´olo puede comprar toneladas completas ¿Cu´antas toneladas de cada pienso debe comprar el granjero al d´ıa de tal manera que se satisfagan las necesidades de alimentaci´on, y el coste sea m´ınimo?
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotaci´on de ganado, debe decidir qu´e piensos ha de comprar para la alimentaci´on de sus animales.
El cat´alogo de piensos disponibles es corto, ya que ´unicamente puede seleccionar 4 tipos de piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientes M y N.
Las conversaciones con el veterinario de la granja le indican que las necesidades de ali- mentaci´on, medidas en kg de nutrientes que deben ingerir la suma de sus animales al d´ıa, es de 5500 kg de nutriente M y 8700 kg de nutriente N.
Las necesidades de alimentaci´on deben ser cubiertas a trav´es de las compras diarias de piensos que deben realizarse. Para ello el granjero se basa en datos del cat´alogo de cada pienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90
B 150 270 81
C 100 140 40
D 45 90 24
Teniendo en cuenta que el granjero s´olo puede comprar toneladas completas ¿Cu´antas toneladas de cada pienso debe comprar el granjero al d´ıa de tal manera que se satisfagan las necesidades de alimentaci´on, y el coste sea m´ınimo?
Programaci´on Entera OPT GEST EMPR 12 / 37
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotaci´on de ganado, debe decidir qu´e piensos ha de comprar para la alimentaci´on de sus animales.
El cat´alogo de piensos disponibles es corto, ya que ´unicamente puede seleccionar 4 tipos de piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientes M y N.
Las conversaciones con el veterinario de la granja le indican que las necesidades de ali- mentaci´on, medidas en kg de nutrientes que deben ingerir la suma de sus animales al d´ıa, es de 5500 kg de nutriente M y 8700 kg de nutriente N.
Las necesidades de alimentaci´on deben ser cubiertas a trav´es de las compras diarias de piensos que deben realizarse. Para ello el granjero se basa en datos del cat´alogo de cada pienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90
B 150 270 81
C 100 140 40
D 45 90 24
Teniendo en cuenta que el granjero s´olo puede comprar toneladas completas ¿Cu´antas toneladas de cada pienso debe comprar el granjero al d´ıa de tal manera que se satisfagan las necesidades de alimentaci´on, y el coste sea m´ınimo?
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotaci´on de ganado, debe decidir qu´e piensos ha de comprar para la alimentaci´on de sus animales.
El cat´alogo de piensos disponibles es corto, ya que ´unicamente puede seleccionar 4 tipos de piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientes M y N.
Las conversaciones con el veterinario de la granja le indican que las necesidades de ali- mentaci´on, medidas en kg de nutrientes que deben ingerir la suma de sus animales al d´ıa, es de 5500 kg de nutriente M y 8700 kg de nutriente N.
Las necesidades de alimentaci´on deben ser cubiertas a trav´es de las compras diarias de piensos que deben realizarse. Para ello el granjero se basa en datos del cat´alogo de cada pienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90
B 150 270 81
C 100 140 40
D 45 90 24
Teniendo en cuenta que el granjero s´olo puede comprar toneladas completas ¿Cu´antas toneladas de cada pienso debe comprar el granjero al d´ıa de tal manera que se satisfagan las necesidades de alimentaci´on, y el coste sea m´ınimo?
Programaci´on Entera OPT GEST EMPR 12 / 37
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotaci´on de ganado, debe decidir qu´e piensos ha de comprar para la alimentaci´on de sus animales.
El cat´alogo de piensos disponibles es corto, ya que ´unicamente puede seleccionar 4 tipos de piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientes M y N.
Las conversaciones con el veterinario de la granja le indican que las necesidades de ali- mentaci´on, medidas en kg de nutrientes que deben ingerir la suma de sus animales al d´ıa, es de 5500 kg de nutriente M y 8700 kg de nutriente N.
Las necesidades de alimentaci´on deben ser cubiertas a trav´es de las compras diarias de piensos que deben realizarse. Para ello el granjero se basa en datos del cat´alogo de cada pienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90
B 150 270 81
C 100 140 40
SOLVER de Excel: Ejemplo
xA: Toneladas de pienso A.
xB: Toneladas de pienso B.
xC: Toneladas de pienso C.
xD: Toneladas de pienso D.
• Coste:90xA+81xB+40xC+24xD.(min)
• Nutrientes M:200xA+150xB+100xC+45xD≥ 5500.
• Nutrientes N:300xA+270xB+140xC+90xD≥ 8700.
Programaci´on Entera OPT GEST EMPR 13 / 37
SOLVER de Excel: Ejemplo
DATOS:
VARIABLES:
SOLVER de Excel: Ejemplo
F. OBJETIVO:SUMAPRODUCTO(CELDAS DE LAS VARIABLES, CELDAS DE LOS COEFICIENTES DE LA F.OBJETIVO)
RESTRICCIONES:SUMAPRODUCTO(CELDAS DE LAS VARIABLES, CELDAS DE LOS COEFICIENTES DE RESTRICCION)
Programaci´on Entera OPT GEST EMPR 15 / 37
SOLVER de Excel: Ejemplo
SOLVER de Excel: Ejemplo
PAR´AMETROS:
RESTRICCIONES:
Programaci´on Entera OPT GEST EMPR 17 / 37
SOLVER de Excel: Ejemplo
SOLUCIONES:
SOLVER de Excel: Ejemplo
VENTAJAS:
• Accesible pr´acticamente desde cualquier ordenador.
• Sencillo de escribir.
• Facilidad para cambiar datos.
DESVENTAJAS:
• Complicado para problemas grandes.
• Poco margen de maniobra con par´ametros.
• No es r´apido.
• Exportar soluciones...
• Algoritmos b´asicos.
Programaci´on Entera OPT GEST EMPR 19 / 37
Maxima
• Software libre:http://maxima.sourceforge.net/
• Sistema de ´algebra computacional.
• Motor de c´alculo simb´olico escrito en lenguaje Lisp publicado bajo licencia GNU GPL.
• Manipula polinomios, matrices, funciones racionales, integrales, derivadas, gr´aficos, ...
• Proviene de Macsyma desarrollado por MIT en los a˜nos 70.
• Interfaz gr´afica: wxMaxima.
• Librer´ıas para resolver problemas de optimizaci´on.
• Similar en uso a Maple, Mathematica o Matlab.
Uso b´ asico de wxmaxima
Maxima como calculadora ( %i1) 2+2;
( %i2) 2*5;
( %i3) log(10);
( %i4) float( %o3);
( %i5) factor(292);
Definiciones:
( %i1) a:3$
b:4$
a+b;
( %i2) z:x^2 + y^2 - 2*x;
( %i3) f(x):=cos(exp(x));
( %i4) f(2);
( %i5) A: matrix([1,1,1,1], [0,1,0,1]);
Programaci´on Entera OPT GEST EMPR 21 / 37
Programaci´ on Lineal en maxima
( %i1)load("simplex")$
( %i2)minimize lp(x+y, [3*x+2*y>2, x+4*y>3]);
( %i3) A: matrix([1,1,-1,0], [2,-3,0,-1], [4,-5,0,0])$
( %i4) b: [1,1,6]$
( %i5) c: [1,-2,0,0]$
( %i6) linear program(A, b, c);
( %i7) minimize lp(x+y, [3*x+y=0, x+2*y>2]);
( %i8) minimize lp(x+y, [3*x+y>0, x+2*y>2]), nonegative lp=true;
( %i9) minimize lp(x+y, [3*x+y=0, x+2*y>2]), nonegative lp=true;
( %i10) minimize lp(x+y, [3*x+y>0]);
Programaci´ on No Lineal en maxima
m´ın x2+y2−7x
( %i1) f: x^2 + y^2 - 7*x;
( %i4) solve([diff(f,x), diff(f,y)]);
m´ın xy , s.a. x2+y2<=1.
( %i1) load(fmin cobyla)$
( %i2) fmin cobyla(x*y, [x, y], [1,1], constraints = [x^2+y^2<=1], iprint=1);
Programaci´on Entera OPT GEST EMPR 23 / 37
Xpress-IVE Mosel
¿Qu´e es XPRESS-Mosel?
• Interfaz para modelar problemas de forma sencilla.
• Que permite resolver de forma eficiente problemas de optimizaci´on (LP, MIP, MIQP, QCQP, NLP, MINLP) de forma eficiente.
• Lenguaje amigable de alto nivel que permite no solo modelar-resolver si no tambi´en dise˜nar algoritmos.
• Uso de datos externos.
• Usado tanto a nivel acad´emico como profesional.
• Permite uso gratuito para estudiantes y profesores.
• Dibuja soluciones y/o imprime y/o exporta en el formato deseado.
Xpress-IVE Mosel
Instalaci´on de XPRESS-Mosel
• Descargar XPRESS-Mosel versi´on gratuita estudiantes:
http://optimization.fico.com/student-version-of-fico-xpress.html (Guardar student.exe).
• Seguir instrucciones para instalar.
• Abrir XPRESS-IVE.
Programaci´on Entera OPT GEST EMPR 25 / 37
Xpress-IVE Mosel
Aspecto de XPRESS
Xpress-IVE Mosel
Partes de un modelo en XPRESS-Mosel PRE´AMBULO:
1 Comentarios:!Esto es un comentario
2 modelnombre del modelo
3 optionsOpciones extra (no obligatorio): nonimplicit, explterm, ...
4 useslibrer´ıas/paquetes extra de XPRESS para distintas funcionalidades: mmxprs, mmive
5 declarations:
• Variables: mpvar (x: mpvar)
• Par´ametros: array, integer real, ... (a: array(1..10, 1..5) of integer; b:
real)
• Restricciones/Objetivo: linctr (W: linctr) end-declarations
6 Matrices:
a:[1 2 3 4 5 6]
Programaci´on Entera OPT GEST EMPR 27 / 37
Xpress-IVE Mosel
Formulaci´on:
• Funci´on Objetivo:Objetivo:= 2*x + 3*y+z, Coste:= 2.15*x - 3.7*y, ...
• Restricciones:x+y <= 6, R1: 23*x + 12* y >= 123, x+y+z=1
• Tipo de Variable:x is integer, x is binary, x is free, x is semint 5 (x es o 0 o un entero mayor o igual que 5), x is partint 7 (x es entero hasta el 7 y continuo si > 7). (por defecto x es no-negativa).
• Maximizar/Minimizar:maximize(Objetivo), minimize(Coste).
• Mostrar Soluciones:write("texto que se quiera", valor, "mas texto", ...) y writeln():
• Valor Objetivo: getobjval.
• Soluciones ´Optimas: getsol(x)
Xpress-IVE Mosel
Ejemplo:
model "Primer Ejemplo"
uses "mmxprs"
declarations x: mpvar y: mpvar Obj: linctr R: linctr end-declarations Obj:= x+y
R:= x+5*y >=24
x is integer y is partint 3 minimize(Obj)
writeln(.Obj: ", getobjval)
write("x=", getsol(x), ", y=", getsol(y)) end-model
Programaci´on Entera OPT GEST EMPR 29 / 37
Xpress-IVE Mosel
Resultados:
Xpress-IVE Mosel
Resultados:
Programaci´on Entera OPT GEST EMPR 31 / 37
XPRESS-IVE Mosel
Operadores para simplificar:
• Arrays:R: array(1..10) of linctr, a: array(1..3) of integer o definiendo N: 1..15, x: array(N) of mpvar
• Sumatorias:sum(i in 1..10) x(i), R:= sum(i in N) x(i) <=12
• Productos:prod(i in 1..10) i
• M´ax/M´ın de lista:max(i in 1..10) a(i), max(i in 1..10) a(i)
• Bucle For:forall(i in 1..10) x(i)<= a(i) forall(i in N) writeln("x(", i, ")=", getsol(x(i)))
• Condiciones :forall(i in N| a(i)!=0) x(i)>=21, forall(i in 1..10|getsol(x(i))>0) writeln("x(", i, ")=", getsol(x(i)))
XPRESS-IVE Mosel
Ejemplo:
Programaci´on Entera OPT GEST EMPR 33 / 37
XPRESS-IVE Mosel
Datos Externos:
initializations from ’datos.dat’ COSTES MATRIZA end-initializations donde datos.dat es:
COSTES: [1.5 2.6 3.7 4.8 5.9] MATRIZA: [4 8 15 16 23 42]
XPRESS-IVE Mosel
Par´ametros Optimizaci´on:
• MIPTOL: Tolerancia sobre la integralidad de las soluciones (por defecto 5 × 10−6).
• PRESOLVE: Si se aplican t´ecnicas de prerresoluci´on del problema para reducir variables, restricciones, ... (0: NO, 1: SI, 2: PARCIAL).
• BIGMMETHOD: Si utiliza para resolver s´ımplex el m´etodo de la M grande (1) o el de las dos fases (0).
• CUTDEPTH: M´axima profundidad del ´arbol Branch-and-bound.
• CUTSTRATEGY: Estrategia para a˜nadir cortes (-1:Autom´atica, 0: Sin cortes, 1:
conservadora, 2: moderada, 3: agresiva).
• VARSELECTION: Forma de escoger las variables para el branch-and-bound (-1:
autom´atica, 1...6: pesudo-costes m´ınimos (arriba y abajo) setparam("XPRS ?????", valor)
parameters MAXTIME=300 USE LOG=false end-parameters
Programaci´on Entera OPT GEST EMPR 35 / 37
XPRESS-IVE Mosel
Gr´aficos:
declarations graph : integer end-declarations graph:=IVEaddplot("Y(X)",IVE RGB(96,77,0))
• Punto: IVEdrawpoint(graph,10,3.14)
• L´ınea entre dos puntos: IVEdrawline(graph,5,5,10,8)
• Flecha: IVEdrawarrow(graph,5,5,10,8)
• Texto: IVEdrawlabel(graph,10,8,"Texto")
• Rect´angulo: IVEdrawrectangle(graph,5,5,10,8)
• Elipse: IVEdrawellipse(graph,5,5,10,8)
Modelos Cargados
Wizards→ Complete Models:
• Assignment.
• Bin packing.
• Bipartite Matching.
• Capital budgeting.
• Contract allocation.
• Covering.
• Cutting Stock.
• Facility Location.
• Flow-shop scheduling.
• Job shop sheduling.
• Knapsack.
• Line balancing.
• Lot sizing.
• Maximum flow.
• Minimim cost flow.
• Minimum weight spanning tree.
• Multicommodity network flow.
• Partitioning.
• Personnel planning.
• Portfolio optimization (QP).
• Production planning.
• Project planning.
• Purchasing with price breaks.
• Sequncing jobs in a machine.
• TSP.
• Timetabling.
• Transport.
• Vehicle routing.
M´as enProgramaci´http://examples.xpress.fico.com/example.plon Entera OPT GEST EMPR 37 / 37