1 @c English version: 2012-11-28
3 * Introducción a simplex::
4 * Funciones y variables para simplex::
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.
16 @c minimize_lp(x+y, [3*x+2*y>2, x+4*y>3]);
19 (%i1) load("simplex")$
20 (%i2) minimize_lp(x+y, [3*x+2*y>2, x+4*y>3]);
22 (%o2) [--, [y = --, x = -]]
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}.
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
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");}.
58 @c A: matrix([1,1,-1,0], [2,-3,0,-1], [4,-5,0,0])$
61 @c linear_program(A, b, c);
64 (%i2) A: matrix([1,1,-1,0], [2,-3,0,-1], [4,-5,0,0])$
67 (%i5) linear_program(A, b, c);
69 (%o5) [[--, 4, --, 0], - -]
73 Véanse también @code{minimize_lp}, @code{scale_lp} y @code{epsilon_lp}.
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.
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
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");}.
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]);
122 (%i1) minimize_lp(x+y, [3*x+y=0, x+2*y>2]);
124 (%o1) [-, [y = -, x = - -]]
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!
135 Véanse también @code{maximize_lp}, @code{nonegative_lp} y @code{epsilon_lp}.
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}.