Distancias en Km. mercados plantas m1 m2 m3 p p Minimizar i

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Distancias en Km. mercados plantas m1 m2 m3 p p Minimizar i"

Transcripción

1 El entorno GAMS GAMS (General Algebraic Modeling System) es un entorno para definir, analizar y resolver problemas de optimización. Los elementos más importantes de GAMS son: 1. Su capacidad para resolver problemas pequeños (docenas de variables y restricciones) y grandes problemas (miles de variables y restricciones) escribiendo básicamente el mismo programa. Dispone de una forma compacta y eficiente para escribir bloques de ecuaciones similares sin más que escribir una de ellas. 2. Se separa la definición del modelo de la técnica de resolución. El usuario de GAMS formula el modelo consistentemente, y una vez expresado en notación GAMS, uno de los programas disponibles se encarga de generar la solución. Como resultado, el usuario se centra en el modelado, sin ser perturbado por los problemas técnicos de los algoritmos de resolución. Esto hace posible un proceso de modelado muy sencillo y agradable. 3. GAMS prácticamente reproduce la descripción del problema de programación matemática. Como resultado, el código GAMS is casi auto-explicativo para los lectores que tengan una mínima formación en optimización. 4. GAMS suministra también mecanismos que permiten resolver colecciones de problemas de optimización estructurados, tales como los de técnicas de descomposición. 273

2 El problema consiste en EL problema del transporte Distancias en Km. mercados plantas m1 m2 m3 p p Minimizar i j c ijx ij sujeta a Los datos son: a i, i b j, j x ij 0, i, j, j x ij i x ij i: Número de plantas (2). j: Número de mercados (3). a i :Lamáxima capacidad de producción de la planta i en toneladas (300 y 500 toneladas), b j : La demanda del mercado j en toneladas (100, 200 y 300 toneladas), y c ij : el coste de transporte de la planta i al mercado j (0.09 dólares por tonelada y km). Las variables de decisión son: x ij : la cantidad de producto a enviar de la planta i al mercado j, en toneladas. 274

3 Problema del transporte Código GAMS $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 p p ; 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

4 Algunos comandos de GAMS Comando Propósito Set(s) Dar nombre a los índices y definir 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) Definir la función 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

5 Reglas de GAMS 1. GAMS no diferencia entre letras mayúsculas y minúsculas. 2. Todo comando debe terminar en punto y coma. 3. Los comandos pueden definirse en cualquier orden, con la única restricción de que un elemento debe haber sido definido antes de usarlo. 4. GAMS tiene palabras reservadas, que no pueden usarse para otro fin que el suyo propio. 5. Algunos comandos se identifican por sus primeras letras, por lo que puede añadirse 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 definir 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álidos para GAMS. 10. Los nombres deben comenzar por una letra y seguir con letras o dígitos, hasta un máximo de

6 SETS y SCALARS La palabra reservada Set o Sets identifica el comando SET, que se usa en GAMS para declarar índices, y especificar el conjunto de valores que toman. Por ejemplo Sets i production plants / p1, p2 / j markets / m1*m3 /; que define los dos índices i y j. El texto tras el número de los índices es ignorado por el compilador de GAMS. La asignación de valores se hace entre dos símbolos /. El símbolo ayuda a definir, en forma compacta, conjuntos numéricos, es decir, /m1 m3/ 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ácter estático, es decir, no cambian durante la ejecución del programa. En GAMS se pueden definir también conjuntos dinámicos, que son subconjuntos de los conjuntos estáticos, pero que pueden cambiar durante la ejecución del programa. Un comando ligado a la definición 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. Éstos se usan en sumas, productos, etc., cuando hay dos o más índices implicados y necesitan variar independientemente. Los escalares GAMS son escalares de datos. La palabra reservada Scalar o Scalars identifica el comando: Scalar f freight (dollars per ton y km) /0.09/; Se define el escalar f y se le asigna el valor 0.09 entre dos /. 278

7 PARAMETERS y TABLES I Los comandos PARAMETER y TABLE se usan en GAMS para definir vectores y matrices de datos. Ambos son equivalentes, excepto que para definir vectores es necesario usar el comando PARAMETER. La palabra reservada Parameter, o Parameters, identifica 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 define el parámetro a(i) en función del conjunto (índice) i. Para cada valor del índice (elemento del conjunto) (p1, p2) se da un valor del parámetro (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ámetro es cero, por lo que sólo aquellos que tomen valores diferentes, deben darse. 4. GAMS comprueba que los índices son válidos. Se pueden definir valores de los parámetros mediante funciones: Parameter c(i,j) transportation cost in dollars per ton; c(i,j) = f * d(i,j); 279

8 PARAMETERS y TABLES II La definición anterior es la forma compacta de la que sigue: Parameter c(i,j) transportation cost in dollars per ton / p1.m p2.m p1.m p2.m p1.m p2.m /; Las matrices de datos se definen en GAMS mediante tablas. La palabra reservada Table o Tables identifica este comando. Las tablas se definen usando dos o más índices. Se pueden introducir comentarios tras el nombre de la tablas, como en: Table d(i,j) distance in km m1 m2 m3 p p ; que define 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 especifica 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 define la matriz c(i,j) usando ambos Table c(i,j) transportation cost in dollars per ton m1 m2 m3 p p ; Nótese que ésta no es la forma más compacta de definir c(i,j). 280

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

10 Funciones matemáticas en GAMS Función Descripción abs(x) Valor absoluto de x arctan(x) Arco tangente (en radianes) ceil(x) Mínimo entero mayor o igual que x cos(x) Función coseno (x en radianes) errorf(x) Función de distribuciónn de la normal N(0, 1) en x exp(x) Función exponencial floor(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ón proyección max(x 1,x 2,...) Máximo de una lista min(x 1,x 2,...) Mìnimo de una lista mod(x,y) Resto al dividir x por y normal(x,y) Número aleatorio de una variable normal con media x y desviación típica y power(x,y) Función potencial x y (donde y debe ser un entero) x y Función potencial x y (donde x debe ser positiva) round(x) Redondeo de x al entero más cercano round(x,y) Redondea x a y decimales sign(x) Signo de x, 1 si positivo, -1 si negativo, y0sinulo. sin(x) Función seno (en radianes) sqr(x) Cuadrado de x sqrt(x) Raíz cuadrada de x trunc(x) Es igual a sign(x) * floor(abs(x)) uniform(x,y) Número aleatorio uniforme U(x, y) 282

11 Variables Las variables se declaran en GAMS como sigue: Variables x(i,j) z Cantidades enviadas en toneladas coste total del transporte en dólares; La palabra reservada Variable o Variables identifica el comando variable. La declaración de las variables debe incluir las dimensiones de las mismas. Debe utilizarse siempre una variable para representar la función objetivo. También se pueden definir 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 fijar también cotas para las variables, o fijar sus valores (no cambian durante la ejecución): r.lo = 2.0; r.up = 5.0; y.fx(i) = 3.0; y cambiar los valores de las variables durante la ejecución: s.l(i,j) = 3.0; 283

12 EQUATIONS La palabra reservada Equation o Equations identifica el comando epara definir restricciones en GAMS. Las ecuaciones deben ser declaradas primero y definidas después, usando el símbolo.. para acoplar los nombres con las definiciones de éstas. 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 x ij se expresa sum(i, x(i,j)), y Π i x ij, 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 definir muchas ecuaciones simultáneamente, usando índices: supply(i).. sum(j, x(i,j)) =l= a(i); es equivalente a: supply1.. sum(j,x( p1,j)) =l= a( p1 ); supply2.. sum(j,x( p2,j)) =l= a( p2 ); 284

13 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 definidas previamente: Model transport /all/; También 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ón lineal (lp) y minimizando la variable z. Solve transport using lp minimizing z; La palabra reservada lp se usa para programación lineal. Otras opciones se dan en la tabla. Programa lp nlp dnlp mip rmip minlp rminlp mcp mpec cns Propósito Programación lineal Programación no lineal Programación no lineal con derivadas discontinuas Programación entera mixta Programación entera mixta relajada Programación no lineal entera mixta Programación no lineal entera mixta relajada Problemas complementarios mixtos Problemas matemáticos con restricciones de equilibrio Sistemas no lineales con restricciones 285

14 Información sobre recursos En GAMS pueden usarse subíndices para obtener información 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éanse los posibles valores de modelstat y solvestat en la tabla adjunta. Un ejemplo es: Display transport.resusd; Valor modelstat solvestat 1 optimal normal completion 2 locally optimal iteration interrupt 3 unbounded resource interrupt 4 infeasible terminated by solver 5 locally infeasible evaluation error limit 6 intermediate infeasible unknown 7 intermediate non-optimal - 8 integer solution error: preprocessor error 9 intermediate non-integer error: setup failure 10 integer infeasible error: solver failure 11 - error: internal solver error 12 error unknown error: post-processor error 13 error no solution error: system failure 286

15 Uso del asterisco Se puede usar el asterisco para: Añadir comentarios (primera columna de una línea). Para listar los elementos de un conjunto en forma compacta. Para marcar errores en el fichero de salida (cuatro asteriscos al comienzo de la línea). Para indicar en el fichero de salida que las restricciones no lineales no son factibles en el punto de partida (tres asteriscos al final de la línea). Como operador producto. Para definir 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) a a ; 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) a a ; 287

16 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.. sum(i, x(i, m2 )) =g= b( m2 ); demand3.. sum(i, x(i, m3 )) =g= b( m3 ); Nótese que $(ord(j) gt 1) indica que sólo los elementos cuyo ordinal sea mayor que 1 deben ser incluídos. Estas condiciones se pueden utilizar también 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ás el $. Otros operadores comunes en otros lenguajes son también válidos en GAMS: not, y, or, xor como operadores lógicos; < (lt), <= (le), = (eq),<> (ne), >= (ge), > (gt) como operadores relacionales. 288

17 Conjuntos dinámicos I Una característica muy potente de GAMS es que permite usar conjuntos dinámicos. Usando éstos se pueden modificar los elementos que pertenecen a un conjunto durante la ejecución de un programa GAMS. Los conjuntos dinámicos se definen siempre como subconjuntos de uno estático previamente definido. Las variables, parámetros, tablas y ecuaciones que dependen de un conjunto dinámico pueden ser modificadas cada vez que se actualiza un conjunto dinámico. La tabla que sigue muestra la equivalencia entre las expresiones matemáticas y las de GAMS. Expresión matemática Expresión GAMS k = {a, b, c} Set k /a,b,c/ s k s(k); s = s(k)=no; s = {c} s(k)=no; s(k)$(ord(k) eq card(k))=yes; s = {b, c} s(k)=no; s(k)$(ord(k) gt 1)=yes; En la primera fila se define el conjunto estático k y luego el subconjunto dinámico s(k) como función de k. Antes de usar un conjunto dinámico hay que definir su estado inicial. Uno de ellos es el conjunto vacío, que se define en la segunda fila. 289

18 Conjuntos dinámicos II La tercera fila muestra cómo asignar el último elemento de k al s(k), mediante los operadores ord(k) y card(k). El operador card devuelve el número de elementos, y el ord, la posición de un elemento. El operador ord sólo es válido para conjuntos estáticos). La última fila indica cómo asignar dos elementos a s(k). Se pueden implementar en GAMS operaciones entre conjuntos usando conjuntos dinámicos. Los ejemplos de la tabla adjunta muestran algunos interesantes: Expresión matemática Expresión GAMS A = {a1,a2,a3,a4,a5} set A static set /a1*a5/; b A, b = {a1,a2,a5} set B(A) subset /a1,a2,a5/; c A, c = {a2,a3,a5} set C(A) subset /a2,a3,a5/; b c = {a1,a2,a3,a5} set UN(A) dynamic subset; UN(A)=B(A)+C(A); b c = {a2,a5} set IN(A) dynamic subset; IN(A)=B(A)*C(A); b = {a3,a4} set COMP(A) dynamic subset; COMP(A)=not B(A); b c = {a1} set DIFF(A) dynamic subset; DIFF(A)=B(A)-C(A); 290

19 Comandos de control El ejemplo siguiente ilustra cómo 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 , 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

20 Salidas usando ficheros El ejemplo siguiente ilustra cómo grabar resultados en en fichero 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

21 sujeta a El problema del transporte I Minimizar Z = m i=1 n j=1 c ijx ij. (1) n x ij = u i ; i =1...m, j=1 m x ij = v j ; j =1...n, i=1 x ij 0; i =1...m; j =1...n, donde m = n =3y C = , u = $title THE TRANSPORTATION PROBLEM 2 3 4, y v = (2) SETS I index of shipping origins J index of shipping destinations /I1*I3/ /J1*J3/; PARAMETERS U(I) the amount of good to be shipped from origin I /I1 2 I2 3 I3 4/ V(J) the amount of good to be received in destination J /J1 5 J2 2 J3 2/; 293

22 El problema del transporte II TABLE C(I,J) cost of sending a unit from I to J J1 J2 J3 I I I ; 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.. z =E= SUM((I,J), C(I,J)*x(I,J)) ; SHIP(I).. SUM(J, x(i,j)) =E= U(I) ; RECEIVE(J).. SUM(I, x(i,j)) =E= V(J) ; MODEL transport /COST,SHIP,RECEIVE/; SOLVE transport USING lp MINIMIZING z; 294

23 El problema de planificación de la producción I Maximizar Z = n ty t b t x t c t s t ), t=1 (3) sujeta a s t 1 + x t s t = y t, t =1...n, s t,x t,y t 0. (4) donde a t = b t = c t =1, t =1...n; n =4; s 0 =2y y =(2, 3, 6, 1) T. $title PRODUCTION_SCHEDULING PROBLEM SET T The month index /0*4/; PARAMETER Y(T) demand in month T / / A(T) B(T) C(T); A(T)=1; B(T)=1; C(T)=1; 295

24 El problema de planificación de la producción II 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ón del problema es: Z =2, x =(0, 3, 6, 1) T, s =(2, 0, 0, 0, 0) T. 296

25 sujeta a donde m =4,n =5y A = El problema de la dieta I Minimizar Z = n n a ijx j b i ; i =1...m j=1 x j $title DIET PROBLEM j=1 c jx j, (5) 0; j =1...n., b = , and c = SET I set of nutrients /DN,DP,Ca,Ph/ J set of foods /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

26 El problema de la dieta II TABLE A(I,J) amount of nutrient I in one unit of food J Corn Oats Milo Bran Linseed DN DP Ca Ph ; 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.. z =E= SUM(J, C(J)*x(J)); NUTFOOD(I).. SUM(J, A(I,J)*x(J)) =G= B(I); MODEL diet /ALL/; SOLVE diet USING lp MINIMIZING z; La solución óptima de este problema es : Z =0.793, x =(0, 1.53, 0, 0.023, 0) T. (6) 298

27 Despacho económico I sujeto a Minimizar Z = n i=1 C i p i, (7) δ k = 0 j Ωi B ij (δ i δ j )+p i = D i ; i =1, 2,...,n. P ij B ij (δ i δ j ) P ij ; j Ω i,i=1, 2,...,n. P i p i P i ; i =1, 2,...,n. (8) donde n =3,k =3, B = p = , p = 0.10, D = 0.6, c = , P = 6, Ω 1 = {2, 3}, Ω 2 = {1, 3}, y Ω 3 = {1, 2}, y la variables son p 1, p 2, δ 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

28 Despacho económico II TABLE GDATA(G,*) generator input data PMIN PMAX COST * (kw) (kw) (E/kWh) G G ; TABLE LDATA(N,N,*) line input data SUS LIMIT * (S) (kw) N1.N N1.N N2.N ; PARAMETER LOAD(N) load at bus N / N / 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

29 Problema de la red de flujo I Minimizar Z = ij c ijx ij sujeta a (x ij x ji ) = f i ; i =1,...,n; j f ij x ij f ij ; i <j. donde n = 4, se supone que f ij =4, i, j, y(f 1,f 2,f 3,f 4 )= (7, 4, 1, 2) y c ij =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

30 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 fichero de salida es: LOWER LEVEL UPPER MARGINAL ---- VAR Z -INF INF. Z objective function variable ---- VAR X the flow going from node I to node J LOWER LEVEL UPPER MARGINAL I1.I I1.I I1.I I2.I EPS I3.I La solución es: Z =5, x 12 =0, x 13 =3, x 14 =4, x 24 = 4, x 34 =2. 302

31 La cartera de valores I Maximizar Z = j d j(b j + x j ) (9) sujeta a b i + x i 0 r( j v j (b j + x j )) v i (b i + x i ) j v j x j = 0 j w j (b j + x j ) (1 + s) j v j b j. (10) Sea el caso particular de tres acciones, 75 de A 1, 100 de A 2 y35dea 3, con valores $20, $20 y $100, respectivamente. Además, se tiene la información: A 1 no dará dividendos con un nuevo valor $18, A 2 pagará $3 por acción y su valor será $23, y A 3 pagará $5 por acción con nuevo valor $102. Si se toma r =0.25 y s =0.03, se tiene x A 75, x B 100, x C 35, 0.25 [20(75 + x A ) + 20(100 + x B ) + 100(35 + x C )] 20(75 + x A ), 0.25 [20(75 + x A ) + 20(100 + x B ) + 100(35 + x C )] 20(100 + x B ), 0.25 [20(75 + x A ) + 20(100 + x B ) + 100(35 + x C )] 100(35 + x C ), 20x A +20x B + 100x C = 0, 18(75 + x A ) + 23(100 + x B ) + 102(35 + x C ) 1.03(20(175)+3500). $title THE PORTFOLIO PROBLEM SET I set of stocks /A1,A2,A3/; ALIAS(I,J); 303

32 La cartera de valores II SCALARS r percentage /0.25/ s percentage /0.03/; TABLE data(i,*) B V D W * ($) ($) ($) A A A 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) 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; COST.. z =E= SUM(I,data(I, D )*(x(i)+data(i, B ))) ; NOCHANGE.. SUM(I,data(I, V )*x(i)) =E= 0; INFLATION.. 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ón es: Z = enelpuntox A =12.5, x B =75.0, x C =

33 El andamio I sujeta a Maximizar Z = i x i T E + T F = x 2, T C + T D = T F, T A + T B = x 1 + T C + T D, 10T F =5x 2, 8T D =6T F, 10T B =5x 1 +2T C +10T D. $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

34 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ón es: Z = 640; x 1 = 440, x 2 = 200; T A = 240, T B = 300, T C =25, T D =75, T E = 100, T F =

35 sujeta a n El armador I Maximizar Z = n j=1 c jx j a jx j j=1 b, x j {0, 1} j =1 n. donde se ha supuesto que a j = c j, 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 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

36 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.. z=e= SUM(J,C(J)*x(J)); CAPA.. SUM(J,A(J)* x(j)) =L= B; MODEL knapsack /ALL/; SOLVE knapsack USING mip MAXIMIZING z; La solución indica que deben estar los contenedores: c 1,c 3,c 4,c 5,c 6,c 7,c 8,c 9. El valor óptimo es Z = 700 Tn., lo que implica que el barco irá lleno. 308

37 Problema de la distribución de energía I Minimizar Z = K sujeta a J k=1 j=1 [A j v j (k)+b j p j (k)+c j y j (k)+d j z j (k)] P j v j (k) p j (k) P j v j (k); j, k, p j (k +1) p j (k) S j ; j, k =0,,K 1, p j (k) p j (k +1) T j ; j, k =0,,K 1, y j (k) z j (k) = v j (k) v j (k 1); j, k =1,,K, J j=1 p j (k) = D(k); k, J j=1 P j v j (k) D(k)+R(k); k, donde K =4,J =3,y P = A = , P =, B = D = , T =, C = , R = $title THE UNIT COMMITMENT PROBLEM SETS K index of periods of time /1*4/ J index of generators /1*3/, S =, E = ,, (11) (12) 309

38 Problema de la distribución de energí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) ; TABLE PDATA(K,*) data per period D R * (kw) (kw) ; 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

39 Problema de la distribución de energí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ón es: Z = 191, P = y j (k) = , p j (k) =, V =

40 Modelos de localización I sujeta a Maximizar Z = i I c ijx ij f jy j. j J j J x ij = b i, i I j J x ij u j y j, j J i I y j {0, 1}, j J x ij 0, i I, j J. donde se supone que u j =6 j, f j =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) demand of a certain good in the city I /C1 1.5 C2 2.0 C3 3.0 C4 4.0 C5 2.5 C6 1.0 C7 2.0/ F(J) amortization cost of an industrial plant at J U(J) maximum production capacity of a plant in J; F(J) = 10; U(J) = 6; 312

41 Modelos de localización II Ciudades Situación C 1 C 2 C 3 C 4 C 5 C 6 C 7 L L L TABLE C(J,I) benefits according to different locations C1 C2 C3 C4 C5 C6 C7 L L L L L L ; 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

42 EL problema de la Academia I Maximizar y Minimizar Z j = I sujeta a S I i=1 S i=1 S s=1 x ijs, j {1, 2,...,J} s=1 x ijs 1, i {1, 2,...,I}, j {1, 2,...,J} J j=1 x ijs 1, i {1, 2,...,I}, s {1, 2,...,S} p sx ijs = c j, j {1, 2,...,J} s=1 x ijs {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 / /; 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

43 EL problema de la Academia II TABLE N(I,J) score assigned to candidate J by member I ************************************************** ; 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

44 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 fichero de salida es: J=1 zmin= 8 zmax= 20 J=2 zmin= 3 zmax= 14 J=3 zmin= 15 zmax= 20 J=4 zmin= 2 zmax= 13 J=5 zmin= 15 zmax= 20 J=6 zmin= 2 zmax= 18 J=7 zmin= 3 zmax= 20 J=8 zmin= 1 zmax= 8 316

45 EL problema de los horarios I sujeta a Minimizar n c s Ωi c=1 n h n c s Ωi n c n h s Ω c=1 h=1 (c + h) v(s, c, h) h=1 v(s, c, h) = n i, i c=1 v(s, c, h) 1, h, i n c c=1 n h h=1 v(s, c, h) = 1, s s Ω v(s, c, h) 1, c, h n c s b c=1 v(s, c, h) 1, h, b $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

46 EL problema de los horarios II EQUATIONS cost.. SUM((S,C,H),(ord(C)+ord(H))*v(S,C,H))=e=z ; const1(i).. 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 fichero de salida es: LOWER LEVEL UPPER MARGINAL ---- VAR Z -INF INF VARIABLE V.L H1 H2 H3 H4 H5 S1.C S2.C S3.C S4.C S5.C S6.C S7.C S8.C

47 El problema del abastecimiento de agua I Planteamiento no lineal La nueva función objetivo es: Z = ij c ij(x + ij + x ij), que corresponde a Z = ij c ij x ij. $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

48 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 fichero de salida es: LOWER LEVEL UPPER MARGINAL ---- VAR Z -INF INF. Z objective function variable ---- VAR X the flow going from node I to node J LOWER LEVEL UPPER MARGINAL I1.I I1.I I1.I I2.I I3.I La solución es: Z =23.000, X =

49 El problema del andamio I sujeta a Maximizzar i x i t s = x i + s Ψ b i Ω b t s,b B, x Θ b dr s t s = xl i x i + s Ψ b i Ω b 0 t s T s,s S, 0 xl i l b,i Ω b, 0 x i. $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/; dr s t s,b B, x Θ b 321

50 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ón es: Z = 700 en x 1 = 500, x 2 = 200, d 1 =6.4, d 2 =5.0, T A = 300, T B = 300, T C =25, T D =75, T E = 100, T F =

Estructura de un modelo GAMS (1/3)

Estructura de un modelo GAMS (1/3) GAMS Contenido Estructura de un modelo en GAMS. Ejemplo a través del cual se ilustra el lenguaje Conjuntos Datos Variables Ecuaciones Sumatoria y Productoria Definición de escuaciones Función Objetivo

Más detalles

Curso básico de GAMS Verano Cinetífico 2007 Gabriela Garcia Ayala (mg_garcia@yahoo.com)

Curso básico de GAMS Verano Cinetífico 2007 Gabriela Garcia Ayala (mg_garcia@yahoo.com) Curso básico de GAMS Verano Cinetífico 2007 Gabriela Garcia Ayala (mg_garcia@yahoo.com) Historia GAMS (General Algebraic Modeling System) empieza como un proyecto de investigación en el Banco Mundial en

Más detalles

Contenido. Lenguajes de modelado algebraico Ejemplo Problema de Transporte Modelado con GNU GLPK. 1 Modelado Algebraico Computacional

Contenido. Lenguajes de modelado algebraico Ejemplo Problema de Transporte Modelado con GNU GLPK. 1 Modelado Algebraico Computacional Contenido 1 Modelado Algebraico Computacional Facultad de Ingeniería. UdelaR Fundamentos de Programación Entera 1/16 Basados en notación algebraica; incorporan conjuntos y relaciones entre estos para modelar

Más detalles

Optimización bajo Incertidumbre A. Sistema de modelado algebraico - GLPK

Optimización bajo Incertidumbre A. Sistema de modelado algebraico - GLPK Optimización bajo Incertidumbre A. Sistema de modelado algebraico - GLPK Carlos Testuri Germán Ferrari Depto. Investigación Operativa. Instituto de Computación. Facultad de Ingeniería, UdelaR 2003-17 Facultad

Más detalles

Lenguaje GAMS. José María Ferrer Caja Universidad Pontificia Comillas ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INDUSTRIAL DEPARTAMENTO DE ORGANIZACIÓN

Lenguaje GAMS. José María Ferrer Caja Universidad Pontificia Comillas ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INDUSTRIAL DEPARTAMENTO DE ORGANIZACIÓN Lenguaje GAMS José María Ferrer Caja Universidad Pontificia Comillas Lenguaje GAMS- 0 Alternativas para desarrollar modelos Lenguajes de programación de propósito general C, C++, Java, Visual Basic, FORTRAN

Más detalles

Introduction to Optimization Ángel Marín. Second Laboratory Lecture options, file input-output, dollar,

Introduction to Optimization Ángel Marín. Second Laboratory Lecture options, file input-output, dollar, Introduction to Optimization Ángel Marín Second Laboratory Lecture options, file input-output, dollar, Gams options Gams options * Opciones por defecto en fichero OPCIONES_DEF.GMS * se llama mediante un

Más detalles

GAMS (General Algebraic Modeling System)

GAMS (General Algebraic Modeling System) GAMS (General Algebraic Modeling System) GAMS Creado en 1987. Entorno de desarrollo GAMSIDE Manual de usuario Help-Docs-gams-gamsusersguide.pdf Manuales de optimizadores Help-Docs-solvers Modelo: nombre_fichero.gms

Más detalles

EJERCICIO DE PROGRAMACIÓN LINEAL Y PROGRAMACIÓN LINEAL ENTERA CON GAMS

EJERCICIO DE PROGRAMACIÓN LINEAL Y PROGRAMACIÓN LINEAL ENTERA CON GAMS EJERCICIO DE PROGRAMACIÓN LINEAL Y PROGRAMACIÓN LINEAL ENTERA CON GAMS La empresa FERCA, S.A., se dedica al envasado de fertilizantes para el suministro a sus clientes, debe determinar el plan de envasado

Más detalles

Práctica 0: Introducción a Matlab. Matlab es un acrónimo: MATrix LABoratory

Práctica 0: Introducción a Matlab. Matlab es un acrónimo: MATrix LABoratory Práctica 0: Introducción a Matlab Matlab es un acrónimo: MATrix LABoratory Práctica 0: Introducción a Matlab Matlab es un acrónimo: MATrix LABoratory La ventana de Matlab muestra un escritorio dividido

Más detalles

Modelamiento de problemas de optimización con AMPL

Modelamiento de problemas de optimización con AMPL 1 1 Modelamiento de problemas de optimización con AMPL Jorge Hans Alayo Gamarra 15 de mayo de 2014 1. Introducción Generalmente cuando se analiza un problema mediante modelos de optimización/programación

Más detalles

Oriol R oca. M a t L a b FUNCIONES EN MATLAB

Oriol R oca. M a t L a b FUNCIONES EN MATLAB FUNCIONES EN MATLAB Funciones Son ficheros con una estructura especial, que definen funciones análogas a las de MATLAB. Con carácter general, una función recibe unos DATOS DE ENTRADA, ejecuta unas ÓRDENES

Más detalles

AMPL CPLEX para resolver problemas lineales enteros de optimización. Víctor Bucarey López IN3701 Modelamiento y Optimización Otoño 2014

AMPL CPLEX para resolver problemas lineales enteros de optimización. Víctor Bucarey López IN3701 Modelamiento y Optimización Otoño 2014 AMPL CPLEX para resolver problemas lineales enteros de optimización Víctor Bucarey López IN3701 Modelamiento y Optimización Otoño 2014 Introducción AMPL is a comprehensive and powerful algebraic modeling

Más detalles

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

Apunte Laboratorio ALPI - El lenguaje de programación Pascal Apunte Laboratorio ALPI - El lenguaje de programación Pascal 1 2 ÍNDICE GENERAL Índice 1. Estructura de un Programa en Pascal 3 2. Sintaxis de Pascal 4 2.1. Uso de mayúsculas.....................................

Más detalles

ANALISIS DE SENSIBILIDAD CON GAMS-CPLEX

ANALISIS DE SENSIBILIDAD CON GAMS-CPLEX ANALISIS DE SENSIBILIDAD CON GAMS-CPLEX Un de los principales inconvenientes de GAMS a la hora de su aplicación total en los módulos de practicas de las materias de Programación Matemática y similares

Más detalles

Programación lineal Optimización de procesos químicos DIQUIMA-ETSII

Programación lineal Optimización de procesos químicos DIQUIMA-ETSII Programación lineal PROGRAMACIÓN LINEAL PROGRAMACIÓN LINEAL se formula siguiendo el planteamiento general: Función objetivo Restricciones de igualdad Restricciones de desigualdad Límite variables PROGRAMACIÓN

Más detalles

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos.

Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Universidad Rafael Urdaneta Escuela de Ingeniería de Computación Números enteros (cortos, largos y sin signo) Números reales (precisión simple y doble) Carácter y cadenas de caracteres. Lógicos. Asignación

Más detalles

Optimización de Procesos

Optimización de Procesos Optimización de Procesos Tier II: Casos de Estudio Sección 1: Software de Optimización Lingo Software de Optimización Muchos de los métodos de optimización previamente vistos pueden ser tediosos y requieren

Más detalles

CAPITULO 14: GAMS 14.1.- INSTALACION DE GAMS

CAPITULO 14: GAMS 14.1.- INSTALACION DE GAMS CAPITULO 14: GAMS 14.1.- INSTALACION DE GAMS El programa GAMS (General Algebraic Modeling System) es un software desarrollado por A. Brooke, D. Kendrick y A. Meeraus. A diferencia de otros paquetes de

Más detalles

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28

Componentes Básicos. InCo. InCo Componentes Básicos 1 / 28 Componentes Básicos InCo InCo Componentes Básicos 1 / 28 Modelo de Computación Vemos al computador como un procesador de datos. +------------+ Entrada ===> Computador ===> Salida +------------+ InCo Componentes

Más detalles

INTRODUCCIÓN A FORTRAN 77

INTRODUCCIÓN A FORTRAN 77 INTRODUCCIÓN A FORTRAN 77 José G. López, Gloria Moyano Teoría de la Dinámica de Reacciones Químicas Instituto de Química Universidad de Antioquia Medellín, Colombia Reglas para un Archivo de Fortran 77

Más detalles

Uso de EES para la solución de problemas de ingeniería

Uso de EES para la solución de problemas de ingeniería Uso de EES para la solución de problemas de ingeniería Objetivo: 1. Dar al estudiante una idea general acerca de como pueden utilizar el programa EES para la resolución de problemas de ingeniería. Qué

Más detalles

TOMA DE DECISIONES CON GAMS 1

TOMA DE DECISIONES CON GAMS 1 TOMA DE DECISIONES CON GAMS 1 1.-Introducción al programa GAMS El programa GAMS (General Algebraic Modeling System) es un software desarrollado por A. Brooke, D. Kendrick y A. Meeraus. A diferencia de

Más detalles

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript Algoritmo

Más detalles

XXI Seminario de Ingeniería Química 2003 Instituto Tecnológico de Celaya

XXI Seminario de Ingeniería Química 2003 Instituto Tecnológico de Celaya Código GAMS El código de GAMS se puede escribir con cualquier procesador de texto o a través de la interfase de GAMS. Si se utilizan procesadores especializados como Word, FrameMaker, PageMaker, etc.,

Más detalles

ENGINEERING EQUATION SOLVER

ENGINEERING EQUATION SOLVER ENGINEERING EQUATION SOLVER 1. Introducción El programa de resolución de ecuaciones no lineales EES (Engineering Equation Solver) ha sido desarrollado por la Universidad de Wisconsin. Constituye una herramienta

Más detalles

Descripción de un Programa

Descripción de un Programa Unidad 2 Descripción de un Programa 1 El Lenguaje C (1) El lenguaje C fue creado en 1972 por Ken L. Thompson y Dennis M. Ritchie en los Laboratorios Bell. Es evolución de un lenguaje más antiguo: B (a

Más detalles

WinQSB. Módulo de Programación Lineal y Entera. Al ejecutar el módulo Linear and Integer Programming, la ventana de inicio es la siguiente

WinQSB. Módulo de Programación Lineal y Entera. Al ejecutar el módulo Linear and Integer Programming, la ventana de inicio es la siguiente WinQSB Módulo de Programación Lineal y Entera Al ejecutar el módulo Linear and Integer Programming, la ventana de inicio es la siguiente desde la cual, a partir del menú File New Problem puedes introducir

Más detalles

Anexo 2. Para los nombres de variable se aplican las siguientes normas:

Anexo 2. Para los nombres de variable se aplican las siguientes normas: UNIVERSIDAD DE CHILE PROFESORA: SARA ARANCIBIA C Nombres de variable Anexo 2 Para los nombres de variable se aplican las siguientes normas: El nombre debe comenzar por una letra. Los demás caracteres pueden

Más detalles

Entrada de datos y salida de resultados.

Entrada de datos y salida de resultados. Clase 2 de C++ Entrada de datos y salida de resultados. Son operadores que sirven para introducir los datos a un programa y visualizar los resultados o impresiones. En C: Operadores scanf y printf: Ejemplos:

Más detalles

Licenciatura de Matemáticas Informática I Notación algorítmica - Descripción BNF

Licenciatura de Matemáticas Informática I Notación algorítmica - Descripción BNF Licenciatura de Matemáticas Informática I Notación algorítmica - Descripción BNF Dpto. Informática Noviembre 1998 1. Deniciones en forma BNF < > Símbolos no terminales. Declaraciones u objetos declarados

Más detalles

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo

INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN. Métodos Numéricos Carlos Zotelo INTRODUCCIÓN A LA PROGRAMACIÓN EN FORTRAN Métodos Numéricos 2008 - Carlos Zotelo Introducción a Fortran 77 / 90 1. El lenguaje Fortran 77 / 90 2. Tipos de datos básicos 3. Constantes y variables 4. Entrada

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main. LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan

Más detalles

Fundamentos de Programación Entera

Fundamentos de Programación Entera Fundamentos de Programación Entera Carlos Testuri Germán Ferrari Departamento de Investigación Operativa. Instituto de Computación. Facultad de Ingeniería. Universidad de la República 2012-2016 Facultad

Más detalles

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS A.- ASPECTOS FUNDAMENTALES DEL CÓDIGO ORIENTADO A OBJETOS MÓDULOS DE CÓDIGO: El código en Visual Basic se almacena en módulos. Hay tres tipos de módulos: de formulario,

Más detalles

PHP: Lenguaje de programación

PHP: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Tipos de datos Enteros Con base decimal: 45, -43 Con base octal: 043, -054

Más detalles

Manual de turbo pascal

Manual de turbo pascal Universidad Nacional Experimental De Los Llanos Occidentales Ezequiel Zamora UNELLEZ-Barinas Manual de turbo pascal Bachilleres: Martinez Ninibeth C.I:20.867.002 Mora Yaco C.I:17.205.073 Estructura de

Más detalles

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso.

Comprender las diferencias entre tipos de datos primitivos similares, y aprender a elegir el tipo más conveniente en cada caso. Elementos básicos de programación en Java Objetivos del tema Conocer la estructura básica de un programa Java. Comprender los conceptos de tipo, valor y variable. Comprender las diferencias entre tipos

Más detalles

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba Programación Declarativa Ingeniería Informática Cuarto curso. Primer cuatrimestre Escuela Politécnica Superior de Córdoba Universidad de Córdoba Curso académico: 2016 2017 Práctica número 1.- Introducción

Más detalles

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION

Capítulo 3. Subprogramas. 3.1 Subprogramas FUNCTION Capítulo 3 Subprogramas Con lo explicado hasta aquí se pueden escribir programas sencillos y no demasiado largos. Pero varias razones justifican la necesidad de disponer de otro tipo de recursos. Por una

Más detalles

Dra. Jessica Andrea Carballido

Dra. Jessica Andrea Carballido Dra. Jessica Andrea Carballido jac@cs.uns.edu.ar Dpto. de Ciencias e Ingeniería de la Computación UNIVERSIDAD NACIONAL DEL SUR Problemas, Algoritmos y Programas PROBLEMA Solución ALGORITMO PROGRAMA Problemas,

Más detalles

CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE PRACTICA 1. INTRODUCCIÓN A MATLAB

CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE PRACTICA 1. INTRODUCCIÓN A MATLAB CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE. 12-13 PRACTICA 1. INTRODUCCIÓN A MATLAB Qué es MATLAB? MATLAB es la abreviatura de MATrix LABoratory (laboratorio de matrices). Se trata de un software matemático

Más detalles

PROGRAMACION LINEAL. Identificación de las soluciones con GAMS

PROGRAMACION LINEAL. Identificación de las soluciones con GAMS PROGRAMACION LINEAL Identificación de las soluciones con GAMS Max F(x) = x 1 + 2 x 2 s.a: x 1 + x 2 4 2 x 1 + x 2 6 x 1 0 x 2 0 4 (2,2) F(x)=8 0 3 *EJEMPLO N-1 *POLIEDRO - VERTICE VARIABLES X1, X2, F;

Más detalles

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre Ingeniería Técnica en Informática de Gestión Ingeniería Técnica en Informática de Sistemas Escuela Politécnica Superior Universidad

Más detalles

Universidad de Guadalajara del 24 al 26 de Octubre del 2012.

Universidad de Guadalajara del 24 al 26 de Octubre del 2012. Primer Congreso Mexicano de Investigación de Operaciones Se celebrará en las instalaciones de la Universidad de Guadalajara del 24 al 26 de Octubre del 2012. Fecha límite de registro de participantes y

Más detalles

Programación lineal Optimización de procesos químicos DIQUIMA-ETSII

Programación lineal Optimización de procesos químicos DIQUIMA-ETSII Programación lineal PROGRAMACIÓN LINEAL PROGRAMACIÓN LINEAL se formula siguiendo el planteamiento general: Función objetivo Restricciones de igualdad Restricciones de desigualdad Límite variables PROGRAMACIÓN

Más detalles

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE)

GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE) GLOSARIO DE MICROSOFT VISUAL BASIC (HAZ CLIC EN LA OPCION DEL MENU Y ACCEDERAS RAPIDAMENTE) Menú 1. Operadores Matemáticos 2. Operadores relacionales 3. Funciones de Visual Basic 4. Tipos de variables

Más detalles

DIAGRAMAS DE FLUJO ELEMENTOS E INSTRUCCIONES A USAR EN UN DIAGRAMA DE FLUJO

DIAGRAMAS DE FLUJO ELEMENTOS E INSTRUCCIONES A USAR EN UN DIAGRAMA DE FLUJO DIAGRAMAS DE LUJO Un Diagrama de lujo es la representación gráfica de los pasos a seguir para lograr un objetivo, que habitualmente es la solución de un problema. Por Logical se entiende, en algunos libros,

Más detalles

n 6 Logro Conocimientos previos Tema: Datos y # Ficha de aprendizaje

n 6 Logro Conocimientos previos Tema: Datos y # Ficha de aprendizaje Tema: Datos y variables Ficha de aprendizaje n 6 Logro Conoce las partes de un programa. Conoce los tipos de variables. Usa estas variables para hacer programaciones básicas. @ # Conocimientos previos

Más detalles

Fundamentos de Programación

Fundamentos de Programación Fundamentos de Programación COMENTARIOS Microsoft Visual Basic interpreta que todo lo que está a la derecha del carácter ( ) en una línea cualquiera de programa es un comentario y no ejecuta acción alguna.

Más detalles

Formulando con modelos lineales enteros

Formulando con modelos lineales enteros Universidad de Chile 19 de marzo de 2012 Contenidos 1 Forma de un problema Lineal Entero 2 Modelando con variables binarias 3 Tipos de Problemas Forma General de un MILP Problema de optimización lineal

Más detalles

Elementos de un programa en C

Elementos de un programa en C Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución

Más detalles

MA37A. Software para Programación Lineal

MA37A. Software para Programación Lineal MA37A Sesión #6 Software para Programación Lineal Oscar Peredo 29 de Octubre del 2008 Esquema 1 Programación Lineal 2 Lenguajes de alto nivel MATLAB/OCTAVE AMPL GAMS 3 Solvers CPLEX GLPK 4 Otras alternativas

Más detalles

Matrices y Determinantes. Prof. Nilsa I. Toro Catedrática Recinto Universitario de Mayagüez Residencial - AFAMaC

Matrices y Determinantes. Prof. Nilsa I. Toro Catedrática Recinto Universitario de Mayagüez Residencial - AFAMaC Matrices y Determinantes Prof. Nilsa I. Toro Catedrática Recinto Universitario de Mayagüez Residencial - AFAMaC Origen y Usos Las matrices aparecen por primera vez hacia el año 1850, introducidas por J.J.

Más detalles

Introducción a Python. Cecilia Manzino

Introducción a Python. Cecilia Manzino Características del lenguaje Es un lenguaje de programación multiparadigma, soporta la programación orientada a objetos, imperativa y, en menor medida, funcional. Es un lenguaje multiplataforma, puede

Más detalles

(2.a) INTRODUCCIÓN A LA FORMULACIÓN DE MODELOS LINEALES

(2.a) INTRODUCCIÓN A LA FORMULACIÓN DE MODELOS LINEALES (2.a) INTRODUCCIÓN A LA FORMULACIÓN DE MODELOS LINEALES PROBLEMAS DE PROGRAMACIÓN LINEAL. Función objetivo y restricciones. HIPÓTESIS DE MODELIZACIÓN. Ejemplos: problema de producción, problema de dietas.

Más detalles

Lenguaje de programación C. Introducción

Lenguaje de programación C. Introducción Lenguaje de programación C Introducción 1 Elementos del lenguaje C Colección de funciones Estas funciones contienen declaraciones, sentencias, expresiones y otros elementos que en conjunto indican a la

Más detalles

ANALISIS DE SENSIBILIDAD CON GAMS-CPLEX

ANALISIS DE SENSIBILIDAD CON GAMS-CPLEX ANALISIS DE SENSIBILIDAD CON GAMS-CPLEX La versión STUDENT de GAMS incorpora todos los solvers disponibles, aunque con las limitaciones relativas al numero de variables y elementos. La inclusión de todos

Más detalles

4.7 Operaciones sobre Objetos en Scheme

4.7 Operaciones sobre Objetos en Scheme 4.7 Operaciones sobre Objetos en Scheme Equivalencias y predicados de tipos, listas, números, caracteres, strings y vectores Ejemplos de Equivalencia (eq? a a) ;=> #t (eq? 3.1 3.1) ;=> () (eq? (cons a

Más detalles

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos TEMA 2 Diseño de Algoritmos 7 2. DISEÑO DE ALGORITMOS 2.1. Concepto de Algoritmo En matemáticas, ciencias de la computación y disciplinas relacionadas, un algoritmo (del griego y latín, dixit algorithmus

Más detalles

PROGRAMACIÓN EN C#.NET Módulo 3 Instrucciones fundamentales. Ing. Bruno López Takeyas

PROGRAMACIÓN EN C#.NET Módulo 3 Instrucciones fundamentales. Ing. Bruno López Takeyas PROGRAMACIÓN EN C#.NET Módulo 3 Instrucciones fundamentales Ing. Bruno López Takeyas Instituto Tecnológico de Nuevo Laredo 1 MÉTODOS Método Descripción Ejemplo Abs(x) Valor absoluto Abs(-23.7) es 23.7

Más detalles

funciones printf scanf

funciones printf scanf FUNCIONES EN C FUNCIONES Los módulos en C se llaman funciones. Hemos estado utilizando funciones de la biblioteca estandar stdio.h como por ejemplo printf y scanf. Comenzaremos viendo algunas funciones

Más detalles

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: Cuestionario Modulo 1.1 GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: 1001 0110. 2. qué es Dato? Definición: Es toda

Más detalles

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;) Tags Fundamentos PHP La Sintaxis de PHP se deriva de muchos lenguajes de programación principalmente de C pero Perl también ha tenido mucha influencia en esta sintaxis Con las últimas incorporaciones agregadas,

Más detalles

Repaso de funciones exponenciales y logarítmicas. Review of exponential and logarithmic functions

Repaso de funciones exponenciales y logarítmicas. Review of exponential and logarithmic functions Repaso de funciones exponenciales y logarítmicas Review of exponential and logarithmic functions Las funciones lineales, cuadráticas, polinómicas y racionales se conocen como funciones algebraicas. Las

Más detalles

Herramientas computacionales para la matemática MATLAB:Introducción

Herramientas computacionales para la matemática MATLAB:Introducción Herramientas computacionales para la matemática MATLAB:Introducción Verónica Borja Macías Marzo 2013 1 Variables predefinidas MATLAB tiene un conjunto de variables predefinidas Variables predefinidas ans

Más detalles

CAPITULO 6: PROBLEMAS DE TRANSPORTE

CAPITULO 6: PROBLEMAS DE TRANSPORTE CAPITULO 6: PROBLEMAS DE TRANSPORTE Comúnmente se han considerado como un caso particular de los problemas lineales los problemas de transporte y de asignación. Pero hemos de notar que se trata en realidad

Más detalles

Declaración de Procedimientos

Declaración de Procedimientos Procedimientos Concepto Un procedimiento es un subprograma que realiza una tarea especifica. Puede recibir cero más valores del programa que llama y devolver cero o más valores a dicho programa que lo

Más detalles

MATLAB tiene un gran número de funciones incorporadas. Algunas son funciones intrínsecas, esto es, funciones incorporadas en el propio código

MATLAB tiene un gran número de funciones incorporadas. Algunas son funciones intrínsecas, esto es, funciones incorporadas en el propio código MATLAB tiene un gran número de funciones incorporadas. Algunas son funciones intrínsecas, esto es, funciones incorporadas en el propio código ejecutable del programa. Estas funciones son particularmente

Más detalles

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid. Indíce Algoritmo Elementos de un algoritmo: Variables, Constantes, Expresiones Datos: Definición y

Más detalles

Introducción a Matlab. Ing. Laura López López

Introducción a Matlab. Ing. Laura López López Introducción a Matlab Ing. Laura López López Qué es Matlab? MatLab significa MATrixLABoratory MATLAB es un lenguaje de alto nivel para realizar cálculos científico-técnicos. Integra las herramientas de

Más detalles

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA

INTRODUCCIóN A LA PROGRAMACIóN APUNTES DE JAVA APUNTES DE JAVA APUNTES DE JAVA FUNCIONAMIENTO DE UN PROGRAMA Assembler Ensamblador Ejecuta Programador Programa fuente BASIC Interprete Ejecuta C, C++, Pascal Compilador Compila Ejecuta Programa fuente Programa Objeto

Más detalles

Formulación del problema de la ruta más corta en programación lineal

Formulación del problema de la ruta más corta en programación lineal Formulación del problema de la ruta más corta en programación lineal En esta sección se describen dos formulaciones de programación lineal para el problema de la ruta más corta. Las formulaciones son generales,

Más detalles

UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT

UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT UNIÓN INTERNACIONAL DE TELECOMUNICACIONES UIT-T Z.314 SECTOR DE NORMALIZACIÓN DE LAS TELECOMUNICACIONES DE LA UIT LENGUAJE HOMBRE-MÁQUINA JUEGO DE CARACTERES Y ELEMENTOS BÁSICOS Recomendación UIT-T Z.314

Más detalles

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani

Informática. JavaScript: Lenguaje de programación. Fco J. Martín Mateos Carmen Graciani Informática JavaScript: Lenguaje de programación Fco J. Martín Mateos Carmen Graciani Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal:

Más detalles

Curso de Programación Avanzada en C

Curso de Programación Avanzada en C Curso de Programación Avanzada en C Copyright, 1996 Universidad Sim on Bol ivar 1 Prof. Mariela J. Curiel Contenido del Curso Conceptos BásicosB Estructuras de Control Arreglos Otros tipos de datos derivados

Más detalles

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas

Desarrollo de Programas. Prof. Lisbeth C. Pérez Rivas Desarrollo de Programas Prof. Lisbeth C. Pérez Rivas lisbethpe@ula.ve Desarrollo de Programas Ejercicio: Calcular el sueldo neto de un trabajador conociendo el número de horas trabajadas, la tarifa horaria

Más detalles

Introducción al Cálculo Simbólico a través de Maple

Introducción al Cálculo Simbólico a través de Maple 1 Introducción al Cálculo Simbólico a través de Maple Introducción A manera de introducción, podemos decir que los lenguajes computacionales de cálculo simbólico son aquellos que permiten la representación

Más detalles

Practica 2. Estructuras de Datos en MATLAB

Practica 2. Estructuras de Datos en MATLAB Practica. Estructuras de Datos en MATLAB Informática Aplicada - Grado en Ingeniería Química, UAM, 009/010 1 Fecha limite de entrega de la practica Grupo A: de Marzo Grupo B: 1 de Marzo Objetivos Al finalizar

Más detalles

Una vez diseñado el modelo de cálculo se procede a aplicar el formato.

Una vez diseñado el modelo de cálculo se procede a aplicar el formato. Formato de celdas Una vez diseñado el modelo de cálculo se procede a aplicar el formato. Antes de comenzar hay que diferenciar claramente los tres tipos de información que existen en una celda: 1. El contenido

Más detalles

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos

$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,

Más detalles

Características de JavaScript

Características de JavaScript Características de JavaScript Qué es JavaScript? o Lenguaje de programación interpretado utilizado fundamentalmente para dotar de comportamiento dinámico a las páginas web. o Cualquier navegador web actual

Más detalles

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 1: Recursividad. Prof. Montserrat Serrano Montero Universidad de Valladolid Departamento de informática Campus de Segovia Estructura de datos Tema 1: Recursividad Prof. Montserrat Serrano Montero ÍNDICE Conceptos básicos Ejemplos recursivos Recursividad

Más detalles

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica

Tema 2: Desarrollo de Algoritmos. E.E. de Algorítmica Tema 2: Desarrollo de Algoritmos E.E. de Algorítmica Temas a tratar Identificadores Variables Constantes Tipos de Datos Separadores Operadores Aritméticos Unarios Relacionales y Condicionales Nivel de

Más detalles

Conocimientos previos

Conocimientos previos Ficha de aprendizaje Tema: Datos, variables y Operaciones n 6 Logro Reconoce las partes de un programa y comprende su estructura. Reconoce la diferencia entre los tipos de datos. Asigna datos a las variables

Más detalles

Programación Básica. Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí

Programación Básica. Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí Programación Básica Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí Objetivo del Curso Estudiar y aplicar los conceptos básicos de programación estructurada en un lenguaje de

Más detalles

Lección 8. Matrices y Sistemas de Ecuaciones Lineales

Lección 8. Matrices y Sistemas de Ecuaciones Lineales Lección 8 Matrices y Sistemas de Ecuaciones Lineales MIGUEL ANGEL UH ZAPATA 1 Análisis Numérico I Facultad de Matemáticas, UADY Septiembre 2014 1 Centro de Investigación en Matemáticas, Unidad Mérida En

Más detalles

Variables lógicas y sentencia IF

Variables lógicas y sentencia IF Variables lógicas y sentencia IF Seminario de Computación Verano de 2009 Variables lógicas: Solo pueden tomar 2 valores:.true. y.false. (verdadero o falso). Existen operadores que aplicados a variables

Más detalles

Variables lógicas y sentencia IF. Seminario de Computación Verano de 2009

Variables lógicas y sentencia IF. Seminario de Computación Verano de 2009 Variables lógicas y sentencia IF Seminario de Computación Verano de 2009 Variables lógicas: Solo pueden tomar 2 valores:.true. y.false. (verdadero o falso). Existen operadores que aplicados a variables

Más detalles

Las operaciones aritméticas básicas en MATLAB son las más sencillas que se pueden

Las operaciones aritméticas básicas en MATLAB son las más sencillas que se pueden CAPÍTULO 5 TEMAS 5.1 Aritmética 5.1.1 Variables y Operaciones Básicas Las operaciones aritméticas básicas en MATLAB son las más sencillas que se pueden realizar en este programa. Si asignamos valores a

Más detalles

Programación Lineal y Optimización Segundo Examen Parcial :Solución Profr. Eduardo Uresti, Verano 2009

Programación Lineal y Optimización Segundo Examen Parcial :Solución Profr. Eduardo Uresti, Verano 2009 Programación Lineal y Optimización Segundo Examen Parcial : Profr. Eduardo Uresti, Verano 2009 Matrícula: Nombre: 1. Suponga que se tiene disponible la siguiente información salida de LINDO a un problema

Más detalles

El lenguaje C. 1. Identificadores, constantes y variables

El lenguaje C. 1. Identificadores, constantes y variables Principios de Programación El lenguaje C 1. Identificadores, constantes y variables 1.1. Conceptos de memoria Los nombres de variable como x, y, suma corresponden a localizaciones o posiciones en la memoria

Más detalles

MATRICES OPERACIONES BÁSICAS CON MATRICES

MATRICES OPERACIONES BÁSICAS CON MATRICES MATRICES OPERACIONES BÁSICAS CON MATRICES ANTECEDENTES En el año 1850, fueron introducidas por J.J. Sylvester El desarrollo inicial de la teoría se debe al matemático W.R. Hamilton en 1853. En 1858, A.

Más detalles

Tema 2. Concepto de Algoritmo

Tema 2. Concepto de Algoritmo Tema 2. Concepto de Algoritmo Objetivos Definir el concepto de algoritmo Resolver problemas sencillos mediante el diseño de un algoritmo Conocer los tipos de datos elementales y las operaciones sobre ellos

Más detalles

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL.

TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. Tema 2. TEMA 2. LENGUAJE C. CONCEPTOS BÁSICOS Y PROGRAMACIÓN ELEMENTAL. PARTE : VARIABLES, OPERADORES Y CONSTANTES.. INTRODUCCIÓN AL LENGUAJE C 2. PROGRAMAS BÁSICOS EN LENGUAJE C 3. DATOS EN LENGUAJE C

Más detalles

JavaScript: Lenguaje de programación

JavaScript: Lenguaje de programación Francisco J. Martín Mateos Carmen Graciani Diaz Dpto. Ciencias de la Computación e Inteligencia Artificial Universidad de Sevilla Literales Enteros Con base decimal: 45, -43 Con base octal: 043, -054 Con

Más detalles

El programa en JavaScript debe ir encerrado entre la marca script e inicializada la propiedad type con la cadena text/javascript:

El programa en JavaScript debe ir encerrado entre la marca script e inicializada la propiedad type con la cadena text/javascript: Javascript Qué es JavaScript? Es un lenguaje de scripting (Código interno en las páginas HTML) necesario para los elaboradores de sitios Web, mediante el cual se puede hacer que las páginas sean activas

Más detalles

Herramientas computacionales para la Programación n Lineal

Herramientas computacionales para la Programación n Lineal Programación Lineal - Antonin Ponsich 1. Introducción Herramientas computacionales para la Programación n Lineal 1. Introducción El método gráfico es válido para problemas de hasta dos variables de decisión

Más detalles

Funciones como Subprogramas en C++

Funciones como Subprogramas en C++ FUNCIONES Cuando es necesario escribir programas complicados para resolver problemas complejos, una práctica común entre los programadores es descomponer el algoritmo (el diagrama de flujo) en varias partes.

Más detalles

III. Generación de Código orientado a objetos

III. Generación de Código orientado a objetos III. Generación de Código orientado a objetos UNIDAD III Aspectos fundamentales Del código orientado a objetos. MÓDULOS DE CÓDIGO 1 DE FORMULARIO Almacenan el código en VB 2 ESTÁNDAR 3 DE CLASE Contiene

Más detalles

Tema 2. Tipos predefinidos

Tema 2. Tipos predefinidos Programación Declarativa Haskell Informática Sistemas Curso 2003-2004 Pepe Gallardo Universidad de Málaga Tema 2. Tipos predefinidos 2.1 Tipos simples predefinidos El tipo Bool El tipo Int El tipo Integer

Más detalles