Sunteți pe pagina 1din 50

El entorno GAMS

GAMS (General Algebraic Modeling System) es un entorno para denir, analizar y resolver problemas de optimizaci on. Los elementos m as importantes de GAMS son: 1. Su capacidad para resolver problemas peque nos (docenas de variables y restricciones) y grandes problemas (miles de variables y restricciones) escribiendo b asicamente el mismo programa. Dispone de una forma compacta y eciente para escribir bloques de ecuaciones similares sin m as que escribir una de ellas. 2. Se separa la denici on del modelo de la t ecnica de resoluci on. El usuario de GAMS formula el modelo consistentemente, y una vez expresado en notaci on GAMS, uno de los programas disponibles se encarga de generar la soluci on. Como resultado, el usuario se centra en el modelado, sin ser perturbado por los problemas t ecnicos de los algoritmos de resoluci on. Esto hace posible un proceso de modelado muy sencillo y agradable. 3. GAMS pr acticamente reproduce la descripci on del problema de programaci on matem atica. Como resultado, el c odigo GAMS is casi auto-explicativo para los lectores que tengan una m nima formaci on en optimizaci on. 4. GAMS suministra tambi en mecanismos que permiten resolver colecciones de problemas de optimizaci on estructurados, tales como los de t ecnicas de descomposici on.
273

EL problema del transporte

Distancias en Km. mercados plantas m1 m2 m3 p1 2.0 1.6 1.8 p2 2.5 1.2 1.4 El problema consiste en Minimizar
j i j

cij xij

sujeta a Los datos son:

xij ai, i i xij bj , j xij 0, i, j,

i: N umero de plantas (2). j : N umero de mercados (3). axima capacidad de producci on de la planta i en ai: La m toneladas (300 y 500 toneladas), bj : La demanda del mercado j en toneladas (100, 200 y 300 toneladas), y cij : el coste de transporte de la planta i al mercado j (0.09 d olares por tonelada y km). Las variables de decisi on son: xij : la cantidad de producto a enviar de la planta i al mercado j , en toneladas.
274

Problema del transporte digo GAMS Co


$Title The Transportation Problem * Simple transportation example Sets i production plants / p1, p2 / j markets / m1*m3 /; Table d(i,j) distance in km m1 m2 m3 p1 2.0 1.6 1.8 p2 2.5 1.2 1.4; Scalar f freight (dollars per ton y km) /0.09/; Parameters a(i) capacity of plant i in tons / p1 300 p2 500 / b(j) demand at market j in tons / m1 100 m2 200 m3 300 / c(i,j) transportation cost in dollars per ton; c(i,j) = f * d(i,j); Variables x(i,j) shipment quantities in tons z total transportation costs in dollars; Positive Variable x; Equations cost objective function supply(i) meet supply limit at plant i demand(j) satisfy demand at market j; cost .. z =e= sum((i,j), c(i,j)*x(i,j)); supply(i) .. sum(j, x(i,j)) =l= a(i); demand(j) .. sum(i, x(i,j)) =g= b(j); Model transport /all/; Solve transport using lp minimizing z; Display x.l;

275

Algunos comandos de GAMS

Comando Set(s)

Prop osito Dar nombre a los ndices y denir sus posibles valores Scalar(s) Dar nombre a los escalares y asignarles valores Parameter(s) Dar nombre a los vectores y asignarles valores Table(s) Dar nombre a las matrices y asignarles valores Variable(s) Declarar variables, asignarles un tipo (opcional) y darles cotas inferior y superior Equation(s) Denir la funci on a optimizar y las restricciones Model Dar nombre a los modelos y asignarles la lista de restricciones Solve Indicar a GAMS el programa que debe resolverlo Display Decir a GAMS los elementos a listar en el informe de salida

276

Reglas de GAMS

1. GAMS no diferencia entre letras may usculas y min usculas. 2. Todo comando debe terminar en punto y coma. 3. Los comandos pueden denirse en cualquier orden, con la u nica restricci on de que un elemento debe haber sido denido antes de usarlo. 4. GAMS tiene palabras reservadas, que no pueden usarse para otro n que el suyo propio. 5. Algunos comandos se identican por sus primeras letras, por lo que puede a nadirse una s para facilitar la lectura. 6. Los comandos pueden escribirse en estilo libre (una o varias l neas, uno o varios espacios, etc.) 7. Para denir un bloque de elementos basta usar el comando una vez. 8. Una l nea precedida por un asterisco (en la primera columna) es interpretada como un comentario. 9. La mayor a de los comandos (sets, scalar, parameter, table, variables, equations y model) se utilizan para declarar elementos y/o darles valores, lo que los convierte en v alidos para GAMS. 10. Los nombres deben comenzar por una letra y seguir con letras o d gitos, hasta un m aximo de 9.
277

SETS y SCALARS

La palabra reservada Set o Sets identica el comando SET, que se usa en GAMS para declarar ndices, y especicar el conjunto de valores que toman. Por ejemplo Sets i production plants / p1, p2 / j markets / m1*m3 /; que dene los dos ndices i y j. El texto tras el n umero de los ndices es ignorado por el compilador de GAMS. La asignaci on de valores se hace entre dos s mbolos /. El s mbolo ayuda a denir, en forma compacta, conjuntos num ericos, es decir, /m1m3/ es equivalente a /m1, m2, m3/. Sin embargo, GAMS trata los valores de los ndices como cadenas de caracteres. El comando concluye con el punto y coma. Los conjuntos anteriores tienen car acter est atico, es decir, no cambian durante la ejecuci on del programa. En GAMS se pueden denir tambi en conjuntos din amicos, que son subconjuntos de los conjuntos est aticos, pero que pueden cambiar durante la ejecuci on del programa. Un comando ligado a la denici on de conjuntos es el comando alias. Este comando permite dar variaos nombres equivalentes, al mismo conjunto: Alias(i,k); da un segundo nombre k, al conjunto i. Estos se usan en sumas, productos, etc., cuando hay dos o m as ndices implicados y necesitan variar independientemente. Los escalares GAMS son escalares de datos. La palabra reservada Scalar o Scalars identica el comando: Scalar f freight (dollars per ton y km) /0.09/;

Se dene el escalar f y se le asigna el valor 0.09 entre dos /.


278

PARAMETERS y TABLES I

Los comandos PARAMETER y TABLE se usan en GAMS para denir vectores y matrices de datos. Ambos son equivalentes, excepto que para denir vectores es necesario usar el comando PARAMETER. La palabra reservada Parameter, o Parameters, identica el comando parameter the PARAMETER., que sirve para declarar vectores y matrices. Los vectores de datos se declaran con ayuda de un ndice, como en. Parameters a(i) capacity of plant i in tons / p1 300 p2 500 /; que dene el par ametro a(i) en funci on del conjunto ( ndice) i. Para cada valor del ndice (elemento del conjunto) (p1, p2) se da un valor del par ametro (300, 500) entre dos s mbolos /. El comando termina con punto y coma. Para asignar valores a vectores deben tenerse en cuenta las reglas siguientes: 1. La lista opcional de posibles ndices y sus correspondientes valores deben ir entre s mbolos /.../ y separados por comas o pasos de l nea. 2. Las parejas ndice-valor pueden ir en cualquier orden. 3. El valor por defecto de cualquier par ametro es cero, por lo que s olo aquellos que tomen valores diferentes, deben darse. 4. GAMS comprueba que los ndices son v alidos. Se pueden denir valores de los par ametros mediante funciones: Parameter c(i,j) transportation cost in dollars per ton; c(i,j) = f * d(i,j);

279

PARAMETERS y TABLES II

La denici on anterior es la forma compacta de la que sigue: Parameter c(i,j) transportation cost in dollars per ton / p1.m1 0.180 p2.m1 0.225 p1.m2 0.144 p2.m2 0.108 p1.m3 0.162 p2.m3 0.126 /; Las matrices de datos se denen en GAMS mediante tablas. La palabra reservada Table o Tables identica este comando. Las tablas se denen usando dos o m as ndices. Se pueden introducir comentarios tras el nombre de la tablas, como en: Table d(i,j) p1 p2 distance in km m1 m2 2.0 1.6 2.5 1.2 m3 1.8 1.4;

que dene la matriz d(i,j) mediante los ndices indices i y j. Para cada pareja cruzada de ndices (p1.m1, p1.m2, p1.m3, p2.m1, p2.m2, p2.m3) se especica un valor (2.0, 1.6, 1.8, 2.5, 1.2, 1.4). Para mostrar la equivalencia entre los comandos PARAMETER y TABLE se dene la matriz c(i,j) usando ambos Table c(i,j) transportation cost in dollars per ton m1 m2 m3 p1 0.180 0.144 0.162 p2 0.225 0.108 0.126; N otese que esta no es la forma m as compacta de denir c(i,j).
280

ticas Expresiones matema

Para asignar valores utilizando expresiones matem aticas hay que tener en cuenta las reglas siguientes: 1. El uso de ndices en la asignaci on indica que la asignaci on se hace para todos sus posibles valores y combinaciones de ellos. 2. Se puede hacer una asignaci on espec ca dando los valores de los ndices entre comillas: c(p1,m1)=0.180; 3. Se pueden asignar m as de una vez valores a los escalares, par ametros y tablas. Los nuevos valores reemplazan a los antiguos. 4. Las expresiones matem aticas pueden incorporar funciones matem aticas est andar (ver tabla adjunta).

281

ticas en GAMS Funciones matema

Funci on abs(x) arctan(x) ceil(x) cos(x) errorf(x)

Descripci on

Valor absoluto de x Arco tangente (en radianes) M nimo entero mayor o igual que x Funci on coseno (x en radianes) Funci on de distribuci onn de la normal N (0, 1) en x exp(x) Funci on exponencial oor(x) Mayor entero menor o igual que x log(x) Logaritmo natural de x log10(x) Logaritmo en base 10 de x mapval(x) Funci on proyecci on max(x1,x2,...) M aximo de una lista min(x1,x2,...) M` nimo de una lista mod(x,y ) Resto al dividir x por y normal(x,y ) N umero aleatorio de una variable normal con media x y desviaci on t pica y power(x,y ) Funci on potencial xy (donde y debe ser un entero) x y Funci on potencial xy (donde x debe ser positiva) round(x) Redondeo de x al entero m as cercano round(x,y ) Redondea x a y decimales sign(x) Signo de x, 1 si positivo, -1 si negativo, y 0 si nulo. sin(x) Funci on seno (en radianes) sqr(x) Cuadrado de x sqrt(x) Ra z cuadrada de x trunc(x) Es igual a sign(x) * oor(abs(x)) uniform(x,y ) N umero aleatorio uniforme U (x, y )

282

Variables

Las variables se declaran en GAMS como sigue: Variables x(i,j) z Cantidades enviadas en toneladas coste total del transporte en d olares;

La palabra reservada Variable o Variables identica el comando variable. La declaraci on de las variables debe incluir las dimensiones de las mismas. Debe utilizarse siempre una variable para representar la funci on objetivo. Tambi en se pueden denir diferentes tipos de variables (ver tabla): Positive Variable x; Binary Variable r; Tipo de variable Rango Rango por defecto binary {0, 1} {0, 1} free (default) (, ) (, ) integer {0, 1, . . . , n} {0, 1, . . . , 100} negative (, 0) (, 0) positive (0, ) (0, ) Se pueden jar tambi en cotas para las variables, o jar sus valores (no cambian durante la ejecuci on): r.lo = 2.0; r.up = 5.0; y.fx(i) = 3.0; y cambiar los valores de las variables durante la ejecuci on: s.l(i,j) = 3.0;

283

EQUATIONS

La palabra reservada Equation o Equations identica el comando epara denir restricciones en GAMS. Las ecuaciones deben ser declaradas primero y denidas despu es, usando el s mbolo .. para acoplar los nombres con las deniciones de estas. Equations cost objective function supply(i) meet supply limit at plant i demand(j) satisfy demand at market j; cost .. z =e= sum((i,j), c(i,j)*x(i,j)); supply(i) .. sum(j, x(i,j)) =l= a(i); demand(j) .. sum(i, x(i,j)) =g= b(j); El sumatorio i xij se expresa sum(i, x(i,j)), y ixij , se escribe prod(i, x(i,j)). Los s mbolos que se utilizan en las ecuaciones son: =e= indica es igual a, =l= indica es menor o igual que, y =g= indica es mayor o igual que. Se pueden denir muchas ecuaciones simult aneamente, usando ndices: supply(i) .. es equivalente a: supply1 .. supply2 .. sum(j,x(p1,j)) sum(j,x(p2,j)) =l= =l= a(p1); a(p2); sum(j, x(i,j)) =l= a(i);

284

MODEL AND SOLVE

El comando Model se usa para indicar a GAMS las restricciones que debe incluir un determinado modelo. El comando Model que sigue indica que el problema considerado incluye todas las restricciones denidas previamente: Model transport /all/; Tambi en puede escribirse como: Model transport /cost,supply,demand/; El comando Solve indica a GAMS que resuelva el problema indicado. El comando Solve que sigue indica a GAMS que resuelva el problema transport usando el programa de programaci on lineal (lp) y minimizando la variable z. Solve transport using lp minimizing z; La palabra reservada lp se usa para programaci on lineal. Otras opciones se dan en la tabla. Programa lp nlp dnlp mip rmip minlp rminlp mcp mpec cns Prop osito Programaci on lineal Programaci on no lineal Programaci on no lineal con derivadas discontinuas Programaci on entera mixta Programaci on entera mixta relajada Programaci on no lineal entera mixta Programaci on no lineal entera mixta relajada Problemas complementarios mixtos Problemas matem aticos con restricciones de equilibrio Sistemas no lineales con restricciones

285

n sobre recursos Informacio

En GAMS pueden usarse sub ndices para obtener informaci on valiosa sobre ciertos recursos, una vez que se ha resuelto el problema. Algunos sub ndices notables son: modelstat para comprobar el estado del modelo, solvestat para comprobar el estado del programa que lo resuelve y resusd para comprobar el tiempo (en segundos de CPU) empleado para resolverlo. V eanse los posibles valores de modelstat y solvestat en la tabla adjunta. Un ejemplo es: Display transport.resusd;

Valor 1 2 3 4 5 6 7 8 9 10 11 12 13

modelstat optimal locally optimal unbounded infeasible locally infeasible intermediate infeasible intermediate non-optimal integer solution intermediate non-integer integer infeasible error unknown error no solution

solvestat normal completion iteration interrupt resource interrupt terminated by solver evaluation error limit unknown error: preprocessor error error: setup failure error: solver failure error: internal solver error error: post-processor error error: system failure

286

Uso del asterisco

Se puede usar el asterisco para: A nadir comentarios (primera columna de una l nea). Para listar los elementos de un conjunto en forma compacta. Para marcar errores en el chero de salida (cuatro asteriscos al comienzo de la l nea). Para indicar en el chero de salida que las restricciones no lineales no son factibles en el punto de partida (tres asteriscos al nal de la l nea). Como operador producto. Para denir conjuntos indirectamente en las estructuras de GAMS (sets, parameters, tables, variables o equations). Por ejemplo: Set A conjunto de art culos /a1,a2/; Table g(A,*) aspectos de los A art culos altura anchura peso * (cm) (cm) (kg) a1 1.0 2.7 3.5 a2 2.4 1.8 4.4; es euivalente a Sets A set of articles /a1,a2/ B set of features /height,width,weight/; Table g(A,B) features of the A articles altura anchura peso * (cm) (cm) (kg) a1 1.0 2.7 3.5 a2 2.4 1.8 4.4;
287

Comandos condicionales

El s mbolo $ puede utilizarse para generar subconjuntos convenientes de los conjuntos ordenados originales. La sentencia. demand(j)$(ord(j) gt 1).. sum(i, x(i,j))=g=b(j); es equivalente a demand2.. demand3.. sum(i, x(i,m2)) sum(i, x(i,m3)) =g= =g= b(m2); b(m3);

N otese que $(ord(j) gt 1) indica que s olo los elementos cuyo ordinal sea mayor que 1 deben ser inclu dos. Estas condiciones se pueden utilizar tambi en en otros comandos de GAMS como: asignaciones de datos, comando put, etc. En todos estos casos es posible reemplazar el operador $ por los comandos if-then-else. Sin embargo, por compacidad se usa m as el $. Otros operadores comunes en otros lenguajes son tambi en v alidos en GAMS: not, y, or, xor como operadores l ogicos; < (lt), <= (le), = (eq),<> (ne), >= (ge), > (gt) como operadores relacionales.

288

micos I Conjuntos dina

Una caracter stica muy potente de GAMS es que permite usar conjuntos din amicos. Usando estos se pueden modicar los elementos que pertenecen a un conjunto durante la ejecuci on de un programa GAMS. Los conjuntos din amicos se denen siempre como subconjuntos de uno est atico previamente denido. Las variables, par ametros, tablas y ecuaciones que dependen de un conjunto din amico pueden ser modicadas cada vez que se actualiza un conjunto din amico. La tabla que sigue muestra la equivalencia entre las expresiones matem aticas y las de GAMS. Expresi on matem atica k = {a, b, c} sk s= s = {c } s = {b, c} Expresi on GAMS Set k /a,b,c/ s(k); s(k)=no; s(k)=no; s(k)$(ord(k) eq card(k))=yes; s(k)=no; s(k)$(ord(k) gt 1)=yes;

En la primera la se dene el conjunto est atico k y luego el subconjunto din amico s(k) como funci on de k. Antes de usar un conjunto din amico hay que denir su estado inicial. Uno de ellos es el conjunto vac o, que se dene en la segunda la.

289

micos II Conjuntos dina

La tercera la muestra c omo asignar el u ltimo elemento de k al s(k), mediante los operadoresord(k) y card(k). El operador card devuelve el n umero de elementos, y el ord, la posici on de un elemento. El operador ord s olo es v alido para conjuntos est aticos). La u ltima la indica c omo asignar dos elementos a s(k). Se pueden implementar en GAMS operaciones entre conjuntos usando conjuntos din amicos. Los ejemplos de la tabla adjunta muestran algunos interesantes: Expresi on matem atica A = {a1, a2, a3, a4, a5} b A, b = {a1, a2, a5} c A, c = {a2, a3, a5} b c = {a1, a2, a3, a5} b c = {a2, a5} b = {a3, a4} b c = {a1} Expresi on GAMS set A static set /a1*a5/; set B(A) subset /a1,a2,a5/; set C(A) subset /a2,a3,a5/; set UN(A) dynamic subset; UN(A)=B(A)+C(A); set IN(A) dynamic subset; IN(A)=B(A)*C(A); set COMP(A) dynamic subset; COMP(A)=not B(A); set DIFF(A) dynamic subset; DIFF(A)=B(A)-C(A);

290

Comandos de control

El ejemplo siguiente ilustra c omo se usan los comandos de control. loop(S, loop(JJ, x0=0.0001; x1=2.0; aux=W0.l(JJ)+sum(I,W.l(JJ,I)*X(I,S)); error=1000; f0=sum(R$(ord(R)<4),alpha.l(JJ,R)*(x0**ord(R))) +alpha.l(JJ,4)*arctan(x0)-aux; f1=sum(R$(ord(R)<4),alpha.l(JJ,R)*(x1**ord(R))) +alpha.l(JJ,4)*arctan(x1)-aux; put "aux=",aux:12:8, " f0=",f0:12:8," f1=",f1:12:8/; if(f0*f1>0.0, put "POSSIBLE ERROR EN INVERSAS"/; ); while(error gt 0.00001, error=abs(x0-x1); x2=(x0+x1)*0.5; f2=sum(R$(ord(R)<4),alpha.l(JJ,R)*(x2**ord(R))) +alpha.l(JJ,4)*arctan(x2)-aux; if(f2*f0>0.0, f0=f2; x0=x2; else f1=f2; x1=x2; );); aux=(x0+x1)*0.5; gam(JJ,S)=rho*gam(JJ,S)+(1.0-rho)*(1.0/abs(aux-Y(JJ,S))); if(maxerror(J)<abs(aux-Y(JJ,S)),maxerror(J)=abs(aux-Y(JJ,S))); meanerror(JJ)=meanerror(JJ)+abs(aux-Y(JJ,S)); var(JJ)=var(JJ)+sqr(abs(aux-Y(JJ,S))); ););

291

Salidas usando ficheros

El ejemplo siguiente ilustra c omo grabar resultados en en chero de salida y los formatos. SOLVE onelayer USING lp MINIMIZING z; put "J=",J.tl:2," z=",z.l:15:9/; loop(JJ, put "W(0 ,",JJ.tl:3,")=",W0.l(JJ):15:7/; loop(I, put "W(",I.tl:4,",",JJ.tl:3,")=",W.l(JJ,I):15:7/; ); ); loop(JJ, loop(R, put "ALPHA(",JJ.tl:3,",",R.tl:3,")=",alpha.l(JJ,R):10:6/; ); ); loop(S, loop(I, put " X(",I.tl:4,",",S.tl:3,")=",X(I,S):15:7; ); put " "/; loop(JJ, put " Y(",JJ.tl:4,",",S.tl:3,")=",Y(JJ,S):15:7; ); put " "//; ); put "x0=",x0:12:6," x1=",x1:12:6/;

292

El problema del transporte I

Minimizar Z = sujeta a
n j =1 m

i=1 j =1

cij xij .

(1)

xij = ui; i = 1 . . . m, (2)

xij = vj ; j = 1 . . . n, i=1 xij 0; i = 1 . . . m; j = 1 . . . n, 1 2 3 2 5 3 , u= C= 2 1 2 , y v = 2. 3 2 1 4 2


donde m = n = 3 y

$title THE TRANSPORTATION PROBLEM SETS I index of shipping origins J index of shipping destinations PARAMETERS U(I) the /I1 I2 I3 V(J) the /J1 J2 J3

/I1*I3/ /J1*J3/;

amount of good to be shipped from origin I 2 3 4/ amount of good to be received in destination J 5 2 2/;

293

El problema del transporte II

TABLE C(I,J) cost of sending a unit from I to J J1 J2 J3 I1 1 2 3 I2 2 1 2 I3 3 2 1; VARIABLES z objective function variable x(I,J) the amount of product to be shipped from I to J; POSITIVE VARIABLE x(I,J); EQUATIONS COST objective function equation SHIP(I) shipping equation RECEIVE(J) receiving equation; COST .. SHIP(I) .. RECEIVE(J) .. z =E= SUM((I,J), C(I,J)*x(I,J)) ; SUM(J, x(I,J)) =E= U(I) ; SUM(I, x(I,J)) =E= V(J) ;

MODEL transport /COST,SHIP,RECEIVE/; SOLVE transport USING lp MINIMIZING z;

294

n El problema de planificacio n I de la produccio

Maximizar Z = sujeta a

t=1

(atyt btxt ctst),

(3)

st1 + xt st = yt, t = 1 . . . n, (4) 0. s t , x t , yt donde at = bt = ct = 1, t = 1 . . . n; n = 4; s0 = 2 y y = (2, 3, 6, 1)T . $title PRODUCTION_SCHEDULING PROBLEM SET T

The month index /0*4/;

PARAMETER Y(T) demand in month T /1 2 2 3 3 6 4 1/ A(T) B(T) C(T); A(T)=1; B(T)=1; C(T)=1;

295

n El problema de planificacio n II de la produccio

VARIABLES z objective function variable x(T) number of units produced in month T s(T) number of units in storage in month T; POSITIVE VARIABLES x(T),s(T); s.fx(0)=2; EQUATIONS COST objective function INOUT(T) input and output balance; COST.. z =E= SUM(T$(ord(T) gt 1), A(T)*Y(T)-B(T)*x(T)-C(T)*s(T)); INOUT(T)$(ord(T) gt 1)..s(T)=E= s(T-1)+x(T)-Y(T); MODEL scheduling /ALL/; SOLVE scheduling USING lp MAXIMIZING z; Por tanto, la soluci on del problema es: Z = 2, x = (0, 3, 6, 1)T , s = (2, 0, 0, 0, 0)T .

296

El problema de la dieta I

Minimizar Z = sujeta a
n j =1

n j =1

cj xj ,

(5)

aij xj bi; i = 1 . . . m xj 0; j = 1 . . . n.
67.2 13.7 0.14 1.29 77.0 74.2 30.4 14.7 , b = , 0.14 0.41 0.86 0.55

donde m = 4, n = 5 y
78.6 6.50 A= 0.02 0.27

70.1 9.40 0.09 0.34

80.1 8.80 0.03 0.30

1 0.5 . and c = 2 1.2 3

$title DIET PROBLEM SET I J

set of nutrients set of foods

/DN,DP,Ca,Ph/ /Corn,Oats,Milo,Bran,Linseed/;

PARAMETERS B(I) the minimum required amount of nutrient I /DN 74.2 DP 14.7 Ca 0.14 Ph 0.55/ C(J) cost of one unit of food J /Corn 1 Oats 0.5 Milo 2 Bran 1.2 Linseed 3/;
297

El problema de la dieta II

TABLE A(I,J) amount of Corn Oats Milo DN 78.6 70.1 80.1 DP 6.5 9.4 8.8 Ca 0.02 0.09 0.03 Ph 0.27 0.34 0.30

nutrient I in one unit of food J Bran Linseed 67.2 77.0 13.7 30.4 0.14 0.41 1.29 0.86;

VARIABLES z objective function variable x(J) the amount of food J to be purchased POSITIVE VARIABLE x(J); EQUATIONS COST objective function NUTFOOD(I) nutrients and food relation; COST .. NUTFOOD(I) .. z =E= SUM(J, C(J)*x(J)); SUM(J, A(I,J)*x(J)) =G= B(I);

MODEL diet /ALL/; SOLVE diet USING lp MINIMIZING z;

La soluci on o ptima de este problema es : Z = 0.793, x = (0, 1.53, 0, 0.023, 0)T . (6)

298

mico I Despacho econo

Minimizar Z = sujeto a k j i Bij (i j ) + pi P ij Bij (i j ) P i pi donde n = 3, k = 3 ,


n i=1

Ci pi,

(7)

= =

0 Di; i = 1, 2, . . . , n. P ij ; j i, i = 1, 2, . . . , n. P i; i = 1, 2, . . . , n. (8)

0.15 0.6 6 , p= , c = , p= 0.10 0.4 7 0.0 2.5 B= 3.5 1

2.5 3.5 0.3 0.5 0.0 0.0 , D = 0.0 , P = 0.3 , 0.0 3.0 0 . 0 0 . 4 3.0 0.0 0.85 0.5 0.4 0.0 = {2, 3}, 2 = {1, 3}, y 3 = {1, 2},

y la variables son p1, p2, 1 and 2.


$title THE ECONOMIC DISPATCH PROBLEM SETS G index of generators /G1*G2/ N index of buses /N1*N3/ MAP(G,N) associates generators with buses /G1.N1,G2.N2/; ALIAS(N,NP);

299

mico II Despacho econo

TABLE GDATA(G,*) generator input data PMIN PMAX COST * (kW) (kW) (E/kWh) G1 0.15 0.6 6 G2 0.10 0.4 7; TABLE LDATA(N,N,*) line input data SUS LIMIT * (S) (kW) N1.N2 2.5 0.3 N1.N3 3.5 0.5 N2.N3 3.0 0.4; PARAMETER LOAD(N)

load at bus N / N3

0.85 /

VARIABLES z objective function variable p(G) output power for generator G d(N) angle at bus N; p.lo(G)=GDATA(G,PMIN); p.up(G)=GDATA(G,PMAX); d.fx(N3)=0; EQUATIONS COST objective function MAXPOW(N,N) maximum line power limit MINPOW(N,N) minimum line power limit LOADBAL(N) load balance equation; COST.. z =e= SUM(G,GDATA(G,COST)*p(G)); MAXPOW(N,NP).. LDATA(N,NP,SUS)*(d(N)-d(NP))=l= LDATA(N,NP,LIMIT); MINPOW(N,NP).. LDATA(N,NP,SUS)*(d(N)-d(NP))=g=-LDATA(N,NP,LIMIT); LOADBAL(N).. SUM(G$MAP(G,N),p(G))+SUM(NP,LDATA(N,NP,SUS) *(d(N)-d(NP))+LDATA(NP,N,SUS)*(d(N)-d(NP)))=e=LOAD(N); MODEL ed /COST,MAXPOW,MINPOW,LOADBAL/; SOLVE ed USING lp MINIMIZING z;
300

Problema de la red de flujo I

Minimizar Z = sujeta a
j

ij

cij xij

(xij xji) = fi; i = 1, . . . , n;

fij xij fij ; i < j. donde n = 4, se supone que fij = 4, i, j , y (f1, f2, f3, f4) = (7, 4, 1, 2) y cij = 1; i, j .
$title NETWORK FLOW PROBLEM SET I set of nodes in the network /I1*I4/ CONEX(I,I) set of node connections /I1.I2,I1.I3,I1.I4,I2.I4,I3.I4/; ALIAS(I,J) PARAMETERS F(I) the input or output flow at node I /I1 7 I2 -4 I3 -1 I4 -2/ FMAX(I,J) maximum flow capacity of conduction from I to J; FMAX(I,J)=4; VARIABLES z objective function variable x(I,J) the flow going from node I to node J
301

Problema de la red de flujo II

POSITIVE VARIABLE x(I,J); x.lo(I,J)=-FMAX(I,J); x.up(I,J)=FMAX(I,J); EQUATIONS COST objective function BALANCE(I) conservation of flow conditions; COST .. z =E= SUM((I,J)$CONEX(I,J),x(I,J)) ; BALANCE(I) .. SUM(J$CONEX(I,J),x(I,J)) -SUM(J$CONEX(J,I),x(J,I)) =E= F(I) ; MODEL netflow /ALL/; SOLVE netflow USING lp MINIMIZING z;

Una parte del chero de salida es:


---- VAR Z Z LOWER LEVEL -INF 5.000 objective function variable UPPER +INF MARGINAL .

---- VAR X LOWER I1.I2 -4.000 I1.I3 -4.000 I1.I4 -4.000 I2.I4 -4.000 I3.I4 -4.000

the flow going from node I to node J LEVEL UPPER MARGINAL . 4.000 . 3.000 4.000 . 4.000 4.000 -1.000 -4.000 4.000 EPS 2.000 4.000 .

La soluci on es: Z = 5, x12 = 0, x13 = 3, x14 = 4, x24 = 4, x34 = 2.

302

La cartera de valores I

Maximizar Z = sujeta a bi + xi r( j vj (bj + xj )) j vj x j j wj (bj + xj ) =

dj (bj + xj )

(9)

0 v i (b i + x i ) 0 (1 + s) j vj bj .

(10)

Sea el caso particular de tres acciones, 75 de A1, 100 de A2 y 35 de A3, con valores $20, $20 y $100, respectivamente. a dividendos con Adem as, se tiene la informaci on: A1 no dar a $3 por acci on y su valor ser a un nuevo valor $18, A2 pagar a $5 por acci on con nuevo valor $102. Si se $23, y A3 pagar toma r = 0.25 y s = 0.03, se tiene
xA xB xC 0.25 [20(75 + xA) + 20(100 + xB ) + 100(35 + xC )] 0.25 [20(75 + xA) + 20(100 + xB ) + 100(35 + xC )] 0.25 [20(75 + xA) + 20(100 + xB ) + 100(35 + xC )] 20xA + 20xB + 100xC 18(75 + xA) + 23(100 + xB ) + 102(35 + xC ) $title THE PORTFOLIO PROBLEM SET I set of stocks /A1,A2,A3/; ALIAS(I,J); 75, 100, 35, 20(75 + xA), 20(100 + xB ), 100(35 + xC ), = 0, 1.03(20(175)+3500).

303

La cartera de valores II

SCALARS

r s

percentage percentage

/0.25/ /0.03/;

TABLE * A1 A2 A3

data(I,*) B V ($) 75 20 100 20 35 100

D W ($) ($) 0 18 3 23 5 102

VARIABLES z objective function variable x(I) number of shares of stock I; POSITIVE VARIABLE x(I); x.lo(I)=-data(I,B); EQUATIONS COST NOCHANGE INFLATION BALANCE(I) COST .. NOCHANGE .. INFLATION ..

objective function no change in the current value future value must be 3\% greater than the current value to avoid excessive reliance on a single stock;

z =E= SUM(I,data(I,D)*(x(I)+data(I,B))) ; SUM(I,data(I,V)*x(I)) =E= 0; SUM(I,data(I,W)*(x(I)+data(I,B)))=G= (1+s)*SUM(I,data(I,V)*data(I,B)); BALANCE(I).. r*SUM(J,data(J,V)*(x(J)+data(J,B)))=L= data(I,V)*(x(I)+data(I,B)); MODEL portfolio /ALL/; SOLVE portfolio USING lp MAXIMIZING z;

La soluci on es: Z = 612.5 en el punto xA = 12.5, xB = 75.0, xC = 17.5.


304

El andamio I

Maximizar Z = sujeta a TE + TF TC + TD TA + TB 10TF 8TD 10TB = = = = = =

xi

x2 , TF , x1 + TC + TD , 5x2, 6TF , 5x1 + 2TC + 10TD .

$title SCAFFOLDING PROBLEM (LINEAR) SET B set of beams /B1*B3/ R set of ropes /RA,RB,RC,RD,RE,RF/ L set of loads /L1,L2/ UPP(B,R) / B1.(RA,RB) B2.(RC,RD) B3.(RE,RF)/ DOWN(B,R) / B1.(RC,RD) B2.(RF)/ LOAD(B,L) / B1.L1 B3.L2/; PARAMETER LMAX(R) maximum load for ropes / (RA,RB) 300 (RC,RD) 200 (RE,RF) 100/;

305

El andamio II

PARAMETER DL(L) coordinates of load L/ L1 7 L2 5/; PARAMETER DR(R) coordinates of rope R / RA 2 RB 12 RC 4 RD 12 RE 0 RF 10/; VARIABLES z objective function variable x(L) the applied load t(R) tension on rope R ; t.up(R) = LMAX(R); EQUATIONS COST objective function FORCES(B) force equilibrium equation MOMENT(B) moment equilibrium equation; COST .. z =E= SUM(L, x(L)) ; FORCES(B)..SUM(R$UPP(B,R),t(R))=E= SUM(L$LOAD(B,L),x(L))+ SUM(R$DOWN(B,R),t(R)); MOMENT(B)..SUM(R$UPP(B,R),DR(R)*t(R))=E=SUM(L$LOAD(B,L), DL(L)*x(L))+SUM(R$DOWN(B,R),DR(R)*t(R)); MODEL scaffold /COST,FORCES,MOMENT/; SOLVE scaffold USING lp MAXIMIZING z;

La soluci on es: Z = 640; x1 = 440, x2 = 200; TA = 240, TB = 300, TC = 25, TD = 75, TE = 100, TF = 100.
306

El armador I

Maximizar Z = sujeta a
n

j =1

cj xj

xj {0, 1} j = 1 n. donde se ha supuesto que aj = cj , b = 700 y a = (100, 155, 50, 112, 70, 80, 60, 118, 110, 55)T .
$title 0-1 KNAPSACK PROBLEM. OPTION OPTCR=1e-10; SET J

j =1

aj xj b,

set of containers

/c1*c10/;

PARAMETERS C(J) benefit of container J /c1 100 c2 155 c3 50 c4 112 c5 70 c6 80 c7 60 c8 118 c9 110 c10 55/ A(J) weight of container J; A(J) = C(J);
307

El armador II

SCALAR B maximum capacity of the freighter/700/; VARIABLES z objective function variable x(J) binary choice; BINARY VARIABLE x; EQUATIONS COST objective function CAPA is the loading of the freighter; COST .. CAPA .. z=E= SUM(J,C(J)*x(J)); SUM(J,A(J)* x(J)) =L= B;

MODEL knapsack /ALL/; SOLVE knapsack USING mip MAXIMIZING z; La soluci on indica que deben estar los contenedores: c1, c3, c4, c5, c6, c7, c8, c9. El valor o ptimo es Z = 700 Tn., lo que implica que el barco ir a lleno.

308

n de energ Problema de la distribucio a I

Minimizar Z = sujeta a

k =1 j =1

[Aj vj (k ) + Bj pj (k ) + Cj yj (k ) + Dj zj (k )] (11)

P j v j (k ) p j (k ) pj (k + 1) pj (k ) pj (k ) pj (k + 1) yj (k ) zj (k ) J j =1 pj (k ) J j =1 P j vj (k )

= =

P j vj (k ); Sj ; Tj ; vj (k ) vj (k 1); D(k ); D(k ) + R(k );


j, k, j, k = 0, , K 1, j, k = 0, , K 1, j, k = 1, , K, k, k,

(12)

donde K = 4, J = 3, y 50 350 300 200 P= 80 , P = 200 , T = 150 , S = 100 , 40 140 100 100 5 20 0.5 0.100 A= 7 , B = 18 , C = 0.3 , E = 0.125 , 6 5 1.0 0.150 150 15 D= 500 , R = 50 . 400 40 $title THE UNIT COMMITMENT PROBLEM SETS K index of periods of time /1*4/ J index of generators /1*3/

309

n de energ Problema de la distribucio a I

TABLE GDATA(J,*) generator input data PMIN PMAX T S A B C D * (kW) (kW) (kW/h) (kW/h) (E) (E) (E) (E/kWh) 1 50 350 300 200 5 20 0.5 0.100 2 80 200 150 100 7 18 0.3 0.125 3 40 140 100 100 6 5 1.0 0.150; TABLE PDATA(K,*) data per period D R * (kW) (kW) 2 150 15 3 500 50 4 400 40; VARIABLES z objective function variable p(J,K) output power of generator j at period k v(J,K) is 1 if generator j is active in period k y(J,K) is 1 if generator j is started-up at the beginning of period k s(J,K) is 1 if generator j is shut-down in period k; POSITIVE VARIABLES p(J,K); BINARY VARIABLES v(J,K),y(J,K),s(J,K); v.fx(J,1)=0; p.fx(J,1)=0; EQUATIONS COST objective function PMAXL(J,K) maximum output power equation PMINL(J,K) minimum output power equation LOAD(K) load balance equation

310

n de energ Problema de la distribucio a I

EQUATIONS RESERVE(K) spinning reserve equation LOGIC(J,K) start-up shut-down and running logic RUP(J,K) maximum up ramp rate limit RDOWN(J,K) maximum down ramp rate limit; COST..z=e= SUM((K,J),GDATA(J,A)*v(J,K)+GDATA(J,B) *y(J,K)+GDATA(J,C)*s(J,K)+GDATA(J,D)*p(J,K)); PMAXL(J,K)$(ord(K) GT 1)..p(J,K)=l=GDATA(J,PMAX)*v(J,K); PMINL(J,K)$(ord(K) GT 1)..p(J,K)=g=GDATA(J,PMIN)*v(J,K); LOAD(K)$(ord(K) GT 1)..SUM(J,p(J,K))=e=PDATA(K,D); RESERVE(K)$(ord(K) GT 1)..SUM(J,GDATA(J,PMAX)*v(J,K))=g= PDATA(K,D)+PDATA(K,R); LOGIC(J,K)$(ord(K) GT 1)..y(J,K)-s(J,K)=e=v(J,K)-v(J,K-1); RUP(J,K)$(ord(K) GT 1)..p(J,K)-p(J,K-1)=l=GDATA(J,S); RDOWN(J,K)$(ord(K) GT 1)..p(J,K-1)-p(J,K)=l=GDATA(J,T); MODEL uc /ALL/; SOLVE uc USING mip MINIMIZING z;

La soluci on es: 350 320 1 1 150 1 0 100 80 1 1 Z = 191, P = , V = 0 0 50 0 0 1 0 0 0 0 0 1 0 . 0 1 0 0 0 yj (k ) = , pj (k ) = 0 0 1 0 0 0 1


311

n I Modelos de localizacio

Maximizar Z = sujeta a
j J iI

iI j J

cij xij

j J

fj yj .

xij = bi, xij uj yj ,

i I j J

yj {0, 1}, j J i I, j J. xij 0, donde se supone que uj = 6 j , fj = 10 j y b = (1.5, 2.0, 3.0, 4.0, 2.5, 1.0, 2.0).
$Title MODEL OF DISCRETE LOCATION OPTION OPTCR=1e-10; SET I index of cities /C1*C7/ J index of locations /L1*L6/; PARAMETERS B(I) /C1 F(J) U(J) F(J) U(J) demand of a certain good in the city I 1.5 C2 2.0 C3 3.0 C4 4.0 C5 2.5 C6 1.0 C7 2.0/ amortization cost of an industrial plant at J maximum production capacity of a plant in J; = 10; = 6;

312

n II Modelos de localizacio

Ciudades Situaci on C1 C2 C3 C4 C5 C6 C7 L2 1.5 2.0 1.0 L4 3.0 2.5 L5 3.0 1.0 2.0
TABLE C(J,I) benefits according to different locations C1 C2 C3 C4 C5 C6 C7 L1 4.0 4.5 2.5 0.5 1.0 0.5 -3.5 L2 4.0 4.5 2.5 4.2 3.5 1.5 -0.5 L3 3.5 5.0 4.0 3.5 4.5 1.5 0.0 L4 1.3 3.0 5.0 3.3 5.5 1.8 1.3 L5 0.5 1.0 1.5 5.0 4.0 5.5 3.0 L6 -1.0 0.0 1.5 3.3 4.0 4.5 2.0 ; VARIABLES z objective function variable x(I,J) the amount of good that is made at J and sold at I y(J) location variable. Equal to 1 if the plant is at J, and 0 otherwise. POSITIVE VARIABLE x; BINARY VARIABLE y; EQUATIONS COST objective function SD(I) satisfying demand of city I CAPA(J) capacity of production of the plant I; COST .. z=e= SUM((I,J),C(J,I)*x(I,J))-SUM(J,F(J)*y(J)); SD(I) .. SUM(J,x(I,J)) =e= B(I); CAPA(J).. SUM(I,x(I,J)) =l= U(J)*y(J); MODEL loc /all/; SOLVE loc USING mip MAXIMIZING z; DISPLAY x.l;
313

EL problema de la Academia I

Maximizar y Minimizar Zj = sujeta a


S s=1 J I S

i=1 s=1

xijs, j {1, 2, . . . , J }

xijs 1, xijs 1,

i {1, 2, . . . , I }, j {1, 2, . . . , J } i {1, 2, . . . , I }, s {1, 2, . . . , S } j {1, 2, . . . , J }

j =1 i=1 s=1

psxijs = cj ,

xijs {0, 1}, i, j, s

$title ACADEMY SETS I number of actual members /1*20/ J number of candidates /1*8/ DIN(J) S the number of different scores to be assigned /1*4/; ALIAS(J,J1); PARAMETER P(S) the $s$-th score /1 10 2 8 3 3 4 1/; SCALARS zmin,zmax; PARAMETER C(J) total score obtained by candidate J; C(J)=sum(I,N(I,J)); VARIABLES z function to be optimized ; BINARY VARIABLE x(I,J,S) if member I assigns score P(S) to J is 1.
314

EL problema de la Academia II

TABLE N(I,J) score assigned to candidate J by member I 1 2 3 4 5 6 7 8 ************************************************** 1 3 10 8 1 2 1 10 8 3 3 1 3 10 8 4 3 10 8 1 5 3 8 10 1 6 1 10 8 3 7 10 8 3 1 8 3 10 1 8 9 8 3 10 1 10 3 10 1 8 11 8 1 10 3 12 10 13 10 8 14 10 1 3 8 15 3 10 8 1 16 10 1 8 3 17 1 3 10 8 18 1 3 8 10 19 1 10 3 8 20 8 1 10 3 ; EQUATIONS OBJ function to be optimized L1(I,J) Can assign at most one score to each candidate L2(I,S) Can asign score S to at most one candidate TOTALSCORE(J) totalscore given;
315

EL problema de la Academia III

OBJ(J)$DIN(J)..z=e=sum(I,sum(S,x(I,J,S))); L1(I,J)..sum(S,x(I,J,S))=l=1; L2(I,S)..sum(J,x(I,J,S))=l=1; TOTALSCORE(J)..sum(I,sum(S,P(S)*x(I,J,S)))=e=C(J); MODEL Academy /ALL/; file aux /academy.out/; put aux; DIN(J)=NO; loop(J1, DIN(J1)=YES; Solve Academy using mip Minimizing z; zmin=z.l; Solve Academy using mip Maximizing z; zmax=z.l; put "J=",J1.tl:3," zmin= ",zmin:3:0," zmax= ",zmax:3:0/; DIN(J1)=NO; );

y el contenido del chero de salida es: J=1 J=2 J=3 J=4 J=5 J=6 J=7 J=8 zmin= 8 zmax= 20 zmin= 3 zmax= 14 zmin= 15 zmax= 20 zmin= 2 zmax= 13 zmin= 15 zmax= 20 zmin= 2 zmax= 18 zmin= 3 zmax= 20 zmin= 1 zmax= 8
316

EL problema de los horarios I

Minimizar sujeta a
si nc c=1

nc nh

s c=1 h=1

(c + h) v (s, c, h) i h, i s c, h h, b

nh h=1 v (s, c, h) nc si c=1 v (s, c, h) nh nc c=1 h=1 v (s, c, h) sb

= = s v (s, c, h) nc c=1 v (s, c, h)

ni , 1, 1, 1, 1,

$title CLASS TIMETABLE SETS C classrooms /c1*c3/ H hours /h1*h5/ S subjects /s1*s8/ I instructors /i1,i2/ B blocks /b1,b2/ SI(S,I) maps subjects and instructors /(s1,s2,s8).i1,(s3*s7).i2/ SB(S,B) maps subjects and blocks /(s1*s4).b1,(s5*s8).b2/; VARIABLE z; BINARY VARIABLE v(S,C,H); EQUATIONS cost compact the timetable const1(I) instructors teach all his subjects const2(H,I) instructors teach at most 1 subject per hour const3(S) every subject is taught once const4(C,H) in every classroom-hour pair 1 subject const5(H,B) every hour at most 1 subject of any blockt;
317

EL problema de los horarios II

EQUATIONS cost.. const1(I)..

SUM((S,C,H),(ord(C)+ord(H))*v(S,C,H))=e=z ; SUM((S,C,H)$SI(S,I),v(S,C,H))=e= SUM(S$SI(S,I),card(S))/card(S); const2(H,I)..SUM((S,C)$SI(S,I),v(S,C,H)) =l= 1; const3(S).. SUM((C,H),v(S,C,H)) =e= 1; const4(C,H)..SUM(S,v(S,C,H)) =l= 1; const5(H,B)..SUM((S,C)$SB(S,B),v(S,C,H)) =l= 1; model timetable /all/; solve timetable using mip minimizing z; DISPLAY v.L;

Parte del chero de salida es:


---- VAR Z ---S1.C2 S2.C2 S3.C1 S4.C1 S5.C1 S6.C1 S7.C1 S8.C2 LOWER -INF LEVEL 32.000 UPPER +INF MARGINAL .

34 VARIABLE V.L H1 H2 1.000 1.000

H3

H4

H5

1.000 1.000 1.000 1.000 1.000 1.000

318

El problema del abastecimiento de agua I Planteamiento no lineal

La nueva funci on objetivo es: Z= que corresponde a Z=


ij ij cij (x+ ij + xij ),

cij |xij |.

$title WATER SUPPLY NETWORK (nonlinear) SET I set of nodes in the network /I1*I4/ CONEX(I,I) set of node connections /I1.I2,I1.I3,I1.I4,I2.I4,I3.I4/; ALIAS(I,J) PARAMETERS F(I) the input or output flow at node I /I1 20 I2 -3 I3 -10 I4 -7/ FMAX(I,J) maximum flow capacity of conduction from I to J; FMAX(I,J)=8; VARIABLES z objective function variable x(I,J) the flow going from node I to node J POSITIVE VARIABLE x(I,J); x.lo(I,J)=-FMAX(I,J); x.up(I,J)=FMAX(I,J);

319

El problema del abastecimiento de agua II Planteamiento no lineal EQUATIONS COST objective function BALANCE(I) conservation of flow conditions; COST .. z=e=SUM((I,J)$CONEX(I,J),ABS(x(I,J))); BALANCE(I) ..SUM(J$CONEX(I,J),x(I,J)) -SUM(J$CONEX(J,I),x(J,I))=e=F(I); MODEL wsn_dnlp /ALL/; SOLVE wsn_dnlp USING dnlp MINIMIZING z;

Una parte del chero de salida es:


---- VAR Z Z LOWER LEVEL UPPER -INF 23.000 +INF objective function variable MARGINAL .

---- VAR X LOWER I1.I2 -8.000 I1.I3 -8.000 I1.I4 -8.000 I2.I4 -8.000 I3.I4 -8.000

the flow going from node I to node J LEVEL UPPER MARGINAL 4.000 8.000 . 8.000 8.000 -2.000 8.000 8.000 -1.000 1.000 8.000 . -2.000 8.000 .

La soluci on es: 0 4 Z = 23.000, X = 8 8


320

4 0 0 1

8 0 0 2

8 1 . 2 0

El problema del andamio I

Maximizzar sujeta a
sb

xi ts, b B, drsts, b B,

ts =

ib

xi +

xb

sb

drsts =

ib

xlixi +

xb

0 ts Ts, s S, 0 xli lb, i b, 0 xi .


$title SCAFFOLDING (NON-LINEAR) SET B set of beams /B1*B3/ R set of ropes /RA,RB,RC,RD,RE,RF/ L set of loads /L1,L2/ UPP(B,R) /B1.(RA,RB) B2.(RC,RD) B3.(RE,RF)/ DOWN(B,R) /B1.(RC,RD) B2.(RF)/ LOAD(B,L) /B1.L1 B3.L2/;
321

El problema del andamio II

PARAMETER LMAX(R) maximum load for ropes / (RA,RB) 300 (RC,RD) 200 (RE,RF) 100/; PARAMETER dr(R) coordinates of rope R / RA 2 RB 12 RC 4 RD 12 RE 0 RF 10/; VARIABLES z objective function variable x(L) the amount of food J to be purchased T(R) tension on rope R d(L) distance from the left end-points of beams; POSITIVE VARIABLE d; T.UP(R) = LMAX(R); EQUATIONS COST objective function FORCES(B) force equilibrium equation MOMENT(B) moment equilibrium equation; COST .. z =E= SUM(L, x(L)) ; FORCES(B)..SUM(R$UPP(B,R),T(R))=E= SUM(L$LOAD(B,L),x(L))+ SUM(R$DOWN(B,R),T(R)); MOMENT(B)..SUM(R$UPP(B,R),dr(R)*T(R))=E=SUM(L$LOAD(B,L), d(L)*x(L))+SUM(R$DOWN(B,R),dr(R)*T(R)); MODEL ropebeam /COST,FORCES,MOMENT/; SOLVE ropebeam USING nlp MAXIMIZING z;

La soluci on es: Z = 700 en x1 = 500, x2 = 200, d1 = 6.4, d2 = 5.0, TA = 300, TB = 300, TC = 25, TD = 75, TE = 100, TF = 100.
322

S-ar putea să vă placă și