Introdução+ao+tema



= História = A programação linear surgiu como um dos mais importantes ramos da programação matemática com uma vasta aplicação prática. Inovações da última metade do século passado fizeram com que os algoritmos de programação linear sejam eficientes e favoráveis para a resolução de uma larga variedade de problemas envolvendo questões de decisão em vários domínios. Por exemplo: no planeamento da distribuição e produção de produtos. Ainda, são aspectos positivos a considerar o facto da programação linear ser uma teoria de optimização significativamente completa, de existirem códigos para computadores podendo suportar problemas de muito grande dimensão. O problema de optimizar uma função linear sujeita a restrições lineares teve a sua origem com os estudos de Fourier sobre sistemas lineares de inequações em 1826. No entanto, só em 1939 Kantorovich faz notar a importância prática destes problemas, tendo criado um algoritmo para a sua solução.

Teoria
Em matemática, problemas de Programação Linear (PL) são problemas de optimização nos quais a função objectivo e as restrições são todas lineares. Programação Linear é uma importante área da optimização por várias razões. Muitos problemas práticos em pesquisa operacional podem ser expressos como problemas de programação linear. Certos casos especiais de programação linear, tais como problemas de network flow e problemas de multicommodity flow são considerados importantes o suficiente para que se tenha gerado muita pesquisa em algoritmos especializados para suas soluções. Vários algoritmos para outros tipos de problemas de optimização funcionam resolvendo problemas de PL como sub-problemas. Historicamente, ideias da programação linear inspiraram muitos dos conceitos centrais de teoria da optimização, tais como dualidade, decomposição, e a importância da convexidade e suas generalizações. Geometricamente, as restrições lineares definem um poliedro convexo, que é chamado de conjunto dos pontos viáveis. Uma vez que a função objectivo é também linear, todo óptimo local é automaticamente um ótimo global. A função objetivo ser linear também implica que uma solução ótima pode apenas ocorrer em um ponto da fronteira do conjunto de pontos viáveis. Existem duas situações nas quais uma solução ótima não pode ser encontrada. Primeiro, se as restrições se contradizem (por exemplo, x ≥ 2 e x ≤ 1) logo, a região factível é vazia e não pode haver solução ótima, já que não pode haver solução nenhuma. Neste caso, o PL é dito inviável.

** O que é a Programação Linear ? **
A programação linear é uma técnica da Matemática que permite encontrar a solução para um certo tipo de problemas, utilizando modelos que representem uma realidade.

Linear - expressões (condições) lineares.
Ao se conceber um modelo linear para um problema devemos considerar as seguintes fases:


 * · Verificar, no contexto do problema, da legitimidade do uso de inequações ou equações lineares;


 * · Identificar as variáveis de decisão;


 * · Identificar a função-objectivo;


 * · Identificação das restrições;


 * · Formular a matemática do problema.

Depois de se ter obtido a formulação matemática, é então possível resolver o problema de optimização. No método de programação linear é adequado o recurso à metodologia gráfica e à metodologia algébrica. Na maior parte dos problemas, é imprescindível o recurso ao computador, tal é a diversidade de variáveis e a quantidade de cálculos envolvidos!

Exemplo
Aqui está um exemplo de problema de programação linear. Suponha que um fazendeiro tem um pedaço de terra de digamos, A km2, para ser semeado com trigo ou cevada ou uma combinação de ambas. O fazendeiro tem uma quantidade limitada de fertilizante F permitido e de inseticida P permitido que podem ser usados, cada um deles sendo necessários em quantidades diferentes por unidade de área para o trigo (F1, P1) e para a cevada (F2, P2). Seja S1 o preço de venda do trigo, e S2 o da cevada. Se chamarmos a área plantada com trigo e cevada de x1 e x2 respectivamente, então o número ideal de km2 de plantação com trigo vs. cevada pode ser expresso como um problema de programação linear:


 * maximize S1x1 + S2x2 || (maximize o lucro - esta é a "função objetivo") ||
 * sujeito a || [[image:http://upload.wikimedia.org/math/8/e/f/8efabcf1a9b3f49e1f173ceb4de84768.png caption=" x_1 + x_2 le A "]] || (limite da área total) ||
 * || [[image:http://upload.wikimedia.org/math/b/6/6/b6657720f92cada752b75e7cb0486aa6.png caption=" F_1 x_1 + F_2 x_2 le F "]] || (limite do fertilizante) ||
 * || [[image:http://upload.wikimedia.org/math/9/1/f/91fbd278019e6581f02a31be06f5cc0e.png caption=" P_1 x_1 + P_2 x_2 le P "]] || (limite do insecticida) ||
 * || [[image:http://upload.wikimedia.org/math/4/e/0/4e07f9713d1cefbbf25703bd96c59aca.png caption=" x_1 ge 0,, x_2 ge 0 "]] || (não se pode semear uma área negativa) ||

Exemplo de poliedro resultante das condições de um problema de programação linear:



Simplex
Em teoria de otimização matemática, o algoritmo Simplex de George Dantzig é uma técnica popular para dar soluções numéricas de problemas da programação linear. Um método sem relação, mas chamado de maneira similar é o método Nelder-Mead ou método Simplex de baixo custo devido a Nelder e Mead (1965) e é um método numérico para otimização de problemas livres multidimensionais, pertencentes à classe mais geral de algoritmos de busca. Em ambos os casos, o método usa o conceito de um simplex, que é um polítopo de N + 1 vértices em N dimensões: um segmento de linha sobre uma linha, um triângulo sobre um plano, um tetraedro em um espaço de três dimensões e assim sucessivamente.

Procedimentos
Estes procedimentos são válidos para problemas de maximização:
 * 1) Introduzir as variáveis de folga, uma para cada desigualdade;
 * 2) Montar um quadro para os cálculos, colocando os coeficientes de todas as variáveis com os respectivos sinais e, na última linha, incluir os coeficientes da função objetivo transformada;
 * 3) Estabelecer uma solução básica inicial, usualmente atribuindo valor zero às variáveis originais e achando valores positivos para as variáveis de folga;
 * 4) Como próxima variável a entrar na base, escolher a variável não básica que oferece, na última linha, a maior contribuição para o aumento da função objetivo (ou seja, tem o maior valor negativo). Se todas as variáveis que estão fora da base tiverem coeficientes nulos ou positivos nesta linha, a solução atual é ótima. Se alguma dessas variáveis tiver coeficiente nulo, isto significa que ela pode ser introduzida na base sem aumentar o valor da função objetivo. Isso quer dizer que temos uma solução ótima, com o mesmo valor da função objetivo.
 * 5) Para escolher a variável que deve deixar a base, deve-se realizar o seguinte procedimento:
 * Dividir os elementos da última coluna pelos correspondentes elementos positivos da coluna da variável que vai entrar na base. Caso não haja elemento nenhum positivo nesta coluna, o processo deve parar, já que a solução seria ilimitada.
 * O menor quociente indica a equação cuja respectiva variável básica deverá ser anulada, tornando-se variável não básica.
 * 1) Usando operações válidas com as linhas da matriz, transformar o quadro de cálculos de forma a encontrar a nova solução básica. A coluna da nova variável básica deverá se tornar um vetor identidade, onde o elemento 1 aparece na linha correspondente à variável que está sendo anulada.
 * 2) Retornar ao passo 4 para iniciar outra iteração.



__Exercicios:__
@http://www.isegi.unl.pt/docentes/vlobo/io/1%20PPLinear.pdf

__Teoria:__
@http://turmaxis.no.sapo.pt/PL_PSilva+JFonseca.pdf, acedido em 10 Fevereiro 2011

@http://www.prof2000.pt/users/j.pinto/vitae/textos/04_ProgLinear_JPinto.pdf, acedido em 10 Fevereiro 2011

[], acedido em 17 Fevereiro 2011

[], acedido a 17 Fevereiro 2011

__Imagens de:__
[], Acedido em 10 de Fervereiro 2011

[] Acedido a 17 Fevereiro 2011