Speaker A
[Música] Olá, sejam bem-vindos à segunda semana da disciplina de Pesquisa Operacional. Meu nome é José Roberto. Nós vamos continuar então com a aula C, ferramentas computacionais, SVE Excel e o Lindo. Como objetivo nessa aula, a gente tem entender e implementar os modelos de programação linear e obter a solução ótima nessas ferramentas computacionais, o Lindo. Nossa primeira ferramenta, ela é uma ideia para desenvolvimento e resolução de problemas, entre eles, né, de programação linear, quadrática e inteira. Essa, essa, essa é a interface dele no Windows. Ah, é uma ferramenta que você pode baixar e fazer o uso dela numa versão demo, com uma quantidade razoável de variáveis e restrições no problema, ou senão adquirir a versão completa da empresa. Ah, alguns detalhes que são importantes desse ambiente de programação é que os principais comandos são Max e Min, que se referem à função objetiva do problema. Então, Max quando é de maximização, Min de minimização, e o uso do End ao final, quando você completa o modelo e você quer determinar melhor o domínio de cada uma das variáveis. Então, após o End é feita essa, esse, essa determinação. Ah, os operadores que são utilizados: menor, maior, menor ou igual e maior ou igual. E aqui nós temos, resgatando lá na aula 3S, o problema um, que é a determinação do mix de produção. Lembrem que nós tínhamos lá três modelos de produto, produto A, modelo A, o modelo B e o modelo C. Ah, tínhamos um valor de venda, um valor de lucro, né, que era obtido com a venda desses itens, e eles estavam sujeitos a duas restrições, uma de material e outra quantidade de horas-homem, né, hora-máquina disponível na empresa. Ah, e também as restrições de non negatividade. Bom, como que a gente passa, implementa, né, esse modelo no ambiente do Lindo? O Lindo tem essa facilidade, modelos simples como esse são facilmente implementados. Ah, basta essa parte que eu destaquei em amarelo ser trocada. Então, o Z igual a, a gente despreza ele no Lindo, o sujeito a, como o ambiente foi escrito na linguagem inglesa, então trocamos para Subj. Também poderia se fazer o uso apenas de S, abreviando nas restrições. Notem que aqui a gente usa um único símbolo de maior ou igual, desculpa, de menor ou igual, né, mas poderia ser o de maior ou igual. E quando vamos pro Lindo, nós precisamos fazer o uso do menor e do igual, tá? E as restrições de non negatividade aqui eu não coloquei, há um motivo pelo qual no Lindo é por padrão já são definidos, já é definida a não negatividade, então todas as variáveis são positivas. Dado que já foi implementado, né, já escrevemos o modelo no Lindo, então nós vamos fazer a execução dele. Posso clicar nesse botão ou senão ir até o menu Solve e escolher a opção Solve novamente para execução dele. Então, logo que ele termine a execução, ele vai trazer uma primeira tela com um resumo, pequeno resumo do que aconteceu. Ah, nesse resumo nós temos lá o número de iterações que foram utilizadas para sua resolução de um algoritmo chamado Simplex, que vocês vão começar a ver ele na aula sete. Ah, e também temos aqui o valor da função objetivo, ou seja, o valor de Z, né, ah, qual o valor que nós estávamos otimizando, procurando o melhor lucro, né, o maior lucro para aquela empresa. Então, o maior lucro possível com aqueles parâmetros de entrada seria 100. Fechando essa tela, então o Lindo vai abrir uma outra tela com uma melhor descrição dos resultados, maiores detalhes. Eu fiz um resumo daquela tela, trouxe para cá, e lá nós temos que então, novamente, que a solução ótima foi encontrada com duas iterações, que o valor da função objetivo foi 100, e o valor das variáveis XA e XC, esses dois modelos não haverá produção, havendo produção apenas do produto, do modelo, né, do produto que é XB, que foi de 50 unidades. Esses outros detalhes vocês vão aprender durante as disciplinas, nós vamos ter conteúdos, aulas específicas sobre cada um deles. No problema 2, que também era da aula 3, nós tínhamos lá a seleção de mídia para a propaganda, já era um problema maior, um pouquinho mais complexo, né? E aí a gente vai ver se ele realmente é mais difícil de se resolver ou se às vezes mudando a complexidade do problema em termos de tamanho não altera na sua resolução. Então, vamos ver as principais diferenças. Eu já transportei diretamente para o Lindo o modelo, tá? Então, já fiz a, já já eliminei o Z igual, coloquei Sub 2, né, e notem que até o momento eu não coloquei o End, não fiz o uso do End, não determinei qual o domínio das variáveis. Então, por enquanto, elas são positivas e contínuas, né, porém não negativas por padrão. Ao executar aqui, um outro resumo, né? Então, foi obtida a solução no passo zero. Passo zero significa que, dada a solução inicial, ele já encontrou a solução ótima pro problema. Ok? E o valor da função objetiva. Ah, só que nós temos um problema. Olhando pro valor das variáveis, nós temos lá que X1 era a quantidade de propagandas que seriam realizadas, veiculadas, né, na TV normal, X2 na TV em horário nobre, X3 e X4 em revistas e rádio. Ah, tudo bem com X1, X3 e X4, mas em X2 tá dizendo lá que nós vamos veicular 3.0, uma dízima periódica, né, com seis vezes a propaganda na TV nobre. E aí é um problema, né? Nós precisamos daqui como número inteiro. A questão é, bom, já que temos lá 3, 3.06 me 7, né, por que não arredondar para simplesmente três? Aqui mantemos 10, 10 e 3, né? Bom, antes disso, então vamos, vamos ver se realmente seria só arredondar se esse ainda manteríamos a solução ótima. Vamos tomar alguns cuidados com a sintaxe, já que a gente vai partir para um problema inteiro, né? As variáveis assumem valores inteiros, então algumas restrições com relação ao domínio vão aparecer, como eu já havia comentado, depois da palavra reservada End, que vem ao final do modelo. Então, lá nós podemos colocar Int e o nome da variável, se o domínio for de números inteiros binários, 0 ou 1, se forem, se for um número inteiro, mas inteiro positivo, né, então a gente coloca o Gin de General Integer. E se quisermos que eles possam assumir valores negativos, né, então fazemos uso do Free, que vai permitir então que as variáveis sejam livres, né, possam assumir valor negativo ou positivo. E aí a implementação muda quase nada, na verdade. A gente manteve a mesma implementação até a linha X4 menor ou igual a 10, né, que era todo o modelo. Foi colocada então a palavra reservada End e, após ela, Gin 4. Notem que no slide anterior eu coloco Gin e o nome da variável, mas aqui eu coloquei Gin 4. Então, eu poderia ter colocado Gin X1, depois na linha de baixo Gin X2, Gin X3 e Gin X4. Então, tenho quatro variáveis, coloquei Gin 4, ele vai entender, Lindo vai ser capaz de entender que são as quatro variáveis que eu tenho no problema que devem ser do tipo General Integer. Ok? Bom, pedindo para resolver aqui, vai dado, é dado um resumo. Notem que na solução anterior, com as variáveis relaxadas, nós encontramos na solução dada inicialmente já a solução ótima, né? Encontramos a solução ótima já na solução dada, na solução inicial. E agora, somente na iteração de número 35 é que conseguimos encontrar a solução ótima do problema. E notem como a solução ótima mudou, né? Tudo bem, mantemos para X3 e X4 10 veiculações em cada uma dessas mídias, porém em X1, que era o número de veiculações na TV normal de três, aumentou para quatro. Em X2, que é no horário nobre, de 3.0666, né, caiu para apenas duas. Então, o problema inteiro, a diferença dele pro relaxado é que a gente não pode simplesmente considerar que um arredondamento vai manter você com a solução ótima. Uma forma de perceber isso também é olhando pro valor da função objetivo. Aqui a gente tem o 108, na outra solução nós tínhamos 100, 96. Então, quer dizer, da solução relaxada pra solução inteira também houve uma diferença no valor da função objetiva. O que é importante perceber também nesse momento, quando você sai de uma solução relaxada e vai para uma solução com domínio das variáveis sendo inteiro, é que você nunca vai melhorar o valor da função objetivo. Por quê? Nessa solução, as restrições, elas vão ser, pelo menos uma das restrições, ela vai ser aproveitada ao máximo, ou seja, todo o recurso que eu tenho do lado direi...