josebtito
Usuario (España)
<html> <head> <title>Programacion Lineal</title> <script > var ax=[0,0,0,0,0,0] , by=[0,0,0,0,0,0] , cc=[0,0,0,0,0,0] , des=[0,0,0,0,0,0]; var D=["<=",">=","<",">"] , m=[0,0,0,0,0,0]; function leer() { fx=document.rest.fx.value;fy=document.rest.fy.value; for(i=1;i<7;i++) { ax=document.rest[4*i-2].value; by=document.rest[4*i-1].value; des=document.rest[4*i].selectedIndex; cc=document.rest[4*i+1].value } } function pte() { leer(); mf=-fx/fy; document.rest[27].value=mf; for(i=1;i<7;i++){ document.rest[27+i].value=-ax/by } } function vertice() { leer(); rs1=document.rest.rest1.value ; rs2=document.rest.rest2.value ; a=ax ; b=by ; c=cc ; d=ax ; e=by ; f=cc; vx=(c*e-b*f)/(a*e-b*d);vy=(a*f-c*d)/(a*e-b*d);fxy=fx*vx+fy*vy; document.rest.vx.value=vx ; document.rest.vy.value=vy ; document.rest.fxy.value=fxy; cumplerest=true; for(i=1 ; i<7 ; i++) { cumplerest= cumplerest && eval(ax*vx+by*vy+D+cc) } document.rest.cumple.value=cumplerest ; } </script> </head> <body text=white bgcolor=blue> <form name="rest"> FUNCIoN OBJETIVO........... F(x,y)=<input type="text" name="fx" size="3">x+<input type="text" name="fy" size="3">y<HR> RESTRICCIONES<HR> 1...<input type="text" value=0 size="3">x+<input type="text" value=0 size="3">y= <select type="text" name="r1" > <option selected><= <option >>= <option >< <option >> </select> <input type="text" value=0 size="3"><BR> 2...<input type="text" value=0 size="3">x+<input type="text" value=0 size="3">y= <select name="r2" > <option selected><= <option >>= <option >< <option >> </select> <input type="text" value=0 size="3"><BR> 3...<input type="text" value=0 size="3">x+<input type="text" value=0 size="3">y= <select name="r3" > <option selected><= <option >>= <option >< <option >> </select> <input type="text" value=0 size="3"><BR> 4...<input type="text" value=0 size="3">x+<input type="text" value=0 size="3">y= <select name="r4" > <option selected><= <option >>= <option >< <option >> </select> <input type="text" value=0 size="3"><BR> 5...<input type="text" value=0 size="3">x+<input type="text" value=0 size="3">y= <select name="r5" > <option selected><= <option >>= <option >< <option >> </select> <input type="text" value=0 size="3"><BR> 6...<input type="text" value=0 size="3">x+<input type="text" value=0 size="3">y= <select name="r6" > <option selected><= <option >>= <option >< <option >> </select> <input type="text" value=0 size="3"> <input type="button" value="Hallar pendientes" Onclick="pte()"><HR> Pendiente de f(x,y):.... m=<input type="text" size="3"><BR> Pte. de restricciones: m1=<input type="text" size="3">, m2=<input type="text" size="3">, m3=<input type="text" size="3">, m4=<input type="text" size="3">, m5=<input type="text" size="3">, m6=<input type="text" size="3"><HR> Vertice determinado por las restricciones.... <input type="text" name="rest1" value=1 size="1"> y <input type="text" name="rest2" value=2 size="1"> (introducir n de restriccion)<HR><input type="button" value="Hallar vertice" Onclick="vertice()"> x=<input type="text" name="vx" size="3">y=<input type="text" name="vy" size="3"> <BR>Cumple las restricciones.........<input type="text" name="cumple" size="3"><BR> Valor de la funcion objetivo.......<input type="text" name="fxy" size="3"> </form> </body> </html>
El nombre GAMS deriva de las iniciales de General Algebraic Modeling System Que como su propio nombre indica es un lenguaje de modelización, más que un programa para resolver problemas de optimización. Esta ventaja que presenta este programa GAMS, es que junto al módulo de modelización (base) incorpora diferentes solver (algoritmos de resolución de problemas) tanto de programación no lineal, como lineal y entera. El lenguaje GAMS posee diferentes versiones (estudiante, profesional, workstation, mainframe, etc.) que se diferencian básicamente en las posibilidades de resolución de problemas de diferente tamaño, así por ejemplo, en la versión básica de estudiante existen una serie de limitaciones en cuanto al tamaño del problema que admite un máximo de 1000 elementos distintos de cero en los problemas lineales y no lineales, y de 20 variables enteras. Estas limitaciones no son importantes para los ejercicios prácticos que se desarrollan en las clases. Una de las grandes ventajas de GAMS es la facilidad de migrar a versiones superiores ya que el formato general es idéntico tanto en un PC como en un supercomputador en paralelo, otra de las ventajas es también la capacidad de resolver diferentes versiones de un mismo modelo, tanto como problema no lineal, lineal y entero, y el poder usar diferentes solver. De entre ellos podemos citar los siguientes: Problemas Solver NLP CONOPT, MINOS, etc. LP OSL, CPLEX, MINOS, BDMLP, XA, etc. MIP OSL, ZOOM, CPLEX, XA; etc. MINLP DICOPT Además, dentro de cada uno de estos solver, se pueden elegir diferentes opciones. Por ejemplo, para resolver los problemas lineales con la librería OSL, podemos elegir los siguientes algoritmos: Primal Simplex Dual Simplex Network Interior Point Este programa se puede descargar de la siguiente página: gams.com Fuentes: http://www.uv.es/~sala/gams/opecgams.PDF http://www.gams.com/ Ahora..--------------------------- te presento un ejemplo desarrollado en mi gams 23.5 una empresa de barcos desea determinar cuantos veleros deven ser producidos durante los proximos 4 trimestres de cada 4 tipo de barco sets t trimestre /t1*t4/ i barcos /1*4/ option reslim=50, limrow=50, decimals=2; parameter table d (i,t) demanda de cada barco i en el trimestre t t1 t2 t3 t4 1 40 42 30 40 2 60 70 90 50 3 20 40 40 70 4 10 20 30 10; table e (i,t) capacidad de prodcuccion utilizando horas normales en el trimes t t1 t2 t3 t4 1 40 22 30 40 2 40 30 40 50 3 40 20 30 30 4 30 20 30 40; table a (i,t) capacidad de mano de obra de producto i en el trimestre t horas normales t1 t2 t3 t4 1 400 222 300 400 2 400 300 400 500 3 400 200 300 300 4 300 200 300 400; table b (i,t) mano de obra de producto i en el trimestre t t1 t2 t3 t4 1 440 322 400 500 2 450 400 500 600 3 470 400 400 400 4 300 200 400 500; table c (i,t) costo inicial del producto i en la seman t t1 t2 t3 t4 1 44 32 40 50 2 45 40 50 60 3 47 40 40 40 4 30 20 40 50; table I0(i,t,*) inventario de producto t (en m3) existenciasiniciales 1.t1 10 2.t2 20 3.t3 50 4.t4 40 ; parameter contr(t) controla las existencia iniciales /t1 1/ ; variable z funcion objetivo x(i,t) minimo costo de producto i en trimestre t y(i,t) calculo de producto con mano de obra estra en el trimestre t k(i,t) calculo o existencias de producto i en trimestre t ; positive variable x,y,k ; equation mincusto calcula el costo minimo de la funcion objetivo fabricado(i,t) calculo o limite de fabricacion en hora disponible existenciasiniciales(i,t) calcula a capacidades de estock en trimestre t ; mincusto..z=e=sum((i,t),x(i,t)*a(i,t))+sum((i,t),y(i,t)*b(i,t))+sum((i,t),k(i,t)*c(i,t)); fabricado(i,t).. x(i,t)=l= e (i,t); existenciasiniciales(i,t).. k(i,t)=E= x(i,t)+y(i,t)+(I0(i,t,"estoqueinicial"$contr(t)+ k(i,t-1)$(contr(t) eq 0))-d(i,t); model stock /all/; solve stock using lp minimizing z; display Z.L,x.l,y.l,k.l,k.m,y.m,x.m; te lo presento en imagen desde el gams carga el código y veras los resultados. ficheros: http://tecnicasdelingenieroindustrial.blogspot.com/p/blog-page.html sin mas Te presento mi gams potable pero +++ full.... Aquí te dejo una breva descripción como se vera en tu pc. 1.--------- 2.-------- como puedes ver tiene licencia.... todo anda 100% contactarme cualquier dudo a falla. Lo tengo en mi web. esta es la url: copiala y quitale los "-" y te lleva. ------------------------------------------------ h---t---t---p-----://-----a---df-----.ly------/TONhT ------------------------------------------------- De ante mano gracias por puntuar ..
Hola les traigo un ejemplo de programación no lineal.Específicamente programación geométrica.Es el proceso de resolución de un sistema de ecuaciones sujetas a un conjunto de restricciones sobre un conjunto de variables reales desconocidas, con un función objetivo o al f(x) max, cuando alguna de las restricciones o la función objetivo no son lineales.Aunque los problemas de programación lineal son muy comunes y cubren un amplio rango de aplicaciones, en la vida real uno se tiene que enfrentar con cierta frecuencia a otro tipo de problemas que no son lineales. Cuando el conjunto de restricciones, la función objetivo, o ambos, son no lineales, se dice que se trata de un tipo de problema de programación no lineal (PPNL).Osea.programación no lineal es aquel donde la función objetivo y/o las restricciones son funciones no lineales de las variables de decisión.Les traigo el ejemplo.......Revísenlo pruebenlo y me avisan cualquier duda.Video.link: http://www.youtube.com/watch?v=kVXtaWmkvyQ&feature=channel_video_titlelink: http://static.99widgets.com/counters/swf/counters.swf?id=912325_2&ln=es
Buscando y buscando encontré el promodel según dicen ilimitado. sin mas. permite mas de 20 locaciones y mas de 8 entidades lo cual es muy util si se pretende modelar empresas como en la vida real. https://app.box.com/s/twli32sr4ivetfexhq3x