Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
gnu_mathprog [2008/10/04 20:03] mmarquez |
gnu_mathprog [2010/01/14 11:59] (actual) mmarquez |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== GNU MathProg ====== | ====== GNU MathProg ====== | ||
- | Nota: Esta página es la traducción | + | Nota: Esta página es la traducción al español de [[http:// |
---- | ---- | ||
+ | |||
+ | ===== Introducción ===== | ||
GNU MathProg es un lenguaje de modelización para la descripción de modelos de programación matemática lineal. Un modelo escrito el lenguaje GNU MathProg consiste en un conjunto de instrucciones y bloques de datos construidos por el usuario. | GNU MathProg es un lenguaje de modelización para la descripción de modelos de programación matemática lineal. Un modelo escrito el lenguaje GNU MathProg consiste en un conjunto de instrucciones y bloques de datos construidos por el usuario. | ||
Línea 20: | Línea 22: | ||
Value of objective function: 88.2 | Value of objective function: 88.2 | ||
+ | | ||
| | ||
| | ||
Línea 37: | Línea 40: | ||
Value of objective function: 88.2 | Value of objective function: 88.2 | ||
+ | | ||
| | ||
| | ||
Línea 47: | Línea 51: | ||
| | ||
- | ---- | ||
+ | ===== Generación de modelos MathProg ===== | ||
- | Generating | + | El XLI puede crear modelos |
- | The XLI can also create a MathProg | + | |
- | lp_solve model.lp -wxli xli_MathProg | + | Resulta |
- | This gives as model.mod: | + | /* Variable definitions */ |
+ | var x >= 0; | ||
+ | var y >= 0; | ||
+ | |||
+ | /* Objective function */ | ||
+ | | ||
+ | |||
+ | /* Constraints */ | ||
+ | R1: +120*x +210*y <= 15000; | ||
+ | R2: +110*x +30*y <= 4000; | ||
+ | R3: +x +y <= 75; | ||
- | /* Variable definitions */ | + | ===== API ===== |
- | var x >= 0; | + | |
- | var y >= 0; | + | |
- | /* Objective function */ | + | Use la llamada a [[http://lpsolve.sourceforge.net/ |
- | maximize obj: +143*x +60*y; | + | |
- | /* Constraints */ | ||
- | R1: +120*x +210*y <= 15000; | ||
- | R2: +110*x +30*y <= 4000; | ||
- | R3: +x +y <= 75; | ||
- | API | + | El XLI puede ser usado desde el IDE. No obstante, algunas líneas deben ser añadidas en LpSolveIDE.ini (en la carpeta de instalación del IDE). |
- | Use the lpsolve API call read_XLI to read a model and write_XLI to write a model. See also External Language Interfaces. | + | En la sección [XLI] debe añadirse lo siguiente: |
- | IDE | + | |
- | Also from within the IDE, this XLI can be used. However, some entries must be added in LpSolveIDE.ini (in the folder where the IDE is installed). | + | |
- | In the [XLI] section the following must be added: | + | Además, debe añadirse una nueva sección para MathProg |
- | lib1=xli_MathProg | + | [xli_MathProg] |
+ | | ||
+ | | ||
- | And a new section for the MathProg XLI must also be added: | + | Asegúrese de que xli_MathProg.dll está disponible para el IDE. Para ello ponga este dll en la carpeta del IDE o en la carpeta system32 de Windows. |
- | [xli_MathProg] | + | ===== Ejemplos ===== |
- | extension=.mod | + | |
- | language=MATHPROG | + | |
- | Then make sure that the xli_MathProg.dll is available for the IDE. This must be done by placing this dll in the IDE folder or in the Windows system32 folder. | + | ==== Diet1.mod |
- | Example models/ | + | |
- | Diet1.mod | + | |
- | set NUTR; | + | set NUTR; |
- | set FOOD; | + | |
- | + | ||
- | param cost {FOOD} > 0; | + | |
- | param f_min {FOOD} >= 0; | + | |
- | param f_max {j in FOOD} >= f_min[j]; | + | |
- | + | ||
- | param n_min {NUTR} >= 0; | + | |
- | param n_max {i in NUTR} >= n_min[i]; | + | |
- | + | ||
- | param amt {NUTR,FOOD} >= 0; | + | |
- | + | ||
- | var Buy {j in FOOD} >= f_min[j], <= f_max[j]; | + | |
- | + | ||
- | minimize total_cost: | + | |
- | + | ||
- | subject to diet {i in NUTR}: | + | |
| | ||
- | + | | |
- | + | ||
- | data; | + | |
- | + | ||
- | set NUTR := A B1 B2 C ; | + | |
- | set FOOD := BEEF CHK FISH HAM MCH MTL SPG TUR ; | + | |
- | + | ||
- | param: | + | |
- | BEEF | + | BEEF |
- | CHK 2.59 0 100 | + | CHK 2.59 0 100 |
- | FISH | + | FISH |
- | HAM 2.89 0 100 | + | HAM 2.89 0 100 |
- | MCH 1.89 0 100 | + | MCH 1.89 0 100 |
- | MTL 1.99 0 100 | + | MTL 1.99 0 100 |
- | SPG 1.99 0 100 | + | SPG 1.99 0 100 |
- | TUR 2.49 0 100 ; | + | TUR 2.49 0 100 ; |
- | + | ||
- | param: | + | |
- | | + | A 700 |
- | | + | C 700 |
- | | + | B1 |
- | | + | B2 |
- | + | ||
- | param amt (tr): | + | |
| | ||
- | BEEF | + | |
- | | + | CHK |
- | | + | FISH 8 |
- | | + | HAM 40 |
- | | + | MCH 15 |
- | | + | MTL 70 |
- | | + | SPG 25 |
- | | + | TUR 60 |
- | end; | + | |
- | diet.mod | + | ==== diet.mod |
- | set NUTR; | + | set NUTR; |
- | set FOOD; | + | |
- | + | ||
- | param cost {FOOD} > 0; | + | |
- | param f_min {FOOD} >= 0; | + | |
- | param f_max {j in FOOD} >= f_min[j]; | + | |
- | + | ||
- | param n_min {NUTR} >= 0; | + | |
- | param n_max {i in NUTR} >= n_min[i]; | + | |
- | + | ||
- | param amt {NUTR,FOOD} >= 0; | + | |
- | + | ||
- | var Buy {j in FOOD} >= f_min[j], <= f_max[j]; | + | |
- | + | ||
- | minimize total_cost: | + | |
- | + | ||
- | subject to diet {i in NUTR}: | + | |
| | ||
- | diet.dat | + | ==== diet.dat |
- | set NUTR := A B1 B2 C ; | + | set NUTR := A B1 B2 C ; |
- | set FOOD := BEEF CHK FISH HAM MCH MTL SPG TUR ; | + | |
- | + | ||
- | param: | + | |
- | BEEF | + | BEEF |
- | CHK 2.59 0 100 | + | CHK 2.59 0 100 |
- | FISH | + | FISH |
- | HAM 2.89 0 100 | + | HAM 2.89 0 100 |
- | MCH 1.89 0 100 | + | MCH 1.89 0 100 |
- | MTL 1.99 0 100 | + | MTL 1.99 0 100 |
- | SPG 1.99 0 100 | + | SPG 1.99 0 100 |
- | TUR 2.49 0 100 ; | + | TUR 2.49 0 100 ; |
- | + | ||
- | param: | + | |
- | | + | A 700 |
- | | + | C 700 |
- | | + | B1 |
- | | + | B2 |
- | + | ||
- | param amt (tr): | + | |
| | ||
- | BEEF | + | |
- | | + | CHK |
- | | + | FISH 8 |
- | | + | HAM 40 |
- | | + | MCH 15 |
- | | + | MTL 70 |
- | | + | SPG 25 |
- | | + | TUR 60 |
- | + | ||
- | model.lp | + | |
- | + | ||
- | /* model.lp */ | + | |
- | max: 143 x + 60 y; | + | ==== model.lp ==== |
- | 120 x + 210 y <= 15000; | + | /* model.lp */ |
- | 110 x + 30 y <= 4000; | + | |
- | x + y <= 75; | + | max: 143 x + 60 y; |
+ | |||
+ | 120 x + 210 y <= 15000; | ||
+ | | ||
+ | | ||