Linear Solver Program - Manual do Usuário Versão 1.11.0 Traduzido por: Angelo de Oliveira (angelo@unir.br/mrxyztplk@gmail.com) 1 Introdução Linear Program Solver (LiPS) é um pacote de otimização projetado para resolver problemas de programação linear, inteira e de objetivo. As principais características do LiPS são: LiPS está baseado em uma eficiente implementação do método simplex modificado que resolve uma grande escala de problemas. LiPS fornece não somente uma resposta, mas um processo de solução detalhado como uma sequência de tabelas simplex, de modo que elas poden ser usadas para estudar (ensinar) programação linear. LiPS fornece procedimentos de análise de sensibilidade, o que permite o estudo do comportamento do modelo quando há mudança de parâmetros, incluindo: análises de mudanças no lado direito das restrições, análise das mudanças nos coeficientes da função objetivo, a análise de mudanças na coluna/linha da tecnologia matriz. Tal informação pode ser extremamente útil em aplicações práticas de modelos LP. LiPS fornece os métodos de programação por objetivos, incluindo os métodos lexicográfico e de ponderamento GP. Métodos de programação por objetivos tem a intenção de resolver problemas de otimização com múltiplos objetivos. 2 A Interface com o usuário Os principais componentes da interface do programa são (Figura 1): 1. A área do cliente na janela principal (contém subjanelas). 2. Barra de ferramentas (Toolbar) - contém botões para acesso rápido às funções chave do programa. 3. Barra de Menu Principal - fornece acesso para todas as funções do programa. 4. Barra de Status - contém simples dicas sobre o propósito dos items do menu principal e dos itens da barra de ferrramentas. 5. A(s) subjanela(s) - contém as definições dos modelos ou resultados do programa (relatórios). 6. Painel de registro - contém informações a respeito da solução do processo. LiPS é um ambiente integrado de desenvolvimento (IDE) que fornece ao usuário as seguintes interfaces: Modo Edição (Model Editor), Modo Solução (Model Solver) e Análise de Sensibilidade (Sensitivity Analysis). 3 Modo Editor (Editor Model) O modo editor fornece funções para criar, editar, salvar e carregar modelos. formato padrão MPS, mas também tem seu próprio formato LPX. O sistema suporta o Quando se usa o formato LPX, LiPS fornece ao usuário duas opções para entrada de modelos: algébrica e tabular. 1
3.1 Modo de Entrada Tabular Figura 1: Interface do LiPS. No modo de entrada tabular o usuário é orientadado a preencher os dados de um modo que é adequado a uma tabela simplex padrão. Para criar o modelo na forma tabular dois passos são requeridos: 1) Criar um modelo do problema (menu File» New» Table Model). Figura 2: Formulário para entrada no modo tabular. Na janela (formulário) que aparece, os campos devem ser preeenchidos com os parâmetros do problema: o número de variáveis, restrições, funções objetivo, bem como indicar a direção de otimização. 2) Preencher o modo de visão de tabela, o que inclui: A direção da otimização (MAX/MIN). A linha dos coeficientes da função objetivo. A matriz tecnológica A. 2
A coluna dos lados direitos das restrições. Os tipos de restrições (<=, =, >=). Os limites inferiores das variáveis. Os limites superiores das variáveis. Os tipos das variáveis (CONT - Contínua, INT - Inteira). Figura 3: Formulário - Modo Tabular. Se você deseja adicionar/remover variáveis ou restrições, use o menu Table» Insert/Delete. 3.2 Modo de Entrada Algébrico O modo de entrada algébrico não permite ao usuário trabalhar com tabelas simplex, mas diretamente com a formulação matemática do problema. Para criar um modelo na forma algébrica dois passos são requeridos: 1) Criar um modelo do problema (menu File» New» Text Model); 2) Entrar com o modelo na forma algébrica. O modelo deve estar escrito de acordo com o formato LPX, que é um conjunto de expressões algébricas e declarações na seguinte ordem: <função objetivo> <restrições> <declarações> <função objetivo> - é uma combinação linear das variáveis, terminando com um ponto-e-vírgula (;) e opcionalmente precedido por max ou min para indicar se o objetivo é a maximação ou minimação. A maximação é o padrão. Exemplo: max: x1 + x2; <restrições> - consiste de quatro partes: 1) O nome da restrição (opcional), seguido por dois pontos; 2) A combinação linear das variáveis; 3) O tipo de restrição (>=, =, <=); 4) Os valores do lado direito. As restrições devem terminar com um ponto-e-vírgula (;). Exemplo: 4*x1 - x2 <= 8; <declarações> - variáveis podem ser declaradas como inteiras usando o especificador int, seguido pelos nomes de variáveis separadas por vírgulas. Exemplo: int x1, x2; Uma variável deve começar com uma letra (maiúscula ou minúscula) e pode conter qualquer número de letras adicionais, numerais ou caracteres. Exemplo do modelo no formato LPX: max: x1 + x2; row1: 4*x1 - x2 < 8; 3
row2: 2*x1 + x2 < 10; row3: -5*x1 + 2*x2 < 2; 3.3 Carregando Modelos Para salvar os modelos criados use o menu File» Save. Para carregar os modelos criados use o menu File» Open. De acorodo com os formatos de arquivos suportados, LiPS provê três tipo de carregamento: Modelo MPS; Modelo LPX em modo plano; Modelo LPX na forma tabular. Figura 4: Modos de carregamento de modelos. 4 Modelo de Solução Para executar um processo de solução use o menu LiPS» Solve Model. O modelo resolvedor tem dois modos: básico e avançado. No modo básico (que é adequado para aprendizagem do método simplex) LiPS fornece não somente uma resposta, mas uma solução detalhada do processo como uma sequência de tabelas simplex. A cada iteração, a saída inclui: tabela simplex correspondente, variável a ser tomada como básica, variável que irá sair do conjunto básico, etc. A forma da solução computacional simula o processo de solução manual do problema (uma base artificial, uma escolha inteligente da base inicial, frações, etc.). Em modo avançado, LiPs fornece um conjunto de métodos para solução de problemas de grande escala: um método simplex primal e dual baseado na decomposição LU e um método ramificado e limitado para MILP. 4.1 Formato da Tabela Simplex Quando se trabalha no modo tabela do método simplex, o resultado da solução é um relatório que inclui uma solução detalhada como uma sequência de tabelas simplex, como ilustrado abaixo: Figura 5: Resultado da solução utilizando o modo tabela do método simplex. 4
A cada iteração do método simplex correspondem as seguintes informações: 1. Número de Fase de Solução e a iteração corrrente. 2. A própria tabela simplex. A tabela simplex consiste dos seguintes componentes: (a) Coluna básica - contém o conjunto corrrente de variáveis básicas; (b) A coluna RHS (lado direito) - contém os valores correntes das variáveis básicas; (c) As colunas da matriz tecnologia - contém os elementos da matriz de restrições da atual iteração; (d) Obj. - contém os coeficientes da função objetivo da iteração corrrente. 3. Uma variável a ser tornada básica - determinada pelo coeficiente máximo da linha Obj. 4. As razões dos lados direitos das restrições (RHS) para os elementos da coluna correspondente à variável a ser tornada básica. 5. A variável que deve deixar a base - determinada pelo menor razão do item 4 anterior. 4.2 Formato Resultado Na ausência de ciclos infinitos, o método simplex termina após um número finito de iterações. Como resultado deste trabalho, um de três resultados seriam: 1) O problema não tem solução viável - isto significa que as restrições do problema original são inconsistentes, indicando erro(s) na formulação do problema. 2) O problemas é ilimitado - o que significa que a função objetivo alcança seu ótimo no infinito. Isto também indica erro(s) na formulação do problema. 3) O problema tem uma solução ótima. No último caso, LiPS produz a tabela resultante na forma: Figura 6: Tabela resultado. A tabela resultado consiste de duas partes: I) A primeira parte corresponde às variáveis e consiste de quatro colunas: 1) Variable - contém os nomes das variáveis estruturais; 2) Value - contém os valores das variáveis estruturais; 3) Obj. Cost - contém os valores dos coeficientes da função objetivo; 4) Reduced Cost - contém os valores dos custos reduzidos. II) A segunda parte da tabela corresponde às restrições do modelo: 1) Constraint - o nome das restrições; 2) Value - contém os valores das restrições; 3) RHS - contém o valor de uma coluna de termos livres (lado direito das restrições); 4) Dual Price - contém os valores das variáveis duais. Note: LiPS fornece a opção de exportar as soluções para o EXCEL. Para fazer isto, uso o menu: Solution» Export» Excel. 5
4.3 Ajustes do Método Simplex Para selecionar variantes do método simplex use o menu LiPS» Settings e selecione a opção desejada a partir da lista. Figura 7: Lista de variações para o método simplex. O sistema oferece uma escolha entre quatro variações: Table: mosta a solução detalhada do processo na forma de uma sequência de tabelas simplex. Este método é o ideal para propósitos de de aprendizado, mas não deve ser usado para problemas com mais de 100 restrições. Revised Simplex (EFI): no cálculo matricial, usa um efetivo procedimento de decomposição LU com eliminação na forma inversa (estabilidade numérica alta, velocidade média). Revised Simplex (PFI): no cálculo matricial, usa um procedimento efetivo de decomposição LU com a forma de multiplicação inversa (estabilidade numérica média, alta velocidade). Gaussian Pivoting: este método é muito rápido, mas numericamente instável. 5 Análise de Sensibilidade Análise de sensibilidade - permite o estudo do comportamento do modelo quando se modifica seus parâmetros. LiPS provides the following types of sensitivity analysis: Análise de mudanças no lado direito das restrições; Análise de mudanças nos coeficientes da função objetivo; Análise de mudanças na coluna da matriz tecnologia; Análise de mudanças na linha da matriz tecnologia. 5.1 Executando Análise de Sensibilidade Para executar o procedimento de análise de sensibilidade, tenha certeza que o modelo está resolvido e escolha LiPS» Sensitivity Analysis. Figura 8: Escolhendo o modelo de análise de sensibilidade. 6
Na janela que aparece, selecione os tipos de análise de interesse. Para fazer isto, selecione a linha apropriada na lista da esquerda e clique na seta para adicionar o item para a lista do lado direito. Tipos de análise que contém a palavra Vector em seu nome implicam em ajustar o vetor estrutural de mudanças. Para fazer isto, selecione a linha relevante e clique em "Settings...". Figura 9: Ajustando o vetor de mudanças. Na janela que aparece, deve-se: 1) entrar com os valores do vetor estrutural, e 2) se necessário, escolher a coluna (linha) modificada a partir da lista drop-down. Para obter mais tipos de relatórios (a mudança da função objetivo, os preços duais, custos de redução) e gráficos, selecione a aba "Charts". Figura 10: Obtendo novos tipos de relatório. A partir da lista drop-down, pode-se escolher os parâmetros do modelo: Variáveis, Preços Duais, Custos de Redução, Função Objetivo. 5.2 Resultado da Análise O resultado da análise de sensibilidade é um relatório que consiste em geral de dois componentes. I) Relatório Principal - contém informação básica sobre o tipo selecionado de análise. O relatório principal é uma tabela na forma: 7
Figura 11: Relatório principal - Análise de Sensibilidade. A tabela do relatótio principal inclui os seguintes componentes: 1. O título da tabela - inclui o nome da análise. 2. A primeira coluna - contém o nome do elemento que muda diretamente durante a análise. 3. A segunda coluna - contém os valores originais dos elementos variáveis. 4. A terceira coluna - contém os limites inferiores do elementos modificados. 5. A quarta coluna - contém os limites superiores do elementos modificados. 6. A quinta coluna - contém o vetor estrutural. 7. Faixa de escala de fator na qual a atual base permanece ótima e viável. II) Relatórios adicionais - contém informação adicional sobre as mudanças da função objetivo, variáveis estruturais, preços duais e custos reduzidos, bem como os gráficos ilustrando estas mudanças. A estrutura dos relatórios adicionais é similar ao do relatório principal. 6 Características Experimentais Esta seção descreve algumas características do programa que não estão padronizadas para otimização de modelagem de sistemas. Contudo, elas podem ser muito úteis em aplicações práticas de otimização de modelos. 6.1 Programação por Objetivos Para resolver um problema de programação por objetivos vários passos são requeridos: 1. Criar o modelo. 2. Executar o processo de solução. 3. Escolher o método de solução. 4. Ajustar as restrições do objetivo. 6.1.1 A escolha do método de solução Após escolher o processo de solução uma janela (wizard) aparecerá, a qual será a guia através da sequência de passos. O primeiro passo nesta sequência é escolher o método de solução (veja a Figura 12). LiPS implementa três métodos de programação por objetivos: 1. Método ponderado; 2. Método lexicográfico; 3. Método de concessões sucessivas. 6.1.2 Especificação das restrições do objetivo No estágio de especificação (ver Figura 13), para cada restrição de ojbetivo deve-se: 1) associar o peso (prioridade); 2) determinar como alcançar este objetivo (>=, = <=) e ajustar um valor limite (alvo). Prioridades devem ser números naturais. Pesos devem ser quaisquer números reais não negativos. 8
Figura 12: Escolhendo o método de solução. Figura 13: Ajustando as restrições do objetivo. 6.1.3 Resultados O resultado da solução do programa por objetivo é um relatório que contém duas tabelas. A primeira tabela contém os valores ótimos das variáveis do modelo. A segunda tabela contém os valores dos objetivos: os valores desejados versus os valores atuais, i.é, obtidos por meio de otimização. 6.2 A matriz mapa Problemas LP de grande escala frequentemente levam alguma estrutura. Tais problemas contém vários blocos, frequentemente idênticos, que estão apenas aproximadamente conectados por algumas restrições e/ou variáveis com coeficientes diferentes de zero nas linhas/colunas de vários blocos. A estrutura pode ser utilizada no mínimo de dois modos diferentes no interesse de obter técnicas de solução mais capazes. Uma delas resulta na decomposição de algoritmos, enquanto a outra leva a melhoramento substancial de vários passos do método simplex. A estrutura pode ser visualizada exibindo o padrão diferente de zero da matriz A. Esta característica é implementada no módulo "Matrix Map". Para invocar este módulo use o menu LiPS» Matrix Map. O módulo "Matrix Map"representa os elementos diferentes de zero por pontos codificados por cores. Esta análise pode revelar propriedades de modelos LP e pode sugegir boas estratégias de solução. 9
Figura 14: Matrix Map. 6.3 Histórico de Solução O módulo "Solution History"torna possível na forma visual estudar a variação de diferentes parâmetros de modelo (variáveis, preços duais, etc.) durante uma série de diferentes execuções de solução (experimentos). Para fazer isto, use o menu LiPS» Solution History. Figura 15: Histórico de Solução. 7 Suporte Atualizações Postar uma Resenha Reportar um Bug Suport ao LiPS Se você tem quaisquer questões, sinta-se livre para me contactar em: m.v.melnick@gmail.com. Quaisquer comentários e sugestões seriam úteis! 10