Estos apuntes son libres y los puedes editar.

Algunas secciones están en inglés puedes colaborar traduciendo algunos párrafos.

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
gnu_mathprog [2008/10/04 20:04]
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 (en curso) al español de [[http://lpsolve.sourceforge.net/5.5/MathProg.htm]]+Nota: Esta página es la traducción al español de [[http://lpsolve.sourceforge.net/5.5/MathProg.htm]]
 ---- ----
 +
 +===== 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 49: Línea 51:
    Buy[TUR]                        0    Buy[TUR]                        0
  
----- 
  
 +===== Generación de modelos MathProg =====
  
-Generating MathProg models+El XLI puede crear modelos MathProg, no obstante no usa las capacidades del lenguaje. Las restricciones se escriben línea a línea. Pero puede ser el comienzo. Por ejemplo:
  
-The XLI can also create a MathProg model, however it doesn't use the strength of the languageConstraints are written out line per line. But it can be a starterFor example:+   lp_solve model.lp -wxli xli_MathProg model.mod
  
-lp_solve model.lp -wxli xli_MathProg model.mod+Resulta model.mod:
  
-This gives as model.mod:+   /* Variable definitions */ 
 +   var x >= 0; 
 +   var y >= 0; 
 +     
 +   /* Objective function */ 
 +   maximize obj+143*x +60*y; 
 +     
 +   /* 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/5.5/read_XLI.htm|read_XLI]] para leer un modelo [[http://lpsolve.sourceforge.net/5.5/write_XLI.htm|write_XLI]] para escribirlo. Véase también [[http://lpsolve.sourceforge.net/5.5/XLI.htm|External Language Interfaces]].
-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).+   lib1=xli_MathProg
  
-In the [XLI] section the following must be added:+Además, debe añadirse una nueva sección para MathProg XLI:
  
-lib1=xli_MathProg+   [xli_MathProg
 +   extension=.mod 
 +   language=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/data +
-Diet1.mod+
  
-set NUTR; +   set NUTR; 
-set FOOD; +   set FOOD; 
- +     
-param cost {FOOD} > 0; +   param cost {FOOD} > 0; 
-param f_min {FOOD} >= 0; +   param f_min {FOOD} >= 0; 
-param f_max {j in FOOD} >= f_min[j]; +   param f_max {j in FOOD} >= f_min[j]; 
- +     
-param n_min {NUTR} >= 0; +   param n_min {NUTR} >= 0; 
-param n_max {i in NUTR} >= n_min[i]; +   param n_max {i in NUTR} >= n_min[i]; 
- +     
-param amt {NUTR,FOOD} >= 0; +   param amt {NUTR,FOOD} >= 0; 
- +     
-var Buy {j in FOOD} >= f_min[j], <= f_max[j]; +   var Buy {j in FOOD} >= f_min[j], <= f_max[j]; 
- +     
-minimize total_cost:  sum {j in FOOD} cost[j] * Buy[j]; +   minimize total_cost:  sum {j in FOOD} cost[j] * Buy[j]; 
- +     
-subject to diet {i in NUTR}:+   subject to diet {i in NUTR}:
    n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i];    n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i];
- +     
- +     
-data; +   data; 
- +     
-set NUTR := A B1 B2 C ; +   set NUTR := A B1 B2 C ; 
-set FOOD := BEEF CHK FISH HAM MCH MTL SPG TUR ; +   set FOOD := BEEF CHK FISH HAM MCH MTL SPG TUR ; 
- +     
-param:   cost  f_min  f_max := +   param:   cost  f_min  f_max := 
-  BEEF   3.19    0     100 +    BEEF   3.19    0     100 
-  CHK    2.59    0     100 +    CHK    2.59    0     100 
-  FISH   2.29    0     100 +    FISH   2.29    0     100 
-  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:   n_min  n_max := +   param:   n_min  n_max := 
-   A      700   10000 +    A      700   10000 
-   C      700   10000 +    C      700   10000 
-   B1     700   10000 +    B1     700   10000 
-   B2     700   10000 ; +    B2     700   10000 ; 
- +     
-param amt (tr):+   param amt (tr):
               C   B1   B2 :=               C   B1   B2 :=
-   BEEF   60   20   10   15 +    BEEF   60   20   10   15 
-   CHK        0   20   20 +    CHK        0   20   20 
-   FISH    8   10   15   10 +    FISH    8   10   15   10 
-   HAM    40   40   35   10 +    HAM    40   40   35   10 
-   MCH    15   35   15   15 +    MCH    15   35   15   15 
-   MTL    70   30   15   15 +    MTL    70   30   15   15 
-   SPG    25   50   25   15 +    SPG    25   50   25   15 
-   TUR    60   20   15   10 ; +    TUR    60   20   15   10 ; 
-end+   end;
- +
-diet.mod +
- +
-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];+==== diet.mod ====
  
-minimize total_cost:  sum {j in FOOD} cost[j] * Buy[j]; +   set NUTR; 
- +   set FOOD; 
-subject to diet {i in NUTR}:+     
 +   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:  sum {j in FOOD} cost[j] * Buy[j]; 
 +     
 +   subject to diet {i in NUTR}:
    n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i];    n_min[i] <= sum {j in FOOD} amt[i,j] * Buy[j] <= n_max[i];
  
-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 ; +   set FOOD := BEEF CHK FISH HAM MCH MTL SPG TUR ; 
- +     
-param:   cost  f_min  f_max := +   param:   cost  f_min  f_max := 
-  BEEF   3.19    0     100 +    BEEF   3.19    0     100 
-  CHK    2.59    0     100 +    CHK    2.59    0     100 
-  FISH   2.29    0     100 +    FISH   2.29    0     100 
-  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:   n_min  n_max := +   param:   n_min  n_max := 
-   A      700   10000 +    A      700   10000 
-   C      700   10000 +    C      700   10000 
-   B1     700   10000 +    B1     700   10000 
-   B2     700   10000 ; +    B2     700   10000 ; 
- +     
-param amt (tr):+   param amt (tr):
               C   B1   B2 :=               C   B1   B2 :=
-   BEEF   60   20   10   15 +    BEEF   60   20   10   15 
-   CHK        0   20   20 +    CHK        0   20   20 
-   FISH    8   10   15   10 +    FISH    8   10   15   10 
-   HAM    40   40   35   10 +    HAM    40   40   35   10 
-   MCH    15   35   15   15 +    MCH    15   35   15   15 
-   MTL    70   30   15   15 +    MTL    70   30   15   15 
-   SPG    25   50   25   15 +    SPG    25   50   25   15 
-   TUR    60   20   15   10 ;+    TUR    60   20   15   10 ;
  
-model.lp+==== model.lp ====
  
-/* model.lp */ +   /* model.lp */ 
- +     
-max: 143 x + 60 y; +   max: 143 x + 60 y; 
- +     
-120 x + 210 y <= 15000; +   120 x + 210 y <= 15000; 
-110 x + 30 y <= 4000; +   110 x + 30 y <= 4000; 
-x + y <= 75;+   x + y <= 75;
  

QR Code
QR Code gnu_mathprog (generated for current page)