Programação Linear com o Microsoft Excel R Adriano Verdério 1, Clezio A. Braga 1 1 Colegiado do Curso de Matemática - Centro de Ciências Exatas e Tecnológicas da Universidade Estadual do Oeste do Paraná Caixa Postal 711-85819-110 - Cascavel - PR - Brasil adriano@harpa.com.br, clezio@unioeste.br Resumo. O objetivo deste trabalho é mostrar como podemos resolver problemas de programação linear de pequenas dimensões usando o Microsoft Excel, mais especificamente, utilizando o pacote Solver. Problemas de Programação Linear surgem naturalmente em questões cotidianas nas mais variadas áreas de conhecimento. Estamos sempre interessados em minimizar custos, maximizar lucro ou rendimentos, ou ainda, outros tipos de problemas que podem ser reduzidos à uma função linear a minimizar ou maximizar sujeito a um conjunto de equações ou inequações lineares que designam restrições para o problema. Primeiramente, trazemos uma pequena introdução sobre a Programação Linear para ambientar o leitor que não a conhece, em seguida uma introdução ao Microsoft Excel e ao pacote Solver, explicando seus comandos. Embora o conhecimento básico sobre planilhas seria importante para um melhor entendimento da metodologia, ele não se faz necessário, porque o texto será desenvolvido com base em exemplos simples e de fácil entendimento. Palavras Chaves. Programação Linear, Excel, Solver. 1. Introdução A busca pelo ótimo tem suas raízes na Antiguidade. Podemos citar como exemplo, Euclides, Newton, Euler, Monge, Lagrange, Hamilton, Leontief, Von Neumann, entre outros. Gaspard Monge, por exemplo, publicou em 1781, num trabalho intitulado Mémoire sur la théorie des déblais et des remblais, um estudo sobre o melhor caminho para mover pedras de um lugar para outro [SALLES NETO, 2006]. A Programação Linear (PL) é um dos elementos utilizados em Pesquisa Operacional. Fundamentalmente, é um modelo de otimização que visa encontrar a melhor solução para problemas que tenham seus modelos representados por expressões lineares. A tarefa da Programação Linear consiste na maximização ou minimização de uma função linear, denominada Função-Objetivo, respeitando-se um sistema linear de
igualdades ou desigualdades que recebe o nome de Restrições do modelo. As restrições normalmente representam limitações de recursos disponível ou exigências e condições que devem ser cumpridas no problema. Essas restrições do modelo determinam uma região que recebe o nome de Conjunto das Soluções Viáveis. A melhor das soluções viáveis, isto é, aquela que maximiza ou minimiza a função objetivo denomina-se Solução Ótima. E o objetivo da programação linear consiste na determinação da solução ótima [ANDRADE, 2000]. Em problemas de programação linear (PPL) é necessário fazer a modelagem do problema, que consiste em equacioná-lo em termos de equações e inequações lineares. Essa fase é importante pois o desenvolvimento de um método (ou algoritmo) que determine a solução de um PPL torna necessário a redução do problema a uma forma que permita a aplicação direta deste algoritmo. No caso de programação linear, algoritmos como o Método Simplex e o método de Pontos Interiores estão entre os mais utilizados. Para maiores detalhes veja [BOLDRINI, COSTA, FIGUEIREDO & WETZLER, 1986]. O objetivo deste artigo é resolver problemas de programação linear utilizando o Microsoft Office Excel, um programa de planilha eletrônica escrito e produzido pela Microsoft para computadores usando o sistema operacional Microsoft Windows e computadores Macintosh da Apple. A versão para Windows também roda em ambientes Linux, via software Wine. Seus recursos incluem uma interface intuitiva e capacitadas ferramentas de cálculo e de construção de gráficos que, juntamente com um marketing agressivo, tornaram o Excel um dos mais populares aplicativos de computador até hoje. 2. O Suplemento Solver do Microsoft Excel O Microsoft Excel, possui um suplemento chamado Solver. A opção Solver no Excel pode ser utilizada para resolver problemas de otimização lineares e não lineares. E também problemas de Programação Inteira, onde as restrições de inteiros podem ser colocadas nas variáveis de decisão. A ferramenta Solver do Microsoft Office Excel usa o código de otimização não linear de Gradiente Reduzido Genérico (GRG2), que foi desenvolvido por Leon Lasdon, da Universidade do Texas em Austin, e Alan Waren, da Universidade Estadual de Cleveland. Problemas lineares e de inteiros usam o Método Simplex com limites nas variáveis e o Método Desvio e Limite, implementados por John Watson e Daniel Fylstra, da Frontline Systems. Algumas partes do código do programa Solver do Microsoft Office Excel tiveram seus direitos autorais registrados em 1990, 1991, 1992 e 1995 pela Frontline Systems. Outras partes foram registradas em 1989 pela Optimal Methods. O Solver possui algumas limitações computacionais, ele pode ser utilizado para resolver problemas com até 200 variáveis de decisão, 100 restrições implícitas e 400 restrições simples, ou seja, com limites inferior e superior ou restrições de inteiros nas variáveis de decisão) [AJUDA DO MICROSOFT OFFICE EXCEL 2007]. 3. O Comando Solver do Microsoft Excel Primeiramente vamos conhecer um pouco sobre o comando Solver e sua opções. A ativação do Solver dependerá da versão utilizada do Excel, na versão de 2003 e anteriores basta ir ao menu Ferramentas e escolher a opção Solver. Caso não esteja instalado,
no menu Ferramentas escolha a opção Suplementos e na caixa Suplementos Disponíveis escolha o Solver e clique em Ok. Já na versão 2007, houveram algumas modificações. Para instalá-lo é necessário clicar no Botão Microsoft Excel e em seguida Opções do Excel. Após isso clique em Suplementos e na caixa Gerenciar, selecione Suplementos do Excel. Clique em Ir... e na caixa Suplementos Disponíveis, marque a caixa de seleção Solver e clique em OK. Depois de carregá-lo o comando Solver torna-se disponível no grupo Análise, na guia Dados. Abaixo a caixa de diálogo Parâmetros do Solver: Figura 1: Caixa de Diálogo Parâmetros do Solver É aqui que faremos a resolução do problema de programação linear, mas primeiramente vamos conhecer um pouco sobre suas funções: A caixa Definir célula de destino deve conter a localização da célula onde está a função objetivo para o problema em consideração. Máx, Mín ou Valor de podem ser selecionados para encontrar o máximo, o mínimo ou valor definido logo a direita dessa opção para a célula alvo. A caixa Células variáveis precisa conter a localização das variáveis de decisão para o problema. O botão Adicionar deve ser selecionado para incluir as restrições que ficarão especificadas na caixa Submeter às restrições. O botão Alterar permite a modificação de uma restrição já inserida e Excluir permite a exclusão de uma restrição previamente inserida. O botão Redefinir tudo limpa o problema atual e reinicializa todos os parâmetros aos seus valores padrão. O botão Opções ativa a caixa de diálogo Opções do Solver que contém parâmetros referente aos métodos de solução para o problema. O botão Resolver é utilizado para a solução do problema depois de todas as opções serem especificadas. Ao clicar no botão Adicionar, a seguinte caixa de diálogo será exibida: Onde, A caixa Referência de célula deverá conter às células de restrições, geralmente em Programação Linear serão as células contendo as variáveis de decisão que sofrem restrições.
Figura 2: Caixa de Diálogo Adicionar Restrição O tipo de restrição pode ser escolhida clicando na seta da caixa entre as caixas Referência de célula e Restrição, com as seguintes opções: <=, >=, =, num e bin. Onde num deve ser escolhido para números inteiros e bin para binários. A caixa Restrição conterá os valores que as células de restrições deverão respeitar conforme o tipo de restrição. Ao clicar no botão Opções, a seguinte caixa de diálogo será exibida: Figura 3: Caixa de Diálogo Opções do Solver Onde, Em Tempo máximo, definimos o tempo máximo para a solução do problema, problemas menores levam menos tempo que problemas maiores (com muitas variáveis de decisão). Em Iterações, escolhemos a quantidade de iterações feitas para a resolução do problema. Em Precisão, escolhemos o tamanho do erro. Em Tolerância, especifica uma porcentagem dentro a qual a solução encontrada é ótima. Utilizada para problemas inteiros, caso queira a solução ideal esse valor deve ser zero. A opção Presumir modelo linear deve ser selecionada para problemas de programação linear, ela informa para o Excel para utilizar o Algoritmo Simplex
em vez do um algoritmo não linear (Método do Gradiente Reduzido Genérico) que consumirá um tempo maior. A opção Presumir não negativos deve ser selecionada para problemas de programação linear em que as variáveis não poderão assumir valores negativos. De um modo geral, os valores padrões desses parâmetros funcionam bem. Um fato importante é indicar ao Solver que o problema a ser otimizado é linear ou inteiro, escolhendo a opção Presumir modelo linear. 4. Programação Linear com o Solver Para melhor entendimento do processo, a construção será feita seguindo o seguinte exemplo, extraído do livro Introdução à Programação Linear de Paulo F. Bregalda. Antonio F. de Oliveira e Cláudio T. Borstein, veja [BREGALDA, OLIVEIRA & BORNSTEIN, 1983]. Uma nutricionista precisa estabelecer uma dieta contendo, pelo menos, 10 unidades de vitamina A, 30 unidades de vitamina B e 18 unidades de vitamina C. Essas vitaminas estão contidas em quantidades variadas em cinco alimentos que vamos chamar de s 1, s 2, s 3, s 4, s 5. O quadro seguinte dá o número de unidades das vitaminas A, B e C em cada unidade desses cinco alimentos como o seu custo por unidade. s 1 s 2 s 3 s 4 s 5 A 0 1 5 4 3 B 2 1 0 3 2 C 3 1 0 9 0 Custo 4 2 1 10 5 O nosso problema está em calcular a quantidade dos cinco alimentos que devem ser incluídas na dieta diária, a fim de garantir os teores de cada vitamina e com o menor custo possível. MODELO Sejam x 1, x 2, x 3, x 4, x 5 o número de unidades dos alimentos s 1, s 2, s 3, s 4, s 5, respectivamente, de uma dieta diária. O teor de, pelo menos, 10 unidades de vitamina A por ser expresso, da seguinte forma: x 2 + 5x 3 + 4x 4 + 3x 5 10 forma: Analogamente, indicamos os outros teores mínimos, respectivamente, da seguinte 2x 1 + x 2 + 3x 4 + 2x 5 30 3x 1 + x 2 + 9x 4 18 Como não podemos consumir uma quantidade negativa de unidades dos alimentos também: x 1 0; x 2 0; x 3 0; x 4 0; x 5 0
O custo por dia da desta dieta, será expresso pela Função Linear: Q(x) = 4x 1 + 2x 2 + x 3 + 10x 4 + 5x 5 Nosso problema é portanto, determinar o ponto ótimo x = (x 1, x 2, x 3, x 4, x 5 ) tal que satisfaça todas as restrições e minimize, ao mesmo tempo, o valor da função objetivo Q(x). Podemos indicar nosso problema, resumidamente, da seguinte maneira: x 2 + 5x 3 + 4x 4 + 3x 5 10 2x 1 + x 2 + 3x 4 + 2x 5 30 3x 1 + x 2 + 9x 4 18 x 1, x 2, x 3, x 4, x 5 0 4x 1 + 2x 2 + x 3 + 10x 4 + 5x 5 = Q(x) MIN! Agora que temos um problema para trabalhar precisamos formatar nossa Planilha no Excel para que o mesmo possa, utilizando o Solver, resolver o problema, como nos mostra a Figura 4. Figura 4: Planilha do Problema no Microsoft Excel Onde, Os Coeficientes das Restrições é a quantidade de que cada alimento possui de cada uma das vitaminas, de uma maneira geral, nesses campos geralmente estarão os pesos de cada uma das variáveis nas desigualdades ou igualdades de restrições. As células Necessidade refere-se ao valor que cada uma das desigualdades ou igualdades deverão cumprir. E As células Quant é a quantidade que será atendida após a resolução do problema. As células Variáveis nos trás o valor que cada uma das variáveis assumirá, na ordem em que aparecem. Para início de cálculo podem assumir qualquer valor inteiro não-negativo.
As células Valor Unitário é o custo de cada uma das variáveis, no nosso caso o custo de cada tipo de alimento. A célula Total representa o custo total da dieta no nosso exemplo, e de maneira geral esta é a célula a qual queremos maximizar ou minimizar. As únicas células que terão fórmulas serão as Quant e a Total. As células Quant nada mais é que a transformação das desigualdades do problema em igualdades com valores hipotéticos, a princípio, dependendo do valor do chute inicial para as variáveis. Na célula Total será digitada a função objetivo, que a princípio também terá um valor hipotético, que depende dos valores iniciais das variáveis. As fórmulas para cada uma das células Quant são as seguintes: Figura 5: Fórmulas das Células Quant (H6, H7 e H8, respectivamente) As fórmulas para a célula Total é a seguintes: Figura 6: Fórmula da Célula Total (J14) Agora que temos a planilha digitada, basta a programação do Solver para que seja resolvido nosso problema. Para isso abrimos o Solver (Menu Ferramentas (Excel 2003 e Anteriores) ou Guia Dados (Excel 2007)). Será então exibido a caixa de diálogo Parâmetros do Solver. Na caixa Definir célula de destino deverá conter a célula onde está a função objetivo, no nosso exemplo a célula J14. Como nosso problema consiste na minimização, devemos escolher a opção Mín. Nas Células variáveis deverão estar as células Variáveis que nomeamos na planilha (B12, C12, D12, E12 e F12), como mostra a Figura 7. Ainda precisamos clicar no botão Adicionar para que as restrições do problema sejam inseridas no Solver. Ao clicar no botão Adicionar, temos a caixa de diálogo Adicionar restrição. As nossas restrições dizem que a nossa Quant deve ser maior ou igual a nossa Necessidade, ou seja, os valores das células H6, H7 e H8 devem ser maior ou igual aos valores das células J6, J7 e J8, e podemos adicioná-las de uma vez, desde que a quantidade de celulas sejam iguais, como nos mostra a Figura 8. Ainda temos a restrição de não negatividade das variáveis, que não precisamos adicionar, basta escolher a opção Presumir não-negativos na caixa de diálogo Opções. E ainda precisamos dizer ao Excel que nosso problema é linear, marcando a opção Presumir modelo linear também da caixa de diálogo Opções, as outras opções deixaremos como o padrão do Excel como mostra a Figura 9. Após a configuração do Solver, basta clicar no botão Resolver, e com isso o Excel fornece a resposta ótima ao problema, exibindo antes disso a caixa de diálogo Resultados
Figura 7: Caixa de Diálogo Parâmetros do Solver em nosso Exemplo Figura 8: Restrição 01 Figura 9: Opções do Solver do Solver (Figura 10), onde podemos manter a solução encontrada ou restaurar os valores iniciais. Em nosso exemplo temos como resultado a seguinte planilha: Onde temos o resultado do nosso problema. Que diz que a solução ótima é o consumo de 10 unidades do alimento s 1 e 10 unidades do alimento s 2, o que dará um custo de 60 e as necessidades das vitaminas foram todas satisfeitas, com o consumo de 10 unidades da vitamina A, 30 unidades da vitamina B e 40 unidades da vitamina C.
Figura 10: Caixa de Diálogo Resultados do Solver Figura 11: Planilha com os Resultados do Solver 5. Conclusão Podemos ver que o Excel pode nos auxiliar em problemas de programação linear de pequeno porte, com até 200 variáveis, o que corresponde a uma parte dos problemas encontrados no dia-a-dia. O comando Solver do Excel torna o trabalho bastante rápido e de fácil manipulação. A modelagem de problemas de programação de produção ou planejamento de investimentos por programação linear é uma prática usual em empresas, que procuram com isso orientar a busca da melhor solução. A modelagem e obtenção da solução ótima formalizam o processo de planejamento e facilitam a criação de alternativas viáveis. Considerando ainda que o tempo é o grande diferencial em tomadas de decisão, a utilização de um recurso computacional simples é uma alternativa eficaz para auxílio na hora de decidir. 6. Referências Referências MICROSOFT OFFICE ONLINE Ajuda e Instruções do Excel 2007. Disponível em: <http://office.microsoft.com/pt-br/excel/results.aspx?qu=solver&av=zxl120>. Acesso: Set 2008.
MICROSOFT OFFICE ONLINE Ajuda e Instruções do Excel 2003. Disponível em: <http://office.microsoft.com/pt-br/excel/results.aspx?qu=solver&av=zxl110>. Acesso: Set 2008. ANDRADE, L. de A. Introdução à Pesquisa Operacional. Editora LTC. 2 a Edição. Rio de Janeiro, 2000. BOLDRINI, J. L., COSTA, S. I. R. FIGUEIREDO, V. L. & WETZLER, H. G. Álgebra Linear. Editora Harbra. 3 a Edição. Rio de Janeiro, 1986. BREGALDA, P. F., OLIVEIRA, A. A. F. de & BORNSTEIN, C. T. Introdução à Programação Linear. Editora Campos. 2 a Edição. Rio de Janeiro, 1983. SALLES NETO, L. L. Tópicos de Pesquisa Operacional para Ensino Médio. Anais da III Bienal da Sociedade Brasileira de Matemática. 2006.