Sei sulla pagina 1di 52

Programacin Matemtica utilizado GUSEK Modelacin en GMPL

Introduction

GNU MathProg is a modeling language intended for describing linear mathematical programming models. The GNU MathProg language is a subset of the AMPL language. Its GLPK implementation is mainly based on the paper: Robert Fourer, David M. Gay, and Brian W. Kernighan, A Modeling Language for Mathematical Programming. Management Science 36 (1990) pp. 519-54.

Linear Program

Model Objects

In MathProg the model is described in terms of sets, parameters, variables, constraints, and objectives, which are called model objects. The user introduces particular model objects using the language statements. Each model object is provided with a symbolic name that uniquely identies the object and is intended for referencing purposes.
4

Model Objects

Model objects, including sets, can be multidimensional arrays built over indexing sets.

Structure of Model Description

It is sometimes desirable to write a model which, at various points, may require dierent data for each problem to be solved using that model. For this reason in MathProg the model description consists of two parts: model section and data section. Model section is a main part of the model description that contains declarations of model objects and is common for all problems based on the corresponding model. Data section is an optional part of the model description that contains data specic for a particular problem.
6

Symbolic Names

A symbolic name consists of alphabetic and numeric characters, the rst of which must be alphabetic. All symbolic names are distinct (case sensitive). Examples

alpha123 This_is_a_name _P123_abc_321

Symbolic names are used to identify model objects (sets, parameters, variables, constraints, objectives) and dummy indices.
7

Numeric literals

Numeric literal has the form xxEsyy, where xx is a real number with optional decimal point, s is the sign + or -, yy is an integer decimal exponent. The letter E is case insensitive and can be coded as e. Examples

123 3.14159 56.E+5 .78 123.456e-7


8

Reserved Keywords

Delimiters

10

Comments

11

Numeric Expressions

12

Numeric Expressions

13

Built-in Functions

14

Built-in functions

15

Iterated Expressions

16

Conditional Expressions

17

Arithmetic Operators

18

Symbolic Expressions

19

Indexing mechanisms

20

Relational Expressions

21

Logical operators

22

Linear Expressions

23

Statements

Declaration statements (set statement, parameter statement, variable statement, constraint statement, and objective statement) are used to declare model objects of certain kinds and dene certain properties of that objects. Functional statements (solve statement, check statement, display statement, printf statement, loop statement) are intended for performing some specic actions. Note that declaration statements may follow in arbitrary order which does not aect the result of translation. However, any model object must be declared before it is referenced in other statements.
24

Examples Set statement

25

Examples Parameter statement

26

Examples Variable statement

27

Examples Constraint statement

28

Examples Objective statement

29

Examples For statement

30

Set Data Block

31

Data Records Examples

32

Introduccin a Programacin Entera Mixta (I.P. Integer Programming and Mixed I.P.) E. Puente.

33

Definiciones iniciales

Problema de programacin entera pura: Todas las variables involucradas toman solamente valores enteros. Problema de programacin entera mixta: Algunas de las variables toman solo valores enteros. Problema de programacin entera binaria: Problema de programacin entera en el cual las variables enteras solo toman los valores de 0 y 1.
34

Problema de costo fijo

Este problema surge cuando hay un costo fijo en que se incurre por realizar una actividad, independientemente del nivel al que se desarrolle la actividad, pero en el cual no se incurre si la actividad no se lleva a cabo. Adems existe un costo variable asociado con el nivel al cual se desarrolla la actividad. Por ejemplo, la produccin en una mquina conlleva un costo fijo independiente del volumen de produccin, ms un costo variable unitario constante por cada unidad producida.

35

Ejemplo de Costo Fijo

Una empresa desea maximizar sus utilidades al producir prendas de vestir (shorts, camisetas y pantalones). La empresa puede producir cualquiera de los tres tipos de prendas, o dos tipos, o uno solo, pero si decide producir alguno tiene que rentar la mquina que necesita para ese tipo de prenda, aunque produzca solo una unidad. Cules prendas debe fabricar? Cuntas unidades de cada prenda?

36

Ejemplo de costo fijo


Tipo de Mquina Camiseta Short Pantaln Renta Semanal $200 $150 $100
Mano de Obra (horas por unidad) 3 2 6 150 Tela (m2) 4 3 4 160

Camiseta Short Pantaln Disponibilidad semanal

Camiseta Short Pantaln

Precio de Venta $12 $8 $15

Costo Variable Unit. $6 $4 $8


37

Restricciones para el modelo de Costo Fijo

Para obtener la solucin correcta del problema se deben aadir las siguientes restricciones:

x 1 M 1 y1 x2 M 2 y2 x3 M 3 y3
Los valores de M se seleccionan suficientemente grandes, tratando de encontrar el mnimo valor adecuado (cualquier valor de M suficientemente grande es adecuado).

38

Formulacin final

max z = 6x1 +4x 2 +7x 3 200y 1 150y 2 100 y 3 s.t. : 3x 1 +2x 2 +6x 3 150 4x1 +3x 2 +4x 3 160 x 1 40y 1 x 2 53y 2 x 3 25y 3 x 1, x 2, x 3 0 ; y1, y 2, y 3 = 0 1.
Los valores de las M's en este ejemplo son 40, 53 y 25, por qu?. Ntese que cualquier valor mayor a estos, por ejemplo los 3 iguales a 10000 funcionaran. Sin embargo, se busca en los posible usar valores de M apenas suficientemente grandes, porque valores muy grandes afectaran la precisin de la solucin numrica del problema, por las diferencias de magnitud de los coeficientes del problema.

39

Formulacin para GUSEK


/* Variables*/ var x1 >=0 ; var x2>=0 ; var x3>=0 ; var y1, binary ; var y2, binary; var y3, binary; /*Funcin Objetivo*/ maximize utilidad: 6*x1 + 4*x2 + 7*x3 - 200*y1 - 150*y2 - 100*y3; /*Mano de Obra*/ s.t. M_de_O: 3*x1 + 2*x2 + 6*x3 <= 150; /*Tela*/ subject to Tela: 4*x1 + 3*x2 + 4*x3 <= 160; /*Restricciones de uso de las mquinas*/ camiseta: x1 <= 40*y1; short: x2 <= 53*y2; pantalon: x3 <= 25*y3; end;

40

Formulacin para GUSEK


/* Variables*/ var x1 >=0 ; var x2>=0 ; var x3>=0 ; var y1, binary ; var y2, binary; var y3, binary; /*Funcin Objetivo*/ maximize utilidad: 6*x1 + 4*x2 + 7*x3 - 200*y1 150*y2 - 100*y3; /*Mano de Obra*/ s.t. M_de_O: 3*x1 + 2*x2 + 6*x3 <= 150; /*Tela*/ subject to Tela: 4*x1 + 3*x2 + 4*x3 <= 160; /*Restricciones de uso de las mquinas*/ camiseta: x1 <= 40*y1; short: x2 <= 53*y2; pantalon: x3 <= 25*y3; end;

41

The LockBox Problem


LOCKBOX PROBLEM. Nickles recibe pagos desde 4 regiones, west, midwest, east y south. Volumen diario de pagos recibidos: Regin Volumen ($ 000) W 70 M 50 E 60 S 40 Das necesarios para recibir un pago de cada regin a cada una de 4 posibles oficinas de proceso de pagos.

W M E S

LA 2 6 8 8

CHI 6 2 5 5

NY 8 5 2 5

ATL 8 5 5 2

42

The LockBox problem

La empresa pierde 20% de inters anual por cada da que los pagos estn en trnsito. La operacin de cada oficina de proceso de pagos cuesta $50,000 anuales. La empresa puede operar desde 1 hasta 4 oficinas de proceso de pagos. Cules oficinas debe operar para minimizar sus costos?. Considera que cada regin enviar sus pagos a una sola oficina de proceso.

43

The LockBox problem


set region; set oficina; param FIJO{J in oficina}; param MONTO {I in region}; param DIAS{I in region, J in oficina}; param TASA{I in region, J in oficina} := 0.20*DIAS[I,J]/365; var ENVIOS{I in region, J in oficina}>=0; var OPERA{K in oficina}, binary; minimize COSTO: sum{I in region, J in oficina} ENVIOS[I,J]*TASA[I,J]*MONTO[I]+ sum {K in oficina} FIJO[K]*OPERA[K]; subject to UNICIDAD{I in region}: sum{J in oficina} ENVIOS[I,J] = 1; subject to SIOPERA{I in region, J in oficina}: ENVIOS[I,J] <= OPERA[J]; data; set region := W M E S; set oficina:= LA CHI NY ATL; param MONTO := W 70000 M 50000 E 60000 S 40000; param FIJO := LA 50000 CHI 50000 NY 50000 ATL 50000; param DIAS: LA CHI NY ATL := W 2 6 8 8 M 6 2 5 5 E 8 5 2 5 S 8 5 5 2

44

Restricciones either-or Esta situacin se presenta cuando un problema tiene dos restricciones de la forma:

f x 1, x 2,. .. , x n 0 g x 1, x 2,. .. , x n 0

Y queremos asegurarnos de que al menos una se cumple.

45

Restricciones either-or Agregar las siguientes dos restricciones a la formulacin:

f x 1, x 2,. .. , x n My g x 1, x 2,. .. , x n M 1 y y = 01

46

Ejemplo
(Mixed Integer / Linear Programming) La ensambladora de autos Mexauto est considerando fabricar tres tipos de autos: coup, sedn y pickup. En la tabla se muestran los consumos de mano de obra y acero requeridos por cada auto segn su tipo, la utilidad unitaria de cada tipo y la disponibilidad de recursos para esta semana: Coup 1.5 Ton 30 horas $2000 Sedn 3 Ton 25 horas $3000 PickUp 5 Ton 40 horas $4000 Recursos disponibles 6000 Ton 60000 horas

Acero consumido por unidad M de O requerida por unidad Utilidad por unidad

Para que la fabricacin de un tipo de auto sea rentable deben producirse al menos 1000 unidades de ese tipo en una semana. Formula un problema de programacin entera mixta para determinar el nmero de unidades a producir de cada tipo de vehculo para maximizar las utilidades semanales.

47

Formulacin del ejemplo Cules son la restricciones either-or en este problema? Cules son los valores apropiados de M? Resuelve el problema utilizando LINGO.

48

Restricciones if-then (1)

Este tipo de restricciones aparecen cuando en un problema ocurre que si una restriccion:

f x 1, x 2,. .. , x n 0
debe cumplirse, entonces la restriccin:

g x 1, x 2,. .. , x n 0
debe tambin cumplirse.

49

Restricciones if-then (2)

Y si la restriccion:

f ( x 1, x 2,. .. , x n ) > 0

no se satisface, entonces la restriccin:

g ( x 1, x 2,. .. , x n ) 0

puede o no cumplirse.

f True False

g True True or false 50

Restricciones if-then (2)

Agregar las siguientes restricciones a la formulacin:

g x1, x 2,. .. , x n My f x 1, x 2,. .. , x n M 1 y y = 01

51

The Shortest Path Problem


param n, integer, > 0; set E, within {i in 1..n, j in 1..n}; param c{(i,j) in E}; param s, in {1..n}; param t, in {1..n}; var x{(i,j) in E}, >= 0; s.t. r{i in 1..n}: sum{(j,i) in E} x[j,i] + (if i = s then 1) = sum{(i,j) in E} x[i,j] + (if i = t then 1); minimize Z: sum{(i,j) in E} c[i,j] * x[i,j]; data; param n := 8; param s := 1; param t := 6; param : E : c := 1 2 1 1 4 8 etc...

52

Potrebbero piacerti anche