Rename specvar integer-info to *integer-info*
[maxima.git] / doc / info / es / simplex.texi
blob9c6304eff1c80b1481cb9ce29cc536cac96e065c
1 @c English version: 2012-11-28
2 @menu
3 * Introducción a simplex::
4 * Funciones y variables para simplex::
5 @end menu
7 @node Introducción a simplex, Funciones y variables para simplex, simplex, simplex
8 @section Introducción a simplex
10 El paquete @code{simplex} utiliza el algoritmo simplex para programación lineal.
12 Ejemplo:
14 @c ===beg===
15 @c load("simplex")$
16 @c minimize_lp(x+y, [3*x+2*y>2, x+4*y>3]);
17 @c ===end===
18 @example
19 (%i1) load("simplex")$
20 (%i2) minimize_lp(x+y, [3*x+2*y>2, x+4*y>3]);
21                        9        7       1
22 (%o2)                 [--, [y = --, x = -]]
23                        10       10      5
24 @end example
26 @node Funciones y variables para simplex,  , Introducción a simplex, simplex
27 @section Funciones y variables para simplex
29 @defvr {Variable opcional} epsilon_lp
30 Valor por defecto: @code{10^-8}
32 Error epsilon utilizado en los cálculos numéricos de @code{linear_program}.
34 Véase también @code{linear_program}.
36 @end defvr
38 @deffn {Función} linear_program (@var{A}, @var{b}, @var{c})
40 La función @code{linear_program} es una implementación del algoritmo
41 simplex. La instrucción @code{linear_program(A, b, c)} calcula un 
42 vector @var{x} tal que minimiza @code{c.x} bajo las restricciones @code{A.x = b}
43 y @code{x >= 0}. El argumento @var{A} es una matriz y los argumentos @var{b} y
44 @var{c} son listas.
46 La función @code{linear_program} devuelve una lista que contiene el vector
47 solución @var{x} y el valor mínimo de @code{c.x}.
48 Si el problema no está acotado, devuelve el mensaje "Problem not bounded!"
49 y si el problema no es factible, devuelve el mensaje "Problem not feasible!".
51 Para usar esta función, cárguese primero el paquete con la
52 instrucción @code{load("simplex");}.
54 Ejemplo:
57 @c ===beg===
58 @c A: matrix([1,1,-1,0], [2,-3,0,-1], [4,-5,0,0])$
59 @c b: [1,1,6]$
60 @c c: [1,-2,0,0]$
61 @c linear_program(A, b, c);
62 @c ===end===
63 @example
64 (%i2) A: matrix([1,1,-1,0], [2,-3,0,-1], [4,-5,0,0])$
65 (%i3) b: [1,1,6]$
66 (%i4) c: [1,-2,0,0]$
67 (%i5) linear_program(A, b, c);
68                    13     19        3
69 (%o5)            [[--, 4, --, 0], - -]
70                    2      2         2
71 @end example
73 Véanse también @code{minimize_lp}, @code{scale_lp} y @code{epsilon_lp}.
75 @end deffn
77 @deffn {Función} maximize_lp (@var{obj}, @var{cond}, [@var{pos}])
79 Maximiza la función objetivo lineal @var{obj} sujeta a ciertas restricciones
80 lineales @var{cond}. Véase @code{minimize_lp} para una descripción detallada
81 de los argumentos y de la respuesta dada por esta función.
83 @end deffn
85 @deffn {Función} minimize_lp (@var{obj}, @var{cond}, [@var{pos}])
87 Minimiza la función objetivo lineal @var{obj} sujeta a ciertas restricciones
88 lineales @var{cond}, siendo ésta una lista de ecuaciones o inecuaciones lineales.
89 En las inecuaciones estrictas se reemplaza @code{>} por @code{>=} y @code{<}
90 por @code{<=}. El argumento opcional @var{pos} es una lista de variables de
91 decisión que se suponen positivas.
93 Si el mínimo existe, @code{minimize_lp} devuelve una lista que
94 contiene el valor mínimo de la función objetivo y una lista 
95 de valores para las variables de decisión con los que se alcanza el 
96 mínimo. 
97 Si el problema no está acotado, devuelve el mensaje "Problem not bounded!"
98 y si el problema no es factible, devuelve el mensaje "Problem not feasible!".
100 Las variables de decisión no se suponen no negativas. Si todas las 
101 variables de decisión son no negativas, asígnese el valor
102 @code{true} a la variable @code{nonegative_lp}. Si sólo algunas de las
103 variables de decisión son positivas, lístense
104 en el argumento opcional @var{pos}, lo cual es más eficiente que 
105 añadir restricciones.
107 La función @code{minimize_lp} utiliza el algoritmo simplex implementado
108 en la función @code{linear_program} de Maxima.
110 Para usar esta función, cárguese primero el paquete con la
111 instrucción @code{load("simplex");}.
113 Ejemplos:
115 @c ===beg===
116 @c minimize_lp(x+y, [3*x+y=0, x+2*y>2]);
117 @c minimize_lp(x+y, [3*x+y>0, x+2*y>2]), nonegative_lp=true;
118 @c minimize_lp(x+y, [3*x+y=0, x+2*y>2]), nonegative_lp=true;
119 @c minimize_lp(x+y, [3*x+y>0]);
120 @c ===end===
121 @example
122 (%i1) minimize_lp(x+y, [3*x+y=0, x+2*y>2]);
123                       4       6        2
124 (%o1)                [-, [y = -, x = - -]]
125                       5       5        5
126 (%i2) minimize_lp(x+y, [3*x+y>0, x+2*y>2]), nonegative_lp=true;
127 (%o2)                [1, [y = 1, x = 0]]
128 (%i3) minimize_lp(x+y, [3*x+y=0, x+2*y>2]), nonegative_lp=true;
129 (%o3)                Problem not feasible!
130 (%i4) minimize_lp(x+y, [3*x+y>0]);
131 (%o4)                Problem not bounded!
132 @end example
135 Véanse también @code{maximize_lp}, @code{nonegative_lp} y @code{epsilon_lp}.
137 @end deffn
139 @defvr {Variable opcional} nonegative_lp
140 Valor por defecto: @code{false}
142 Si @code{nonegative_lp} vale @code{true} todas las variables de decisión
143 pasadas a @code{minimize_lp} y a @code{maximize_lp} se suponen positivas.
145 Véase también @code{minimize_lp}.
147 @end defvr