@c Language: Brazilian Portuguese, Encoding: iso-8859-1
@c /simplex.texi/1.3/Sat Jun  2 00:13:30 2007//
@menu
* Introdu@value{cedilha}@~{a}o a simplex::
* Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para simplex::
@end menu

@node Introdu@value{cedilha}@~{a}o a simplex, Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para simplex, simplex, simplex
@section Introdu@value{cedilha}@~{a}o a simplex

@code{simplex} @'{e} um pacote para otimiza@value{cedilha}@~{a}o linear usando o algor@'{i}tmo simplex.

Exemplo:

@c ===beg===
@c load("simplex")$
@c minimize_sx(x+y, [3*x+2*y>2, x+4*y>3]);
@c ===end===
@example
(%i1) load("simplex")$
(%i2) minimize_sx(x+y, [3*x+2*y>2, x+4*y>3]);
                  9        7       1
(%o2)            [--, [y = --, x = -]]
                  10       10      5
@end example

@node Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para simplex,  , Introdu@value{cedilha}@~{a}o a simplex, simplex
@section Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para simplex

@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} epsilon_sx
Valor padr@~{a}o: @code{10^-8}

Epsilon usando para c@'{a}lculos num@'{e}ricos em @code{linear_program}.

Veja tamb@'{e}m: @code{linear_program}.

@end defvr

@deffn {Fun@value{cedilha}@~{a}o} linear_program (@var{A}, @var{b}, @var{c})

@code{linear_program} @'{e} uma implementa@value{cedilha}@~{a}o do algor@'{i}tmo simplex.
@code{linear_program(A, b, c)} calcula um vetor @var{x} para o qual @code{c.x} @'{e} o m@'{i}nimo
poss@'{i}vel entre vetores para os quais @code{A.x = b} e @code{x >= 0}. O argumento
@var{A} @'{e} uma matriz e os argumentos @var{b} e @var{c} s@~{a}o listas.

@code{linear_program} retorna uma lista contendo o vetor minimizado @var{x} e o
valor m@'{i}nimo @code{c.x}. Se o problema for n@~{a}o associado, @'{e} retornado "Problem not bounded!" e
se o problema for n@~{a}o vi@'{a}vel, @'{e} retornado "Problem not feasible!".

Para usar essa fun@value{cedilha}@~{a}o primeiramente chame o pacote @code{simplex} com @code{load(simplex);}.

Exemplo:

@c ===beg===
@c A: matrix([1,1,-1,0], [2,-3,0,-1], [4,-5,0,0])$
@c b: [1,1,6]$
@c c: [1,-2,0,0]$
@c linear_program(A, b, c);
@c ===end===
@example
(%i2) A: matrix([1,1,-1,0], [2,-3,0,-1], [4,-5,0,0])$
(%i3) b: [1,1,6]$
(%i4) c: [1,-2,0,0]$
(%i5) linear_program(A, b, c);
                   13     19        3
(%o5)            [[--, 4, --, 0], - -]
                   2      2         2
@end example

Veja tamb@'{e}m: @code{minimize_sx}, @code{scale_sx}, e @code{epsilon_sx}.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} maximize_sx (@var{obj}, @var{cond}, [@var{pos}])

Maximiza a fun@value{cedilha}@~{a}o linear objetiva @var{obj} submetida a alguma restri@value{cedilha}@~{a}o linear
@var{cond}. Veja @code{minimize_sx} para uma descri@value{cedilha}@~{a}o detalhada de argumentos e valores de
retorno.


Veja tamb@'{e}m: @code{minimize_sx}.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} minimize_sx (@var{obj}, @var{cond}, [@var{pos}])

Minimiza uma fun@value{cedilha}@~{a}o linear objetiva @var{obj} submetida a alguma restri@value{cedilha}@~{a}o
linear @var{cond}. @var{cond} @'{e} uma lista de equa@value{cedilha}@~{o}es lineares ou
desigualdades. Em desigualdades estritas @code{>} @'{e}  substituido por @code{>=}
e @code{<} por @code{<=}. O argumento opcional @var{pos} @'{e} uma lista de
vari@'{a}veis de decis@~{a}o que s@~{a}o assumidas como sendo positivas.

Se o m@'{i}nimo existir, @code{minimize_sx} retorna uma lista que cont@'{e}m
o menor valor da fun@value{cedilha}@~{a}o objetiva e uma lista de valores de vari@'{a}veis de
decis@~{a}o para os quais o m@'{i}nimo @'{e} alcan@value{cedilha}ado. Se o problema for n@~{a}o associado,
@code{minimize_sx} retorna "Problem not bounded!" e se o problema for
n@~{a}o vi@'{a}vel, @'{e} retornado "Ploblem not feasible!".

As vari@'{a}veis de decis@~{a}o n@~{a}o s@~{a}o assumidas para serem n@~{a}o negativas por padr@~{a}o. Se todas
as vari@'{a}veis de dicis@~{a}o forem n@~{a}o negativas, escolha @code{nonegative_sx} para @code{true}.
Se somente algumas das vari@'{a}veis de decis@~{a}o forem positivas, coloque-as ent@~{a}o no argumento
opcional @var{pos} (note que isso @'{e} mais eficiente que adicionar
restri@value{cedilha}@~{o}es).

@code{minimize_sx} utiliza o algor@'{i}tmo simplex que @'{e} implementado na fun@value{cedilha}@~{a}o
@code{linear_program} do Maxima.

Para usar essa fun@value{cedilha}@~{a}o primeiramente chame o pacote @code{simplex} com @code{load(simplex);}.

Exemplos:

@c ===beg===
@c minimize_sx(x+y, [3*x+y=0, x+2*y>2]);
@c minimize_sx(x+y, [3*x+y>0, x+2*y>2]), nonegative_sx=true;
@c minimize_sx(x+y, [3*x+y=0, x+2*y>2]), nonegative_sx=true;
@c minimize_sx(x+y, [3*x+y>0]);
@c ===end===
@example
(%i1) minimize_sx(x+y, [3*x+y=0, x+2*y>2]);
                      4       6        2
(%o1)                [-, [y = -, x = - -]]
                      5       5        5
(%i2) minimize_sx(x+y, [3*x+y>0, x+2*y>2]), nonegative_sx=true;
(%o2)                [1, [y = 1, x = 0]]
(%i3) minimize_sx(x+y, [3*x+y=0, x+2*y>2]), nonegative_sx=true;
(%o3)                Problem not feasible!
(%i4) minimize_sx(x+y, [3*x+y>0]);
(%o4)                Problem not bounded!
@end example


Veja tamb@'{e}m: @code{maximize_sx}, @code{nonegative_sx}, @code{epsilon_sx}.

@end deffn

@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} nonegative_sx
Valor padr@~{a}o: @code{false}

Se @code{nonegative_sx} for verdadeiro (true) todas as vari@'{a}veis de decis@~{a}o para @code{minimize_sx}
e @code{maximize_sx} s@~{a}o assumidas para serem positivas.

Veja tamb@'{e}m: @code{minimize_sx}.

@end defvr
