Prévia do material em texto
UNIVERSIDADE ESTADUAL PAULISTA FACULDADE DE MEDICINA VETERINÁRIA E ZOOTECNIA DEPARTAMENTO DE MELHORAMENTO E NUTRIÇÃO ANIMAL CÂMPUS DE BOTUCATU FORMULAÇÃO DE RAÇÕES PROFESSOR: ANTONIO CELSO PEZZATO BOTUCATU 2003 FUNDAMENTOS TEÓRICOS PARA FORMULAÇÃO DE RAÇÕES 1. INTRODUÇÃO Em uma economia de livre mercado, para competir de forma eficiente é necessário ter os custo de produção mínimos possíveis, de tal maneira, que se possam ter preços dos produtos competitivos no mercado, assegurando uma adequada rentabilidade de retorno. A importância de contar com rações devidamente balanceada de mínimo custo torna de grande interesse se considerarmos que os custos de alimentação constituem normalmente entre 60 e 70% dos custos de produção em uma exploração animal. A formulação de rações de mínimo custo por computador tem permitido entre outras coisas, as seguintes vantagens: Formulação rápida e precisa de rações balanceadas e de custo mínimo; Diminuição nos custos de alimentação, produção com conseqüente aumento nos lucros; Avaliação de sensibilidade econômica das rações antes das alterações dos preços dos ingredientes; Apoiar decisões comerciais ante as alternativas de vender ou incluir na ração de uma matéria prima de produção própria ou excedente; Manter os custos de alimentação em valores mínimos ante as trocas de preços dos componentes, mudando as fórmulas rapidamente, quando necessário. 2. PROGRAMAÇÃO LINEAR A formulação de rações de custo mínimo se realiza através da determinação de um Modelo Nutricional de Programação Linear (PL) em que se incorporam as matérias primas (ingredientes) disponíveis para formular, as restrições nutritivas que deve ter a dieta resultante, as restrições de quantidade máxima e/ou mínima de alguns componentes se isso for necessário. Além disso, é necessário fornecer os preços dos componentes disponíveis e uma restrição de consistência de quantidade de nutrientes por unidade de medida, que pode ser uma unidade (1 kg ou 1 tonelada) ou em 100% ou ainda um valor, em kg, previamente determinado, em função do peso do animal, que corresponderia o consumo diário de matéria seca desse grupo de animais. Os problemas de programação linear se referem ao uso eficiente de recursos limitados, maximizando ou minimizando o objetivo desejado. Historicamente o problema geral de programação linear (PPL) foi desenvolvido pela primeira vez em 1947 por George H. Dantzig e colaboradores do Departamento da Força Aérea dos Estados Unidos. Nesse ano, o grupo mencionado se encarregou da possibilidade de aplicar técnicas matemáticas à programação militar e os problemas de planificação. Este estudo levou Dantzig a propor que a inter-relação entre as atividades de uma organização pode ser definida como um modelo de Programação Linear. Posteriormente se descobriu que também se pode aplicar esse modelo em outras áreas, como na agricultura, industria química, comunicações, industria do ferro e aço, industria de papelaria, de alimentos, análises econômicas, programação de produção e controle de inventários, projetos de estruturas, problemas de distribuição e inúmeros outros. 3. PLANEJAMENTO DE UM PROBLEMA DE PROGRAMAÇÃO LINEAR 3.1. MODELO DE PROGRAMAÇÃO LINEAR Matematicamente a programação linear consiste em otimizar uma função objetivo (FO) sujeita a uma série de condições ou restrições ou ainda, contrastes. O esquema de um problema geral de programação linear é o seguinte: Otimizar Z (Função Objetivo) Z = C1 * X1 + C2 * X2 + ... Cn * Xm Onde: Z = função objetivo X1, X2, ... Xn são as variáveis do problema; C1, C2, ... Cm são os coeficientes técnicos da função objetivo a otimizar (no caso específico, custos dos ingredientes) Sujeito às seguintes restrições: Y1 A11 * X1 + A21 * X2 + ... + An1 * Xn = B1 Y2 A12 * X1 + A22 * X2 + ... + An2 * Xn = B2 -- -- -- -- ---- = -- -- Ym A1m*X1 + A2m* X2 + ... + Amn * Xn = Bm Onde: Y1, Y2, ... Ym: são as restrições impostas ao sistema (energia, proteína, quantidade, e outros) A11, A12, A21, A22, ... Amn: são os coeficientes técnicos da matriz (composição química, por exemplo) X1, X2, ... Xn: são as variáveis do sistema (ingredientes) B1, B2, .. Bm: são os valores das restrições X1, X2, ...Xn = 0 condição fundamental para as variáveis serem maiores ou iguais a zero Têm-se vários procedimentos matemáticos para resolver problemas de programação linear, sendo que o de maior uso, por sua potencialidade e praticidade, é o método Simplex. 3.2. MÉTODO SIMPLEX É uma seqüência de cálculos iterativos e sua aplicação prática se faz em problemas de n variáveis (X) e m restrições (Y). O problema resolvido se chama de Solução Primal e em resumo tem- se o seguinte: Delineamento de uma solução base; Busca de uma solução viável; Se existe uma solução viável, continua para o próximo passo; Se não existe uma solução possível, termina o cálculo; Na busca de uma solução ótima, há duas possibilidades: o Existe uma solução ótima mostra os resultados o Não existe limite para uma solução ótima busca infinitamente a solução. Os problemas que não têm solução, basicamente se enquadram em dois tipos: Não existe solução possível: Ocorre quando uma ou mais restrição exigida não podem ser satisfeita ou as restrições são incompatíveis entre si, como, por exemplo, impor um limite máximo de incorporação de um determinado ingrediente na ração em 5% quando o limite Maximo do mesmo seria de 10%. Nesses casos de solução impossível, quando uma ou mais restrições não foram satisfeitas, deve-se analisar as restrições solicitadas e os componentes que compõem o sistema, incorporando novos ingredientes ou trocando e/ou modificando as restrições impostas. Não existe limite para uma solução ótima: Neste caso as restrições impostas são tais que a solução não converge a nenhum ponto, encontrando em cada iteração, cada vez valores menores (em caso de minimização) ou valores cada vez maiores (em caso de maximização). Um exemplo deste caso é a maximizar dietas com todas as restrições com condições de limite Maximo, sempre se encontrará uma nova solução que satisfará todas as condições nutritivas com uma função objetivo cada vez maior. Esse tipo de erro de sistema leva o programa encontrar iterações infinitas e pode-se evitar este problema desenhando um modelo convergente, ou seja, deve-se colocar ao menos uma restrição condicionada no sentido contrário às demais. 3.3. PROBLEMA DUAL Ao inverter a matriz do problema simplex, esta transforma as restrições anteriores nos coeficientes da função objetivo e a função objetivo anterior se transforma em restrições, e desta forma as condições mínimas agora se transformam em máximas e troca o sentido da otimização: a primal é minimizada e a dual, maximizada. Após todas essas mudanças, o problema indica os custos relativos das restrições (nutrientes) limitantes, ou seja, as condições que se satisfazem em quantidade do limite exigido de tal maneira que qualquer variação nessas restrições causa uma variação no valor da função objetivo e provavelmente na composição da ração. Os resultados obtidos sevem como um guia para se obter uma ração ainda mais econômica, e de se conhecer o valor dessas restrições limitantes. Com essas informações adicionais pode-se buscar outros componentes de substituição para serem incluídos no sistema de tal forma, que tenham valores em seus coeficientes técnicos maiores que os já incluídos ou procurar incluir outros suplementos e/ou modificar o sistema, se possível. 3.4. ANÁLISE DE SENSIBILIDADE É uma informação adicional que se obtém com o algoritmo simplex, o qual permite medir a resposta do custo e composição da ração otimizada antes da mudança dos custos de seus componentes. Matematicamente consiste na determinação dos limites entre os quais pode-se variar a direção do hiper-plano da função econômica (Função Objetivo) que o hiper-poliedro das restrições do problema se mantém fixo. A resposta da análise de sensibilidade consiste em apresentar os cálculos doscoeficientes de variação Maximo ou Mínimo a partir da tabela simplex otimizada para cada componente a fim de se conhecer entre que preços se mantém a solução de ótimo. Se algum dos preços ultrapassar os limites da análise de sensibilidade para aquele ingrediente, já não é possível uma solução ótima com os mesmos valores obtidos, tornando necessário reformular os dados para se obter uma nova solução de mínimo custo. A análise de sensibilidade serve para um estudo de tendência de preços e tem como objetivo dar ao formulador condições de fazer um plano de soluções a médio e longo prazo. Outra aplicação da análise de sensibilidade é a obtenção de um mapa de sensibilidade (gráficos, em %, do componente Z da ração x preço do componente Z ou valor da ração x preço do componente Z) o qual nos permite conhecer em nosso sistema nutricional se é que dependemos de matérias primas críticas, as que se faltarem ante algum fato imprevisto, não seriam substituídas. Ou seja, permite saber onde está fraco, sensível, o nosso sistema montado e permite buscar alternativas para reforça-lo. 4. PLANEJAMENTO DE UM MODELO DE FORMULAÇÃO Trata-se de se fazer uma abstração matemática de um problema nutricional para uma determinada espécie e finalidade, de maneira que nos permita gerar um sistema, escrevendo-o por meio de fórmulas. Atualmente através de programas computacionais o problema matemático é transparente para o usuário, já que basta definir o modelo e introduzi-lo no computador para se obter os resultados no vídeo ou impresso no papel por impressora. Os passos iniciais para se montar um sistema são os seguintes: Obter todas as informações das matérias primas escolhidas. Pesquisar as recomendações das exigências nutricionais para cada fase da criação. Estruturar o modelo matemático. Balancear a ração gerando a formula do problema. Validação das formulas. Os três primeiros passos desta seqüência são a essência da formulação da ração e os dois últimos são obtidos com o tempo, com contínua aplicação do modelo na prática, já que os valores devem representar a realidade e por isso o modelo deve ser continuamente melhorado com experiências adquiridas pelo seu uso, sendo cada vez mais ajustado ao seu propósito particular. 4.1. INFORMAÇÕES DAS MATÉRIAS PRIMAS Deve-se identificar todas as matérias primas disponíveis no mercado, determinando o custo real, os limites de utilização, a procedência, a composição química e o abastecimento. Custo real: deve-se determinar o custo real de cada ingrediente, incluindo o custo de transporte, processamento prévio, armazenamento, embalagens, custo por kg de MS. Limites de utilização: pesquisar todas informações na literatura quando não tiver valores experimentais de uso na propriedade ou região, dos seus limites máximos de incorporação e a presença de fatores antinutricionais nessas matérias primas. Procedência: é fundamental conhecer idoneidade dos fornecedores das matérias primas, pois produtos mal armazenados ou processados podem ser contaminados por fungos (micotoxinas) e insetos, que alteram sua qualidade. Composição química: a composição química se relaciona com os itens anteriores e com a matéria prima em si. Deve-se contar com um maior numero possível de informações sobre a composição química das matérias primas, e se possível a analise laboratorial de cada lote fornecido, para se ter o controle total do produto final balanceado. Abastecimento: é importante levar em consideração esse item, pois não é prático formular rações sem ter certeza de seu abastecimento em quantidade suficiente por um determinado tempo e que os produtos fornecidos sejam sempre de qualidade constante, sem adulterações. 4.2. RECOMENDAÇÕES NUTRITIVAS Deve-se fazer uma revisão bibliográfica completa, de fontes confiáveis, e de informações práticas, para se estabelecer todas restrições nutritivas. Estas informações são importantes, pois determinarão a fórmula final da ração. Deve-se trabalhar com dados práticos de campo, ou de referencias confiáveis, recomendados pelos Conselhos ou Comitês de Pesquisas Nacionais ou Internacionais. O recomendável e desejável é conhecer as recomendações especificas da espécie, para uma determinada finalidade, pois dessa maneira a formula obtida não conteria nutrientes em excesso, que encareceria o custo final da ração ou com défice de nutrientes, que comprometeria o desempenho final da criação. 4.3. ESTRUTURA DO MODELO MATEMÁTICO Nesta etapa, com as informações obtidas seleciona-se os parâmetros a considerar, levando-se em consideração a definição do modelo. Estabelecem-se as restrições nutritivas, condições de quantidade total e algumas outras condições necessárias para o funcionamento lógico do modelo. Além disso, deve-se verificar a consistência das unidades, escolhendo as unidades para cada restrição, onde a unidade utilizada numa restrição deve ser a mesma em toda equação, ou seja, kg de nutriente/kg de ração, ou g de nutriente/kg de ração para todos os ingredientes dessa restrição. O valor da restrição limitante deve ser a que se deseja obter, também por kg de ração. Se desejar expressar esse valor em %, deve multiplicar este valor por 100. O ideal para esta fase é transpor o modelo da matriz para uma planilha, onde se pode ver todos os dados selecionados, analisá-los antes de serem digitados no computador. 4.4. GERAÇÃO DE FÓRMULAS Esta etapa é executada no computador com um programa de programação linear, o qual calcula a mistura dos componentes com o algoritmo simplex, obtendo-se os custos marginais das restrições limitantes com os valores duais e a analise de sensibilidade econômica. Se não se obtiver uma solução viável, possível, analisa-se o modelo proposto, as restrições impostas, e efetuam-se possíveis alterações pertinentes para se obter uma nova solução factível. 4.5. VALIDAÇÃO DAS FÓRMULAS Todo modelo processado pelo algoritmo simplex é teórico, logo os resultados obtidos devem ser analisados por um nutricionista a fim de qualificar a solução encontrada, se aplicável ou não, No caso de não ser adequado seu uso na prática, deve-se corrigir o modelo, introduzindo ou retirando restrições, alterando valores das restrições, de tal maneira a produzir um resultado factível e de uso adequado na prática. Por outro lado, analisando a solução obtida e as restrições limitantes, podem-se verificar as possíveis trocas nas restrições para se obter um custo final ainda menor. MODELAGEM DE PLANILHA 1. INTRODUÇÃO As equações lineares são utilizadas para o balanceamento de rações, pois estes tipos de equações têm duas propriedades que podem ser aplicadas na mistura de dois ou mais ingredientes: proporcionalidade e aditividade. Desta forma, ao misturarmos 1kg de milho, com 10% de proteína, com 1kg de farelo de soja com 50% de proteína, os 2kg da mistura terá 30% de proteína, ou seja: (10 + 50)/2 = 30. Na montagem de uma planilha para resolução de um problema de programação linear, é necessário distinguir dois tipos de equações matemáticas: primeiro, uma função ou equação de custo, que é a função objetivo, pois o que se busca é uma mistura que satisfaça todas as exigências e restrições nutricionais por um menor custo, e em segundo, é necessário especificar todas as restrições correspondentes às exigências nutricionais. Exemplo: modelagem de uma planilha para balanceamento de uma ração de frangos de corte inicial (1-21 dias de idade). a) Exigências nutricionais/kg de ração: Nutrientes Mínimo Máximo Proteína 17 - Energia metabolizável 3000 - b) Alimentos disponíveis: Ingredientes R$/kg PB, % EM, kcal/kg Milho 0,18 10 3440 Farelo de soja 0,42 48 2440 c) Limitação de alimentos: Farelo de soja: Máximo de 0.30kg/ kg de ração Identificação das variáveis: Quantidade de milho = X1 Quantidade de soja = X2 Função Objetivo: Custo mínimo Z Minimizar o custo de Z = 0,18 * X1 + 0,42 * X2 R$/kg kg R$/kg kg (Na função objetivo, cancelando-se R$/kg e kg, tem-se que Z será expresso em R$) Restrições: a. Quantidade: kgkgkg Q=X1+X121 Onde Q é a quantidade de ração que será balanceada e neste exemplo Q=100, portanto: 100=X1+X1 21 b. Nutrientes: kg%kg%kg% Q21X48+X10:INProteína/M 21 kg kg kcal kg kg kcal kg kg kcal Q3000X2440+X3440:NEnergia/MI 21 Portanto: 3000X24,40+X34,40 ou300000X2440+X3440 21X0,48+X0,10 ou2100X48,00+X0,001 21 21 21 21 c. Ingredientes: kg kg kgkg Q0,30X1:sojadeFarelo 2 Portanto: 30X1 ou1000,30X1 2 2 Todas essas inequações são matematicamente iguais. 2. MODELO COMPLETO Neste modelo será introduzido um novo conceito na modelagem de uma planilha para o balanceamento de ração, que é a introdução de uma variável de transferência ou contábil, que tem custo zero e não entra na quantidade final da ração. Minimizar: Z = 0,18 * X1 + 0,42 * X2 Sujeito a: 10,00 * X1 + 48,00 * X2 21,00 * Q 3440 * X1 + 2440 * X2 3000 * Q X2 0,30 * Q X1 + X2 = 100 * Q X1 0 X2 0 Agora será utilizado o conceito de variável de transferência para se estabelecer a relação Energia/Proteína. Restrição adicional: EM total/PB total 130 EM total/PB total 135 ou 135 EM total/PB total 130, ou seja, R 130 R 135 Portanto: R X48+X10 X2440+X3440 totalPB totalEM 21 21 130 X48+X10 X2440+X3440 21 21 135 X48+X10 X2440+X3440 21 21 As duas últimas equações não podem fazer parte do modelo, pois os programas de programação linear só admitem variáveis lineares. Por isso serão criadas novas variáveis para substituir essas relações: EM total: é a quantidade total de energia metabolizável da ração que pode ser escrita matematicamente da seguinte forma: 3440 * X1 + 2440 * X2 = EM tot Para EMtot, que é uma nova variável, a denominaremos de X3, portanto: 3440 * X1 + 2440 * X2 = 1 * X3, ou. 3440 * X1 + 2440 * X2 - 1 * X3 = 0 PB total: analogamente para a quantidade total de proteína da ração, pode-se escrever da seguinte forma: 10,00 * X1 + 48,00 * X2 = PB tot Para PBtot, que também é uma nova variável, será denominada de X4, portanto: 10,00 * X1 + 48,00 * X2 = 1 * X4, ou 10,00 * X1 + 48,00 * X2 - 1 * X4 = 0 X3 e X4 são as variáveis de transferência com custo zero, que foram criadas para viabilizar as variáveis não lineares. Portanto a relação EM/PB poderá ser expressa desta forma: EM/PBmax e EM/PBmin: 0X135-X1 ouX135X1 ou135 X1 X1 :formamesmaDa 0X130-X1 ouX130X1 ou130 X1 X1 43 43 4 3 43 43 4 3 Resumo da planilha completa, com as variáveis contábeis: Minimizar Z = 0,18 * X1 + 0,42 * X2 + 0 * X3 + 0 * X4 (1) Sujeito a: 3440 * X1 + 2440 * X2 - 1 * X3 = 0 (2) 10.00 * X1 + 48.00 * X2 - 1 * X4 = 0 (3) 100*X3 3000*Q (4) 100*X4 21 * Q (5) 100*X2 0.30 * Q (6) 1*X1 + 1*X2 = Q (7) 1*X3 - 135 * X4 0 (8) 1*X3 - 130 * X4 0 (9) Para: X1, X2 , X3, X4 0 INTRODUÇÃO À PROGRAMAÇÃO LINEAR 1.1. O Desenvolvimento da Programação Linear Durante a Segunda Guerra Mundial, um grupo de cientistas foi convocado na Inglaterra para estudar problemas de estratégia e de tática associados com a defesa do país. O objetivo era decidir sobre a utilização mais eficaz de recursos militares limitados. A convocação deste grupo marcou a primeira atividade formal de uma pesquisa operacional. Os resultados positivos conseguidos pela equipe de pesquisa operacional inglesa motivaram os Estados Unidos a iniciarem atividades semelhantes. Apesar de ser creditada à Inglaterra a origem da Pesquisa Operacional, sua propagação deve-se principalmente à equipe de cientistas liderada por George B. Dantzig, dos Estados Unidos, convocados durante a Segunda Guerra Mundial. Ao resultado deste esforço de pesquisa, concluído em 1947, deu-se o nome de Método Simplex. Com o fim da guerra, a utilização de técnicas de pesquisa operacional atraiu o interesse de diversas outras áreas. A natureza dos problemas encontrados é bastante abrangente e complexa, exigindo, portanto uma abordagem que permita reconhecer os múltiplos aspectos envolvidos. Uma característica importante da pesquisa operacional e que facilita o processo de análise e de decisão é a utilização de modelos. Esses modelos permitem a experimentação da solução proposta, ou seja, significa que uma decisão pode ser mais bem avaliada e testada antes de ser efetivamente implementada. A economia obtida e a experiência adquirida pela experimentação justificam a utilização da Pesquisa Operacional em muitas atividades. Com o aumento da velocidade de processamento e quantidade de memória dos computadores atuais, houve um grande progresso na Pesquisa Operacional. Este progresso é devido também à larga utilização de microcomputadores, que se tornaram unidades isoladas dentro de empresas. Isso faz com que os modelos desenvolvidos pelos profissionais de Pesquisa Operacional sejam mais rápidos e versáteis, além de serem também interativos, possibilitando a participação do usuário ao longo do processo de cálculo. 1.2 Modelagem Um modelo é uma representação de um sistema real, que pode já existir ou ser um projeto aguardando execução. No primeiro caso, o modelo pretende reproduzir o funcionamento do sistema, de modo a aumentar sua produtividade. No segundo caso, o modelo é utilizado para definir a estrutura ideal do sistema. A confiabilidade da solução obtida através do modelo depende da validação desse modelo na representação do sistema real e, a validação do modelo é a confirmação de que ele realmente representa o sistema real. A diferença entre a solução real e a solução proposta pelo modelo depende diretamente da precisão do modelo em descrever o comportamento original do sistema. Um problema simples pode ser representado por modelos também simples e de fácil solução. Já problemas mais complexos requerem modelos mais elaborados, cuja solução pode vir a ser bastante complexa. Introdução à Programação Linear 2 1.3. Estrutura de Modelos Matemáticos Em um modelo matemático, são incluídos três conjuntos principais de elementos: 1. Variáveis de decisão e parâmetros: variáveis de decisão são as incógnitas a serem determinadas pela solução do modelo e os parâmetros são valores fixos no problema; 2. Restrições: de modo a levar em conta as limitações físicas do sistema, o modelo deve incluir restrições que limitam as variáveis de decisão a seus valores possíveis (ou viáveis); 3. Função objetivo: é uma função matemática que define a qualidade da solução em função das variáveis de decisão. Para melhor ilustrar o conjunto acima, considere-se o seguinte exemplo: Uma empresa de ração canina produz dois tipos de rações: Tobi e Rex. Para a manufatura dessas rações são utilizados cereais e carne. Sabe-se que: A ração Tobi utiliza 5 kg de cereais e 1 kg de carne, e a ração Rex utiliza 4 kg de carne e 2 kg de cereais; O pacote de ração Tobi custa R$ 20,00 e o pacote de ração Rex custa, R$ 30,00; O kg de carne custa R$ 4,00 e o kg de cereais custa R$ 1,00; Estão disponíveis por mês 10.000 kg de carne e 30.000 kg de cereais. Deseja-se saber qual a quantidade de cada ração a produzir de modo a maximizar o lucro. Neste problema as variáveis de decisão são as quantidades de ração de cada tipo a serem produzidas. Os parâmetros fornecidos são os preços unitários de compra e venda, além das quantidades de carne e cereais utilizadas em cada tipo de ração e as restrições são os limites de carne e cereais e, finalmente, a função objetivo é uma função matemática que determine o lucro em função das variáveis de decisão e que deve ser maximizada. 1.4. Técnicas Matemáticas em Pesquisa Operacional A formulação do modelo depende diretamente do sistema a ser representado. A função objetivo e as funções de restrições podem ser lineares ou não-lineares; as variáveis de decisão podem ser contínuas ou discretas (por exemplo, inteiras) e os parâmetros podem ser determinísticos ou probabilísticos. O resultado dessa diversidade de representações de sistemas é o desenvolvimento de diversas técnicas de otimização, de modo a resolver cada tipode modelo existente. Estas técnicas incluem, principalmente: programação linear, programação inteira, programação dinâmica, programação estocástica e programação não-linear. A programação linear é utilizada para analisar modelos onde as restrições e a função objetivo são lineares; a programação inteira se aplica aos modelos que possuem variáveis inteiras (ou discretas); a programação dinâmica é utilizada em modelos onde o problema completo pode ser Introdução à Programação Linear 3 decomposto em subproblemas menores; a programação estocástica é aplicada a uma classe especial de modelos onde os parâmetros são descritos por funções de probabilidade; e finalmente, a programação não-linear é utilizada em modelos contendo funções não-lineares. Uma característica presente em quase todas as técnicas de programação matemática é que a solução ótima do problema não pode ser obtida em um único passo, devendo ser obtida iterativamente. É escolhida uma solução inicial (que geralmente não é a solução ótima). Um algoritmo é especificado para determinar, a partir desta, uma nova solução, que geralmente é superior à anterior. Este passo é repetido até que a solução ótima seja alcançada (supondo que ela existe). 1.5. Fases do Estudo de Pesquisa Operacional Um estudo de pesquisa operacional geralmente envolve as seguintes fases: 1. Definição do problema; 2. Construção do modelo; 3. Solução do modelo; 4. Validação do modelo; 5. Implementação da solução. Apesar da seqüência acima não ser rígida, ela indica as principais etapas a serem vencidas. A seguir, é apresentado um resumo da cada uma das fases. 1.5.1. Definição do problema A definição do problema baseia-se em três aspectos principais: Descrição exata dos objetivos do estudo; Identificação das alternativas de decisão existentes; Reconhecimento das limitações, restrições e exigências do sistema. A descrição dos objetivos é uma das atividades mais importantes em todo o processo do estudo, pois a partir dela é que o modelo é concebido. Da mesma forma, é essencial que as alternativas de decisão e as limitações existentes sejam todas explicitadas, para que as soluções obtidas ao final do processo sejam válidas e aceitáveis. 1.5.2. Construção do modelo A escolha apropriada do modelo é fundamental para a qualidade da solução fornecida. Se o modelo elaborado tem a forma de um modelo conhecido, a solução pode ser obtida através de métodos matemáticos convencionais. Por outro lado, se as relações matemáticas são muito complexas, talvez se faça necessária a utilização de combinações de metodologias. 1.5.3. Solução do modelo O objetivo desta fase é encontrar uma solução para o modelo proposto. Ao contrário das outras fases, que não possuem regras fixas, a solução do modelo é baseada geralmente em técnicas matemáticas existentes. No caso de um modelo matemático, a solução é obtida pelo algoritmo mais adequado, em Introdução à Programação Linear 4 termos de rapidez de processamento e precisão da resposta. Isto exige um conhecimento profundo das principais técnicas existentes. A solução obtida neste caso, é dita "solução ótima". 1.5.4. Validação do modelo Nessa altura do processo de solução do problema, é necessário verificar a validade do modelo. Um modelo é válido se, levando-se em conta sua inexatidão em representar o sistema, ele for capaz de fornecer uma previsão aceitável do comportamento do sistema. Um método comum para testar a validade do sistema é analisar seu desempenho com dados passados do sistema e verificar se ele consegue reproduzir o comportamento que o sistema apresentou. É importante observar que este processo de validação não se aplica a sistemas inexistentes, ou seja, em projeto. Nesse caso, a validação é feita pela verificação da correspondência entre os resultados obtidos e algum comportamento esperado do novo sistema. 1.5.5. Implementação da solução Avaliadas as vantagens e a validação da solução obtida, esta deve ser convertida em regras operacionais. A implementação, por ser uma atividade que altera uma situação existente, é uma das etapas críticas do estudo. É conveniente que seja controlada pela equipe responsável, pois, eventualmente, os valores da nova solução, quando levados à prática, podem demonstrar a necessidade de correções nas relações funcionais do modelo conjunto dos possíveis cursos de ação, exigindo a reformulação do modelo em algumas de suas partes. 2. Sistemas de Equações Lineares Tanto as linhas quanto as colunas de uma matriz podem ser tratadas por vetores. Um vetor pode ser considerado uma matriz de uma única linha ou uma única coluna. Quando um vetor é considerado uma matriz com uma única linha é chamado de vetor linha e quando for uma coluna, será chamado de vetor coluna. Um vetor coluna será representado da mesma forma que um vetor convencional, ou seja, uma letra minúscula em negrito (p , q , r). Quando for o caso de um vetor linha, ele será representado como um vetor transposto (pT, qT, rT). Suponha o seguinte sistema de equações lineares: 2x1 – x2 =7 -x1 + 4x2 = 0 Este sistema pode ser representado na forma matricial por: 0 7 2 1 41 12 x x O vetor coluna x é o vetor do sistema de equações lineares e pode ser calculado por: X = A-1 b Introdução à Programação Linear 5 Para a solução de um sistema de equações lineares são propostos alguns métodos. 2.1. Método Algébrico por Adição Pelo menos uma das equações deve ser multiplicada por um escalar real, de modo que a soma das equações, apenas uma das variáveis seja efetivamente a incógnita do problema. Por exemplo: 4 x1 + 8 x2 = 160 6 x1 + 4 x2 = 120 Multiplicando a segunda equação por (-2), temos: 4 x1 + 8 x2 = 160 -12 x1 – 8 x2 = -240 Somando as duas equações, chega-se a: - 8 x1 = -80 Daí calcula-se o facilmente o valor de x1 e, substituindo este valor em qualquer uma das equações tem-se o valor de x2: x1 = 10 x2= 15 2.2. Método Algébrico por Substituição Isola-se uma das variáveis em uma das equações, substituindo-se a relação obtida na outra equação. Por exemplo: 4 x1 +8 x2 = 160 6 x1 + 4 x2 = 120 Manipulando a primeira equação, temos que: 2240 4 281601 xxx Substituindo x, na segunda equação: 6 (40 – 2 x2) + 4 x2 = 120 Resolvendo a equação algebricamente, e aplicando o valor de x2 encontrado na primeira equação, temos: 240 – 12 x2 + 4 x2 = 120 -8 x2 = -120 x2 = 15 e x1 = 10 2.3. Método de Gauss-Jordan Consiste da derivação de um sistema específico de equações lineares que tenha a mesma solução que o sistema original. Este novo sistema deverá ter o formato e uma matriz identidade, o que pode ser obtido através de combinações lineares das equações originais. Assim, pretende-se que: Introdução à Programação Linear 6 4 x1 + 8 x2 = 160 1 x1 + 0 x2 = a 6 x1 + 4 x2 = 120 0 x1 + 1 x2 = b Serão permitidas as seguintes transformações lineares: Troca de linhas Multiplicação da linha por um escalar Soma de uma linha multiplicada por um escalar a uma outra linha Notação: L n L m troca das linhas n e m; L n k L n multiplicação da linha n pelo escalar k; L n L n+ k L m soma da linha m multiplicada pelo escalar k à linha n. Para resolver o exemplo acima, são seguidos os seguintes passos: 1) L1 L1 / 4 (divisão da linha 1 por 4) - transformação do coeficiente de x1 na equação 1 para 1. x1 + 2 x2 = 40 6 x1 + 4 x2 = 120 2) L2 L2 (subtração da linha 2 pela linha 1 multiplicada por 6) - transformação do coeficiente de x1 na equação 2 para 0. 3) L2 -L2 / 8 (divisão da linha 2 por (-8) - transformação do coeficiente de x2 na equação 2 para 1. X1 +2 x2 = 40 0 x1 + 1 x2 = 15 4) L1 L1 - 2 L2 (subtração da linha 1 pela linha 2 multiplicada por 2) - transformação do coeficiente de x2 na equação 1 para 0. X1 +0 x2 = 10 0 x1 + 1 x2 = 15 Solução: x1 = 10 e x2 = 15 3. PROGRAMAÇÃO LINEAR 3.1 Definição O problema geral de programação linear é utilizado para otimizar (maximizar ou minimizar)uma função linear de variáveis, chamada de função objetivo, sujeita a uma série de inequações lineares, chamadas restrições. A formulação do problema a ser resolvido por programação linear Introdução à Programação Linear 7 segue alguns passos básicos. Deve ser definido o objetivo básico do problema, ou seja, a otimização a ser alcançada. Por exemplo, maximização de lucros, ou de desempenhos, de custos, de perdas, de tempo. Tal objetivo será representado por uma função objetivo, a ser maximizada ou minimizada; Para que esta função objetivo seja matematicamente especifica, devem ser definidas as variáveis de decisão envolvidas. Por exemplo, número de máquinas, a área a ser explorada, a classe de investimento à disposição etc. Normalmente, assume-se que todas estas variáveis possam assumir somente valores positivos; Estas variáveis normalmente estão sujeitas a uma série de restrições, normalmente representadas por inequações. Por exemplo, quantidade de equipamento disponível, tamanha da área a ser exploradas, capacidade de um reservatório, exigências nutricionais para uma determinada ração, etc. Todas essas expressões, entretanto, devem estar de acordo com a hipótese principal da programação linear, ou seja, todas as relações entre as variáveis devem ser lineares. Isto implica proporcionalidade das quantidades envolvidas. Estas características de linearidade pode ser interessante no tocante a simplificação da estrutura matemática envolvida, mas prejudicial na representação de fenômenos não lineares (por exemplo, funções de custo tipicamente quadráticas). 3.2 Formulação de Modelos O problema geral de programação linear pode ser definido por maximizar ou minimizar uma função. Maximizar (ou minimizar): Z = c1 x1 + c2 x2 + .......... + cn xn Sujeito a: a11 x1 + a12 x2 + .......... + a1n xn ou ou = b1 a21 x1 + a22 x2 + .......... + a2n xn ou = b2 ........... am1 x1 + am2 x2 + .......... ou ou = bm x1, x2, .......... xn 0 3.3 Exemplo A empresa de ração canina produz dois tipos de raçôes: Tobi e Rex. Para a manufatura das rações são utilizados cereais e carne. Sabe-se que: A ração Tobi utiliza 5 kg de cereais e 1 kg de carne, e a ração Rex utiliza 4 kg de carne e 2 kg de cereais; O pacote de ração Tobi custa R$ 20,00 e o pacote de ração Rex custa R$ 30,00 O kg de carne custa R$ 4,00 e o kg de cereais custa R$ 1,00; Estão disponíveis por mês 10.000 kg de carne e 30.000 kg de cereais. Deseja-se saber qual a quantidade de cada ração a produzir de modo a maximizar o lucro. No modelo deseja-se maximizar o lucro (Z) a partir da quantidade de ração Tobi (x1) e de ração Rex (x2). A tabela abaixo apresenta o cálculo do lucro unitário de cada ração. Introdução à Programação Linear 8 Especificações Ração Tobi Ração Rex Custo da carne 1 kg x R$ 4,00 = R$ 4,00 4 kg x R$ 4,00 = R$ 16,00 Custo dos cereais 5 kg x R$ 1,00 = R$ 5,00 2 kg x R$ 1,00 = R$ 2,00 Custo total R$ 9,00 R$ 18,00 Preço R$ 20,00 R$ 30,00 Lucro R$ 11,00 R$ 12,00 A função objetivo pode ser escrita como: Maximizar: Z = 11 x1 + 12 x2 (máximo lucro) Sujeito a: 1 x1 + 4 x210000 (restrição de carne) 5 x1 + 2 x230000 (restrição de cereais) x1, x2 3.4 Solução Gráfica Este problema com apenas duas variáveis pode ser resolvido graficamente. Traça-se um gráfico com os seus eixos, representados pelas duas variáveis x1 e x2. A partir daí, traçam-se as retas referentes às restrições do problema e delimita-se a região viável. Encontrada a região viável, deve-se traçar uma reta com a inclinação da função objetivo. São então traçadas diversas paralelas a ela no sentido de Z crescente (maximização da função). O ponto ótimo é o ponto onde a reta de maior valor possível corta a região viável (normalmente num vértice). Introdução à Programação Linear 9 Figura 3.1. Região viável para o problema das rações Introdução à Programação Linear 10 Figura 3.2. Busca da solução ótima para o problema das rações 4. O MÉTODO SIMPLEX O Método Simplex caminha pelos vértices da região viável até encontrar uma solução que não possua soluções vizinhas melhores que ela, e esta é a solução ótima. A solução ótima pode não existir em dois casos: quando não há nenhuma solução viável para o problema, devido a restrições incompatíveis; ou quando não há máximo (ou mínimo), isto é, uma ou mais variáveis podem tender a infinito e as restrições continuarem sendo satisfeitas, o que fornece um valor sem limites para a função objetivo. 4.1 Exemplo de um Problema O modelo de programação linear pode ser resolvido por um método de solução de sistema de equações lineares. O processo que será apresentado no exemplo a seguir, o qual é bastante intuitivo, tem por finalidade apresentar a metodologia utilizada pelo Método Simplex. Introdução à Programação Linear 11 a) Formulação do problema Uma marcenaria deseja estabelecer uma programação diária de produção. Atualmente a oficina faz apenas dois produtos: mesa e armário, ambos de um só modelo. Para efeito de simplificação, vamos considerar que a marcenaria tem limitações em somente dois recursos: madeira e mão-de-obra, cujas disponibilidades diárias são mostradas na tabela a seguir. Recurso Disponibilidade Madeira 12 m2 Mão-de-obra 8 horas.homem O processo de produção é tal que, para fazer uma mesa, a fábrica gasta 2 m2 de madeira e 2 horas.homem de mão-de-obra e, para fazer um armário, a fábrica gasta 3 m2 de madeira e 1 hora.homem. Além disso, o fabricante sabe que cada mesa dá uma margem de contribuição para o lucro de R$ 4,00 e cada armário de R$ 1,00. O problema é encontrar o programa de produção que maximiza a margem de contribuição total para o lucro. b) Montagem do modelo As variáveis de decisão envolvidas no problema são: x1 : quantidade a produzir de mesas; x2: quantidade a produzir de armários A função objetivo é: Lucro: Z=4 x1 + x2 Para as restrições, a relação lógica existente é: Utilização de recurso Disponibilidade Assim temos: Madeira: 2 x1 + 3 x2 12 Mão-de-obra: 2 x1 + x2 8 x1, x2 0 O modelo completo é: Maximizar: Z = 4 x1 + x2 Sujeito a: 2 x1 + 3 x2 12 2 x1 + 3 x2 8 x1, x2 0 c) Solução do modelo Já conhecemos o método de solução gráfica para problemas de programação linear de duas variáveis. Será agora apresentada a solução por sistema de equações lineares. Introdução à Programação Linear 12 Para se transformar as restrições do problema de programação linear de inequações em equações, são introduzidas as variáveis de folga. Neste problema as restrições têm a seguinte estrutura lógica: Utilização de Recurso Disponibilidade Ao se introduzir o conceito de folga de recurso, a inequação pode ser escrita como: Utilização de Recurso + Folga = Disponibilidade Isso significa que: Utilização de RecursoDisponibilidade Folga 0 Utilização de Recurso = Disponibilidade Folga = 0 Deste modo a folga de cada recurso pode ser representada por uma variável de forma exatamente igual à produção de cada produto. Desse modo vamos chamar: f1: Folga de madeira f2: Folga de mão-de-obra Introduzindo as variáveis de folga, o problema a ser resolvido passa a ser: Maximizar: Z = 4 x1 + x2 Sujeito a: 2 x1 + 3 x2 + f1 =12 2 x + x2 + f2 = 8 x1, x2, f1, f2 0 O problema consiste em encontrar a solução do sistema de equações lineares que maximiza o lucro. Como neste caso o número de variáveis (m = 4) é superior ao número de equações (n = 2), o sistema é indeterminado, apresentando infinitas soluções. No entanto, todas as variáveis devem ser maiores ou iguais a zero. Atribuir zero a uma variável significa não produzir um dos produtos (se a variável for x1 ou x2) ou utilizar toda a disponibilidade de recursos (se a variável for f1 ou f2). Desta forma, podemos encontrar soluções para o sistema de equações zerando duas variáveis (n - m = 2) e encontrando o valor para as duas variáveis restantes. Portanto tem-se que resolver: 6 )!2!2( !4 C24 sistemas de equações lineares. Uma vez resolvido o sistema, serãoaplicados na função objetivo os valores encontrados, onde as variáveis zeradas são chamadas de variáveis não-básicas e as variáveis cujos valores são calculados pelo sistema de equações serão chamadas de variáveis básicas. Iteração 1) Variáveis não-básicas: x1 = 0 x2 = 0 Temos as variáveis básicas f1 = 12 f2 = 8 Dando lucro: Z = 0 Iteração 2) Variáveis não-básicas: x1 = 0 f1 = 0 Temos as variáveis básicas x2 = 4 Introdução à Programação Linear 13 f2 = 4 Dando lucro: Z = 4 Iteração 3) Variáveis não-básicas: x1 = 0 f2 = 0 Temos as variáveis básicas x2 = 8 f1 = -12 Como f1 < 0, a solução obtida é INVIÁVEL. Iteração 4) Variáveis não-básicas: x2 = 0 f1 = 0 Temos as variáveis básicas x1 = 6 f2 = -4 Como f2 < 0, a solução é INVIÁVEL. Iteração 5) Variáveis não-básicas: x2 = 0 f2 = 0 Temos as variáveis básicas x1 = 4 f1 = 4 Dando lucro: Z = 16 Iteração 6) Variáveis não-básicas: f1 = 0 f2 = 0 Temos as variáveis básicas x1 = 3 x2 = 2 Dando lucro: Z = 14 Comparando-se todas as soluções encontradas por este processo, achamos a uma solução ótima, ou seja, x1 = 4, x2 = 0, f1 = 4, f2 = 0, dando um lucro Z = 16. 4.2 Desenvolvimento do Método Simplex Da forma como foi resolvido o problema anteriormente, é necessário que muitos sistemas de equações sejam resolvidos e suas soluções comparadas. Para problemas reais de programação linear, esta solução se torna inviável. Desta forma, para termos condições de resolver um problema de programação linear, precisamos de uma sistemática que nos diga: Qual o sistema de equações que deve ser resolvido; Que o próximo sistema a ser resolvido fornecerá uma solução Como identificar uma solução ótima, uma vez que a tenhamos encontrado. Essa sistemática é o método Simplex, e as regras que o método utiliza para atender às três Introdução à Programação Linear 14 questões acima são, basicamente, os critérios que desenvolvemos nos itens anteriores. Vamos voltar ao problema, já com as variáveis de folga: Maximizar Z = 4 x1 + x2 Sujeito a 2 x1 + 3 x2 + f1 = 12 2x1 + x2 + f2 = 8 x1, x2, f1, f2 0 Vamos montar um quadro para ordenarmos as operações, colocando nele apenas os coeficientes das variáveis. No caso da função objetivo, vamos realizar a seguinte transformação: de: Z = 4x1 + x2 para: Z –4 x1 - x2 = 0 Quadro 1 Base x1 x2 f1 f2 b f1 2 3 1 0 12 f2 2 1 0 1 8 z -4 -1 0 0 0 A última coluna corresponde aos termos independentes das equações, e a última linha contém os coeficientes das variáveis na função objetivo. Nessa última linha teremos sempre a contribuição que cada variável dá para o lucro total Z, por unidade, em cada iteração do processo. Essa última linha será chamada de função objetivo transformada, ou função z-transformada. a) Solução inicial A solução inicial para o problema será sempre obtida fazendo as variáveis originais do modelo (no caso x1 e x2) iguais a zero e achando o valor das demais. Assim, fazendo x1 = x2 = 0 (variáveis não básicas), obtemos do Quadro 1: f1 = 12 f2 = 8 (variáveis básicas) Z = 0 A variáveis básicas estão indicadas no Quadro 1, para facilitar o acompanhamento das operações. b) Segunda solução Como a primeira solução claramente não é a melhor, vamos procurar outra que dê um valor maior para Z. O problema é descobrir: Das duas variáveis não básicas (nulas) na primeira solução, qual deve se tornar positiva? Introdução à Programação Linear 15 Das duas variáveis básicas (positivas) na primeira solução, qual deverá ser anulada? Qual variável deverá se tornar positiva? Vamos observar que na última linha do Quadro 1 temos os coeficientes da função objetivo que mostram a contribuição para o lucro Z de cada unidade produzida de mesa (x1) e de armário (x2). Assim, aplicando o critério de que devemos produzir primeiro o produto que mais contribui para o lucro, vamos começar a produção pela variável x1, já que sua contribuição maior que a contribuição unitária para o lucro (R$ 4,00) é maior que a contribuição de x2 (R$ 1,00). Logo, a variável que deverá se tornar positiva é x1. Qual variável deverá ser anulada? Nota-se pelo Quadro 1 que, na primeira equação, o maior valor possível de x1 é 6 quando f1 for igual a zero (note que x2 vale zero por ser variável não básica). Qualquer valor maior de x1 fará com que o valor de f1 fique negativo, o que não é permitido. Na segunda equação, o maior valor permitido para x1 é 4, quando f2 for igual a zero. Analisando simultaneamente as duas equações , percebe-se que o maior valor possível para x1 é 4, já que atende às duas equações. Observe que esta análise pode ser feita diretamente do Quadro 1, através da divisão dos elementos da coluna b pelos correspondentes elementos da coluna x1. O menor quociente indica, pela linha em que ocorreu, qual a variável básica que deve ser anulada. Assim, como o menor quociente é dado pela divisão 8/2 = 4, a variável básica a ser anulada é f2, que é a variável positiva na atual solução, cujo valor foi encontrado na segunda linha. Assim temos: x2 =0 e f2 = 0 e o sistema restante deve ser resolvido para acharmos o valor de x1 e f1. A solução desse sistema será feita usando o Quadro 1 com as equações completas e usando as operações válidas com as linhas da matriz. 1a. Operação: Dividir a segunda linha por 2 ( L2 L2 / 2) Quadro 1 A Base x1 x2 f1 f2 B f1 2 3 1 0 12 x1 1 ½ 0 ½ 4 Z -4 -1 0 0 0 2a. Operação: Multiplicar a segunda linha do Quadro 1 A por (-2) e somar com a primeira linha do mesmo quadro, colocando o resultado na primeira linha (L1 L1 –2 L2) Quadro 1 B Base x1 x2 f1 f2 B f1 0 2 1 -1 4 x1 1 ½ 0 ½ 4 Z -4 -1 0 0 0 3a. Operação: Multiplicar a segunda linha do Quadro 1 B por (4) e somar com a terceira linha do mesmo quadro, colocando o resultado na terceira linha (L3 4 L2). Introdução à Programação Linear 16 Quadro 2 Base x1 x2 f1 f2 B f1 0 2 1 -1 4 x1 1 ½ 0 ½ 4 Z 0 1 0 2 16 Como a última linha (função z-transformada) mostra as contribuições liquidas para o lucro, caso as variáveis x1 e f2 venham ter seus valores aumentados de 0 (zero) para 1 e, como estas contribuições têm seus valores trocados com relação ao quadro original, conclui-se que a solução encontrada é ótima. x1 = 4 x2 = 0 f1 = 4 f2 = 0 Z = 16 4.3 Procedimento do Método Simplex (Problemas de Maximização) Passo 1: Introduzir as variáveis de folga; uma para cada desigualdade. Passo 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. Passo 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. Passo 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. Passo 5: Para escolher a variável que deve deixar a base, deve-se realizar o seguinte procedimento: o 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 algum positivo nesta coluna, o processo deve parar, já que a solução seria ilimitada. o O menor quociente indica a equação cuja respectiva variável básica deverá ser anulada, tornando-se variável não básica. Passo 6: 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. Passo 7: Retornar ao passo 4 para iniciar outra iteração. Introdução à Programação Linear 17 4.4 Outro Exemplo Vamos resolver pelo método Simplex o problema das rações. . Maximizar: Z = 11 x1 + 12 x2 Sujeito a: x1 + 4 x2 10000 5 x1 + 2 x230000 x1,x2 0 a) Inclusão das variáveis de folga Com a inclusão das variáveis de folga, o problema torna-se: Maximizar Z = 11 x1 + 12 x2 Sujeito a: x1 + 4 x2 + f1 · 10000 5 x1 + 2 x2 + f2 30000 x1,x2, f1, f2 0 b) Solução inicial Base x1 x2 f1 f2 b f1 1 4 1 0 10000 f2 5 2 0 1 30000 Z -11 -12 0 0 0 c) Primeira iteração Variável a entrar na base: x2 (coluna com maior valor negativo na última linha) Variável a sair da base: f1 (o quociente 10000/4 é o menor quociente entre a última coluna e a coluna da variável x2, que vai entrar na base) L1 L1 / 4 L2 L2 – 2 L1 L3 L3 + 12 L1 Base x1 x2 f1 f2 b f1 ¼ 1 ¼ 0 2500 f2 4,5 0 -1/2 1 2500 Z -8 0 3 0 30000 d) Segunda iteração Variável a entrar na base: x1 (coluna com maior valor negativo na última linha) Variável a sair da base: f2 (o quociente 25000/4 é o menor quociente entre a última coluna e a coluna da variável x1, que vai entrar na base) L2 L2 / 4,5 L1 L1 – L2 / 4 L3 L3 + 8 L2 Introdução à Programação Linear 18 Base x1 x2 f1 f2 b x2 0 1 0,2778 -0,0556 1111,11 x1 1 0 -0,1111 0,2222 5555,56 Z 0 0 2,1111 1,7778 74444,44 e) Solução ótima encontrada Como todos os valores da última linha (função z-transformada) são positivos ou nulos, conclui-se que a solução encontrada é ótima, ou seja: x1 = 5555,55 x2 = 1111,11 Z = 74444,44 4.5 Aspectos Matemáticos Singulares Na modelagem de um problema de programação linear, algumas situações específicas podem ocorrer, o que pode levar a casos em uma forma matemática diferente da apresentada até o momento. Entretanto, alguns artifícios matemáticos ajudam a reduzir o modelo obtido à forma padrão estudado. Estes artifícios são mostrados a seguir. 4.5.1 Minimização de uma função A minimização de uma função Z(x) é matematicamente análoga à maximização da negativa desta função (-Z(x)). Exemplo: Minimizar z = c1 x1i + c2 x2 + ...... + cn xm É equivalente a: Maximizar z' = - c1x1 - c2 x2 .... - cn xm Com: Z' = -Z Essa é uma das formas de se resolver os problemas de minimização utilizando o mesmo algoritmo. Caso que queira resolver diretamente, devemos alterar o critério de entrada das variáveis na base. A variável que entra na base passa a ser aquela que tem o maior valor positivo na linha z-transformada. Caso todas tenham coeficientes negativos ou nulos, a solução obtida é ótima. 4.5.2 Restrições de limite inferior ( ) Uma desigualdade em uma direção (ou ) pode ser mudada para uma desigualdade na direção oposta, pela multiplicação de ambos os lados da desigualdade por (-1). Exemplo: a1 x1 + a2 x2 b é equivalente a: -a1 x1 - a2 x2 -b Introdução à Programação Linear 19 4.5.3 Restrições de igualdade Uma equação pode ser substituída por duas desigualdades de direções opostas. Exemplo: a1 x1 + a2 x2 = b é equivalente a duas desigualdades simultâneas: a1 x1 + a2x2 b a1 x1+ a2 x2 b 4.5.4 Variável irrestrita em sinal Uma variável irrestrita em sinal (ou seja, que pode ser positiva, nula ou negativa) pode ser substituída pela diferença de duas variáveis não negativas. Exemplo: se a variável x1 for irrestrita em sinal, pode ser substituída pela diferença (x´1 - x"1) com x'1 0 e x”2 0. 4.6 Método Simplex em Duas Fases O Método Simplex utiliza uma solução inicial viável para começar o processo iterativo, trabalhando sempre dentro da região viável. Nos casos apresentados até o presente momento, a solução x1 = 0, para i =1, ...... n era uma solução viável, já que todas as restrições apresentadas foram do tipo (). Quando as restrições são do tipo (=) ou (), esta solução não existe. Seja o exemplo abaixo: Minimizar Z = 10 x1 + 4 x2 + 5 x3 Sujeito a: 8 x1 + 3 x2 + 4 x3 10 4 x1 + 3 x28 x1, x2 , x3 0 Como temos uma restrição do tipo (), a variável de folga deve ter coeficiente negativo, tendo o significado de uma variável de excesso. O problema transformado é: Minimizar Z = 10 x1 + 4x2 + 5x3 Sujeito a: 8 x1 + 3 x2 + 4 x3 – f1 = 10 4 x1 + 3 x2 + f2 = 8 x1, x2, x3 , f1, f2 0 Onde f1 é uma variável de excesso e f2 é uma variável de folga. Note que, pelo processo de solução anterior, a variável de excesso (f1) passaria a ter valor negativo na solução inicial (-10), o que não é permitido. Assim, a solução x1 = x2 = x3 = 0 é inviável. É necessário então encontrar uma solução viável para que o método Simplex possa ser iniciado. A forma de se resolver isto é criando novas variáveis. Estas variáveis são chamadas de variáveis artificiais, e representadas por zj. Será colocada uma variável artificial em cada restrição do modelo, ou seja: Introdução à Programação Linear 20 8 x1 + 3 x2 + 4 x3 – f1 + z1 = 10 4 x1 + 3 x2 + f2 + z2 = 8 x1, x2, x3, f1, f2, z1, z2 0 Como se pode perceber, o problema com as restrições acima não é o mesmo problema, a não ser que todas as variáveis zi sejam iguais a zero. Desta forma, podemos resolver o problema em duas fases: na primeira fase, substituímos a função objetivo original por uma função objetivo auxiliar: Zaux = - z1 - z2 = 12 x1 + 6 x2 + 4 x3 – f1+ f 2 -18 Nesse momento, aplicamos o método Simplex de forma a maximizar a função objetivo auxiliar, com as restrições contendo as variáveis auxiliares. A função objetivo auxiliar será maximizada quando todas as variáveis zi forem iguais a zero, já que não podem conter valores negativos. A primeira fase do problema, que consiste na maximização da função objetivo auxiliar, fornecerá uma solução viável para o problema original. A segunda fase consiste em resolver o problema original tomando como solução inicial os valores obtidos pela primeira fase para as variáveis x i e fi. a) Solução inicial Para resolver o problema, monta-se o quadro de forma semelhante à sistemática, colocando-se a função objetivo artificial na última linha. O quadro do exemplo fica: Base x1 x2 x3 f1 f2 z1 z2 b z1 8 3 4 -1 0 1 0 10 z2 4 3 0 0 1 0 1 8 z´ = -z 10 4 5 0 0 0 0 0 Zaux -12 -6 -4 1 -1 0 0 18 Observação: Como a função objetivo é de minimização, ela foi transformada em um problema de maximização através da multiplicação de todos os coeficientes por (-1). A seguir, aplica-se o método Simplex normalmente, usando como função objetivo a última linha. Quando a solução ótima for atingida, dois casos podem ocorrer: Zaux = 0: Neste caso foi obtida uma solução básica do problema original e o processo de solução deve continuar, desprezando-se as variáveis artificiais e os elementos da última linha. É o início da segunda fase do processo. Zaux 0: Neste caso o problema original não tem solução viável, o que significa que as restrições devem ser inconsistentes. Introdução à Programação Linear 21 b) Fase 1- Primeira iteração Variável a entrar na base: x1 (coluna com maior valor negativo na última linha) Variável a sair da base: z1 (o quociente 10/8 é o menor quociente entre a última coluna e a coluna da variável x1, que vai entrar na base) L1 L1 / 8 L2 L2 - 4 L1 L3 L3 – 10 L1 L4 L4 + 12 L1 Base x1 x2 x3 f1 f2 z1 z2 b x1 1 3/8 ½ -1/8 0 1/8 0 5/4 z2 0 3/2 -2 ½ 1 -1/2 1 3 z´ = -z 0 ¼ 0 5/4 0 -5/4 0 -12,5 Zaux 0 -3/2 2 -1/2 -1 3/2 0 -3 b) Fase 1 - Segunda iteração Variável a entrar na base: x2 (coluna com maior valor negativo na última linha) Variável a sair da base: z2 (o quociente 3/(3/2) é o menor quociente entre a última coluna e a coluna da variável x2, que vai entrar na base) L2 2 L2 / 3 L1 L1 – 3 L2 / 8 L3 L3 – L2 / 4 L4 L4 + 3 L2 / 2 Base x1 x2 x3 f1 f2 z1 z2 b x1 1 0 1 -1/4 -1/4 ¼ -1/4 ½ x2 0 1 -4/3 1/3 2/3 -1/3 2/3 2 z´ = -z 0 0 1/3 7/6 -1/6 -7/6 1/6 -13 Zaux 0 0 0 0 0 1 1 0 Como na última linha o valor da função objetivo artificial é zero, a primeira fase terminou e a solução encontrada é a solução básica inicial para a segunda fase. Removendoa última linha e as colunas referentes às variáveis artificiais, o quadro se torna: Base x1 x2 x3 f1 f2 b X1 1 0 1 -1/4 -1/4 ½ x2 0 1 -4/3 1/3 2/3 2 z´ = -z 0 0 1/3 7/6 -1/6 -13 c) Fase 2 - Primeira iteração Variável a entrar na base: f2 (coluna com maior valor negativo na última linha) Variável a sair da base: x2 (o quociente 2/(2/3) é o menor quociente entre a última coluna e a coluna da variável x2, que vai entrar na base) L2 3 L2 / 2 L1 L1 + L2 /4 Introdução à Programação Linear 22 L3 L3 + L3 / 6 Base x1 x2 x3 f1 f2 b z1 1 3/8 ½ -1/8 0 5/4 z2 0 3/2 -2 ½ 1 3 Zaux 0 ¼ 0 5/4 0 -12,5 e) Solução ótima encontrada Como todos os valores da última linha (função z-transformada) são positivos ou nulos, concluímos que a solução encontrada é ótima, ou seja: X1 = 1,25 x2 = 0 z=-z'= 12,5 APLICAÇÃO DA PROGRAMAÇÃO LINEAR NO BALANCEAMENTO DE RAÇÕES 1. INTRODUÇÃO Existe infinitas possibilidade de se formular rações a partir dos ingredientes disponíveis e que atendam as exigências nutricionais de uma determinada espécie e categoria animal, mas com diferentes custos de produção. Uma ração de mínimo custo significa selecionar a composição de uma ração a partir destes ingredientes, de tal forma que, atendem as exigências do animal, mas com o menor custo possível. O modelo matemático de um problema de formulação de ração de mínimo custo é o Problema de Programação Linear (PPL) e sua solução é obtida através do Método Simplex. Programação linear é uma técnica de otimização utilizada para resolver problemas que admitem uma grande quantidade de soluções, onde se deseja encontrar a melhor das soluções possíveis. Portanto a programação linear serve para resolver problemas que possam ser descritos matematicamente pôr uma série de equações lineares e pôr uma função que define o objetivo a ser alcançado. Para melhor conceituar um problema de programação linear, será apresentado um balanceamento de uma ração para frangos de corte, apenas com dois alimentos e dois nutrientes. Os dados essenciais são apresentados na tabela abaixo. Ingredientes Milho Soja Restrição Exigência EM, kcal/kg 3416,00 2283,00 mínimo 2950,00 PB, % 8,51 45,6 mínimo 17,00 Custo, R$ 0,18 0,42 - - Farelo de soja, kg/kg - - máximo 0,30 Variáveis: são os valores a serem encontrados dentro da região viável. - Quantidade de milho (kg): X1 - Quantidade de soja (kg): X2 Função objetivo: é a função que deve ser minimizada ou maximizada e que determinará os valores das variáveis. No caso é minimizar o custo da ração. Minimizar Z = 0,18 * X1 + 0,42 * X2 Restrições: são as equações que definem tecnicamente o problema. Energia: 3416*X1 + 2283*X2 2950 * Q PB: 8,51* X1 + 45,6 * X2 17,00 * Q Soja: 100 * X2 30 * Q Peso: 1* X1 + 1* X2 = Q (O valor de Q no exemplo é igual a 100) Limite das Variáveis: é a faixa de domínio permitido para as variáveis. Deve-se ter quantidades de ingredientes não negativos, ou seja: X1, X2 0 Tipo das entidades: Função objetivo: linear Restrições: lineares Variáveis: reais Resumo geral do problema de programação linear, expresso matematicamente: Otimizar: Z = CT * X (minimizar ou maximizar) Sujeito a: A * X = b X ≥0 Formulação completa do problema proposto: Minimizar: Z = 0,18 * X1 + 0,42 * X2 Sujeito a: Proteína: 8,51 * X1 + 45,6 * X2 17 * 100 Energia: 3416 * X1 + 2283 * X2 2950 * 100 Peso: 1 * X1 + 1 * X2 = 100 Soja max: 1 * X2 30 Com: X1, X2 0 2. SOLUÇÕES DO PROBLEMA 2.1. SOLUÇÃO POR TENTATIVAS O problema proposto possui infinitas soluções que atendem as exigências nutricionais, cada uma com um custo, além de infinitas soluções que não atendem as exigências propostas. Pelo método da tentativa, pode-se montar uma tabela do tipo exposto a seguir, com as quantidades de milho e de farelo de soja variando de 5 em 5 kg. Número Milho Soja Energia Proteína Quantidade Custo 01 100,00 0,00 3.416,0 8,5 100,00 1,80 02 95,00 5,00 3.359,3 10,4 100,00 1,92 04 85,00 15,00 3.246,0 14,1 100,00 2,16 05 80,00 20,00 3.189,4 15,9 100,00 2,28 06 75,00 25,00 3.132,7 17,8 100,00 2,40 07 70,00 30,00 3.076,1 19,6 100,00 2,52 08 65,00 35,00 3.019,4 21,5 100,00 2,64 20 5,00 95,00 2.339,6 43,7 100,00 4,08 22 70,00 25,00 2.962,0 17,3 95,00 2,31 23 80,00 25,00 3.303,5 18,2 105,00 2,49 As formulações de número 1 a 5 não atendem as exigências em proteína, a qual deve ser no mínimo 17%; As formulações de número 10 a 21 não atendem as exigências em energia metabolizável, que deve ser no mínimo 2950 kcal EM/kg de ração; As formulações de número 8 e 9 não atendem as exigências de limitação da quantidade do farelo de soja, que deve ser no máximo 0,30kg de soja/kg de ração (ou 30kg em 100kg de ração); As formulações de números 22 e 23 não atende a restrição de quantidade, a primeira por insuficiência (95kg) e a segunda por excesso (105kg), quando a restrição para o peso é de 100kg; Pode-se concluir dessa análise, que a formulação de custo mínimo que atende todas as exigências e restrições está compreendida entre as formulações de número 5 e 8. Trabalhando nesse intervalo, com intervalos de 1kg, tem-se: Número Milho Soja Energia Proteína Quantidade Custo 01 79,00 21,00 3,178,1 16,3 100,00 2,30 02 78,00 22,00 3,166,7 16,6 100,00 2,33 03 77,00 23,00 3,155,4 17,0 100,00 2,35 04 76,00 24,00 3,144,1 17,4 100,00 2,38 09 71,00 29,00 3,087,4 19,2 100,00 2,50 10 70,00 30,00 3,076,1 19,6 100,00 2,52 11 69,00 31,00 3,064,8 20,0 100,00 2,54 Efetuando a mesma análise da tabela anterior, verifica-se que as formulações que atendem as exigências nutricionais são as compreendidas entre os números 3 e 10. Dessas, a de melhor solução é a número 3, com 77% de milho, 23% de farelo de soja, fornecendo 3155,4 kcal EM/kg de ração e 17,0% de PB, a um custo de R$ 2,35/kg de ração. Para obter um resultado mais preciso, pode-se continuar os cálculos entre as soluções compreendidas entre os números 2 e 4, variando as quantidades do milho e da soja de 0,1 em 0,1kg. Da mesma forma, construi-se nova tabela e verifica-se a melhor solução. Se for o caso, continua-se o cálculo, agora de 0,01 em 0,01kg, e assim por diante até encontrar a solução com dois algarismos decimais. Para o exemplo estudado, com dois ingredientes e dois nutrientes, este modelo, apesar de exaustivo, é um procedimento possível de ser realizado manualmente. Porém quando uma ração envolver vários ingredientes e vários nutrientes, este procedimento é praticamente impraticável. 2.2. SOLUÇÃO GRÁFICA 0 20 40 60 80 100 120 140 160 180 200 X1 0 20 40 60 80 100 120 X 2 EM = 3416 X1 + 2283 X2 = 295000 X1 + X2 = 100 8.51X1 + 45.6X2 = 1700 X2=30 No segmento da reta, a qual satisfaz todas as restrições do problema, no ponto de intercessão com a reta da função de custo, é obtida a solução de custo mínimo. 2.3. SOLUÇÃO PELA PROGRAMAÇÃO LINEAR Resolvendo-se o problema através da programação linear, o resultado obtido, de uma forma bem simplificada, seria: Ingredientes Quantidade, kg Custo, $ Milho 77,11 138,80 Farelo de soja 22,89 96,14 Total 100,00 234,94 3. MÉTODO SIMPLEX Forma geral de um problema de programação linear Otimizar: Z = C1 * X1 + C2 * X2 + .......... + Cn * Xn Sujeito a: A11 * X1 + A12 * X2 + ............. + A1n * Xn ; ; = b1 A21 * X1 + A22 * X2 + ............. + A2n * Xn ; ; = b2 .................. .................. ............. + ............... .................... Am1 * X1 + Am2 * X2 + ............. + Amn * Xn ; ; = bm Ou seja, Otimizar: Z = CT * X Sujeito a: A * X ; ; = b Com: X 0 BALANCEAMENTO DE RAÇÕES PELO MÉTODO DO QUADRADO DE PEARSON 1. INTRODUÇÃO O balanceamento de rações pelo método do Quadrado de Pearson é o mais simples e rápido da maioria dos sistemas de balanceamento de rações, e serve para se obter uma mistura de dois alimentos e um nutriente, sendo que este nutriente, normalmente é a proteína da ração. O balanceamento pelo Quadrado de Pearson Simples sempre envolve dois alimentos e um nutriente, enquanto que o Quadrado de Pearson "T" Múltiplo permite envolver no balanceamento umasérie de alimentos, mas com apenas um nutriente, e ainda, num caso particular, pode-se balancear uma ração com três ingredientes e dois nutrientes utilizando-se do Método do Quadrado de Pearson, desde que um dos ingredientes tenha em um dos nutrientes envolvido, o valor zero. 2. QUADRADO DE PEARSON SIMPLES 2.1. DOIS ALIMENTOS E UM NUTRIENTE Calcular uma ração com 21% de proteína bruta (PB) utilizando-se o farelo de soja com 48% de PB e do milho com 8% de PB. Milho 8 27 Partes de milho 21 Soja 48 13 Partes de soja 40 Partes da mistura Este "Quadrado" encerra toda a resolução do problema: subtrai-se algebricamente (sem levar em consideração o sinal da operação) o nível da proteína do milho (8) pelo valor da PB da mistura desejada (21) e coloca-se no sentido transversal do quadrado (21-8 = 13), ficando esse valor obtido no canto inferior direito do quadrado, e representa as partes do farelo de soja na mistura total. Da mesma forma, subtrai-se o teor de proteína do farelo de soja (48) pelo da mistura (21) obtendo-se o valor de 27, e coloca-o no sentido transversal do quadrado, mas no canto superior direito, valor esse que representa as partes de milho no total da mistura. Desta maneira, tem-se 13 partes em 40 partes da mistura, que se refere ao farelo de soja, e 27 partes em 40 da mistura e que se refere ao milho. Para se obter uma mistura com 100 partes, faz-se uma regra de três simples: 40 27 100 X Ou seja: 2700/40 = 67,50% de milho 100 - 67,50 = 32,50% de farelo de soja. Prova: 8% de 67,50 = 5,40% de proteína do milho 48% de 32,50 = 15,60 % de proteína da soja Total: 21,00% Outro exemplo: Formular uma ração com 21,0% de proteína bruta a base de milho e farelo de soja e com suplemento de vitaminas e minerais. Dados: INGREDIENTES PB NOS INGREDIENTES, % PB NA RAÇÃO, % TOTAL, % Milho 9 - - Soja, farelo 46 - - Premix - 2 Total - 21 100 Para essa variação do Quadrado de Pearson, onde a quantidade final da mistura milho mais soja estará contida em 100 - 2 = 98, temos que fazer uma correção do teor de proteína para os 98%, ou seja: 98 21 100 X Portanto X = 21,43% Executando-se os cálculos pelo Quadrado de Pearson teremos 26,57 partes de milho e 13,43 partes de farelo de soja de um total de 40,00 partes da mistura. Calculando-se para 100%, teremos: 98 x 26,57/40 = 65,10 % de milho 98 x 13,43/40 = 32,90% de farelo de soja. Prova: ALIMENTOS QUANTIDADE, % PB, % Milho 65,10 5,21 Soja, farelo 32,90 15,79 Premix 2,00 - Total 100,00 21,00 2.2. TRÊS ALIMENTOS E DOIS NUTRIENTES Neste caso pode-se balancear uma ração pelo método do Quadrado de Pearson utilizando-se até três alimentos e dois nutrientes simultaneamente, desde que um dos alimentos tenha em um dos nutrientes balanceados o valor zero, que no caso o óleo seria o alimento mais adequado para este caso particular do Quadrado de Pearson. Exemplo: Balancear uma ração para frangos de corte com 22% de PB e 3300 kcal EM/kg de ração, com farelo de soja, milho e óleo bruto de soja. Dados: ALIMENTOS PB, % EM, kcal/kg Milho 9 3400 Soja, farelo 48 2200 Óleo de soja - 8700 Mistura 22 3300 O procedimento consta de se formar três pré-misturas de acordo com o esquema abaixo: Mistura I Utilizam-se os dois alimentos completos e fixa-se o nível protéico da mistura. Dessa maneira tem- se a porcentagem de cada ingrediente, com as quais pode-se determinar o valor da energia dessa Mistura I Mistura II Utiliza-se o concentrado protéico com o terceiro alimento, que no caso é o concentrado exclusivamente energético (óleo) e fixa-se novamente o nível protéico da mistura. Da mesma maneira, tem-se a porcentagem de cada ingrediente, com as quais determina-se o valor energético dessa Mistura II. Mistura III Com as misturas I e II obtidas, temos duas rações com o mesmo nível protéico, mas com valores energéticos diferentes. A próxima etapa consiste em obter a Mistura III a partir das I e II, pois ambas têm o mesmo nível de PB. Cálculos: Mistura I: Milho 9 26 Partes de milho 22 Soja 48 13 Partes de soja 39 Partes da mistura I Mistura I: Milho 26/39 x 100 = 66,67% Soja 13/39 x 100 = 33,33% Mistura I com 22% de PB e 3000 kcal EM/kg Mistura II: Óleo 0 26 Partes de óleo 22 Soja 48 22 Partes de soja 48 Partes da mistura II Mistura II: Soja 22/48 x 100 = 45,83% Óleo 26/48 x 100 = 54,17% Mistura II com 22% de PB e 5721 kcal EM/kg Mistura III: Mistura I 3000 2421 Partes da Mistura I 3300 Mistura II 5721 300 Partes da Mistura II 2721 Partes da Mistura III Mistura III: Mistura I 2421/2721 x100 = 88,97% Mistura II 300/2721 x 100 = 11,03% Mistura III com 22% de PB e 3300 kcal de EM/kg Determinando-se os valores dos componentes da Mistura III, temos: Milho = 88,97% de 66,67 da Mistura I = 59,32% Óleo = 11,03% de 54,17 da Mistura II = 5,97% Soja = (duas frações) = 34,71% Soja (duas frações) = 88,97% de 33,33 da Mistura I = 29,55% = 11,03% de 45,83% da Mistura II = 5,06% Prova: Alimentos % PB, % EM, kcal/kg Milho 59,32 5,34 2.016,88 Soja 34,71 16,66 763,62 Óleo 5,97 - 519,39 Total 100 22 3.300 3. QUADRADO DE PEARSON MÚLTIPLO ("T") Tem o mesmo procedimento do Quadrado de Pearson Simples, onde numa coluna à esquerda coloca-se os alimentos em ordem (de)crescente em relação aos níveis de proteína (ou outro nutriente), e no centro desta coluna de alimentos, coloca-se o nível de proteína (ou outro nutriente) desejado da mistura. A seguir procede-se da mesma forma que o do Método do Quadrado de Pearson Simples, ou seja, subtrai-se o valor do nutriente do primeiro alimento do valor da mistura e coloca-o numa outra coluna, adjacente, no lado direito, correspondendo ao último alimento da coluna esquerda. Da mesma forma, subtrai-se do segundo alimento o valor de seu nutriente do valor da mistura e coloca-o na coluna à direita, onde corresponderá ao penúltimo alimento da coluna esquerda, e assim sucessivamente, até que o último alimento da coluna esquerda seja subtraído do valor da mistura e o resultado seja colocado na coluna à direita, cujo valor corresponderá ao primeiro alimento da coluna direita. Exemplo: Balancear um concentrado protéico com 40% de proteína bruta, a partir dos alimentos com os seguintes níveis protéicos (%): Far.Trigo Far. Alfafa Far. Girassol Glúten Milho Far. Soja Far. Peixe 15.00 18.00 36.00 39.00 48.00 56.00 Os alimentos já foram colocados em uma ordem decrescente de proteína, portanto pode-se montar as colunas para as subtrações: Alimentos Coluna Esquerda Mistura Coluna Direita Parte de: Farelo de trigo 15 16 Farelo de trigo Farinha de alfafa 18 8 Farinha de alfafa Farelo de girassol 36 1 Farelo de girassol 40 Glúten de milho 39 4 Glúten de milho Farelo de soja 48 22 Farelo de soja Farinha de peixe 56 25 Farinha de peixe Total 76 Transformando-se em porcentagens, temos: Farelo de trigo = 16/76 x 100 = 21,05% Farinha de alfafa=8/76 x 100 = 10,53% Farelo de girassol = 1/76 x 100 = 1,32% Glúten de milho = 4/76 x 100 = 5,26% Farelo de soja = 22/76 x 100 = 28,95% Farinha de peixe =25/76 x 100 = 32,83% Prova: Alimentos % PB, % Farelo de trigo 21,05 3,16 Farinha de alfafa 10,53 1,90 Farelo de girassol 1,32 0,47 Glúten de milho 5,26 2,05 Farelo de soja 28,95 13,90 Farinha de peixe 32,89 18,42 Total 100,00 39,90 Observa-se que há um défice de 0,10% de proteína bruta no concentrado. Para adequar o concentrado com 40% de PB, faz-se um ajuste entre os ingredientes de maior (farinha de peixe) e o de menor (farelo de trigo) nível de proteína bruta. Portanto: 1kg a menos de farelo de trigo eqüivale a 0,150 kg de proteína 1 kg a mais de farinha de peixe eqüivale a 0,560 kg de proteína Em função desse raciocínio, temos um aumento de: 0,560 - 0,150 = 0,410 kg de proteína/kg de substituição entre esses dois alimentos escolhidos. Défice de nutrientes (em kg) Diferencial de nutrientes (em kg) Quantidade a serem trocadas entre esses dois alimentos: No caso: 0,100 / 0,410 = 0,244 kg ou praticamente 0,25 kg. Efetuando-se a subtração e adição entre os ingredientes, temos:Farelo de trigo = 21,05 - 0,25 = 20,80% Farinha de peixe = 32,89 + 0,25 = 33,14% Alimentos % PB, % Farelo de trigo 20,80 3,12 Farinha de alfafa 10,53 1,90 Farelo de girassol 1,31 0,47 Glúten de milho 5,26 2,05 Farelo de soja 28,95 13,9 Farinha de peixe 33,14 18,56 Total 100,00 40,00 No caso de ocorrer um excesso de nutrientes, faz-se o inverso, ou seja: retira-se o valor obtido do alimento com maior porcentagem e soma-se o mesmo valor ao alimento com menor nível de nutriente. BALANCEAMENTO DE RAÇÕES PELO MÉTODO GRÁFICO JOSÉ ROBERTO SARTORI GUILHERME JORDÃO DE MAGALHÃES ROSA ANTONIO CELSO PEZZATO 1. INTRODUÇÃO O método baseia-se na aplicação das coordenadas cartesianas, sendo que em cada eixo são representados, sob escala, os teores em princípios nutritivos de cada alimento. 2. DUAS RESTRIÇÕES E DIFERENTES NÚMEROS DE ALIMENTOS 2.1. DOIS ALIMENTOS Como primeiro exemplo, os eixos das abscissas e ordenadas, indicarão respectivamente, os níveis de proteína bruta (PB) e dos nutrientes digestíveis totais (NDT), dos alimentos. Assim no Gráfico 1, o ponto A representa um alimento com 80% NDT e 7% PB e o ponto B, outro alimento com 15% PB e 65% NDT. O princípio básico do método é de que todas as possíveis misturas entre dois alimentos são representadas graficamente pelos pontos que constituem o segmento de reta que os ligam. Cada ponto desse segmento indica uma mistura dos dois alimentos, cujos teores em PB e NDT são dados pelas suas projeções sobre as coordenadas. 8 0 7 5 7 0 6 5 5 1 0 1 5 N D T P B X M A B Gráfico 1. Dois alimentos e duas restrições O ponto M no Gráfico 1 corresponde a uma ração com teores de 12,3% PB e 70% NDT. Para se determinar as quantidades dos alimentos A e B que formarão a mistura M procede-se da seguinte maneira: O segmento que liga os pontos referentes aos dois alimentos representará a quantidade Q da mistura M. Assim se se deseja obter 100kg da mistura, o comprimento do segmento AB equivalerá a essa quantidade. O segmento AB será dividido pelo ponto M em dois segmentos proporcionais às quantidades de A e B necessárias à composição de M. Esses segmentos representados sob forma de fração de AB, serão chamados de Relação Indicativa do Alimento (Ri). O Ri de um alimento é dado pelo segmento da reta em oposição ao ponto que representa esse alimento. No presente caso, as relações indicativas dos alimentos A e B são: RiA = BM/AB RiB = AM/AB Para se obter a quantidade q de cada alimento que irão formar o total Q da mistura desejada M, multiplica-se o Ri de cada alimento por essa quantidade Q. Neste EXEMPLO 1 deve- se calcular as quantidade de A e B para perfazer 100kg da mistura M com 12,3% PB e 70% NDT. Dados: Alimentos PB, % NDT, % A 7 80 B 15 65 M 12,3 70 Dados obtidos do Gráfico 1 em papel milimetrado: Retas e segmentos de reta do Gráfico 1 Medida Comprimento da reta AB 8,4 mm Comprimento do segmento AM 56 mm Comprimento do segmento BM 28 mm RiA 28/84 RiB 56/84 Alimentos Cálculos Quantidades, kg PD, % NDT,% A qA = (28/84) x 100 33,3 2,33 26,64 B qB = (56/84) x 100 66,7 10,00 43,35 M Total 100,0 12,33 69,99 Portanto em 100kg da mistura tem-se 33,3kg do alimento A e 66,7kg do alimento B. Com essas quantidades dos alimentos A e B obtém-se uma mistura M com 12,33% PB e 69,99% NDT. Observações: 1. Para facilitar os cálculos, podem-se substituir as medidas de comprimento dos segmentos mencionados pelas suas projeções sobre os eixos, utilizando-se de papel quadriculado. Usando-se o papel quadriculado e com os mesmos dados, têm-se as seguintes projeções sobre os eixos das ordenadas: Reta AB 15 quadrículas A = (5/15) x 100 33,3 kg Segmento AM 10 quadrículas B = (10/15) x 100 66,7 kg Segmento BM 5 quadrículas 2. Quando se deseja obter uma determinada quantidade de ração balanceada diferente de 100kg, basta multiplicar a relação indicativa de cada alimento pela quantidade Q desejada. Assim, as quantidades de A e B para a composição de 80kg da mesma mistura M, serão: A = (5/15) x 80 = 26,7kg; B = (10/15) x 80 = 53,3kg 2.2. TRÊS ALIMENTOS O segundo exemplo, é a obtenção de uma mistura M com 16% PB e 72% NDT utilizando- se de três alimentos, sendo os dois anteriores (A e B) e um terceiro C com 23% PB e 76% NDT. Inicialmente organiza-se o Gráfico 2 e nele localizam-se os pontos referentes aos alimentos que deverão compor a mistura. Os três pontos que formam o triângulo ABC, dentro do qual estarão todos os pontos correspondentes às misturas possíveis entre esses alimentos. Assim, se desejarmos uma mistura indicada por um ponto que se localize fora desse triângulo, essa mistura é irrealizável com os alimentos dados. No EXEMPLO 2 a mistura M encontra-se no interior do referido triângulo e, portanto poderá ser obtida a partir dos alimentos dados. A C B x M M1 80 75 70 65 5 10 15 20 NDT PB Gráfico 2. Três alimentos e duas restrições Cálculo: Como já foi visto, ligando-se dois desses pontos por um segmento AB, por exemplo, ele representará todas as misturas possíveis entre esses dois alimentos. Traçando-se um segundo segmento desde o ponto C até o segmento AB, com a condição de passar pelo ponto M, tem-se o gráfico completado, ou seja, a mistura calculada graficamente. Nesse gráfico, M1 é a mistura preliminar de A com B, e M é a mistura final da combinação de C com M1. Regra para a determinação da quantidade dos componentes: A quantidade de cada alimento é obtida multiplicando-se seu Ri pelos Ri das misturas preliminares das quais esse alimento faz parte e ainda pela quantidade Q da mistura que se deseja. Neste caso, têm-se três componentes com os seguintes dados: Alimentos PD, % NDT, % A 7 80 B 15 65 C 23 76 M 16 72 Do Gráfico 2 tem-se as seguintes projeções: AB = 15,0 AM1 = 10,0 BM1 = 5,0 CM1 = 6,0 CM = 4,0 M1M = 2,0 As relações indicativas dos alimentos são: RiA = BM1/AB = 5/15 RiB = AM1/AB = 10/15 RiC = M1M/CM1 = 2/6 RiM1 = CM/CM1 = 4/6 Para obter 100kg da mistura, tem-se: qA = RiA x RiM1 x 100 qB = RiB x RiM1 x 100 qC = RiC x 100 Alimentos Cálculos Quantidades, kg PD, % NDT, % A qA = (5/15) x (4/6) x 100 22 1,54 17,60 B qB = (10/15) x (4/6) x 100 44 6,60 28,6 C qC = (2/6) x 100 34 7,82 25,8 M Total 100 15,96 72,00 2.3. QUATRO ALIMENTOS O terceiro exemplo é a obtenção de uma mistura M com quatro alimentos. No caso com três ingredientes o ponto M obrigatoriamente ficou dentro do triângulo formado pelos pontos A, B e C correspondentes a esses componentes. Em função dessa constatação, pode-se generalizar que, quando houver três ou mais ingredientes, a mistura será exeqüível quando o ponto M ficar no interior do polígono formado pelas retas mais externas que ligam entre si todos os pontos representativos dos alimentos. NDT NDT NDT PBEXEQUIVEL EXEQUIVEL NÃO EXEQUIVEL * M * M * M Figura 3. Possíveis situações para soluções para uma mistura de alimentos Neste caso, vamos calcular uma mistura M com 15,5% PB e 73,5% NDT utilizando-se os alimentos A, B, C e D. Dados: Alimento PD, % NDT, % A 7,0 80,0 B 15,0 65,0 C 23,0 76,0 D 25,0 68,0 M 15,5 73,5 Solução gráfica: traçam-se inicialmente dois segmentos: AC, representativo das misturas possíveis entre os alimentos A e C e BD, com a mesma finalidade em relação a B e D, conforme o Gráfico 4. 80 75 70 65 NDT 05 10 15 20 25 PB A C M1 B D M X M2 Gráfico 4. Quatro alimentos e duas restrições Pelo ponto M, que representa a mistura que se deseja obter, deverá passar a terceira reta, interceptando AC e BD. Neste exemplo, M1 indica a mistura preliminar de A com C e M2, a mistura preliminar de B com D. A citada terceira reta, que liga os segmentos AC à BD, poderia ter várias posições, atendendo em todas, a condição de passar por M. Todas essas posições satisfariam ao balanceamento desejado com relação aos teores de PB e NDT. Entretanto, essas diversas posições representarão teores diferentes nos outros nutrientes, como o cálcio, fósforo, metionina, lisina, fibra, ou seja, nas demais características da ração. Verifica-se, portanto, a importância dessa reta que passapelo ponto M, pois da sua posição dependerão todas as características da ração. Assim sendo ela passará a ser designada de Reta Piloto. De acordo com o gráfico, tendo em vista a regra baseada nos Ri, e Q sendo igual a 100, tem-se: RiA = CM1/AC = 3/4 qA = RiA x RiM1 x 100 RiB = DM2/BD = 1,2/3 qB = RiB x RiM2 x 100 RiC = AM1/AC = 1/4 qC = RiC x RiM1 x 100 RiD = BM2/BD = 1,8/3 qD = RiD x RiM2 x 100 RiM1 = M2M/M1M2 = 6,7/12,2 RiM2 = M1M/M1M2 = 5,5/12,2 Resumo: Alimento Cálculos Quantidade, kg PB, % NDT, % A qA = (3/4) x (6,7/12,2) x 100 41,2 2,884 32,960 B qB = (1,2/3) x (5,5 x 12,2) x 100 18,0 3,151 10,412 C qC = (1/4) x (6,7/12,2) x 100 13,7 2,700 11,700 D qD = (1,8/3) x (5,5/12,2) x 100 27,1 6,775 18,428 M Total 100,0 15,510 73,500 2.4. SEIS OU MAIS ALIMENTOS Para este exemplo de balanceamento de rações através das coordenadas cartesianas, além dos quatro alimentos A, B, C e D utilizados no EXEMPLO 3, pode-se formular a mesma ração anterior, mas com mais dois novos alimentos, E e F. Alimento PD, % NDT, % A 7,0 80,0 B 15,0 65,0 C 23,0 76,0 D 25,0 68,0 E 26,0 72 F 32,0 64 M 15,5 73,5 Solução gráfica: 80 75 70 65 5 10 15 20 25 30 NDT PB * A M4 M C B M3 E M1 F D Gráfico 5. Resolução gráfica com seis alimentos e duas restrições M2 Conforme se verifica no Gráfico 5, sempre que houver mais de quatro componentes, pode- se estabelecer misturas preliminares entre dois ou mais componentes, tornando deste modo o problema idêntico aos anteriores. Neste caso, substitui-se os três primeiros alimentos D, E e F pela mistura M2 dos mesmos. Assim o balanceamento passou a se basear em quatro componentes: A, B, C e M2. Desta forma, pode-se considerar o número de quatro componentes como caso geral para solução dos problemas por meio de gráfico. De acordo com a regra das relações indicativas dos alimentos, para o cálculo de Q = 100, tem-se: RiA = CM4/AC = 3/4 qA = RiA x RiM4 x 100 RiB = M2M3/BM2 = 2,6/5 qB = RiB x RiM3 x 100 RiC = AM4/AC =1/4 qC = RiC x RiM4 x 100 = RiD = FM1/DF = 2/4 qD = RiD x RiM1 x RiM2 x RiM3 x 100 RiE = M1M2/EM1 = 4/6 qE = RiE x RiM2 x RiM3 x 100 RiF = DM1/DF = 2/4 qF = RiF x RiM1 x RiM2 x RiM3 x 100 RiM1 = EM2/EM1 = 2/6 RiM2 = BM3/BM2 = 2,4/5 RiM3 = M4M/M3M4 = 5,5/11,6 RiM4 = M3M/M3M4 = 6,1/11,6 Alimento Cálculos Quantidades, kg PD, % NDT, % A qA = (3/4) x (6,1/11,6) x 100 39,44 2,76 31,55 B qB = (2,6/5) x (5,5/11,6) x 100 24,66 3,70 16,03 C qC = (1/4) x (6,1/11,6) x 100 13,15 3,02 9,99 D qD = (2/4) x (2/6) x (2,4/5) x (5,5/11,6) x 100 3,79 0,95 2,58 E qE = (4/6) x (2,4/5) x (5,5/11,6) x 100 15,17 3,94 10,92 F qF = (2/4) x (2/6) x (2,4/5) x (5,5/11,6) x 100 3,79 1,21 2,43 M Total 100,00 15,58 73,50 3. BALANCEAMENTO DE RAÇÃO COM VÁRIAS IMPOSIÇÕES No balanceamento da ração com quatro alimentos e duas imposições (PB e NDT) pode-se verificar que várias soluções poderiam ser obtidas, tendo em vista as diversas posições que poderiam ter a reta piloto na composição gráfica da ração. No presente caso, refere-se somente a escolha da posição dessa reta, uma vez que as demais imposições, como a fibra, o cálcio, metionina, gordura, inclusive o custo, dependerão da posição da reta piloto. 3.1. DOIS ALIMENTOS E TRÊS RESTRIÇÕES Para a elaboração do gráfico será usado um sistema de coordenadas complementares. Traçam-se dois gráficos complementares, G1 e G2, em que os dois eixos das ordenadas indicam as variações de NDT e os dois eixos das abscissas indicam as variações de PB em G1 e da gordura em G2. NDT NDT PB EE 80 75 70 65 80 75 70 65 80 75 70 65 05 10 15 20 25 05 06 07 08 A B M A M B G1 G2 Gráfico 6. Resolução gráfica com dois alimentos e três restrições A representação nesse sistema, de um alimento A com 80% NDT (nutrientes digestíveis totais), 7% PB (proteína bruta) e 6% EE (extrato etéreo) é realizada da mesma maneira anterior no que se refere a NDT e PB na parte G1 e da mesma forma, quanto a NDT e EE na parte G2 do Gráfico 6. A representação de um segundo alimento B com 65% NDT, 15% PB e 7,5% EE, segue o mesmo procedimento nas partes G1 e G2 do Gráfico 6. Para completar une-se os pontos A e B em G1 e G2, formando os dois segmentos AB, os quais representam todas possíveis misturas de A com B sob o ponto de vista de sua composição em NDT e PB em G1 e de NDT e EE em G2. Em G1 marca-se um ponto representativo de uma mistura de A com B, o qual haverá um correspondente em G2, ficando assim estabelecida graficamente a relação da terceira variável (EE) com as duas primeiras (NDT e PB). O ponto M, no caso representa uma mistura com 70,5% NDT, 12% PB e 6,9% EE. Alimentos Cálculos Quantidade, kg NDT, % PB, % EE, % A qA = RiA x Q = 5,5/15 x 100 36,7 29,4 2,569 2,2 B qB = RiB x Q = 9,5/15 x 100 63,3 41,1 9,495 4,7 M Total 100,0 70,5 12,064 6,9 3.2. QUATRO INGREDIENTES, DUAS RESTRIÇÕES E CUSTO MÍNIMO Resolver graficamente uma ração de custo mínimo com os seguintes dados: Alimentos PB, % NDT, % Custo/kg A 7,0 80,0 0,10 B 15,0 65,0 0,15 C 23,0 76,0 0,46 D 25,0 68,0 0,38 M 15,5 73,5 Custo mínimo Inicialmente traçam-se os gráficos complementares G1 e G2 por estarem em jogo três imposições: PB, NDT e custo mínimo. Após situar os pontos representativos dos quatro componentes nesses gráficos, traçam-se duas linhas unindo os alimentos dois a dois, como por exemplo, AC e BD, tanto em G1 como em G2. O melhor critério para a escolha dessas ligações iniciais consiste em unir-se os pontos indicativos dos alimentos de tal maneira que a reta piloto fique tanto quanto possível perpendicular à abscissa, o que facilitará a demarcação dos pontos X e X', nos gráficos complementares. O campo de variação da reta piloto está delimitado pelas linhas LL' e L1L1', o que é facilmente visível no gráfico. 80 75 70 65 80 75 70 65 05 10 15 20 25 5000 7000 9000 11000 13000 NDT NDT * A L L1 C M D B L'1 L' A L L1 C B L'1 D L' x x' G2G1 PB CUSTO Gráfico 7. Resolução gráfica com quatro alimentos, duas restrições e com custo mínimo A reta piloto ocupando uma das posições dessas duas linhas limites, nos dará a determinação gráfica das misturas de preço mínimo e máximo, que satisfazem aos requisitos exigidos em PB e NDT. A imposição de custo mínimo é satisfeita com a posição LL' para a reta piloto e o seu valor é dado pela projeção do ponto X sobre a abscissa. Esses pontos X e X' são determinados pela interseção dos segmentos LL' e L1L1' com a reta horizontal que passa pelo valor em NDT da ração desejada M. De acordo com os dados tirados do Gráfico 7 em G1, tem-se para Q=100kg: Alimento Cálculos Quant. kg NDT, % PB, % Custo, R$ A qA = RiA x RiM1 = (4/4) x (6/12,5) x 100 48,00 38,40 3,360 0,048 B qB = RiB x RiM2 = ( 0,5/3) x (6,5/12,5) x 100 8,67 5,64 1,301 0,014 C qC = RiC x RiM1 = (0/4) x (6/12,5) x 100 0 - - - D qD = RiD x RiM2 = (2,5/3) x (6,5/12,5) x 100 43,33 29,46 10,833 0,165 M Total 100,0 73,50 15,494 0,227 BALANCEAMENTO DE RAÇÕES POR MATRIZES JOSÉ ROBERTO SARTORI GUILHERME JORDÃO DE MAGALHÃES ROSA ANTONIO CELSO PEZZATO 1. INTRODUÇÃO Para a formulação de uma ração, deve-se traduzir um problema biológico para um problema matemático, ou seja, transformar os índices técnicos dos alimentos (% de proteína, cálcio, fósforo, metionina, fibra e outros) e as exigências nutricionais dos animais em equações algébricas. Uma vez montadas estas equações (que resultarão em algumas incógnitas), pode-se lançar mão de inúmeros métodos para a solução do sistema, onde todos eles, naturalmente, levarão à mesma resposta. Desta maneira, a resolução de sistemas pode ser obtida por substituição, por adição, por comparação, por escalonamento ou graficamente. A utilização de matrizes e determinantes é mais uma forma de balanceamento de ração. Estes métodos são muitas vezes morosos para serem utilizados em sistemas com pequeno número de equações e incógnitas, porém são de fundamental importância para a resolução de sistemas maiores, além do que, são peças fundamentais em programação linear (formulação de rações de custo mínimo). Inicialmente será dada uma breve revisãosobre matrizes e determinantes e posteriormente, as aplicações no balanceamento de rações. 2. DEFINIÇÃO 3x5Matriz 241/51 119e73- 62053 =AChamamos Exemplo de notificação: o 9 está na segunda linha e quarta coluna, ou a24 = 9. Notação geral: nmMatriz a.......aaa ............................ a.......aaa a.......aaa nAm x mnm3m2m1 2n232221 1n131211 x 3. PROPRIEDADES DAS MATRIZES 3.1. IGUALDADE ENTRE MATRIZES Duas matrizes A e B são iguais se os símbolos correspondentes representarem o mesmo elemento. ijij b=aquandoB=A 3.2. MULTIPLICAÇÃO DE MATRIZES Exemplo: multiplicar as matrizes: ?= 03 1-2 45 31 Seqüência: Linha 1 da matriz 1 pela coluna 1 da matriz 2 = 1x2 + 3x3 = 11 Linha 1 da matriz 1 pela coluna 2 da matriz 2 = 1x(-1) + 3x0 = -1 Linha 2 da matriz 1 pela coluna 1 da matriz 2 = 5x2 + 4x3 = 22 Linha 2 da matriz 1 pela coluna 2 da matriz 2 = 5x(-1) + 4x0 = -5 Dessa maneira: 5-22 1-11 03 1-2 45 31 Observação: Apenas pode-se efetuar o produto de duas matrizes, se o número de colunas da primeira for igual ao número de linhas da segunda. A matriz resultante terá o número de linhas da primeira matriz e o número de colunas da segunda. A B = Cmxp pxn mxn 3.3. MATRIZ TRANSPOSTA ( At ou A') A matriz transposta de A é obtida a partir da transposição de linhas por colunas de A, ordenadamente. Exemplo: 814 31-2 201 =A A' = 832 11-0 421 3.4. MATRIZ COFATORA (cof A) Para obtenção da matriz cofatora de uma matriz A, procede-se da seguinte forma: No lugar do elemento aij, coloca-se o respectivo valor de determinante da matriz menor, obtida através da eliminação da linha e coluna nas quais cada elemento aij está inserido. Soma-se o valor de i e j (i+j) relativos à linha e coluna de cada elemento aij: se i+j for par, permanece o sinal; i+j for ímpar, troca-se o sinal. Exemplo: 814 31-2 201 =AmatrizaSeja ; Para determinar o primeiro elemento (a11) da matriz cofatora de A: - Primeiro elimina-se a primeira linha e a primeira coluna de A (onde está inserido o elemento a11 obtendo-se uma matriz menor, cujo determinante e igual a -11). 11 81 31- - Como i+j = 2 (par), o sinal permanece o mesmo, ou seja, o elemento a11 da matriz cofatora é o -11. Para a determinação do elemento a12, tem-se: - Elimina-se a primeira linha e a segunda coluna, obtendo-se um determinante, cujo valor é igual a 4. 4 84 32 - No caso, i+j = 1+3 = 3 (ímpar), logo, troca-se o sinal, ou seja o elemento a12 passa a ser -4. Prossegue-se pelo mesmo sistema até se obter todos os elementos da cof A, chegando desta maneira a: 1-12 1-02 64-11- =Acof 3.5. MATRIZ ADJUNTA (adj A) Chama-se de adj A a matriz transposta da cof A, ou seja: 116 104 2211 =Aadj adj A = (cof A)' 3.6. MATRIZ INVERSA (A-1) Uma matriz quadrada A se diz inversível se: A x A-1 = A-1 x A = In Observação: Matriz Quadrada: m = n Matriz Identidade: todos elementos são nulos, exceto os elementos da diagonal principal, que são todos iguais a 1. 33identidadeMatriz 100 010 001 =I x3 Exemplos: Dada a matriz A, encontrar B de tal forma que AxB = BxA = I2, ou seja, encontrar A-1. 86 32 =A Seja: 10 01 8w+6y8z+6x 3w+2y3z+2x 10 01 wz x y 86 32 ou,I=BAEntão wz x y =B 2 Logo: e3,=ze-4=xz3 4-=x 0=8z+x6 1=3z+2x -1.=we 2 3=yw2 3-=y 1=8w+6y 0=3w+y2 Portanto: 1-3 3/24- =B A-1 Para a obtenção da inversa de uma matriz A, pode-se proceder da seguinte maneira: A-1 = Aadj. A 1 onde: A= determinante de A adj A = (cof A)' Exemplo: Para a matriz 814 31-2 201 =A , determinar A-1. a) 1=0-3-8+4+0+8- 814 31-2 201 A b) cof A = 1-12 1-02 64-11- c) adj A = (cof A)' = 1-1-6 104- 2211- d) A' = 1-1-6 104- 2211- . 1 1=Aadj. A 1 Portanto, A-1 = 1-1-6 104- 2211- e) Prova: A x A-1 = A-1 x A = I3 100 010 001 1-1-6 104 2211- 814 31-2 201 A A-1 I3 4. DETERMINANTES 4.1. MATRIZ DE SEGUNDA ORDEM 2=18-20=(3x6)-(5x4) 46 35 A 46 35 =A 4.2. MATRIZ DE TERCEIRA ORDEM (REGRA DE SARRUS) 312 405 234 A 312 405 234 =A (4x0x3)+(3x4x2)+(2x5x1)-(2x0x2)-(1x4x4)-(3x5x3)= -27 4.3. DETERMINANTE DE QUALQUER ORDEM (REGRA DE LAPLACE) Dado o determinante A= 751 962 754 , ele pode ser determinado pela seguinte regra: a) Por uma fila qualquer; b) Multiplicando-se os elementos desta fila pelos determinantes menores; c) Dando-se os sinais (+) e (-) alternados, contados a partir do a11. Exemplos: Aplicando-se a Regra de Laplace à última coluna, temos: -48=60+140-32=3(-20)-0)-7(20-24)+1(8 4-2 05 )3( 46 05 7 46 4-2 1 3-46 74-2 105 5. RESOLUÇÕES DE SISTEMAS - Resolver o sistema: 1=4y-3x 7=2y+x1 5.1. POR MATRIZ INVERSA O sistema pode ser escrito da seguinte forma: 1/10-3/10 1/52/5 é 4-3 21 deinversamatrizaonde 1 7 y x 4-3 21 Multiplicando-se ambos lado do sistema pela matriz inversa, tem: 1 7 1/10-3/10 1/52/5 y x 4-3 21 1/10-3/10 1/52/5 2=ye3=xou 2 3 y x ou 10/110/21 5/15/14 y x 10 01 5.2. SOLUÇÃO POR DETERMINANTES (REGRA DE CRAMER) Dado o sistema: 1=4y-3x 7=2y+x1 13 71 =ye 4-1 27 =x; 4-3 21 3 10 30 64 228 4-3 21 4-1 27 =x/x=x y = y / = 1 7 3 1 1 2 3 - 4 1 21 4 6 20 10 2 6. REGRA DE CRAMER (OU SISTEMAS QUADRADOS) Dado um sistema com um número de equações igual ao número de incógnitas, temos: mmmm rznybxa rznybxa rznybxa ..... 2..... ..... 222 1111 Chamamos de (delta) ao determinante obtido dos coeficientes das incógnitas: mmm nba nba nba ........... ........................ ....................... ........... ........... 222 111 e x, y, ... , z aos determinantes obtidos pelas substituições dos termos independentes na primeira, segunda, ... , n-ésima coluna de , respectivamente. Com isto temos, se 0: x = x/; y = y/; ... ; z = z/. Observação: Se = 0, as retas são paralelas, portanto é um sistema sem solução. 7. BALANCEAMENTO DE RAÇÃO POR MEIO DE MATRIZES 7.1. Balancear 100kg de ração com 18% de PB (proteína bruta), utilizando milho com 9% de PB e farelo de soja com 45% de PB. 18=0,45y+0,09x:Proteína 100=1y+1x:Quantidade Sistema 25%=y/=y9918 180,09 1001 =y 75%=x/=x271845 180,09 1100 =x 36,009,045,0 0,450,089 11 = soja)de(farelo25%=y=y9918 180,09 1001 =y 7.2. Formular uma ração com 22% PB e 70% NDT, utilizando milho (9% PB e 80% NDT), farelo de soja (45% PB e 73% NDT) e farelo de trigo (16% PB e 62% NDT). 70=0,62z+0,73y+0,80x:NDT 22=0,16z+0,45y+0,09x:Proteína 100=1z+1y+1x:Quantidade Sistema = 1 1 1 0,09 0,45 0,16 0,80 0,73 0,62 0 0599, (Milho)27,71%=x/=x1,66- 0,620,730,70 0,160,4522 11100 =x y = 1 100 1 0,09 22 0,16 0,80 70 0,62 - 1,64 y = y / = 27,38% (Farelo de soja) z = 1 1 100 0,09 0,45 22 0,80 0,73 70 - 2,69 z = z / = 44,91% (Farelo de Trigo) 7.3. Balancear uma ração completa com 13% PB, com feno de gramínea (10% PB), rolão de milho (7,5% PB) e farelo de soja (45% PB), de maneira que o feno participe em 50% da ração. 100=1z+1y+x1 13=0,45z+0,075y+0,10x:Proteína 50=1x:VolumosoSistema = 1 0 0 0,10 0,075 0,45 1 1 1 0,075 - 0,45 = - 0,375 x = 50 0 0 13 0,075 0,45 100 1 1 3,75 - 22,50 = -18,75 x = x / = 50% (Feno) y = 1 50 0 0,10 13 0,45 1 100 1 13 + 22,5 - 45 - 5 = -14,5 y = y / = 38,67% (Rolão) z = 1 0 50 0,10 0,075 13 1 1 100 7,5 + 5 - 3,75 - 13 = - 4,25 z = z / = 11,33% (Trigo) 8. EXERCÍCIO Balancear uma ração com 18% PB, 3100kcal EM/kg e 2,5% Ca, com os seguintes alimentos: Alimentos PB, % EM, kcal/kg Ca, % Milho 9 3400 0 Farelo de soja 45 2275 0,30 Calcário 0 0 37 Óleo de soja 0 8600 0 Exigências Nutricionais 18 3100 2,5 Resposta: = - 6,574995 x = - 402,399 x = 61,20% (Milho) y = - 182,52 y = 27,76% (Farelo de soja) z = - 42,94575 z = 6,53% (Calcário) w= -29,63475 w = 4,51% (Óleo de soja) 9. BALANCEAMENTO DE RAÇÕES POR MATRIZES ATRAVÉS DO PROGRAMA LinCalc 9.1. UTILIZAÇÃO DO LINCALC PARA FORMULAÇÃO DE RAÇÕES Balancear uma ração com 18% PB, 3100 kcal/kg e 2,5% de Ca, com os seguintes alimentos: Alimentos PB, % EM, kcal/kg Ca, % Milho 9 3400 0 Far. Soja 45 2275 0,3 Calcário 0 0 37 Óleo de Soja 0 8600 0 Exigências 18 3100 2,5 2,5=0w+0,37z+0,003y+0x 3100=86w+0z+22,75y+34x 18=0w+0z+0,45y+0,09x 100=1w+1z+1y+x1 SOLUÇÃO 1 REGRA DE CRAMMER A) Entrar com a matriz dos coeficientes das incógnitas (Create new object) 1 - Selecione linhas (Select rows) Entre com o número de linhas: 4 2 - Selecione colunas (Select coluns) Entre com o número de colunas: 4 3 - Finalizar (Zeroed Object) 4 -Digitar os valores nas suas posições 037,0003,00 86075,2234 0045,009,0 1111 B) Memorizar ou arquivar a matriz (File Save) 1 - Salvar com o nome de matriz 1, no diretório C:\Ração\Calc Matriz\matriz 1; C) Achar o determinante (Det) da matriz 1. Determinante = -6,574995 () D) Chamar matriz 1 da memória (File Load) E) Corrigir a matriz Substituir os valores dos coeficientes de x (1a coluna) pelos valores das igualdades; 00,370,0032,5 86022,753100 000,4518 111100 F) Achar o determinante (Det). Determinante: -402,399 (x) G) Chamar matriz 1 da memória (File Load) H) Corrigir a matriz Substituir os valores dos coeficientes de y (2a coluna) pelos valores das igualdades; 037,05,20 860310034 001809,0 111001 I) Achar o determinante (Det). Determinante: -182,52 (y) J) Chamar matriz 1 da memória (File Load) K) Corrigir a matriz Substituir os valores dos coeficientes de z (3a coluna) pelos valores das igualdades; 05,2003,00 86310075,2234 01845,009,0 110011 L Achar o determinante (Det). Determinante: -42,94575 (z) M) Chamar matriz 1 da memória (File Load) N) Corrigir a matriz Substituir os valores dos coeficientes de w (4a coluna) pelos valores das igualdades; 5,237,0003,00 3100075,2234 18045,009,0 100111 O) Achar o determinante (Det). Determinante: - 29,63475 (w) P) Calcular os valores de x, y, z e w. (Milho)%20,61 574995,6 399,402x x (Far.Soja)%76,27 574995,6 52,182 yy (Calcario)%53,6 574995,6 94575,42 zz Soja)de(Óleo%51,4 574995,6 63475,29 ww SOLUÇÃO 2 INVERSÃO DE MATRIZES. A) Entrar com a matriz dos valores das igualdades (Create new object) 1 - Selecione linhas (Select rows) Entre com o número de linhas: 4 2 - Selecione colunas (Select coluns) Entre com o número de colunas: 1 3 - Finalizar (Zeroed Object) 4 -Digitar os valores nas suas posições 5,2 3100 18 100 B) Memorizar ou arquivar a matriz (File Save) Salvar com o nome de vetor, no diretório C:\Ração\Calc Matriz\vetor; C) Chamar matriz 1 da memória (File Load) D) Inverter matriz 1 (Inv) E) Chamar vetor da memória (File Load) F) Multiplicar matrizes (Mul) Produto de Inversa da matriz 1 Com vetor Igual a: w z y x 51,4 53,6 76,27 21,61 9.2. PROBLEMAS PROPOSTOS Alimentos EM/ave ED/suíno PB, % Ca, % Pd, % Pt, % Met, % Lis, % Milho 3400 3490 9 0,02 0,1 0,27 0,2 0,3 x F.Soja 2275 3380 45 0,4 0,2 0,6 0,6 3 y F.Trigo 1530 2100 15 0,1 0,3 0,9 0,2 0,6 z F.Carne 1740 2100 45 12 5,4 5,4 0,5 2 c F.Glútem 1790 2650 22 0,25 0,3 0,9 0,4 0,6 g Óleo Veg. 8400 7950 - - - - - - k Fosf. Bical. - - - 23 18 18 - - v Calcário - - - 37 - - - - w Premix - - - - - - - - p Sal - - - - - - - - s DL-Metionina 5020 5750 59 - - - 99 - m Considerando tabela de composição de alimentos acima, calcular: 1. Formular um ração para poedeiras com as seguintes exigências nutricionais Nutrientes Exigências EM, kcal/kg 2750 PB, % 16 Ca, % 3,5 P, % 0,4 2. Formular uma ração para suínos em terminação com as seguintes exigências nutricionais: Nutrientes Exigências ED, kcal/kg 3000 PB, % 13 Ca, % 0,6 Ptotal, % 0,5 Premix, % 1 Óleo, % 2 3. Formular uma ração para frangos de corte inicial com as seguintes exigências nutricionais: Nutrientes Exigências EM, kcal/kg 3000 PB, % 20 Ca, % 1 Pdisp, % 0,5 Metionina, % 0,45 Premix, % 1 F.Carne, % 3 Sal, % 0,35 Algumas respostas possíveis para os três problemas propostos: Ração 1 Ração 2 Ração 3 Milho X 64,81 54,13 60,85 Farelo soja Y 21,19 6,37 29,09 Farelo trigo Z 4,22 35,07 Calcário calcítico W 8,19 1,43 0,66 Fosfato bicálcico V 1,59 0,00 1,22 Óleo de soja K 1,00 3,69 Premix P 2,00 1,00 Farinha carne C 3,00 Sal comum S 0,35 DL-Metionina M 0,14 FUNDAMENTOS EM PROGRAMAÇÃO LINEAR 1. INTRODUÇÃO A programação linear (PL) é uma técnica de planejamento que se originou a mais de 60 anos e logo depois, com o surgimento do computador, a PL encontrou um aliado natural, tendo então essa técnica um desenvolvimento acelerado. Costuma-se dizer que a PL é um tópico da ciência Pesquisa Operacional, a qual tem outros tópicos, como a Teoria das Filas, Simulação, Teoria dos Jogos, Programação Dinâmica, PERT/CPM e outros, onde a PL é uma das técnicas mais utilizadas da Pesquisa Operacional. Resumindo, pode-se concluir que a PL é uma técnica de otimização, utilizada para encontrar o lucro máximo ou o custo mínimo em situações nas quais temos diversas alternativas de escolha sujeitas a algum tipo de restrição. A programação linear tem sido aplicada em diversas áreas como: Alimentação: determina a composição dos alimentos que pessoas ou animais devem utilizar de modo que o custo seja mínimo e os mesmos forneçam os nutrientes nas quantidades adequadas e que também atendam a outros requisitos, como limitações de uso de determinados ingredientes, ou a obrigatoriedade de se incluir um mínimo de certos aditivos, por exemplo. Rotas de transporte: pode-se determinar o roteiro de transporte de veículos de carga de modo que entregue toda carga no menor tempo e no menor custo total. Manufatura: pode-se determinar a composição de produtos a serem fabricados por uma empresa, de modo que se atinja os lucros máximos, sendo respeitados as limitações ou exigências do mercado comprador e a capacidade de produção da empresa. Agricultura: pode-se prever que culturas devem ser cultivadas de modo que o lucro seja máximo e sejam respeitadas as características do solo, clima, mercado comprador, dos insumos e dos equipamentos disponíveis. Outras áreas de aplicação da PL: siderurgia, petróleo, carteira de investimento, mineração, localização industrial entre outros. 2. EXEMPLO DE OTIMIZAÇÃO PARA MAXIMO LUCRO O exemplo a seguir servirá de base para as futuras discussões sobre os fundamentos da programação linear. Consideremos uma fábrica de rádios que possui duas linhas de produção: Rádios Standard e Rádios Luxo. Características desses dois produtos que podem ser observados na Tabela 01. Tabela 01. Características dos produtos. Especificações Rádios Standard Rádios Luxo Capacidade Instalada Linha de produção, Maximo 24 pessoas 32 pessoas 40 Consumo/dia para produção 1 homem 2 homens Lucro/radio R$ 30,00 R$ 40,00 Fundamentos de Programação Linear 2 Como a fabrica possui um total de 40 operários para as duas linhas de produção, deve-se determinar o maximo lucro da empresa otimizando a produção desses dois modelos de rádios. Analisando os dados disponíveis, pode-se observar que as duas linhaspodem receber um máximo de 56 pessoas, mas a fabrica possui apenas 40 nas duas linhas. Além disso, os esquemas de produção em vigor implicam diferentes usos de mão de obra, pois o rádio standard exige menor quantidade de pessoal que o luxo, e finalmente, as lucratividades são diferentes. Esse problema é clássico e se enquadra na categoria “alocação de recursos” e além de ser bem simples, pode ser resolvido com algumas tentativas manuais. Modelos reais, obviamente são bem mais complexos e exigem o recurso de computadores com programas específicos de PL. Ao tentarmos resolver o problema por tentativa, poderíamos analisar as duas opções extremas: Produzir o maximo de modelos Luxo, visto que ele fornece maior lucro unitário. Assim, seriam alocadas 32 pessoas para linha Luxo com a produção de 16 unidades, e os demais empregados (40-32=8) produziriam 8 rádios Standard por dia. O lucro obtido seria: (16 x R$40,00) + (8 x R$ 30,00) = R$ 880,00. Numa outra tentativa, seria produzir o maximo de modelos Standard, que consome menor quantidade de mão de obra por produção unitária. Desta forma, seriam 24 pessoas na linha Standard para produzir 24 unidades de rádios, e os demais funcionários, num total de 16 (40–24) produziriam 8 rádios da linha Luxo e assim, o lucro total seria: (8 x R$ 40,00) + (24 x R$ 30,00) = R$ 1.040,00. Certamente, seguindo esse raciocínio, poderíamos analisar inúmeras opções, fazendo alocações diversas, respeitando os limites impostos para o problema, tendo como resultado diferentes lucros. Neste caso, para essas duas simulações, verifica-se que na segunda opção obtém-se o maior lucro, e se utilizarmos um programa de PL, a resposta final seria a mesma obtida pelo método da tentativa. O que este exemplo mostrou, coincidentemente, é que a escolha recaiu sobre o modelo de menor lucro unitário. Na vida pratica, quando não se recorre a ferramentas de otimização, geralmente temos a tendência de tomar decisões com base em fatores aos quais somos mais apegados, como no caso, ao modelo de maior lucro unitário. A programação linear mostra que em situações reais, de alguma complexidade, o chamado bom senso geralmente não é a ferramenta mais adequada para soluções de problemas. 3. EXEMPLO DE OTIMIZAÇÃO PARA MÍNIMO CUSTO Outra área que a PL tem sido bastante utilizada é a de formulação de rações, que se aplica também para fertilizantes, onde se pode balancear uma ração para uma determinada espécie e categoria animal, a partir de uma série de ingredientes disponíveis, satisfazendo as exigências nutricionais preconizadas por uma norma ou padrão, respeitando a determinadas restrições impostas para alguns ingredientes, pelo Fundamentos de Programação Linear 3 menor custo possível. Podemos detalhar uma ração para aves (espécie), frangos de corte (categoria) de 1 a 21 dias de idade (fase da criação) como se segue na Tabela 02. Tabela 02. Exigências nutricionais para frangos de corte de 1 a 21 dias de idade Exigências nutricionais Unidade Mínimo Maximo Quantidade % 100 100 Energia Metabolizável, (EM) kcal/kg 3000 Proteína bruta, (PB) % 21,00 Cálcio, (Ca) % 1,00 1,20 Fósforo, (P) % 0,50 Metionina, (Met) % 0,48 Lisina, (Lys) % 1,12 Por outro lado, os ingredientes disponíveis para balancear a ração possuem a composição nutricional da Tabela 03. Tabela 03. Composição nutricional e custos dos ingredientes Ingredientes EM PB Ca P Met Lys Custo Limites kcal/kg % % % % % R$/kg Max Min Milho 3440 9,00 0,04 0,27 0,17 0,23 0,21 Soja, farelo 2440 48,00 0,36 0,55 0,65 2,87 0,39 Trigo, farelo 1510 16,00 0,12 0,88 0,22 0,57 0,17 10,00 Carne, farinha 1710 41,00 11,80 5,60 0,39 1,77 0,41 2,00 Óleo de soja 8780 - - - - - 0,95 5,00 Sorgo 3170 8,25 0,03 0,25 0,16 0,21 0,18 20,00 Fosfato bicálcico - - 24,00 18,00 - - 0,75 Calcário - - 37,00 - - - 0,09 L-Lysina 3990 95,60 - - - 78,40 2,35 DL-Metionina 5020 58,70 - - 99,00 - 2,12 Premix - - - - - - 2,50 0,50 0,50 Sal comum - - - - - - 0,45 0,35 0,35 Além das informações dos custos dos ingredientes, devem-se acrescentar as possíveis restrições dos ingredientes disponíveis para o balanceamento da mistura. Alguns ingredientes, dependendo da espécie e categoria do animal, devem-se limitar ou exigir a entrada de um ou mais ingredientes na ração, e o objetivo final é obter uma mistura adequada de ingredientes a custo mínimo, atendendo todas as exigências (ou restrições) impostas ao problema. Essa formulação de custo mínimo, num exemplo relativamente pequeno, é praticamente impossível de se fazer manualmente, pois as formulações normalmente envolvem mais de 30 ingredientes e, as restrições nutricionais e alimentares também podem chegar a mais de 30. Acrescente- se a esses aspectos, que uma solução de mínimo custo tem apenas uma solução ou resposta possível. O modelo completo deste exemplo está na página 25. Fundamentos de Programação Linear 4 4. MODELOS DA PROGRAMAÇÃO LINEAR Na programação linear, tanto a função objetivo como as restrições são equações e/ou inequações ou de primeiro grau, e o resultado para a variáveis do modelo são valores reais ou contínuos. A programação linear pode ser dividida nos seguintes tópicos: Programação contínua: quando os resultados para as variáveis do modelo são valores reais ou contínuos. Programação estruturada: o modelo unitário, como uma fábrica, ou um produto ou ainda, uma unidade de tempo, se replica (multi-fábricas, multi-produtos ou multi-períodos). Programação inteira (PI): as variáveis admitem somente soluções inteiras. Programação inteira mista (PIM): pode-se ter tanto variáveis de solução inteira como contínua. Dentre esses modelos, a programação contínua é a mais utilizada e modelos recentes têm explorado os outros tipos, o que tem ocasionado um reaquecimento do uso da PL nas empresas. 5. MODELOS E RESOLUÇÃO DE PROBLEMAS SIMPLES A melhor maneira de compreender a técnica da programação linear é através da solução gráfica, além de ser uma ferramenta de resolução. Para ilustrar o modelo gráfico, consideremos o exemplo da fábrica de radio que tinha de maximizar o lucro global diário obtido com duas linhas de produção que comportam 56 operários, sendo que a empresa possui apenas 40 a serem alocados, e que as linhas de produção são: rádios standard e rádios luxo, conforme os dados da Tabela 04. Tabela 04. Especificações da linha de produção da fabrica de radio Especificações Rádios Standard Rádios Luxo Capacidade Instalada Linha de produção, maximo 24 pessoas 32 pessoas 40 Consumo/dia para produção 1 homem 2 homens Lucro/radio R$ 30,00 R$ 40,00 A estratégia da PL para a resolução de problemas de otimização é transformar as características do problema em um modelo abstrato matemático, constituído de: Uma função objetivo: para ser maximizada ou minimizada. Um conjunto de restrições: que caracteriza as exigências e as limitações do problema. Tanto a função objetivo como o conjunto de restrições faz referencias às variáveis do problema e no caso em questão, as variáveis são as quantidades a serem produzidas dos modelos de radio Standard e Luxo e a função objetivo mostra como o lucro se relaciona com as variáveis do problema e o conjunto de restrições mostra os limites para as mesmas variáveis. Fundamentos de Programação Linear 5 5.1. MODELO MATEMÁTICO Para se criar um modelo matemático de um problema é necessário: Definir as variáveis do problema; Definir a função objetivo; Definir o conjunto de restrições do problema. Tendo o problema anterior como exemplo, podem-se definir as seguintes variáveis: Variável a ser otimizada: o Lucro: lucro máximo a ser atingido. Variáveis básicas: o ST: quantidade ótima da produção diária de rádios Standard. o LX: quantidade ótima da produção diária de rádios Luxo. Função objetivo: maximizar o lucro da empresa: Max Lucro = 30 ST + 40 LX Variáveis: as variáveis ST e LX além de serem valores inteiros e positivos, estão sujeitas às restrições impostas pelo problema, que são: Capacidade máximadiária da linha Standard: visto que somente pode-se colocar 24 operários na linha Standard e como cada radio Standard requer 1 homem/dia para sua produção, a produção máxima diária desta linha é de 24 rádios. Assim, pode-se escrever: ST 24 Capacidade máxima diária da linha Luxo: nesta linha de produção pode-se alocar somente 32 pessoas e como cada radio Luxo gasta 2 homens/dia para sua produção, a produção máxima desta linha é de 16 rádios. Desta maneira, temos: LX 16 Disponibilidade máxima de operários: como a fabrica dispõem somente 40 operários, o esquema ótimo de produção deve otimizar a mão de obra dentro deste limite. A linha Standard produzirá ST rádios por dia e como cada radio gasta 1 homem/dia, vai se consumir 1 x ST operários. O mesmo raciocínio vale para a linha LX, que gasta 2 homens/dia e vai consumir 2 x LX operários. Pode-se escrever da seguinte forma esta restrição: 1 ST + 2 LX 40 Fundamentos de Programação Linear 6 O modelo matemático final é o seguinte: Maximizar: Lucro = 30 ST + 40 LX Sujeito a: ST 24 LX 16 1 ST + 2 LX40 5.2. MODELO GRÁFICO A geometria analítica representa um ponto gráfico por X,Y e nas Figuras 1a e 1b, cada ponto do segmento de reta traçado representa um par de produções LX, ST, que utiliza exatamente 40 operários. Figura 1 a. Equação ST + 2 LX = 40. Figura 1 b. Inequação ST + 2 LX 40. Visto que a inequação ST + 2 LX 40 prevê utilizar até 40, pode-se concluir que a região positiva abaixo do segmento de reta traçado contém todos os possíveis pontos, ou todos os pares de produção LX, ST, que inclusive com os pontos do segmento de reta, atendem corretamente a inequação. Com o mesmo raciocínio, nas Figuras 2a e 2b temos representado as duas restrições ST 24 e LX 16, que significa no primeiro gráfico da Figura 2a, o limite máximo de produção do modelo ST e na Figura 2b, o limite máximo do modelo LX. Fundamentos de Programação Linear 7 Figura 2 a. Restrições ST 24 Figura 2 b. Restrição LX 16 Colocando todas restrições num único gráfico, bem como a função objetivo, o gráfico toma a forma da Figura 3, onde e as restrições delimitam a área das possíveis soluções do problema (região convexa simplex). Visualmente pode-se observar que a reta da função objetivo, que representa o maior lucro é a linha que intercepta a restrição de disponibilidade de funcionários (1 ST + 2 LX 40) com a capacidade máxima da produção do modelo Standard (ST 24). Fundamentos de Programação Linear 8 Figura 3. Região simplex de solução ótima do problema. . Plotar a função objetivo significa encontrar o ponto da região simplex que fornece o maior valor para o lucro, obedecendo às restrições impostas. Nesse ponto vai passar uma única reta (da função objetivo) e nesse caso a solução ótima é ST = 8 e LX = 24 unidades, com um lucro de R$ 1.040,00. Nesses tipos de problemas de PL, a solução sempre estará em um vértice, havendo uma única solução. Eventualmente a solução poderá coincidir com um dos segmentos de reta de alguma restrição, em que qualquer ponto de segmento é uma solução ótima. Então nesses casos o problema apresenta infinitas soluções. A inclinação da família de retas paralelas da função objetivo é definida pelo coeficiente angular, e no caso a expressão da função objetivo é a seguinte: Lucro = 30 ST + 40 LX 40 Lucro ST 4 3 -LX Então no diedro (ST, LX) esta equação representa uma família de retas de parâmetro Lucro/40, ou seja, para cada valor de Lucro temos uma reta diferente. Ademais, todas as retas são paralelas entre si, pois possuem o mesmo coeficiente angular = – ¾. Por isso a inclinação da família de retas paralelas da função objetivo, definida pelo coeficiente angular = - 3/4 é fundamental para determinar qual será o ponto ótimo. Esse coeficiente angular foi obtido efetuando a divisão de 30/40, ou seja, o coeficiente angular representa a relação entre os lucros dos dois Fundamentos de Programação Linear 9 produtos. Visto isso, é de se esperar que caso se altere algum dos dois valores do lucro unitário, a solução pode ser alterada. Na Figura 04 temos algumas retas de parâmetro Lucro/40, ou seja, para cada valor de Lucro tem-se uma reta diferente. Pode-se observar que todas as retas são paralelas entre si, pois possuem mesmo coeficiente angular α= -3/4. Todas as retas vistas na Figura 04 foram obtidas dando-se um valor diferente para o Lucro. Pode-se concluir que qualquer ponto de uma mesma reta possui pontos ou pares de produção ST, LX que fornecem o mesmo lucro. Este conjunto de retas, neste caso, pode ser denominadas de retas iso-lucro. Figura 04. Conjunto ou família de retas. Como foi visto, o objetivo deste exemplo é encontrar o ponto da região simplex que fornece o maior valor para o lucro. Pode-se acrescentar que por este vai passar uma única reta da família de retas do lucro. Então a questão se resume em encontrar qual é a reta do conjunto que produz o maior lucro, respeitando todas as restrições impostas ao problema. Neste exemplo de maximização, basta encontrar a reta mais distante da origem e tenha pelo menos um ponto dentro da região de soluções possíveis. Traça-se uma reta qualquer da família de retas e tira-se uma paralela a ela o mais distante da origem e com pelo menos um ponto dentro da região de soluções possíveis. Utilizando-se este esquema, tem-se a solução ótima da Figura 05. Fundamentos de Programação Linear 10 Figura 05. Solução ótima do problema. 6. USO DO COMPUTADOR EM PROBLEMAS DE PROGRAMAÇÃO LINEAR O método gráfico é uma excelente ferramenta de ensino, pois nos dá uma visão, uma fotografia do problema, mas é praticamente impossível solucionar sistemas com muitas variáveis e restrições. Problemas reais são resolvidos no computador utilizando softwares que se baseiam no algoritmo Método Simplex ou simplesmente, Método Simplex, que foi revisado e desenvolvido por George Dantzig em 1947, nos quais cada linha relacionava-se com uma restrição e cada coluna com uma variável. Existem atualmente centenas de programas para PL e entre os diversos disponíveis, os listados abaixo na Tabela 05 são os mais utilizados em todo mundo. Tabela 05. Relação dos principais softwares de programação linear Softwares Fabricante Capacidade Linhas Colunas Lindo Lindo 32.000 100.000 Lingo Lindo MPSX IBM 16 milhões 2 bilhões CPLEX Optimum 50.000 100.000 OSL IBM 16 milhões 2 bilhões Excel - Solver Microsoft POM H.J.Weiss Fundamentos de Programação Linear 11 7. USO DO LINDO EM PROGRAMAÇÃO LINEAR 7.1. INTRODUÇÃO O LINDO (Linear, Interactive and Discrete Optmizer) é um software desenvolvido pela Lindo System Inc. de Chicago, Illinois, EUA, para a solução de modelos de programação linear, quadrática ou inteira. É um programa que roda no ambiente Windows e está disponível em várias versões, como pode ser visto na Tabela 06. Tabela 06. Diferentes versões do LINDO Limites máximos Versão Número de linhas Número de colunas Demonstração 150 300 Super 500 1.000 Hiper 2.000 4.000 Industrial 8.000 16.000 Extended 32.000 100.000 7.2. EXEMPLO DE UTILIZAÇÃO DO PROGRAMA LINDO Para utilização deste programa podemos utilizar o exemplo já exposto da fábrica de radio, onde o modelo matemático era o seguinte: Maximizar: Lucro = 30 ST + 40 LX Sujeito a: ST 24 LX 16 1 ST + 2 LX 40 Figura 04. Entrada de dados no LINDO Fundamentos de Programação Linear 12 Para acionar o software Lindo basta clicar no ícone correspondente no Windows e a primeira tela fornecida tem o formato da Figura 04 e para entrar com os dados basta ir digitando-os conforme o exemplo da figura. Pode-se observar que para designar uma restrição com a condição de maior ou igual a, basta colocar o sinal >, e o sinal de < para uma restrição menor ou igual a. Outras informações com respeito à entrada dos dados estão na Tabela 07. Tabela 07. Significado de cada entrada de dados no editor do programa LINDO Linha Significado ! Exemplo da Fabrica de Radio Trata-se de uma linha contendo um comentário ouinformação, pois se inicia com ! Max Comando que solicita maximizar uma função e a outra opção seria Min. ST Abreviação de Subject to, que significa Sujeito a . Informa que a seguir tem-se o conjunto de restrições. End Informa o fim de entrada de dados. (É optativo). Para salvar os dados de um arquivo, clique no FILE do menu principal e outra vez, clique no SAVE AS. Selecione um diretório e escolha um nome adequado, e principalmente, mantenha a extensão LTX. Por exemplo, RADIO.LTX e clique OK para finalizar. (Atenção retire o asteristico que aparece antes da extensão: *.LTX e coloque o nome do arquivo). Para resolver o problema de programação linear, clique em SOLVE no menu principal ou no ícone . Após clicar esse ícone aparece uma tela perguntando se deseja efetuar analise de sensitividade (Do Range (sensitivity) analysis?). No momento responda negativamente e daí aparecerá a Figura 05, que contém um resumo do resultado alcançado ou informações de alerta caso o modelo apresente algum problema. Após analisá-lo, clique CLOSE. Fundamentos de Programação Linear 13 Figura 05. Tela do LINDO após a execução do problema. Após a etapa de execução do problema, o LINDO apresenta de maneira superposta, tanto a tela de entrada de dados como a tela de resultados. Para ativar uma ou outra basta clicar em qualquer ponto da tela desejada. Eventualmente quando uma das telas estiver ocupando todo espaço disponível, somente será mostrada uma delas. Para visualizar a outra vá ao menu principal na janela Window e clique em Send To Back. Existem duas opções para se visualizar os resultados: em cascata, uma em cima da outra (Cascade) e uma ao lado da outra (Tile), como pode ser visto nas figuras abaixo. Figura 06. Visualização dos resultados em modo lado a lado (Tile) Fundamentos de Programação Linear 14 Figura 07. Visualização dos resultados no modo cascata, um em cima do outro (Cascade). Os resultados de um modelo sem erros podem ser visto na Figura 08. Figura 08. Resultados do problema. Para as informações contidas na Figura 08, temos as seguintes interpretações: LP OPTIMUM FOUND AT STEP Fundamentos de Programação Linear 15 o Significa que o algoritmo simplex utilizado pelo programa encontrou a solução ótima no primeiro passo (um passo ou step corresponde a um vértice do método simplex). LUCRO) 1040.000 o Indica o valor ótimo encontrado para a função objetivo. VARIABLE VALUE REDUCED COST ST 24.000000 0.000000 LX 8.000000 0.000000 o Temos aqui uma pequena tabela que apresenta os valores ótimos das variáveis básicas, onde o valor das quantidades de ST e LX a serem produzidas são 24 e 8, respectivamente. Quanto à coluna Reduced Cost, ela pode ter duas interpretações válidas. Na primeira interpretação, o Custo Reduzido de uma variável com a quantidade pela qual o coeficiente da função objetivo da variável deveria ser aumentado de modo que sua solução seja diferente de zero. Portanto todas as variáveis cujas soluções já são diferentes de zero, possuem um valor zero para o Custo Reduzido, que é o caso do exemplo. Numa segunda interpretação, o Custo Reduzido de variável como penalidade que se deve pagar, no caso, redução do lucro, para introduzir uma unidade daquela variável na solução. Deve-se acrescentar que o Custo Reduzido somente é válido em uma determinada faixa de valores. ROW SLACK OR SURPLUS DUAL PRICES MAXST) 0.000000 10.000000 MAXLX 8.000000 0.000000 CAPOPER) 0.000000 20.000000 Aqui também se tem uma tabela que apresenta os resultados das linhas no problema que será analisado item por item. o Slack = 0.000000: significa a folga, ou seja, que se atingiu o limite da restrição. Quando a solução é ótima, como para o produto Standard que foi ST = 24, nesse caso se atingiu o limite da restrição MAXST 24. No caso da restrição MAXLX 16, tem-se um Slack = 8 e a solução ótima da variável LX foi igual a 8 (LX = 8), portanto temos uma folga (Slack = 16 - 8 = 8). o Dual Price = 10.000000: esse valor representa o aumento ou diminuição na função objetivo se aumentarmos ou diminuirmos de 1 unidade o limite da restrição. Portanto, se a restrição ST 24 for aumentada para 25 (ST 25) tem-se nova solução na qual o lucro será aumentado de R$ 10,00 e, ao contrario, diminuirmos para 23 (ST 23), tem-se nova solução e o lucro diminuirá em R$ 10,00. Para imprimir os resultados de um modelo, tendo a tela de resultados ativada, basta ir ao menu principal, em File e clique Print, ou simplesmente acione o ícone . Observe que é possível digitar no texto da tela de resultados, possibilitando a inclusão de informações, além de marcar e copiar toda área que Fundamentos de Programação Linear 16 se desejar, para depois colar o conteúdo num editor de texto com mais recursos, como o WinWord, WorPad ou no Bloco de Notas do Windows. Para se fazer alterações, como modificar os valores das restrições, ou incluir novas variáveis e/ou restrições, basta acessar na tela de edição, fazer as modificações desejadas, gravar novamente, mas Salvar como, alterando o nome original para se manter os dois problemas (o original e o alterado com o novo nome) e executar o novo problema. Um detalhe importante nesse caso, após a solução é que o LINDO vai colocar a nova solução na tela de resultados logo após a solução anterior, ou seja, tem as duas soluções na mesma tela de resultados. Isso pode ser inconveniente, pois pode confundir. Se desejarmos apagar a solução anterior, estando na tela de resultados basta clicar no ícone . Após resolver um problema o LINDO pode efetuar uma análise de sensitividade, basta responder YES após a pergunta Do Range (Sensitivity) Analisys? No momento em que esta tela surgir durante uma solicitação de resultados (Solver) ou a qualquer momento, efetue essa analise através da tela de entrada de dados e no Menu Principal, acione Reports e clique Range. O relatório de sensitividade tem o formato mostrado na Figura 09. Figura 09. Análise de sensitividade. RANGES IN WHICH THE BASIS IS UNCHANGED: faixas de valores para os quais a base fica inalterada. Tem-se na análise de sensitividade um estudo para os coeficientes das variáveis da função objetivo e dos limites das restrições. o OBJ COEFFICIENT RANGES: neste grupo são analisados os coeficientes da função objetivo, no caso LUCRO = 30ST + 40 LX. Considerando a linha para ST, temos a informação que o coeficiente, isto é, o custo unitário de ST encontrado é de R$ 30,00 e, que este coeficiente pode variar entre 30,00 – 10,00 = R$ 20,00 e infinito, que manterá a mesma solução, ou seja: ST = 24 e LS = 8. Para a linha ou restrição LX, os limites estão entre R$ 0,00 e R$ 40,00. Fundamentos de Programação Linear 17 o RIGHTHAND SIDE RANGES: neste grupo tem-se uma análise dos limites das restrições, também conhecida como RHS (Right Hand Side). Na linha CAPOPER, cuja inequação é ST + 2 LX 40, tem-se: CURRENT RHS = 40; ALLOWABLE INCREASE = 16. Neste caso significa que se pode aumentar o limite em 40 + 16 = 56; ALLOWABLE DECREASE = 16, e da mesma forma anterior, significa que se pode diminuir o limite em 40 – 16 = 24. Esses limites indicam que mesmo que se alterem as restrições, dentro dos limites encontrados, vamos obter outro valor para a função objetivo, com os novos valores das variáveis, mas a base não será alterada. 7.3. TIPOS DE SOLUÇÃO DO PROGRAMA LINDO Ao executarmos um modelo de programação linear podemos deparar com uma das situações: Problema viável Problema mal definido (unbounded) Problema não solúvel (infeaseable) O primeiro caso (Solúvel ou viável) é o desejado e sobre esse caso é discutido neste capitulo. Sobre os outros dois últimos temos: PROBLEMA MAL DEFINIDO (unbounded): nesta categoria temos os modelos nos quais a função objetivo pode atingir valores infinitos ou zero, incompatível com o resultado desejado. Um exemplo é um modelo de minimização em que solicitamos, por engano, uma maximização ou vice-versa, ou ainda, quando num modelo de maximização, asrestrições não formam uma região simplex (convexa), ou seja, forma uma região aberta. Os softwares disponíveis, geralmente, fornecem informações de que o modelo está definido de uma forma incompleta, no caso de maximização e, no caso de minimização, fornecem como resultado, zero para todas as variáveis. PROBLEMA NÃO SOLÚVEL (infeaseable): um problema é dito como não solúvel ou inviável quando o conjunto de restrições é contraditório em si mesmo, como no modelo abaixo: A + B ≤1 A + B ≥2 Em modelos reais e de grande porte, descobrir a causa desta contradição pode ser uma tarefa difícil e é preciso muita prática e conhecimento do que se está fazendo (modelando) para encontrar alguma pista da(s) possível(eis) contradição(ões). 7.4. INTERPRETAÇÃO E ANÁLISE DOS RESULTADOS DE UM PROGRAMA DE PROGRAMAÇÃO LINEAR Ao montarmos um modelo de PL não basta apenas encontrar o resultado, mas interpretá-lo adequadamente e verificar o alcance dos dados obtidos. Fundamentos de Programação Linear 18 Com base nos dados do problema do fabricante de rádios, pode-se aprofundar numa abordagem, simulando alterações de alguns dados do problema. Analisando novamente o problema exemplo mostrado na Figura 06, pode-se efetuar uma análise de como seria modificada a solução pela alteração de alguns dados do problema. Essa técnica é chamada de Análise de Sensitividade (Sensitivity Analysis). No exemplo, que é muito simples, essa análise pode ser mais bem entendida com o auxílio de gráficos. Os dados que constituem o modelo e que será objeto da análise de sensitividade são o lucro unitário de cada modelo (ST e LX) e os limites de cada restrição. O modelo é o seguinte: Maximizar: Lucro = 30 ST + 40 LX Sujeito a: ST ≤24 LX ≤24 ST + 2 LX ≤40 Figura 06. Ilustração gráfica do modelo da fábrica de rádios. O que ocorreria se houvesse uma alteração na lucratividade de um dos componentes? No exemplo, a equação do lucro é: Lucro = 30 ST + 40 LX. Se variássemos o lucro unitário dos componentes, por exemplo, caso o lucro do produto Standard não fosse os R$ 30,00 como o proposto na equação, mas se localizasse num intervalo entre R$ 25,00 e R$ 35,00. Para relembrar, podemos escrever a equação do lucro como: Fundamentos de Programação Linear 19 40 Lucro ST 4 3 -LX Onde o coeficiente angular é = -3/4 e foi obtido da seguinte forma: = - (Lucro unitário do produto Standard) / (Lucro do produto Luxo). Caso este coeficiente assuma novo valor, tem-se uma outra família de retas paralelas entre si e a solução pode ser alterada. Consideremos na Figura 07 que a solução está no ponto P0. Para qual valor do coeficiente angular a solução ótima muda quando se varia um dos coeficientes, mantendo os demais fixos? Alterando o lucro unitário do produto ST e tendo o lucro unitário do produto LX fixo: neste caso a Figura 06 mostra duas opções para a reta do lucro, mantendo o lucro unitário do LX em R$ 40,00. O lucro unitário de ST passaria de R$ 30,00 para R$ 25,00, resultando um novo coeficiente angular para a reta (ou função objetivo) onde = -25/40 = - 0,625 (portanto quando o lucro unitário do produto ST decresce o coeficiente angular aumenta). O novo problema, que está sendo otimizado ficaria: Maximizar: Lucro = 25 ST + 40 LX Sujeito a: ST 24 LX 16 ST + 2 LX 40 A solução do problema será: ST = 24; LX = 8 e o Lucro = R$ 920,00. Figura 07. Comportamento da reta da função objetivo quando se altera o lucro unitário do produto ST. Fundamentos de Programação Linear 20 Com esse resultado pode-se concluir que a solução continuou no mesmo ponto e convenciona-se dizer que a solução não se alterou, embora o valor do lucro tenha se alterado. Caso o lucro do produto ST continue abaixando, a solução pode ser transferida para outro ponto, P1. Se o lucro do produto ST for de R$ 15,00 a nova solução será: ST = 8; LX = 16 e o Lucro = R$ 760,00, e pode ser visualizada na Figura 08. Figura 08. Função objetivo quando se altera o lucro unitário do produto ST para R$ 15,00. Generalizando, quando o novo coeficiente angular da reta do lucro for igual à do segmento P0P1, qualquer ponto deste segmento será uma solução ótima, e um pouco acima o ponto P1 passa a ser a solução ótima. A inclinação do segmento P0P1 é o seguinte: 50,0 8-24 8-16 - Portanto, se -0,50 ou 0,50, a solução passa para o ponto P1. Visto que: = - (Lucro unitário do produto ST) / (Lucro unitário do produto SX), tem-se: Lucro unitário do produto ST = (Lucro unitário do produto LX) x (0,50) ou Lucro unitário do produto ST = 0,50 x 40 = 20 Vê-se que se o lucro do produto ST ficar abaixo de R$ 20,00 (mantendo-se o lucro unitário do produto LX em R$ 40,00), a solução passa para o ponto P1. Quando o coeficiente angular da reta do lucro modificado for igual à do segmento P0P2, qualquer ponto deste segmento será uma solução ótima e, um valor abaixo disto, o ponto P2 passa ser a solução ótima. Note que a inclinação do segmento P0P2 é infinita e, portanto, se = , a solução passa para o ponto P2, uma vez que: = (Lucro unitário do produto ST) / (Lucro unitário do produto LX), e temos que: Lucro unitário do produto LX (Lucro unitário do produto LX) x (), ou Fundamentos de Programação Linear 21 Lucro unitário do produto ST Temos aqui um caso particular: para qualquer valor alto do produto ST, sempre restará alguma mão de obra excedente, visto que a linha LX não consegue absorver todos operários em sua linha de produção e que poderá ser utilizado para a linha dos produtos ST e poderão ser vendidos a qualquer preço. Trata-se de uma conclusão matemática a ser validada pela empresa, pois certamente o mercado não comprará os produtos por preço exagerado. Podes-se concluir que, mantido constante o lucro unitário do produto LX em R$ 40,00, se o lucro do produto ST ficar entre R$ 20,00 e a solução continua sendo o ponto P0, para o qual o ST = 24 e o LX = 8. De maneira análoga pode-se demonstrar que, mantido constante o lucro unitário do produto ST em R$ 30,00, caso o lucro do produto LX fique entre R$ 0,00 e R$ 60,00, a solução continua no ponto P0, para o qual a produção de ST = 24 e LX = 8. Com lucro unitário igual a R$ 0,00, a solução passa para o ponto P2 e com lucro unitário maior que R$ 60,00 passa para o ponto P1 e, se a lucratividade do produto ST oscilar entre R$ 25,00 e R$ 35,00, a solução não será alterada. Podem-se melhor visualizar os dados na Tabela 08. Tabela 08. Análise de sensitividade para os custos unitários. Faixa de Estabilidade da solução Produto Lucro unitário atual Mínima Máxima ST R$ 30,00 R$ 20,00 LX R$ 40,00 R$ 0,00 R$ 60,00 Outra análise importante é com respeito aos limites das restrições do problema, que envolve conhecer o que ocorre com a função objetivo, quer caso se altere o valor de cada limite isoladamente, quer se faça uma alteração unitária no valor do limite. Inicialmente considere-se a restrição da capacidade máxima do produto LX ≤16. Observe pela Figura 09, que se o limite desta restrição tiver uma pequena oscilação, por exemplo, entre 15 e 17, nada ocorrerá com a solução ótima. Todavia, se o limite destra restrição cair para abaixo de 8 a solução será alterada, tendo um novo ponto ótimo definido pela interseção do segmento ST = 24 com o novo segmento para a restrição da capacidade máxima do produto LX. Fundamentos de Programação Linear 22 Figura 09. Alterando o limite da restrição LX ≤16 Quanto a restrição ST ≤24, a situação é outra, visto que a solução do problema caiu no vértice formado pela interseção de ST = 24 com restrição de limite de operários ST + 2LX = 40. Assim, para qualquer alteração no limite, que implica em uma nova reta de restrição, tem-se um novo ponto de solução. Se aumentarmos de 1 o limite desta restrição, ela se transforma em ST ≤25 e a solução passa a ser: ST = 25, LX = 7,50 e o Lucro = R$ 1.050,00. Embora o lucro tenha aumentado em R$ 10,00, deve-se interpretar o valor fracionário para a produção LX = 7,5, comosignificando um produto inacabado ou incompleto ao final do dia. Observe-se na Figura 10 que pode-se aumentar esse limite até ST ≤40, quando a outra restrição, de pessoal, se encontra com o eixo das ordenadas e, a partir daí, um aumento no limite do produto ST em nada altera a solução ótima. Se diminuirmos de 1 o limite da restrição ST, ela se transforma em ST ≤23 e a nova solução passa a ser: ST = 23; LX = 8,5 e Lucro = R$ 1.030,00, portanto com uma diminuição no lucro em R$ 10,00. Fundamentos de Programação Linear 23 Figura 10. Alterando o limite da restrição ST ≤24 Podemos observar que o valor absoluto do impacto no lucro é o mesmo, ou seja, R$ 10,00, e esta é uma característica comum aos problemas de programação linear, ou seja, ao se aumentar ou diminuir uma unidade numa restrição, o impacto na função objetivo terá o mesmo valor, para mais ou para menos. Observando na Figura 10, verificamos que se pode ir diminuindo este limite até termos ST = 8, pois neste ponto tem-se a interferência de outra restrição, LX = 16, fazendo com que o raciocínio anterior não seja mais válido. Por ultimo, vamos analisar a restrição da quantidade de operários: ST + 2 LX ≤40, que também é uma das retas que participa do vértice da solução. Como se pode ver na Figura 11, se diminuirmos de 1 unidade o limite desta restrição ela se transforma em ST + 2 LX ≤39 e a solução passa a ser: ST = 24; LX = 7,5 e o Lucro = R$ 1.020,00. Portanto o lucro diminuiu em R$ 20,00. Podemos deduzir da Figura 11 que as diminuições sucessivas poderão continuar até ST + 2 LX = 12, visto que então esta reta encontra o ponto (24,0) onde está o eixo das ordenadas e a partir daí, o raciocínio não é mais válido. Se aumentarmos de 1 unidade o limite desta restrição, ST + 2 LX ≤41, a solução encontrada é a seguinte: ST = 24; LX = 8,5 o Lucro = R$ 1.060,00, com um aumento no lucro de R$ 20,00. Pode-se deduzir pela Figura 11 que os aumentos sucessivos poderão continuar até ST + 2 LX ≤56, visto que então esta reta encontra o ponto (24,16) onde também se encontram as retas ST = 24 e LX = 16 e a partir daí o raciocínio não é mais válido. Fundamentos de Programação Linear 24 Figura 11. Alterando a restrição ST + LX ≤40 Podemos resumir na Tabela 09 as conclusões destas análises de sensitividade para os limites das restrições. Tabela 09. Comportamento da função objetivo para a variação de 1 unidade nas restrições. Restrição e Limite Aumento de 1 unidade Diminuição de 1 unidade Aumento no Lucro Validade Diminuição no Lucro Validade ST 24 R$ 10,00 ST = 40 R$ 10,00 ST = 8 LX 16 R$ 0,00 LX = R$ 0,00 LX = 8 ST + 2 LX 40 R$ 20,00 ST + 2 LX = 56 R$ 20,00 ST + 2 LX = 12 Na Tabela 09 vemos que ocorrem variações no lucro se efetuarmos alterações nos valores dos limites das restrições. Chama-se de Preço Marginal (ou Shadow Price) aos valores da alteração no lucro para variações unitárias nas restrições. Este item é mostrado pelo software LINDO no relatório Solution, coluna Dual Prices e no relatório Sensitivity Analisys, seção Righthand Side Ranges. Os dois relatórios (Figuras 12 e 13) que contém valores de preços marginais são bastante valiosos ao se efetuarem decisões de investimentos. No exemplo discutido, nota-se claramente que é vantajoso aumentar a capacidade máxima de produção do produto ST, e o mesmo não ocorre com o produto LX. Os relatórios emitidos pelos programas de programação linear fornecem mais uma informação muito importante para as decisões de investimento: o custo reduzido (Reduced Cost). Os valores da coluna Reduced Cost da Figura 12 pode ser interpretado de duas maneiras: primeiramente pode-se interpretar que o Custo Reduzido de uma variável que não entrou na solução como a quantidade pela qual o coeficiente da função objetivo da variável deveria ser aumentado de modo a ela passe a participar da solução (para o caso de maximização). Portanto, todas as variáveis cujos valores na solução já são diferentes de zero possuem Fundamentos de Programação Linear 25 um valor zero para o Custo Reduzido, como neste exemplo. Em segundo lugar, pode-se interpretar o Custo Reduzido de uma variável como a penalidade que se deve pagar, neste exemplo a redução do lucro, para introduzir uma unidade daquela variável na solução. Figura 12. Relatório da função objetivo (Solutions). Para as variáveis que não participam da restrição, o Custo Reduzido nos fornece quais deveriam ser seus respectivos custos unitários, no caso os lucros unitários, para que elas participassem da solução. Num caso de formulação de ração, a matéria prima farinha de peixe pode não ter participado da solução (está fora da base) porque seu custo está alto e o preço reduzido desta variável vai nos informar qual seria o preço vantajoso para que a farinha de peixe viesse fazer parte da solução (entrar na base). Figura 13. Análise de sensitividade. Fundamentos de Programação Linear 26 8. MODELO MATEMÁTICO DO EXEMPLO DE FORMULAÇÃO DE RAÇÃO EXPOSTO NA PÁGINA 03. Min Custo) 0.21 Milho + 0.39FSoja + 0.17Ftrigo + 0.41 Fcarne + 0.95 Oleo + 0.18 Sorgo + 0.75 Fosbical + 0.09 Calcario + 2.35 LLys + 2.12 DLMet + 2.50 Premix + 0.45 Sal Subject To Peso) Milho + FSoja + Ftrigo + Fcarne + Óleo + Sorgo + Fosbical + Calcário + LLys + DLMet + Premix + Sal = 100 EM) 34.4Milho+24.4FSoja+15.1Ftrigo+17.1Fcarne+87.8Oleo+31.7Sorgo+39.9LLys+50.2DLMet > 3000 PB) 0.09Milho+0.48FSoja+0.16Ftrigo+0.41Fcarne+0.0825Sorgo+0.956LLys+0.587DLMet > 21 CaMin) 0.0004Milho + 0.0036FSoja + 0.0012 Ftrigo + 0.118 Fcarne + 0.0003Sorgo + 0.24 Fosbical + 0.37 Calcario > 1 CaMax) 0.0004 Milho + 0.0036 FSoja + 0.0012 Ftrigo + 0.118 Fcarne + 0.0003 Sorgo + 0.24 Fosbical + 0.37 Calcario < 1.2 P) 0.0027 Milho + 0.0055 FSoja + 0.0088 Ftrigo + 0.056 Fcarne + 0.0025 Sorgo + 0.18 Fosbical > 0.50 Met) 0.0017Milho + 0.0065 FSoja + 0.0022 Ftrigo + 0.0039 Fcarne + 0.0016Sorgo + 0.99 DLMet > 0.48 Lys) 0.0023 Milho + 0.0287FSoja + 0.0057Ftrigo + 0.0177Fcarne + 0.0021 Sorgo + 0.784 LLys > 1.12 MaxTrigo) Ftrigo < 10 MaxOleo) Oleo < 5 MaxSorgo) Sorgo < 20 MinCarne) Fcarne > 2 QuaSal) Sal = 0.35 QuaPrem) Premix = 0.50 ! OBSERVAÇÕES IMPORTANTES: Para editar no LINDO, o nome das variáveis, como Milho, Ftrigo, Óleo por exemplo, bem como das restrições, como Peso, EM, PB por exemplo, devem ter no maximo 8 (oito) caracteres e não devem ser separadas por espaço: MaxCarne e não Max Carne. Outro detalhe importantíssimo, é que os nomes das variáveis, que são repetidos nas diversas restrições (linhas) devem ter exatamente a mesma grafia e também, como foi frisado, não podem ser separadas por espaço ou sinal de hífen, como DLMet e não DL Met ou DL-Met. Fundamentos de Programação Linear 27 8.1. RELATÓRIO DO MODELO MATEMÁTICO PARA FORMULAÇÃO DE RAÇÃO PARA FRANGOS DE CORTE LP OPTIMUM FOUND AT STEP 0 OBJECTIVE FUNCTION VALUE CUSTO) 28.07601 Tabela 10. Relatório da análise das variáveis e das restrições do problema. VARIABLE Value Reduced Cost ROW Slack or Surplus Dual Prices MILHO 55.256462 0.000000 PESO) 0.000000 0.169048 FSOJA 28.545303 0.000000 EM) 0.000000 -0.009314 FTRIGO 0.000000 0.086003 PB) 0.000000 -0.523396 FCARNE 2.984993 0.000000 CAMIN) 0.000000 -0.700130 OLEO 0.000000 0.301280 CAMAX) 0.200000 0.000000 SORGO 10.659505 0.000000 P) 0.000000 -1.418236 FOSBICAL 0.000000 0.495734 MET) 0.000000 -1.529548 CALCARIO 1.404614 0.000000 LYS) 0.000000 -2.100834 LLYS 0.125562 0.000000 MAXTRIGO) 10.000000 0.000000 DLMET 0.173558 0.000000 MAXOLEO) 5.000000 0.000000 PREMIX 0.500000 0.000000 MAXSORGO) 9.340495 0.000000 SAL 0.350000 0.000000 MINCARNE) 0.984993 0.000000 QUASAL) 0.000000 -0.619048 QUAPRE) 0.000000 -2.669048 Análise de sensitividade Tabela 11. Relatório da análise de sensitividade das variáveis e das restrições do problema. VARIABLE CURRENT COEF ALLOWABLE INCREASE ALLOWABEL DECREASE ROW CURRENT RHS ALLOWABLE INCREASE ALLOWBLE DECREASE MILHO 0.210000 0.015702 0.015980 PESO) 100.000000 0.738201 0.842445 FSOJA 0.390000 0.081094 0.157789 EM) 3000.00000 30.91532127.089851 FTRIGO 0.170000 INFINITY 0.086003 PB) 21.000000 1.097511 0.961704 FCARNE 0.440000 0.141637 0.072908 CAMIN) 1.000000 0.200000 0.273134 OLEO 0.950000 INFINITY 0.301280 CAMAX) 1.200000 INFINITY 0.200000 SORGO 0.180000 0.014087 0.017099 P) 0.500000 0.232823 0.050636 FOSBICAL 0.750000 INFINITY 0.495734 MET) 0.480000 0.892839 0.170307 CALCARIO 0.090000 0.235081 0.259945 LYS) 1.120000 0.704846 0.090925 LLYS 2.350000 5.691837 1.521299 MAXTRIGO) 10.000000 INFINITY 10.000000 DLMET 2,120000 37.193504 1.500898 MAXOLEO) 5.000000 INFINITY 5.000000 PREMIX 2.500000 INFINITY INFINITY MAXSORGO) 20.000000 INFINITY 9.340495 SAL 0.450000 INFINITY INFINITY MINCARNE) 2.000000 0.984993 INFINITY QUASAL) 0.350000 0.842445 0.350000 QUAPRE) 0.500000 0.842445 0.500000 Fundamentos de Programação Linear 28 9. MATRIZ MPS - MATHEMATICAL PROGRAMMING SYSTEM 9.1. INTRODUÇÃO Os modelos de programação linear foram apresentados na forma de um conjunto de equações e inequações. Uma outra forma de representar um problema de PL é pelo uso da chamada Representação Matricial MPS (Mathematical Programming System) que será chamada de matriz MPS. No exemplo da fábrica de rádio temos o modelo de equações/inequações: Maximizar: Lucro = 30 ST + 40 LX Sujeito a: ST 24 LX 16 1 x ST + 2 x LX 40 O modelo MPS do exemplo acima pode ser estruturado e representado conforme a Tabela 12. Tabela 12. Modelo de uma matriz MPS. Variáveis ST LX RHS Mínimo Máximo Lucro 30 40 Produção ST 1 24 Produção LX 1 16 Pessoal 1 2 40 Consideremos a representação acima com sendo formada por três colunas, onde a primeira coluna contém os nomes das equações/inequações do problema; a segunda coluna (espaço central) têm-se os coeficientes das equações/inequações e na coluna da direita, têm-se os limites das equações/inequações, ou RHS (Right Hand Side). 9.2. ESTRUTURAÇÃO DO MODELO MPS NA FORMULAÇÃO DE RAÇÕES Para trabalhar com esta representação, consideremos um problema de formulação de ração, em que se deseja balancear 100 kg de ração de mínimo custo para frango de corte inicial, com uma série de ingredientes e que esta mistura atenda as exigências nutricionais preconizadas por Rostagno et al (2000) e que os limites máximos e mínimos dos ingredientes ficam a critério do nutricionista. Os dados dos ingredientes são apresentados na Tabela 13. Fundamentos de Programação Linear 29 Tabela 13. Composição nutricional e custos dos ingredientes Ingredientes EM PB Ca P Met Lys Custo Limites kcal/kg % % % % % R$/kg Max Min Milho 3440 9,00 0,04 0,27 0,17 0,23 0,21 Soja, farelo 2440 48,00 0,36 0,55 0,65 2,87 0,39 Trigo, farelo 1510 16,00 0,12 0,88 0,22 0,57 0,17 10,00 Óleo de soja 8780 - - - - - 0,95 5,00 Fosfato bicálcico - - 24,00 18,00 - - 0,75 Calcário - - 37,00 - - - 0,09 L-Lysina 3990 95,60 - - - 78,40 2,35 DL-Metionina 5020 58,70 - - 99,00 - 2,12 Premix - - - - - - 2,50 0,50 0,50 As exigências nutricionais estão na Tabela 14. Tabela 14. Exigências nutricionais para frangos de corte de 1 a 21 dias de idade Exigências nutricionais Unidade Mínimo Maximo Quantidade % 100 100 Energia Metabolizável, (EM) kcal/kg 3000 Proteína bruta, (PB) % 21,00 Cálcio, (Ca) % 1,00 1,20 Fósforo, (P) % 0,50 Metionina, (Met) % 0,48 Lisina, (Lys) % 1,12 A representação deste problema na forma de equações e inequações é o seguinte: Min Custo) 0.21Milho + 0.39FSoja +0.17Ftrigo + 0.95Oleo + 0.75Fosbical +0.09Calcario + 2.35LLys + 2.12DLMet +2.50 Premix ST Peso) Milho + FSoja + Ftrigo + Oleo + Fosbical + Calcário + LLys + DLMet + Premix = 100 EM) 34.4Milho + 24.4 FSoja + 15.1 Ftrigo + 87.8 Oleo + 39.9 LLys + 50.2 DLMet > 3000 PB) 0.09 Milho + 0.48 FSoja + 0.16 Ftrigo + 0.956 LLys + 0.587 DLMet > 21 CaMin) 0.0004 Milho + 0.0036 FSoja + 0.0012 Ftrigo + 0.24 Fosbical + 0.37 Calcario > 1 CaMax) 0.0004 Milho + 0.0036 FSoja + 0.0012 Ftrigo + 0.24 Fosbical + 0.37 Calcario < 1.2 P) 0.0027 Milho + 0.0055 FSoja + 0.0088 Ftrigo + 0.18 Fosbical > 0.50 Met) 0.0017 Milho + 0.0065 FSoja + 0.0022 Ftrigo + 0.99 DLMet > 0.48 Lys) 0.0023 Milho + 0.0287 FSoja + 0.0057 Ftrigo + 0.784 LLys > 1.12 MaxTrigo) Ftrigo < 10 MaxOleo) Oleo < 5 MinOleo) Oleo > 2 QuaPrem) Premix = 0.50 Fundamentos de Programação Linear 30 O mesmo problema apresentado na forma de matriz MPS pode ser visto na Tabela 15. Tabela 15. Estruturação de uma matriz MPS. Variáveis Milho Soja Trigo Oleo Fosbi Calc LLys DLMet Prem RHS Custo 0.21 0.39 0.17 0.95 0.75 0.09 2.35 2.12 2.50 Min Max Peso 1 1 1 1 1 1 1 1 1 100 100 EM 34.4 24.4 15.1 87.8 0 0 39.9 50.2 0 3000 PB 0.09 0.48 0.16 0 0 0 0.956 0.587 0 21.00 Ca 0.0004 0.0036 0.0012 0 0.24 0.37 0 0 0 1.00 1.20 P 0.0027 0.0055 0.0088 0 0.18 0 0 0 0 0.50 Met 0.0017 0.0065 0.0022 0 0 0 0 0.99 0 0.48 Lys 0.0023 0.0287 0.0057 0 0 0 0.78 0 0 1.12 Limites 0 0 0 2 0 0 0 0 0.50 Mín 100 100 10 5 100 100 100 100 0.50 Máx A matriz pode ser chamada de quase matriz MPS porque para entrada dos dados numa restrição que tem limites de maximo e mínimo, como o cálcio (Ca) por exemplo, repete-se a linha e, para cada uma das linhas dá-se o sinal correspondente do valor RHS. Com relação às variáveis que têm limitações para sua entrada na ração (valores maximo e/ou mínimo), acrescenta-se essa(s) variável(eis) como restrição e, a matriz fica com a visualização mostrada na Tabela 16. Tabela 16. Estruturação final de uma matriz MPS. Variáveis Milho Soja Trigo Óleo Fosbi Calc LLys DLMet Prem RHS Custo 0.21 0.39 0.17 0.95 0.75 0.09 2.35 2.12 2.50 Peso 1 1 1 1 1 1 1 1 1 = 100 EM 34.4 24.4 15.1 87.8 0 0 39.9 50.2 0 3000 PB 0.09 0.48 0.16 0 0 0 0.956 0.587 0 21.00 Ca Max 0.0004 0.0036 0.0012 0 0.24 0.37 0 0 0 1.20 Ca Min 0.0004 0.0036 0.0012 0 0.24 0.37 0 0 0 1.00 P 0.0027 0.0055 0.0088 0 0.18 0 0 0 0 0.50 Met 0.0017 0.0065 0.0022 0 0 0 0 0.99 0 0.48 Lys 0.0023 0.0287 0.0057 0 0 0 0.78 0 0 1.12 MaxOleo 1 5 MinOleo 1 2 MaxTrigo 1 10 QuaPrem 1 = 0.50 Fundamentos de Programação Linear 31 10. RECURSOS ADICIONAIS DO LINDO 10.1. ANÁLISE PARAMÉTRICA Pode-se variar o valor de uma restrição e seu efeito na função objetivo. Ex. Max 1) Z = 30 x1 + 40 x2 ST 2) x1 24 3) x2 16 4) x1 + x2 40 Pode-se alterar o atual limite da restrição x1 24 para valores entre 24 e 50. Para tanto deve-se seguir este roteiro: Executar o Solve; Clicar em Reports; Clicar em Parametrics; Na tela, escolher a restrição a ser estudada (no caso a 2). Digitar o valor para o limite superior (50); Escolher se o resultado deve ser na forma gráfica ou relatório; Clicar OK para encerrar. 10.2. RESUMO ESTATÍSTICO DOS DADOS (STATISTICS) Dentro do Reports, clicar em Statistics para obter uma listagem contendo uma análise estatística dos dados do modelo. 10.3. RESULTADO GRÁFICO (PERUSE) Dentro do Reports, clicar em Peruse para obter uma visualização gráfica dos valores dos resultados das linhas (restrições) ou das colunas (variáveis); 10.4. VISUALIZAÇÃO DA MATRIZ (PICTURE) Dentro do Reports, clicar em Picture para se obter uma visualização gráfica da matriz de dados do modelo. 10.5. INCLUSÃO DE DADOS NO RELATÓRIO DE SAÍDA (FORMULATION) É possível incluir os dados do modelo no relatório, o qual é útil para se obter uma documentação mais completa do modelo. Esta opção deve ser ativada antes de se solicitar a execução do modelo (Solve). Fundamentos de Programação Linear 32 10.6. DEPURAÇÃO DE ERROS (DEBUG) Quando o modelo apresenta erros ou inconsistências, o Lindo possui uma série de recursos capazes de auxiliar o usuário encontrar a causa. 10.6.1. COMPILAÇÃO Antes de resolver o problema o Lindo deve compila-lo. Somente quando o modelo está correto é que o Solve poderá ser executado. Quando um erro de sintaxe é encontrado, será informado o número da linha na qual ocorreu o erro e o cursor é posicionado nesta linha. 10.6.2. DEBUG Quando o modelo apresenta uma situação de Infeasible ou Undbounded (modelo não-solúvel ou mal definido), o Debug pode auxiliar o usuário a localizar o erro. Depois de encontrado uma situação de erro: Clicar Solve Clicarem Debug O resultado aparece no relatório. 10.6.2.1. INFEASIBLE SOLUTION Quando o Debug encontrar o modelo com uma solução inexistente, ele tenta identificar uma ou mais restrições cruciais. Uma restrição é crucial quando, sendo eliminada, o modelo restante possui solução. Estas restrições são destacadas pelo Debug em seu relatório como Sufficient Set (Rows). Nem todo modelo Infeasible possui uma restrição crucial. Independentemente de encontrar ou não restrições cruciais, o comando Debug também destaca um conjunto de restrições e de limites de colunas que constituem Necessary Set (Rows). Tal conjunto tem como característica básica ser Infeasible, mas se torna Feasible. Assim é necessário efetuar no mínimo uma correção Necessary Set (Rows) para tornar o modelo Feasible. No exemplo a seguir, o coeficiente 0.55 foi digitado errado, pois deveria ser 5.5 e não 0.55. Max 3 x21 + 7 x2 ST x1 + 2 x2 < 3 2 x1 + x2 < 2 0.55 x1 + x2 > 4 Ao executar o modelo, recebe-se a mensagem: No Feasible Solution At Step 2. Ao acionar o comando Debug, tem-se: Sufficient Set (Rows), correct one of: 4) 0.55 x1 + x2 > 4 Necessary Set (Rows), correct one of: Fundamentos de Programação Linear 33 Subject to 2) x1 + 2 x2 < 3 O comando Debug identificou a restrição 4 como a causadora do problema. 10.6.2.2. UNBOUNDED MODEL Quando o modelo está mal definido o programa tenta inicialmente identificar uma ou mais variáveis cruciais. Estas variáveis são identificadas pelo Debug como Sufficient Set (Cols). Uma variável crucial quando, sendo corrigida, é suficiente para tornar o modelo Bounded (corretamente definido). Independentemente de encontrar ou não variáveis cruciais, o comando Debug também destaca um conjunto de restrições e de limites de colunas que constituem o Necessary Set (Cols). Tal conjunto tem como característica básica ser Unbouded, mas se qualquer variável deste conjunto for corrigida, então o conjunto torna-se bounded. No exemplo, a variável Z deveria ter o sinal positivo (+) mas por um erro de digitação, recebeu um sinal negativo (-). Max: 12 X1 + 13 X2 + 22 Y1 + 25 Y2 + 23 Z1 + 28 Y2 + X3 + Y3 + Z3 ST: X1 + X2 + Y3 – Z3 < 500 Z1 + Z2 < 500 Ao solicitar a solução do modelo, há uma mensagem de erro Unbounded Solution At Step 0. Acionado o comando Debug, tem-se: Sufficient Set (Cols), correct one of: Z3 Necessary Set (Cols), correct one of: Y2 De um modo geral, identificada a variável causadora do problema (Z3), deve-se fazer as seguintes tentativas: Modificar o coeficiente da variável na Função Objetivo; Modificar o coeficiente da variável em algumas restrições; Modificar o tipo de restrição em que a variável Z3 aparece (trocar o sinal da restrição); Alterar o limite superior ou inferior da variável: por exemplo, num caso de X110 por X0. 11. PROGRAMA DE PROGRAMAÇÃO LINEAR PARA EXECUÇÃO DO FORMATO MPS Um dos programas mais adequado para entrada dos dados de uma programação linear no formato de matriz é o POM (Production and Operations Management) da Prentice-Hall’s Decision Science. Esse pacote é composto de três programas: DS for Windows, POM for Windows e QM for Windows, contendo 30 módulos e mais de 60 sub-módulos, conforme pode-se ver na Figura 14. O programa exige um Fundamentos de Programação Linear 34 equipamentos compatíveis com o IBM PC, Pentium com pelo menos 8 MB RAM e sistema operacional Windows 95 ou superior. O programa Decision Science é composto dos módulos mostrados na figura 14, onde no Programa POM demonstrativo tem três módulos ativados, e um deles é o módulo de programação linear. Figura 14. Módulos dos três softwares que compõem o Decision Science – DS Na Figura 15 tem-se uma visão do painel de trabalho do programa, onde se podem fazer vários ajustes na área de trabalho, como o tipo e tamanho da fonte, as cores do menu de trabalho, inserir ou deletar linhas e colunas, auto-ajustes das colunas, calculadora e outros recursos. Fundamentos de Programação Linear 35 Figura 15. Disposição dos menus do POM Figura 16. Menu de abertura do POM com os módulos disponíveis A Figura 16 mostra o inicio de um trabalho no POM, e neste programa demonstrativo há possibilidade de utilizar três módulos, sendo o um deles o de programação linear, que é objeto do nosso estudo. Uma vez selecionando o modulo da PL, pode-se abrir o menu File para a opção New para iniciar um novo problema. Ao fazer esta escolha, aparecerá o seguinte menu, mostrado através da Figura 17. Fundamentos de Programação Linear 36 Figura 17. Menu de criação de um problema de programação linear. Neste menu de criação de um sistema de programação linear, na linha de Title, escrevemos o nome da ração que desejamos calcular. Observe que este nome não é o nome do arquivo que será salvo, mas sim, a identificação da ração. Na janela Number of Constraints, devemos introduzir o numero de contrastes ou de restrições do problema. Em resumo, seria o número de linhas que a matriz contém, menos a linha da função objetivo. Na segunda opção, Number of Variables, deve-se introduzir o número de variáveis ou colunas da matriz. A entrada do número de linhas e de colunas através desses menus podem ser simplesmente escrevendo o valor no espaço ou através das alças, que podem incrementar ou diminuir os número default, que é 2. O passo seguinte e muito importante, ainda nesse menu, é logo abaixo da introdução dos números que comporão a matriz, é a escolha do tipo da função objetivo: maximizada ou minimizada. No caso de formulação de rações, sempre será do tipo minimizada. Então, no menu Objective, clique no botão Minimize e depois no botão OK para iniciar a entrada dos dados. A próxima tela que aparecerá, mostrada na Figura 18, é a entrada dos dados do problema, que inicialmente solicita a entrada dos nomes das variáveis X1 e X2 e posteriormente os nomes dos contrastes, que são as restrições do problema. Fundamentos de Programação Linear 37 Figura 18. Entrada dos dados do problema. Identificadas as variáveis X1 e X2 como MILHO e SOJA, respectivamente e as restrições Constraint 1, Constraint 2 e Constraint 3 como PESO, EM e PB, respectivamente, pode-se introduzir os coeficientes técnicos dessas variáveis, como os valores da energia metabolizável, da proteína bruta e do peso. A seguir os tipos das restrições do RHS. Verifica-se na Figura 19, que ao se colocar o mouse em cima do sinal padrão, que é >=, abre-se uma cortina com os demais sinais para as restrições. Após a entrada dos coeficientes técnicos dos alimentos (das variáveis), dos tipos e valores das restrições (RHS), pode-se solicitar ao programa que proceda a avaliação do sistema montado, através do ícone Solve (verde) localizado no acima, no lado direito da tela. Fundamentos de Programação Linear 38 Figura 19. Entrada dos dados, tipos e valores das restrições. Acionado a opção Solver, o resultado do problema pode ser avaliado através de várias formas através da janela Window e podem ser visualizados nas Figuras 20, 21 e 22. Na Figura 20, na última linha temos os valores obtidos para as variáveis: MILHO = 0,6923 e SOJA = 0,3077 e o valor da função objetivo = $ 0,27. A coluna RHS mostra os valores requeridos para as restrições PESO, EM e PB, além da coluna Dual que será posteriormente discutida. Figura 20. Menu de avaliação dos resultados do problema (Linear Programming Results). Fundamentos de Programação Linear 39 Figura 21. Menu dos resultados adicionais da programação linear (Ranging). O menu mostrado na Figura 21 tem-se os resultados adicionais, sendo que na primeira coluna estão os nomes das variáveis (MILHO e SOJA) e das restrições (PESO, EM e PB); na segunda coluna, num primeiro plano, os valores (Value) de cada variável, e num segundo plano, os valores duais (Dual Value) de cada restrição. Da mesma forma, na terceira, quarta, quinta e sexta colunas, estão os valores do custo reduzido (Reduced Cost ), valores originais (Original Value), limite inferior (Lower Bound) e limitesuperior (Upper Bound) das variáveis e das restrições, respectivamente. Analisando inicialmente os valores obtidos para as variáveis, a coluna Value, mostra as quantidades de milho (0,69) e soja (0,31) que entrariam na ração. A coluna Reduced Cost mostra os valores que deveria ser reduzido do custo original da variável para que a mesma pudesse fazer parte da solução do problema. Como no exemplo os valores da coluna Value são maiores que zero, os valores da coluna Reduced Cost é igual a zero. Na coluna Original Value são mostrados os valores originais da função objetivo, ou seja, os custos dos ingredientes (variáveis) as próximas duas colunas têm estreita ligação com a coluna Original Value, pois as colunas Lower Bound e Upper Bound, mostram respectivamente, os limites máximos e mínimos que os custos das variáveis podem assumir para que elas continuem fazendo parte da solução do problema. Por exemplo: a variável MILHO pode diminuir infinitamente seu valor que continuará fazendo parte da solução com o valor de 0.6923 e se o seu custo ultrapassar o valor de 0.38, haverá mudança na base, ou seja, os valores obtidos serão alterados. No segundo plano destes resultados temos a análise das restrições. A coluna Dual Value mostra em quanto a função objetivo (custo da ração) será alterado se aumentarmos ou diminuirmos de uma unidade o valor original do RHS essa restrição. No caso da EM o valor é zero, pois foi solicitado uma ração com 2900 kcal EM/kg e a ração tem 2900 + 192.3076, ou seja tem mais do que o mínimo imposto nessa restrição. A terceira coluna, Slack/Surplus, mostra quanto há de sobra ou falta em relação ao solicitado. Os valores Fundamentos de Programação Linear 40 dessa coluna que forem iguais a zero significam que a restrição foi obtida exatamente como o solicitado, como deveria ser para o PESO, cuja restrição era do tipo de igualdade (PESO = 1). No caso da PB o valor mínimo solicitado (PB >= 21) foi obtido sem nenhuma folga, enquanto que para o valor mínimo de EM (EM >= 2900) houve uma folga, ou sobra, de 192,3076 cal. A próxima coluna (Original Value) mostra os valores requeridos no problema (valores do RHS) e as próximas colunas devem ser analisadas conjuntamente. As colunas Lower Bound e Upper Bound, mostram os limites que, com os ingredientes (variáveis) que estão fazendo parte da solução, no caso MILHO e SOJA, pode-se formular uma ração no máximo 3092.31 kcal e um valor infinitamente baixo. Fora desses limites para a restrição EM, o problema torna-se inviável, desde que as outras restrições, PESO e PB permaneçam como foram solicitadas, ou seja, 1 e 21, respectivamente e, o mesmo raciocínio serve para as outras restrições. Na Figura 22 é apresentado os resultados das variáveis que fazem parte da base ou da solução do problema (Solution List), onde pode-se observar que as variáveis MILHO e SOJA são designadas de variáveis básicas, pois os seus valores são maiores que zero, ou seja, fazem parte da solução e as variáveis que tiverem valores iguais a zero, são designadas de variáveis não básicas. Nota-se nesta forma de apresentação dos resultados, na coluna da variáveis, outras variáveis além daquelas introduzidas inicialmente no problema: são as variáveis artificiais e as variáveis de folga, que seria um artificio a criação de variáveis, que não farão parte da solução, com a finalidade de resolver o sistema de programação linear. Figura 22. Menu dos resultados na forma solution list do programa POM. Outro resultado que pode ser visualizado através do POM são as iterações, ou seja cada passo que o programa trabalha para encontrar o resultado da função objetivo do problema proposto (no caso seria o menor custa da ração) determinando os valores de cada variável, no caso de uma formulação de ração Fundamentos de Programação Linear 41 seriam as quantidades de cada ingrediente, de maneira que satisfaça todas as restrições impostas. A Figura 23 mostra de maneira resumida os passos percorridos pelo programa para obter a solução do problema. Figura 23. Menu das iterações do problema apresentado pelo POM. Quando formulamos uma ração com apenas dois ingredientes (duas variáveis) é possível visualizar o gráfico deste sistema conforme é mostrado na Figura 24. O eixo X representa a quantidade em que a variável MILHO pode entrar na formulação da ração e o eixo Y, representa a variável SOJA. No lado direito da Figura, pode-se ver as equações das restrições PESO, EM e PB, que unindo nos eixos X e Y configuram a solução do problema. O segmento de reta que representa a restrição PESO, estabelece entre os eixos X e Y, todas as possíveis mistura de MILHO e SOJA e que satisfaz essa restrição. Por sua vez, as equações da EM e da PB, estabelecem as condições destas restrições. Pelos dados do problema, respeitando a restrição PESO, que é do tipo: MILHO + SOJA = 1, a EM e a PB são inequações (3400 MILHO + 2400 SOJA ≥2900 e 9 MILHO + 48 SOJA ≥21) onde todas as possíveis respostas para estas restrições passam em cima destas retas, que então seria exatamente igual ao valor do RHS (2900 e 21) ou ao lado direito delas, que então seria maiores que os valores do RHS solicitados. Fundamentos de Programação Linear 42 Outra reta, de cor púrpura, aparece na Figura 24, que é a Função Objetivo do problema, que vai determinar o ponto de Mínimo Custo da ração. O ponto onde essa função corta a reta da restrição PESO determinará a quantidade exata das variáveis MILHO e SOJA, que satisfaz todas as restrições do problema pelo menor custo possível. Se o valor dos custos das variáveis modificarem o suficiente, pois alteraria o ângulo, a intersecção da Função Objetivo se deslocaria deste ponto e uma nova solução seria encontrada para este problema. Figura 24. Representação gráfica do problema com duas variáveis. A forma gráfica de apresentação de um problema de programação linear só estará disponibilizada se o problema for composto de apenas duas variáveis, que seriam alocadas para os eixos X e Y do gráfico. RESUMO DOS PROGRAMAS LINDO, MPL E POM LINDO Linear, INteractive, and Discrete Optimizer !! FFoorrmmuullaaccaaoo ddee rraaccaaoo ddee mmiinniimmoo ccuussttoo ! CUSTO: Funcao Objetivo ! PESO, EM, PB, Ca, P e PRE_QUA: Restricoes do sistema ! MILHO, SOJA, TRIGO, OLEO, FOSBI, CALC e PREMIX: Variaveis do sistema MIN CUSTO) 0.14MILHO+0.30SOJA+0.10TRIGO+0.67OLEO+0.45FOSBI+0.06CALC+2.00PREMIX SUBJECT TO PESO) MILHO+SOJA+TRIGO+OLEO+FOSBI+CALC+PREMIX = 1 EM) 3440MILHO+2440SOJA+1520TRIGO+8760OLEO > 3150 PB) 9MILHO+48SOJA+16TRIGO 21 Ca) 0.02MILHO+0.36SOJA+0.12TRIGO+23FOSBI+36CALC > 1 P) 0.09MILHO+0.18SOJA+0.33TRIGO+17FOSBI > 0.50 PRE_QUA) PREMIX = 0.0025 OOuu !! FFoorrmmuullaaccaaoo ddee rraaccaaoo ddee mmiinniimmoo ccuussttoo ! CUSTO: Funcao Objetivo ! PESO, EM, PB, Ca, P e PRE_QUA: Restricoes do sistema ! MILHO, SOJA, TRIGO, OLEO, FOSBI, CALC e PREMIX: Variaveis do sistema MIN CUSTO) 0.14MILHO+0.30SOJA+0.10TRIGO+0.67OLEO+0.45FOSBI+0.06CALC+2.00PREMIX ST PESO) MILHO+SOJA+TRIGO+OLEO+FOSBI+CALC+PREMIX = 100 EM) 34.40MILHO+24.40SOJA+15.20TRIGO+87.60OLEO > 3150 PB) 0.09MILHO+0.48SOJA+0.16TRIGO > 21 Ca) 0.0002MILHO+0.0036SOJA+0.0012TRIGO+0.23FOSBI+0.36CALC > 1 P) 0.0009MILHO+0.0018SOJA+0.0033TRIGO+0.17FOSBI > 0.50 PRE_QUA) PREMIX = 0.25 MPL Maximal Programming Linear {RACAO DE MINIMO CUSTO: MIN FUNCAO OBJETIVO: CUSTO RESTRICOES: PESO, EM, PB, Ca, P, Met, AAS, Lys, MAXPREM VARIAVEIS: MILHO, SORGO, OLEO, SOJA, CARNE, TRIGO, DLMET, LLYS, FOSBICAL, CALC e PREMIX} MIN Custo = 0.14 MILHO + 0.12 SORGO + 0.82 OLEO + 0.41 SOJA + 0.45 CARNE + 0.11 TRIGO + 3.21 DLMET + 3.90 LLYS + 0.45 FOSBICAL + 0.08 CALC + 2.34 PREMIX; SSUUBBJJEECCTT TTOO PESO: MILHO + SORGO + OLEO + SOJA + CARNE + TRIGO + DLMET + LLYS + FOSBICAL + CALC + PREMIX=1; EM: 3416 MILHO + 3168 SORGO + 8786 OLEO + 2283 SOJA + 1705 CARNE + 1526 TRIGO + 5020 DLMET + 3990LLYS >= 3200; PB: 8.51 MILHO + 8.82 SORGO + 46.21 SOJA + 40.52 CARNE + 16.35 TRIGO + 58.70 DLMET +95.6 LLYS >= 23.1; Ca: 0.02 MILHO+ 0.03 SORGO+ 0.36SOJA + 11.78 CARNE + 0.12 TRIGO + 23 FOSBICAL + 37 CALC >=1; P: 0.27 MILHO + 0.26 SORGO + 0.55 SOJA + 5.80 CARNE + 0.22 TRIGO + 18 FOSBICAL >= 0.50; Met: 0.17 MILHO + 0.15 SORGO + 0.65 SOJA + 0.39 CARNE + 0.22 TRIGO + 99 DLMET >= 0.44; AAS: 0.35 MILHO + 0.43 SORGO + 1.34 SOJA + 1.13 CARNE + 0.55 TRIGO + 99 DLMET >= 0.76; Lys: 0.23 MILHO + 0.21 SORGO + 2.87 SOJA + 1.77 CARNE + 0.60 TRIGO + 78.4 LLYS > = 1.10; MAXPREM: PREMIX = 0.004; END POM Production and Operations Management TAB e SHIFT_TAB: Para movimentar-se na horizontal, no sentido da esquerda para a direita e no sentido inverso. SETAS : Para movimentar-se nos quatro sentidos, passo a passo CONSTRAINTS : Equações do sistema, ou restrições das variáveis ou equações das exigências nutricionais. VARIABLES: Variáveis do sistema ou ingredientes da ração RHS – Right Hand Side: Valores atribuídos às restrições do sistema ou os valores das exigências nutricionais DUAL VALUE ou PRICE: Custo que uma restrição pode aumentar ou diminuir ao se variar em uma unidade o RHS SLACK/SURPLUS: Valor a mais ou a menos em relação ao valor original atribuído ao RHS LOWER e UPPER BOUND: Para as variáveis significa o quanto o custo dessa variável que está na base pode oscilar sem alterar o seu valor e para as restrições, significa o intervalo que essa restrição pode ter com as mesmas variáveis que estão na base. REDUCED: valor que se deve reduzir da variável na função objetivo para que esta possa participar da solução básica SHADOW PRICE: para uma restrição significa em quanto aumentará ou diminuirá o custo da ração se essa restrição sofrer uma variação de uma unidade e para as variáveis, significa o quanto aumentará o valor da função objetivo se essa variável fosse forçada entrar em uma unidade na solução básica. UTILIZAÇÃO DO SOLVER – FUNDAMENTOS BÁSICOS 1. INSTALAÇÃO DO SOLVER O Microsoft Excel Solver é uma ferramenta extremamente especializada, que auxilia a obtenção de soluções de problemas matemáticos numa planilha em casos específicos, como: O problema deverá ter um único objetivo, como maximizar, minimizar ou atingir um valor especificado. A célula com objetivo precisa conter uma fórmula que será afetada pela alteração das células de entrada. Algumas células necessitam de restrições. Por exemplo, uma célula especifica não pode exceder um determinado valor. A entrada de valores precisa contribuir, direta ou indiretamente, para a solução de um único objetivo. O Solver ajuda a otimizar a alocação de recursos. Isso poderá significar a maximização de lucros, minimizar custos, combinar materiais para obter a melhor variedade de produtos ou estabelecer a escala dos funcionários. O Solver é um suplemento do Excel. Para liberar memória, pode-se desativar o Solver, ainda que tenha sido instalado com o Excel. Para fazer uso da ferramenta Solver é necessário que esteja instalada. Execute o comando Ferramentas e verifique a existência da opção Solver, após a opção Auditoria. Caso não tenha esta opção, será necessário providenciar a instalação da ferramenta, e neste caso, execute o comando: Ferramentas Suplementos Selecione na Caixa de Diálogo Suplementos a opção Solver com um clique no pequeno quadro situado à esquerda da opção, confirme OK. Caso aconteça do Solver não estiver listado na Caixa de Diálogo Suplementos, clique no botão Procurar ... e localize, em seu disco rígido (hard-disk) o arquivo Solver.xla armazenado na seqüência de pastas: Arquivo de Programas/Microsoft Office/Bibliote/Solver ou execute novamente o programa de instalação caso não consiga localizar o arquivo. Qualquer suplemento que seja ativado na Caixa de Diálogo Suplementos permanecerá ativo até que seja removido. 2. UTILIZAÇÃO DO SOLVER O Solver tem três termos chaves: célula destino, células variáveis e restrições. Compreender estes três termos é importante, pois são utilizados para configurar as funções do Solver. Célula Destino: também poderia ser chamada de Função Objetivo, é a única célula da planilha onde a resposta será apresentada em termos de otimização e, essa resposta precisa ser um valor de Maximo, Mínimo ou um Valor Específico. A Célula Destino ou Função Objetivo contém a formula resultante da modificação das células variáveis. Células Variáveis: também são chamadas de Variáveis de Decisão. O Solver altera os valores desse grupo de células, afetando a resposta apresentada na Célula Destino. O Solver modifica os valores dessas células variáveis até que uma resposta adequada apareça na célula destino ou até decidir que não há uma resposta possível ao sistema. Restrições: são especificações aplicadas às células (a célula de destino ou às células variáveis) determinando que os valores se situem entre certos limites. Por exemplo, pode-se aplicar a uma célula variável a restrição que o Solver use um número entre os valores Maximo e Mínimo especificado. Para trabalhar com o Solver é necessário estabelecer no mínimo dois pontos. Um é a célula destino e o outro é a célula ou um conjunto de células variáveis. Figura 01. Caixa de Dialogo dos Parâmetros do Solver Tendo montado a planilha, execute o comando: Ferramentas/Solver que será apresentada a Caixa de Diálogo dos Parâmetros do Solver como é mostrado na Figura 01. Depois de indicar a Célula Destino, que no caso de uma formulação de rações seria a função objetivo, depois as Células Variáveis, que seriam as quantidades de ingredientes, finalmente submetendo às restrições, que seriam as limitações de impostas ao sistema, clique agora no botão Resolver. Assim que o botão Resolver é acionado, este apresenta a Caixa de Diálogo Resultados do Solver como pode ser visto na Figura 02, na qual poderá ser escolhido Manter a Solução Solver ou então Restaurar os Valores Originais. Figura 02. Caixa de Diálogo Resultados do Solver Dê um clique sobre o botão OK para obter o resultado final da ração otimizada. 3. OPÇÕES DO SOLVER Outro recurso bastante útil da ferramenta Solver é a existência do botão Opções da Caixa de Diálogo Parâmetros do Solver, que quando acionado apresenta a Caixa de Diálogo Opções do Solver, como é mostrado na Figura 03. Figura 03. Caixa de Diálogo Opções do Solver Por meio das opções é possível controlar os recursos avançados do processo de solução, carregar ou salvar definições de problemas e definir parâmetros para os problemas lineares e não lineares. Cada opção tem uma definição padrão adequada à solução da maioria dos problemas. Tempo Máximo: neste campo é possível limitar o tempo usado pelo processo de solução. Apesar de poder fornecer um valor tão alto quanto 32.767, o valor padrão de 100 (segundos) é o mais indicado para a maior parte dos pequenos problemas. Iterações: neste campo é possível limitar o tempo utilizado pelo processo de soluções, restringindo o número de cálculos provisórios. Apesar de poder fornecer um valor tão alto quanto 32.767, o valor padrão de 100 (segundos) é o mais indicado para a maior parte dos problemas. Precisão: por meio deste campo é possível controlar a precisão das soluções utilizando o número fornecido para determinar se o valor de uma célula de restrição alcançou a meta ou satisfez a um limite superior ou inferior. A precisão deve ser indicada por uma fração entre 0 (zero) e 1 (um). Uma precisão maior é indicada quando o número fornecido possui mais casas decimais (por exemplo, 0,0001 tem mais precisão do que 0,01). Quanto maior for o valor da precisão, mais tempo será gasto para atingir uma solução. Tolerância: neste campo é possível definir a porcentagem por meio da qual a célula de destino de uma solução atendendo às restrições de número inteiro pode divergir do valor ideal e ainda ser considerada aceitável. Esta opção é aplicada somente aos problemas com restrições de número inteiro. Uma tolerância mais alta tende a acelerar o processo de solução. Convergência: neste campo é possível definir a convergência que será aplicada apenas ao problema não lineares e deve ser indicada por uma fração entre 0 (zero) e 1 (um). Umaconvergência menor é indicada quando o número fornecido tem mais casas decimais (por exemplo, 0,0001 tem uma mudança relativa menor que 0,01). Quanto menor for o valor da convergência, mais tempo será necessário para o Solver encontrar uma solução. Quando a mudança relativa no valor da célula de destino é menor que o valor das cinco últimas iterações na caixa Convergência, o Solver é interrompido. Presumir Modelo Linear: esta opção, quando selecionada possibilita acelerar o processo de solução, quando todas as relações no modelo forem lineares e quando se deseja resolver um problema de otimização linear ou uma aproximação linear para um problema não linear. Presumir Não Negativos: esta opção, quando selecionada instrui o Solver a presumir um limite mínimo de 0 (zero) para todas as células variáveis. Usar Escala Automática: esta opção quando selecionada permite usar a escala automática quando as entradas e saídas tiverem tamanhos muito diferentes, ou seja, quando a maximização ou minimização de uma Função Objetivo estiver baseada em valores extremamente altos. Mostrar Resultados de Iteração: esta opção, quando selecionada, instrui o Solver a interromper e exibir os resultados de cada iteração. Estimativas: esta área possibilita especificar a abordagem a ser usada para obter as estimativas iniciais das variáveis básicas em cada pesquisa unidimensional. É possível selecionar uma de duas opções: o Tangente: faz uso da extrapolação linear de um valor tangencial o Quadrática: faz uso da extrapolação quadrática que pode melhorar os resultados em problemas não lineares. Derivadas: esta área possibilita especificar a diferenciação usada para estimar derivadas parciais das funções de objetivo e de restrição. É possível selecionar uma de duas opções: o Adiante: usada na maioria dos problemas em que os valores de restrições são alterados com relativa lentidão. o Central: é usada em problemas em que as restrições são rapidamente alteradas, principalmente perto dos limites. Embora essa opção requeira mais cálculos, pode ser útil usa-la quando o Solver retornar uma mensagem informando que a solução não pode ser melhorada. Pesquisar: esta área possibilita especificar o algoritmo que será utilizado em cada iteração para decidir em que direção pesquisar. É possível estabelecer uma de duas formas de pesquisa: o Newton: este algoritmo faz uso do método quase-Newton, que geralmente exige mais memória e bem menos iterações do que o método gradiente Conjugado. o Conjugado: este algoritmo requer menos memória que o método Newton, mas geralmente exige mais iterações para atingir determinado nível de precisão. Utilize esta opção quando houver um problema grande e a quantidade de memória disponível for uma preocupação ou quando as várias iterações do processo de solução revelarem um progresso lento. Carregar Modelo: este botão quando acionado exibe a Caixa de Diálogo Carregar modelo, na qual poderá ser especificada a referencia para o modelo que se deseja carregar. Salvar Modelo: este botão acionado exibe a Caixa de Diálogo Salvar modelo, na qual poderá ser especificado onde se deseja salvar o modelo. Clique nessa caixa somente quando você desejar salvar mais de um modelo com a planilha, pois o primeiro modelo é salvo automaticamente. Para um maior aprofundamento a respeito do estudo da ferramenta Solver, carregue o arquivo Solvsamp (exemplos de solvers). Este arquivo encontra-se armazenado na seqüência de pastas: Arquivos de Programas/Microsoft Office/Office/Sample Este arquivo de exemplos é bem completo em informações, contendo sete planilhas que abordam os mais diferentes exemplos de aplacações para esta ferramenta. TABELA DE COMPOSIÇÃO EM NUTRIENTES E DE ENERGIA DE ALGUNS INGREDIENTES ENERGIA NUTRIENTESINGREDIENTES Aves Suínos Coelhos Eqüinos Bovinos PB Ca P tot FB MET AAS LYS Arroz, quirera 3273 3172 3165 3418 2,78 8,50 0,06 0,08 0,40 0,22 0,37 0,25 Algodão-30, farelo 1566 1828 2132 2132 1,87 32,40 0,32 1,05 25,00 0,48 0,95 1,20 Algodão-40, farelo 2081 2105 2600 2608 2,36 39,30 0,26 0,95 14,70 0,53 1,09 1,54 Arroz, farelo 2090 2616 2635 2846 2,40 13,12 0,11 1,59 8,50 0,25 0,47 0,58 Arroz desen, farelo 1903 2068 2245 2425 2,00 16,03 0,11 1,46 11,10 0,29 0,53 0,62 Amendoim, farelo 2253 3122 3277 2177 2,66 49,70 0,14 0,70 6,50 0,48 1,13 1,53 Carne-40, farinha 1705 1717 2058 2223 2,17 40,40 11,97 5,80 1,50 0,39 0,75 1,77 Carne-45, farinha 1744 2003 2238 2417 2,24 45,20 11,60 5,40 1,30 0,54 0,97 2,28 Citros, polpa 1830 3360 2493 2691 2,56 6,00 1,75 0,11 12,50 0,08 0,10 0,25 Cevada 3014 2963 2961 3213 2,85 9,70 0,08 0,42 6,20 0,23 0,95 1,20 Peixe, farinha 2180 2179 2546 2750 2,46 57,60 6,10 3,00 0,26 1,66 2,25 4,66 Penas, farinha 2183 2154 2382 2573 2,31 84,30 0,52 0,56 1,10 0,51 3,94 1,70 Sangue, farinha 1857 2513 2508 2709 2,15 84,30 0,20 0,15 0,42 0,82 1,89 6,57 Soja, farelo 2283 3081 3260 3240 2,64 45,60 0,36 0,55 6,46 0,65 1,34 2,87 Trigo, farelo 1526 1992 2190 2617 2,19 16,35 0,12 0,87 8,90 0,22 0,55 0,60 Milho, germe 2390 2143 2895 3127 2,78 20,20 0,50 0,51 9,00 0,33 0,63 1,20 Milho, grão 3416 3369 3260 3406 2,97 8,51 0,02 0,27 1,78 0,17 0,35 0,23 Levedura, cana 2947 2093 - - 2,89 30,62 0,48 0,64 1,12 0,49 0,80 1,98 Leite em pó desn. 2562 3524 - - 2,86 33,77 1,21 0,90 - 0,90 1,28 2,60 Melaço, pó 2153 2495 2761 2761 2,38 2,44 6,21 0,21 2,44 - - - Melaço liquido 2079 2374 2550 2445 2,20 3,01 0,78 0,08 2,46 - - - Soja, óleo bruto 8786 7674 8278 8278 7,67 - - - - - - - Amido 3625 3538 3700 - - 0,55 0,13 - - - - - Lecitina 6774 6375 - - - - - 1,41 - - - - DL-Metionina 5020 5280 - - - 58,70 - - - 99,00 99,00 - L-Lisina 3990 4250 - - - 95,60 - - - - - 78,40 Calcário calcítico - - - - - - 37,00 - - - - - Osso, farinha - - - - - - 31,41 16,05 - - - - Fosfato bicálcico - - - - - - 24,50 18,10 - - - - Aves e suínos: EM / kcal/kg Coelhos e eqüinos: ED/ kcal/kg Bovinos: EM / Mcal/kg TABELA DE COMPOSIÇÃO EM NUTRIENTES E DE ENERGIA DE ALGUNS ALIMENTOS (cont.) ENERGIA NUTRIENTESINGREDIENTES Aves Suínos Coelhos Eqüinos Bovinos PB Ca P tot FB MET AAS LYS Aves, farinha mista 2987 3079 - - - 65,90 1,34 0,89 1,53 0,70 3,24 2,18 Aves, far. Resíduo 3523 3695 - - - 56,80 2,22 1,29 1,82 0,96 2,24 2,60 Mandioca, raspa 3138 2853 2850 2963 2,71 3,09 0,14 0,09 3,09 0,03 0,06 0,09 Soja, grão integral 3552 3745 3879 3686 3,40 37,50 0,25 0,58 5,50 0,56 1,15 2,35 Sorgo, B Tanino 3168 3278 3200 3168 2,72 8,82 0,03 0,25 2,20 0,15 0,32 0,21 Trigo, germe 3080 3420 3332 3600 2,89 27,30 0,50 1,06 3,00 0,43 0,81 1,60 Alfafa, feno 2160 1692 1830 2038 1,70 15,20 1,30 0,24 28,00 0,27 0,48 0,92 Aveia moída - - 2859 3006 2,57 10,90 0,11 0,35 10,60 0,30 0,77 0,40 Capim, feno - - 1500 1660 1,64 7,30 0,32 0,12 30,10 0,08 0,15 0,10 Rami, feno - - 1539 1539 - 11,10 0,36 0,36 23,90 0,09 0,20 0,15 Milho + espiga - 3022 2907 2836 1,95 7,00 0,01 0,25 10,50 0,19 0,30 0,15 Refinazil 1800 2850 2752 2972 2,96 22,01 0,25 0,93 8,50 0,38 0,85 0,63 Milho, rolão - - 1370 1548 1,95 6,80 0,02 0,14 21,80 0,08 0,17 0,11 Milho, sabugo - - 1083 1224 1,65 2,50 0,11 0,04 32,10 0,04 0,09 0,08 Aves, cama - 1728 - - 1,53 16,87 2,24 1,26 16,12 0,12 0,34 0,38 Aves, esterco - - - - 1,64 28,20 7,25 2,20 16,10 - - - Arroz, casca - 2927 980 980 0,98 3,00 0,90 0,07 39,60 - - - Milho, silagem - - - - 2,24 8,10 0,34 0,19 25,00 - - - Napier, 66 dias - - - - 2,10 7,80 0,40 0,20 33,00 - - - Gramínea, feno - - - - 1,88 6,50 0,33 0,20 35,00 - - - Cana, picada - - - - 2,17 3,50 0,22 0,06 34,00 - - - Cana, bagaço H - - - - 1,92 1,60 0,04 0,02 35,00 - - - Colonião, 60 dias - - - - 1,89 6,95 0,42 0,21 36,20 - - - Sorgo silagem - - - - 2,17 7,80 0,35 0,21 27,90 - - - Soja, resíduo colh. - - - - 2,75 30,00 0,27 0,64 17,50 - - - Uréia pecuária - - - - - 280 - - - - - - Aves e suínos: EM / kcal/kg Coelhos e eqüinos: ED/ kcal/kg Bovinos: EM / Mcal/kg TABELA – COMPOSIÇÃO NUTRITIVA E ENERGÉTICA DE ALIMENTOS PARA USO EM AQÜICULTURA INGREDIENTES EM PB FB Ca P AAS Lys Milho, grão 3350 8,50 2,10 0,02 0,18 0,37 0,25 Trigo, farelo 1930 15,00 18,00 0,15 0,55 0,35 0,50Arroz, farelo 3120 9,70 2,70 0,50 1,25 0,45 0,58 Milho, germe 2360 11,30 1,40 0,83 1,92 0,90 0,61 Milho, glúten 1670 25,00 4,00 0,20 0,21 0,87 0,80 Carne, farinha 1760 46,00 2,00 10,70 5,50 1,25 3,50 Peixe, farinha 2930 65,70 1,00 3,80 2,60 1,80 4,80 Levedura 2420 39,00 0,50 0,27 0,82 1,73 5,00 Sorgo 2810 10,00 4,40 0,03 0,15 0,33 0,22 Algodão, farelo 3240 51,10 8,70 1,20 2,04 1,27 1,61 Soja, farelo 2240 45,00 6,00 0,32 0,15 1,32 2,90 Mandioca 3250 4,30 2,50 0,13 0,09 0,06 0,09 Subprodutos de aves 2340 69,00 0,60 0,21 0,37 1,95 2,60 Sangue, farinha 1980 90,40 0,30 0,10 5,00 1,60 8,20 Óleo 8900 - - - - - - Osso, farinha - - - 35,80 13,50 - -