Upload
dinhtuong
View
216
Download
0
Embed Size (px)
Citation preview
MC: Programacion MatematicaSoftware
Melilla, Mayo 2014
Vıctor Blanco
Dpt. Metodos Cuantitativos para la Economıa y la Empresa
UGR
Contenidos
1 Programacion Matematica
2 PhPSimplex
3 SOLVER MS Excel
4 Maxima
5 XPRESS
Programacion Entera OPT GEST EMPR 2 / 37
Programacion Matematica
max (o mın) f (x)
s.a.
x ∈ X
Programacion Lineal:
max (o mın) c1x1 + · · · + cnxn
s.a.
a11x1 + · · · + a1nxn ≤ (≥)b1
......
am1x1 + · · · + amnxn ≤ (≥)bm
xi ∈ R+
Programacion Entera OPT GEST EMPR 3 / 37
Programacion Matematica
max (o mın) f (x)
s.a.
x ∈ X
Programacion Lineal:
max (o mın) c1x1 + · · · + cnxn
s.a.
a11x1 + · · · + a1nxn ≤ (≥)b1
......
am1x1 + · · · + amnxn ≤ (≥)bm
xi ∈ R+
Programacion Entera OPT GEST EMPR 3 / 37
Programacion Matematica
Programacion Lineal ENTERA
max (o mın) c1x1 + · · · + cnxn
s.a.
a11x1 + · · · + a1nxn ≤ (≥)b1
......
am1x1 + · · · + amnxn ≤ (≥)bm
xi ENTEROS
Programacion Entera OPT GEST EMPR 4 / 37
Programacion Matematica
Programacion Lineal ENTERA
max (o mın) c1x1 + · · · + cnxn
s.a.
a11x1 + · · · + a1nxn ≤ (≥)b1
......
am1x1 + · · · + amnxn ≤ (≥)bm
xi ENTEROS
Programacion Entera OPT GEST EMPR 4 / 37
Programacion Matematica
Programacion No Lineal:
max (o mın) f (x)
s.a.
g1(x) ≤ (≥)0...
...
gm(x) ≤ (≥)0
Programacion Entera OPT GEST EMPR 5 / 37
Programacion Matematica
Programacion No Lineal:
max (o mın) f (x)
s.a.
g1(x) ≤ (≥)0...
...
gm(x) ≤ (≥)0
Programacion Entera OPT GEST EMPR 5 / 37
Software disponible
• COIN-OR SYMPHONY GPL.
• AIMMS
• CPLEX
• Gurobi
• MOSEK
• TOMLAB
• XPRESS.
• Software calculo simbolico generales: Maple, Matlab, wxmaxima, ..
• Phpsimplex
Programacion Entera OPT GEST EMPR 6 / 37
SOLVER de Excel
Resolver problemas pequenos sin sofware especıcifico:
INSTALACION:
• Disponible en MS Excel desde Excel 2003...
• Herramientas → Solver.
• Si no esta instalado: Herramientas → Complementos e instalarlo.
• Tambien para Mac desde MS Excel 2011 y para OpenOffice.
Programacion Entera OPT GEST EMPR 8 / 37
SOLVER de Excel
Resolver problemas pequenos sin sofware especıcifico:INSTALACION:
• Disponible en MS Excel desde Excel 2003...
• Herramientas → Solver.
• Si no esta instalado: Herramientas → Complementos e instalarlo.
• Tambien para Mac desde MS Excel 2011 y para OpenOffice.
Programacion Entera OPT GEST EMPR 8 / 37
SOLVER de Excel: Menu
• Celda objetivo: debe indicar la celda donde se encuentra la formula que calcula lafuncion objetivo a maximizar o minimizar.
• Valor de la celda objetivo: debe especificarse si la funcion objetivo debe serminimizada, o maximizada. Si la casilla Valores de se encuentra activada, lasolucion buscada intentara que la funcion objetivo sea igual al valor ahı indicado.
• Cambiando las celdas: contiene la ubicacion de las variables de decision delproblema.
• Sujeto a las siguientes restricciones → Agregar.
Programacion Entera OPT GEST EMPR 9 / 37
SOLVER de Excel: Restricciones
• Referencia de celda: Especifica la ubicacion de la celda con la formulacorrespondiente a la restriccion que se va a anadir.
• Tipo de restriccion: Se pueden anadir restricciones del tipo ≤, ≥, =, int, bin.
• Restriccion: Para el caso de restriccion tipo ≤, ≥, = debe especificarse aquı un valornumerico o una referencia a una celda con un valor constante (no una funcion).
Programacion Entera OPT GEST EMPR 10 / 37
SOLVER de Excel: Opciones
• Tiempo: Numero de segundos antes de que Solver se detenga.
• Iteraciones.
• Precision: Exactitud en los calculos numericos del algoritmo Solver.
• Tolerancia: Se especifica para programacion entera. Indica un porcentaje dentro del cual se garantiza laoptimalidad de la solucion.
• Convergencia.
• Adoptar modelo lineal: Algoritmos especıficos para programacion lineal (y entera).
• Asumir no negativos: si todas las variables son ≥ 0 (evita tener que escribirlas).
• Usar escala automatica: En el caso de que varias variables y datos del problema tengan escalas muydiferentes, 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 laevolucion de las variables de decision en cada una de las iteraciones del algoritmo, donde se vaaproximando hacia el optimo.
• Estimacion, Derivadas, Hallar por: Para programacion no lineal.
Programacion Entera OPT GEST EMPR 11 / 37
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotacion de ganado, debe decidir que piensos ha decomprar para la alimentacion de sus animales.
El catalogo de piensos disponibles es corto, ya que unicamente puede seleccionar 4 tiposde piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientesM y N.Las conversaciones con el veterinario de la granja le indican que las necesidades de ali-mentacion, 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 alimentacion deben ser cubiertas a traves de las compras diarias depiensos que deben realizarse. Para ello el granjero se basa en datos del catalogo de cadapienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90B 150 270 81C 100 140 40D 45 90 24
Teniendo en cuenta que el granjero solo puede comprar toneladas completas ¿Cuantastoneladas de cada pienso debe comprar el granjero al dıa de tal manera que se satisfaganlas necesidades de alimentacion, y el coste sea mınimo?
Programacion Entera OPT GEST EMPR 12 / 37
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotacion de ganado, debe decidir que piensos ha decomprar para la alimentacion de sus animales.El catalogo de piensos disponibles es corto, ya que unicamente puede seleccionar 4 tiposde piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientesM y N.
Las conversaciones con el veterinario de la granja le indican que las necesidades de ali-mentacion, 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 alimentacion deben ser cubiertas a traves de las compras diarias depiensos que deben realizarse. Para ello el granjero se basa en datos del catalogo de cadapienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90B 150 270 81C 100 140 40D 45 90 24
Teniendo en cuenta que el granjero solo puede comprar toneladas completas ¿Cuantastoneladas de cada pienso debe comprar el granjero al dıa de tal manera que se satisfaganlas necesidades de alimentacion, y el coste sea mınimo?
Programacion Entera OPT GEST EMPR 12 / 37
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotacion de ganado, debe decidir que piensos ha decomprar para la alimentacion de sus animales.El catalogo de piensos disponibles es corto, ya que unicamente puede seleccionar 4 tiposde piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientesM y N.Las conversaciones con el veterinario de la granja le indican que las necesidades de ali-mentacion, 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 alimentacion deben ser cubiertas a traves de las compras diarias depiensos que deben realizarse. Para ello el granjero se basa en datos del catalogo de cadapienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90B 150 270 81C 100 140 40D 45 90 24
Teniendo en cuenta que el granjero solo puede comprar toneladas completas ¿Cuantastoneladas de cada pienso debe comprar el granjero al dıa de tal manera que se satisfaganlas necesidades de alimentacion, y el coste sea mınimo?
Programacion Entera OPT GEST EMPR 12 / 37
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotacion de ganado, debe decidir que piensos ha decomprar para la alimentacion de sus animales.El catalogo de piensos disponibles es corto, ya que unicamente puede seleccionar 4 tiposde piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientesM y N.Las conversaciones con el veterinario de la granja le indican que las necesidades de ali-mentacion, 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 alimentacion deben ser cubiertas a traves de las compras diarias depiensos que deben realizarse. Para ello el granjero se basa en datos del catalogo de cadapienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90B 150 270 81C 100 140 40D 45 90 24
Teniendo en cuenta que el granjero solo puede comprar toneladas completas ¿Cuantastoneladas de cada pienso debe comprar el granjero al dıa de tal manera que se satisfaganlas necesidades de alimentacion, y el coste sea mınimo?
Programacion Entera OPT GEST EMPR 12 / 37
SOLVER de Excel: Ejemplo
Un granjero especializado en la explotacion de ganado, debe decidir que piensos ha decomprar para la alimentacion de sus animales.El catalogo de piensos disponibles es corto, ya que unicamente puede seleccionar 4 tiposde piensos, A, B, C, D. Cada uno de los piensos que puede adquirir tiene dos nutrientesM y N.Las conversaciones con el veterinario de la granja le indican que las necesidades de ali-mentacion, 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 alimentacion deben ser cubiertas a traves de las compras diarias depiensos que deben realizarse. Para ello el granjero se basa en datos del catalogo de cadapienso:
kg de nutriente M (por Ton) kg de nutriente N (por Ton) Coste (por Ton)
A 200 300 90B 150 270 81C 100 140 40D 45 90 24
Teniendo en cuenta que el granjero solo puede comprar toneladas completas ¿Cuantastoneladas de cada pienso debe comprar el granjero al dıa de tal manera que se satisfaganlas necesidades de alimentacion, y el coste sea mınimo?
Programacion Entera OPT GEST EMPR 12 / 37
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.
Programacion Entera OPT GEST EMPR 13 / 37
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)
Programacion Entera OPT GEST EMPR 15 / 37
SOLVER de Excel: Ejemplo
VENTAJAS:
• Accesible practicamente desde cualquier ordenador.
• Sencillo de escribir.
• Facilidad para cambiar datos.
DESVENTAJAS:
• Complicado para problemas grandes.
• Poco margen de maniobra con parametros.
• No es rapido.
• Exportar soluciones...
• Algoritmos basicos.
Programacion Entera OPT GEST EMPR 19 / 37
Maxima
• Software libre: http://maxima.sourceforge.net/
• Sistema de algebra computacional.
• Motor de calculo simbolico escrito en lenguaje Lisp publicado bajo licencia GNUGPL.
• Manipula polinomios, matrices, funciones racionales, integrales, derivadas, graficos,...
• Proviene de Macsyma desarrollado por MIT en los anos 70.
• Interfaz grafica: wxMaxima.
• Librerıas para resolver problemas de optimizacion.
• Similar en uso a Maple, Mathematica o Matlab.
Programacion Entera OPT GEST EMPR 20 / 37
Uso basico 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]);
Programacion Entera OPT GEST EMPR 21 / 37
Programacion 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]);
Programacion Entera OPT GEST EMPR 22 / 37
Programacion No Lineal en maxima
mın x2 + y 2 − 7x
( %i1) f: x^2 + y^2 - 7*x;
( %i4) solve([diff(f,x), diff(f,y)]);
mın xy , s.a. x2 + y 2 <= 1.
( %i1) load(fmin cobyla)$
( %i2) fmin cobyla(x*y, [x, y], [1,1],
constraints = [x^2+y^2<=1], iprint=1);
Programacion Entera OPT GEST EMPR 23 / 37
Xpress-IVE Mosel
¿Que es XPRESS-Mosel?
• Interfaz para modelar problemas de forma sencilla.
• Que permite resolver de forma eficiente problemas de optimizacion (LP, MIP,MIQP, QCQP, NLP, MINLP) de forma eficiente.
• Lenguaje amigable de alto nivel que permite no solo modelar-resolver si no tambiendisenar algoritmos.
• Uso de datos externos.
• Usado tanto a nivel academico como profesional.
• Permite uso gratuito para estudiantes y profesores.
• Dibuja soluciones y/o imprime y/o exporta en el formato deseado.
Programacion Entera OPT GEST EMPR 24 / 37
Xpress-IVE Mosel
Instalacion de XPRESS-Mosel
• Descargar XPRESS-Mosel version gratuita estudiantes:http://optimization.fico.com/student-version-of-fico-xpress.html
(Guardar student.exe).
• Seguir instrucciones para instalar.
• Abrir XPRESS-IVE.
Programacion Entera OPT GEST EMPR 25 / 37
Xpress-IVE Mosel
Partes de un modelo en XPRESS-MoselPREAMBULO:
1 Comentarios: !Esto es un comentario
2 model nombre del modelo
3 options Opciones extra (no obligatorio): nonimplicit, explterm, ...
4 uses librerıas/paquetes extra de XPRESS para distintas funcionalidades: mmxprs,mmive
5 declarations:
• Variables: mpvar (x: mpvar)• Parametros: 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]
Programacion Entera OPT GEST EMPR 27 / 37
Xpress-IVE Mosel
Formulacion:
• Funcion 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 o0 o un entero mayor o igual que 5), x is partint 7 (x es entero hasta el 7 ycontinuo 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)
writeln(.El valor del minimo coste es:", getobjval)
write("x=", getsol(x), ", y=", getsol(y))
Programacion Entera OPT GEST EMPR 28 / 37
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
Programacion Entera OPT GEST EMPR 29 / 37
XPRESS-IVE Mosel
Operadores para simplificar:
• Arrays: R: array(1..10) of linctr, a: array(1..3) of integer o definiendoN: 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
• Max/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)))
Programacion Entera OPT GEST EMPR 32 / 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]
Programacion Entera OPT GEST EMPR 34 / 37
XPRESS-IVE Mosel
Parametros Optimizacion:
• MIPTOL: Tolerancia sobre la integralidad de las soluciones (por defecto 5× 10−6).
• PRESOLVE: Si se aplican tecnicas de prerresolucion del problema para reducirvariables, restricciones, ... (0: NO, 1: SI, 2: PARCIAL).
• BIGMMETHOD: Si utiliza para resolver sımplex el metodo de la M grande (1) o el delas dos fases (0).
• CUTDEPTH: Maxima profundidad del arbol Branch-and-bound.
• CUTSTRATEGY: Estrategia para anadir cortes (-1:Automatica, 0: Sin cortes, 1:conservadora, 2: moderada, 3: agresiva).
• VARSELECTION: Forma de escoger las variables para el branch-and-bound (-1:automatica, 1...6: pesudo-costes mınimos (arriba y abajo)
setparam("XPRS ?????", valor)
parameters MAXTIME=300 USE LOG=false end-parameters
Programacion Entera OPT GEST EMPR 35 / 37
XPRESS-IVE Mosel
Graficos:
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")
• Rectangulo: IVEdrawrectangle(graph,5,5,10,8)
• Elipse: IVEdrawellipse(graph,5,5,10,8)
NOTA: Los puntos pueden venir dados por la solucion del problema...
Programacion Entera OPT GEST EMPR 36 / 37
Modelos CargadosWizards → 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.Mas en http://examples.xpress.fico.com/example.pl
Programacion Entera OPT GEST EMPR 37 / 37