45
MC: Programaci´on Matem´ atica Software Melilla, Mayo 2014 ıctor Blanco Dpt. M´ etodos Cuantitativos para la Econom´ ıa y la Empresa UGR

MC: Programaci on Matem atica Software · Tiempo: Numero de segundos antes de que Solver se detenga. Iteraciones. ... Las conversaciones con el veterinario de la granja le indican

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

http://www.phpsimplex.com/

Programacion Entera OPT GEST EMPR 7 / 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

DATOS:

VARIABLES:

Programacion Entera OPT GEST EMPR 14 / 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

Programacion Entera OPT GEST EMPR 16 / 37

SOLVER de Excel: Ejemplo

PARAMETROS:

RESTRICCIONES:

Programacion Entera OPT GEST EMPR 17 / 37

SOLVER de Excel: Ejemplo

SOLUCIONES:

Programacion Entera OPT GEST EMPR 18 / 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

Aspecto de XPRESS

Programacion Entera OPT GEST EMPR 26 / 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

Resultados:

Programacion Entera OPT GEST EMPR 30 / 37

Xpress-IVE Mosel

Resultados:

Programacion 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 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

Ejemplo:

Programacion 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]

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