Upload
trandung
View
215
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE DE SÃO PAULO
ESCOLA DE ENGENHARIA DE LORENA
GUILHERME ARANTES PEDRO
DESENVOLVIMENTO DE UMA INTERFACE VBA PARA A PRO-
GRAMÇÃO MATEMÁTICA DA PRODUÇÃO UTILIZANDO PRO-
GRAMAÇÃO LINEAR
Lorena
2012
GUILHERME ARANTES PEDRO
Desenvolvimento de uma interface VBA para a programação matemá-
tica de produção utilizando programação linear
Trabalho de conclusão de curso apresentado à
Escola de Engenharia de Lorena - USP, como
requisito parcial para obtenção do título de En-
genheiro Químico.
Orientador: Prof. Dr. Domingos Sávio Giordani
Lorena
2012
Autorizo a reprodução e divulgação total ou parcial deste trabalho, por
qualquer meio convencional ou eletrônico, para fins de estudo e pesquisa, desde
que citada a fonte.
AGRADECIMENTOS
Primeiramente a Deus, por me conceder saúde, sabedoria, fé e perseve-
rança para a conclusão do meu curso.
Aos meus pais, Edna e Élcio, por toda paciência, amor, apoio e suporte
para a conclusão da graduação.
À Dayane, por todo seu amor, carinho e companheirismo durante esses
quatro anos inesquecíveis ao seu lado.
Ao meu orientador Prof. Dr. Domingos Sávio Giordani, pela confiança,
exemplo de profissional, e por acreditar neste trabalho.
Aos meus familiares e amigos, por todo apoio e reconhecimento, em es-
pecial minha irmã Gabriela e meu cunhado Diego que sempre me apoiaram e me
serviram de exemplo de fé e amor.
Aos grandes amigos da banda L’Hopital: Túlio, Taynara, Dayane, Martini
e Tales pela grande amizade e momentos únicos que ficarão eternamente grava-
dos na memória.
Aos atuais e antigos companheiros e amigos de república, pelo convívio e
momentos de descontração inigualáveis ao longo destes anos de graduação.
À Escola de Engenharia de Lorena, pela oportunidade de realização do
Curso de Engenharia Química.
A todos os colegas e professores de graduação, pelo convívio e aprendi-
zado.
Pedro, G. A. Desenvolvimento de uma interface VBA para a programação ma-
temática da produção utilizando programação linear. 2012. 63f. Trabalho de
Conclusão de Curso (Graduação em Engenharia Química), Universidade de São
Paulo, Lorena, 2012.
RESUMO
Este trabalho dedica-se ao desenvolvimento de uma interface computaci-
onal para a resolução de problemas envolvidos com a programação da produção
em sistemas produtivos, com o objetivo de auxiliar o processo de tomada de deci-
são dentro de pequenas empresas. Visto a dificuldade das pequenas empresas
em permanecer no mercado, o uso de ferramentas de auxílio na produção é um
diferencial para seu estabelecimento no mercado atual. Um método para a abor-
dagem de problemas de programação da produção é trata-los como um problema
de Programação Linear e resolvê-los usando programação matemática. Para
atender à proposta do trabalho, foi feito um estudo na literatura no qual se notou o
grande crescimento no uso de softwares para o planejamento de produção, em
especial o Solver. Também, foi elabora uma estrutura lógica para o desenvolvi-
mento do modelo por parte do usuário do aplicativo construído. Por fim, foi desen-
volvida uma planilha eletrônica no Microsoft Excel com interface amigável feita em
Visual Basic for Applications para a realização das macros nas quais a resolução
do problema é feita pelo suplemento Solver do Excel. O desempenho das interfa-
ces foi satisfatório, suas rotinas e execuções agiram como o esperado, além de
fornecer dados comparáveis aos da literatura. O aplicativo desenvolvido neste
trabalho atende às expectativas das pequenas empresas, por ser um aplicativo
eficaz ao auxílio na tomada de decisão e sem custos de aquisição e implantação.
Palavras-chave: Planilhas do Excel, Programação da Produção, Programação
Linear, Sistemas de apoio à decisão.
Pedro, G. A. Desenvolvimento de uma interface VBA para a programação ma-
temática da produção utilizando programação linear. 2012. 63f. Trabalho de
Conclusão de Curso (Graduação em Engenharia Química), Universidade de São
Paulo, Lorena, 2012.
ABSTRACT
This work is dedicated to the development of an interface for solving com-
putational problems involved on the production scheduling in production systems,
in order to aid the process of decision in small businesses. Because of the difficul-
ty of the small businesses to maintain themselves in the market, the use of tools to
aid in the production can make the difference for their establishment in the current
market. One method for addressing problems of production scheduling is to treat
them as a Linear Programming problem and solving them using mathematical
programming. To reach the proposed work, it was done a study in the literature in
which it could be noted the increasing use of software for production planning, in
particular Solver. It was also developed a logical framework for the development of
the model by the user of the application. Finally, It was developed a user-friendly
interface to the spreadsheet in Microsoft Excel, it was done in Visual Basic for Ap-
plications. The performance of the interface was satisfactory, their routines and
plays acted as expected, and provided data comparable with those in the litera-
ture. The application developed in this work meets the expectations of small busi-
nesses, being an effective application to aid in decision making with no cost of ac-
quisition and deployment.
Keywords: Excel spreadsheets, Production Scheduling, Linear Programming, De-
cision Support Systems.
LISTA DE FIGURAS
Figura 1 Definição da Programação Linear (Imagem adaptada de Paulo, et al.,
2003) ............................................................................................................ 23
Figura 2- Esquema lógico para a elaboração do modelo geral ............................ 31
Figura 3 Esquema da funcionalidade para a criação das interfaces e macros ..... 31
Figura 3 - Arquitetura da funcionalidade das interfaces e macros adotadas. ....... 32
Figura 4 - Interface inicial construída no Visual Basic for Applications ................. 33
Figura 5 - Interface para a inserção dos parâmetros necessários para a Função
Objetivo ........................................................................................................ 33
Figura 6 - Interface das Restrições do problema .................................................. 34
Figura 7 - Interface na qual o usuário insere uma restrição por vez ..................... 34
Figura 8 - Interface dos resultados da otimização com os valores das variáveis e o
total da otimização ........................................................................................ 35
Figura 9 - Planilha padrão com os arranjos de linhas e colunas para a
generalização do modelo .............................................................................. 36
Figura 10 – Interface de resultados da análise de desempenho 1 ....................... 39
Figura 11 - Interface de resultados da análise de desempenho 2 ........................ 41
Figura 12 - Interface de resultados da análise de desempenho 3 ........................ 43
Figura 13 - Interface de resultados da análise de desempenho 4 ........................ 46
Figura 14 - Interface de resultados da primeira maximização da análise 5 .......... 48
Figura 15 - Interface de resultados da segunda maximização da análise 5 ......... 49
LISTA DE TABELAS
Tabela 1 - Coeficientes das funções para os parâmetros utilizados no Solver ..... 48
Tabela 2 - Resultados da simulação na Interface proposta utilizando-se o solver
como ferramenta de resolução. .................................................................... 49
Tabela 3 - Resultados obtidos por MARETH (2012) utilizando o software pago
LINDO® ........................................................................................................ 50
Tabela 4 - Quantidade disponível do Petróleo .........Erro! Indicador não definido.
Tabela 5 - Percentuais para Limites de Qualidade das Gasolinas . Erro! Indicador
não definido.
LISTA DE QUADROS
Quadro 1 - Sumário das Influências nos aspectos administrativos. Erro! Indicador
não definido.
Quadro 2 - Influencia do tipo de indústria sobre o planejamento e controle da
produção. ..........................................................Erro! Indicador não definido.
Quadro 3 - Restrições comuns em sistemas de produção ...... Erro! Indicador não
definido.
SUMÁRIO
1. INTRODUÇÂO ............................................................................................. 13
1.1. Justificativa ................................................................................................... 13
1.2. Objetivo Geral ............................................................................................... 15
1.3. Objetivos Específicos .................................................................................... 15
2. REVISÃO DA LITERATURA ........................................................................ 16
2.1. Programação da Produção ........................................................................... 16
2.2. Sistemas de Produção .................................................................................. 18
2.3. Programação Linear...................................................................................... 20
2.4. Planilhas Eletrônicas e o suplemento SOLVER ............................................ 24
2.5. A Pequena Empresa e o Processo Decisório ................................................ 26
3. DESENVOLVIMENTO .................................................................................. 28
3.1. Estudo das aplicações de Programação Linear ............................................ 28
3.2. Desenvolvimento de modelos matemáticos .................................................. 30
3.3. Preparação das interfaces VBA .................................................................... 31
3.4. Preparação das macros e planilhas eletrônicas ............................................ 35
3.5. Teste de desempenho da interface ............................................................... 37
3.5.1. Análise de desempenho 1 – (JÚNIOR; SOUZA, 2004) ....................... 37
3.5.2. Análise de desempenho 2 – Notações da Disciplina Métodos de Apoio
a Decisão, Grupo de Controle e Gestão. ...................................................... 39
3.5.3. Análise de desempenho 3 – (ECKER; KUPFERSCHMID, 1988) ........ 41
3.5.4. Análise de desempenho 4 – Problema 1.2.5. (JÚNIOR; SOUZA, 2004)
..................................................................................................................... 43
3.5.5. Análise de desempenho 5 ................................................................... 47
4. CONCLUSÕES ............................................................................................ 51
REFERÊNCIAS BIBLIOGRÁFICAS .................................................................... 52
APÊNDICE A – Manual de utilização da Interface de Programação da
Produção por Programação Linear – Interface PPPL ..................................... 57
APÊNDICE B – Macros: Código VBA ................................................................ 63
Macro 1 – Interface Inicial .................................................................................... 63
Macro 2 – Interface da Função Objetivo .............................................................. 65
Macro 3 – Interface das Restrições ...................................................................... 67
Macro 4 – Interface de adição de restrições ........................................................ 69
Macro 5 – Interface dos resultados ...................................................................... 75
Macro 6 – Aplicação Solver ................................................................................. 76
ANEXO – Artigo de referência para teste de desempenho ............................. 78
Análise de desempenho 5 - (MARETH, et al., 2012) ............................................ 78
13
1.INTRODUÇÂO
Hoje as pequenas empresas passam por dificuldades em permanecer no
mercado muitas vezes por não conseguirem gerir sua produção de modo efetivo.
Vários trabalhos propõem utilizar a programação linear como ferramenta de auxí-
lio às decisões. Contudo, os gerentes responsáveis pela tomada de decisão, mui-
tas vezes, têm dificuldade em organizar e arranjar métodos para a resolução de
problemas de decisões.
1.1. Justificativa
Nos dias atuais a competitividade define a permanência de uma empresa
no mercado. Na busca por diferenciais competitivos, uma produção de qualidade
e de baixo custo é um grande diferencial entre empresas, para as quais a pro-
gramação da produção se torna uma ferramenta essencial. Para isto as empresas
necessitam adotar estratégias com relação à metodologia de planejamento e con-
trole da programação (VIEIRA, et al., 2011). Sendo assim, a programação da pro-
dução promove melhorias quanto ao uso de matérias primas e produtividade de
uma empresa, portanto, mantendo-a competitiva no mercado atual.
Muitos são os fatores que podem influenciar a tomada de decisão dos ge-
rentes. Esses tomadores de decisões vêm se deparando com problemas de deci-
sões conflitantes: minimizar custos de produção frente à escassez de recursos
produtivos e o crescimento das exigências do mercado (JÚNIOR; SILVA, 2005).
A solução de um problema de programação da produção é possível se ele
reunir todas as limitações de recursos, restrições de fabricação e necessidades
impostas do produto (POLON, 2010). A programação linear pode ser aplicada
com resultados satisfatórios otimizando os recursos disponíveis, maximizando
resultados ou minimizando custos.
O processo de tomada de decisão de ‘quando’, ’ onde’, ‘o que’ e ’como’
produzir de modo efetivo pode ser demorado visto o grande volume de informa-
ções necessárias. Assim, a programação linear é uma ferramenta usada para en-
contrar a melhor alternativa que atenda os vários objetivos da tomada de decisão
(PEKNY,1998). BISPO (1998) afirma que, quando o tomador de decisões possui
14
informações precisas e confiáveis, melhor será a identificação do problema e das
alternativas, favorecendo a escolha da melhor solução. Deste modo, as empresas
podem fazer uso da programação linear para resolver seus problemas de otimiza-
ção de recursos, seja com o objetivo de redução de custos, otimização de resul-
tados, ou qualquer outro processo de tomada de decisão gerencial. (KLANN, et
al., 2010)
A utilização de planilhas eletrônicas, juntamente com o suplemento SOL-
VER do Microsoft Excel®, é uma ferramenta poderosa no apoio ao processo deci-
sório quando se trata de equacionamentos lineares. Como afirma ROCHA (2011),
planilhas eletrônicas são de uso comum e acessível à grande parte da população
de um modo geral, em específico o Excel, sendo assim, uma alternativa importan-
te para auxiliar a tomada de decisão.
OLISZESKI (2010) ressalta que os modelos propostos servem apenas
como auxílio no processo decisório, não descartando a interpretação ou conheci-
mento tácito do empreendedor. Assim, frente aos resultados propostos pelo mo-
delo, os tomadores de decisões devem ter a capacidade de compreender tais re-
sultados de modo a minimizar a incerteza das decisões.
Embora seja uma ferramenta de auxílio, resultados convincentes foram
obtidos como no estudo de caso feito por VIEIRA (2011) que constatou, com o
uso do modelo da programação linear, um aumento em 6,21% no ganho do pro-
cesso comparado ao processo sem o uso do modelo proposto. FEY e SANTOS
(2000) concluem que o plano proposto ao seu estudo teve um incremento de
8,8% na renda líquida. JÚNIOR (2009) afirma um ganho na faixa de 4% a 8,5%
em seu sistema de produção. NETO e ZANELLA (2007) demostram um ganho no
faturamento de 6,31 %. Um aumento significativo no lucro foi alcançado por
BELLIS, PINHO e PAMPLONA (2004) de aproximadamente 26,4% e de 40,68%
por NETO, DEIMLING e TOSATI (2006). Para OLIVEIRA (2011) os resultados
mostram que a abordagem utilizada é capaz de tratar com sucesso um problema
real. ROCHA (2011), no entanto, conclui que é possível utilizar planilhas eletrôni-
cas com interface amigável em problemas de pequeno porte. E segundo ALVES
(2007) o uso das planilhas contribui para a diminuição drástica do tempo de
tomada de decisão, além de disponibilizar ao usuário a possibilidade de simular
diversos cenários, tarefa impossível de ser feita em tempo hábil de forma manual.
15
A motivação para este trabalho surgiu da simplicidade de programação,
da facilidade de acesso ao software por pequenas empresas, do menor grau de
complexidade dos processos envolvidos na pequena empresa e, também, dos
bons resultados obtidos com a programação linear em trabalhos anteriores. As-
sim, busca-se neste trabalho a criação de uma interface amigável que atenda às
necessidades das pequenas empresas no que diz respeito ao apoio gerencial.
1.2. Objetivo Geral
Desenvolver uma Interface em VBA para o apoio ao processo de tomada
de decisão em sistemas de produção de pequenas empresas, utilizando planilhas
do Excel, juntamente com o suplemento Solver, e a programação linear, como
recurso de resolução dos problemas de programação de produção.
1.3. Objetivos Específicos
Estudar as atividades de planejamento dos sistemas de produção mais
comumente encontrados;
Estabelecer o modelo matemático que seja ajustável aos interesses do to-
mador de decisão baseado em programação linear;
Elaborar uma arquitetura da funcionalidade das interfaces e as rotinas das
macros necessárias para se trabalhar com o Solver;
Criar uma interface intuitiva e amigável utilizando o Microsoft Visual Ba-
sic®;
Desenvolver macros para a operação automática das planilhas;
Teste da interface em simulações e problemas de lógica pouco detalhada;
Validação da modelagem e metodologia.
16
2.REVISÃO DA LITERATURA
2.1. Programação da Produção
FROSSARD (2009) afirma que uma administração dos recursos disponí-
veis na empresa feita com eficiência, através do planejamento, controle e execu-
ção das atividades relacionadas à utilização destes, é um fator fundamental na
busca da otimização dos resultados.
Assim, a programação da produção visa otimizar o uso de recursos para
satisfazer objetivos predefinidos, sujeito às restrições do processo considerado
(GIROTTI; NISHIMURA; MESQUITA, 2011). A programação da produção é usa-
da quando se procura encontrar as quantidades de cada tipo de produto que de-
vem ser fabricados em períodos sucessivos (COSTA, 2009).
Segundo JÚNIOR e SILVA (2005) o planejamento, ou programação, da
produção possui uma gama enorme de informações essenciais para uma
execução eficiente, que dificilmente pode ser sumarizada pela mente humana.
Para tanto, o planejamento da produção busca transformar informações de
estoque, pedidos, equipamento e processos em ordem de fabricação (COSTA,
2009).
BRITO (2000) resume os objetivos da programação produção em:
Cumprimento dos prazos de entrega;
Controle de nível de estoque em processo;
Redução constante dos leads times de produção;
Controle das filas de espera nos estoques de produção;
Prevenção dos gargalos de produção;
Minimização do tempo ocioso dos recursos de produção.
Portanto a programação da produção é uma função que consiste em pla-
nejar as operações que necessitam ser predeterminadas e executadas. Para
GITOTTI; NISHIMURA e MESQUITA (2011) tais atividades podem ser divididas
em: (i) Programação: consiste no sequenciamento e programação das operações,
e a elaboração da carga dos centros de trabalho; (ii) Execução: envolve a libera-
ção das ordens, também chamada despacho, e (iii) Controle: inclui o apontamento
da produção e o controle de seu status.
17
Em específico, os problemas de programação da produção tratam de si-
tuações em que certo número de recursos, tais como homens, materiais e máqui-
nas, estão disponíveis e podem ser combinados para produzir um ou mais produ-
tos.
A atividade de programação, segundo SEVERO (2007), é uma das mais
complexas no gerenciamento da produção. Primeiramente, por lidar com diversos
tipos de recursos simultaneamente. As máquinas terão diferentes capacidades e
capacitação; o pessoal terá diferentes habilidades. Sendo assim, o número possí-
vel de programações da produção aumenta à medida que o número de atividades
e processos torna-se maior. Deste modo, a programação computacional fornece a
ajuda para a tomada de decisão nos problemas de programação industrial.
Ainda, SEVERO (2007) afirma que, nas últimas décadas, observou-se um
destacado desenvolvimento científico na área de programação de produção para
processos em batelada. Isto se deve à tendência de construção de plantas flexí-
veis e pequenas, para que possam atender às necessidades do mercado.
Devido à grande variedade de produtos da indústria química para atender
às necessidades do mercado, POLON (2010) define que no fluxograma de um
sistema de produção em batelada não existe uma estrutura e receita física fixa no
tempo. E, ainda, afirma que a complexidade das atividades de programação de
produção em processos em batelada é consequência de um sistema com equi-
pamentos e armazenagens compartilhados, com necessidade de sincronizar a
produção de produtos no horário especificado e por fim, a existência de opções
diferentes de produção com custos diferentes.
SEVERO (2007) assegura que diversas áreas na indústria química utili-
zam plantas que operam em batelada, como por exemplo, a indústria farmacêuti-
ca, de alimentos e, em geral, o setor de química fina. SEVERO (2007) ainda colo-
ca que desta forma, torna-se importante à implantação de sistemas de gestão de
produção e de técnicas que visem à produção otimizada dos diferentes produtos;
incluindo o uso de equipamentos, produtos e utilidades de forma eficiente. Portan-
to, as previsões de produção em processos batelada geram um problema de pro-
gramação.
Em geral, a resolução dos problemas envolvidos com a programação da
produção de vários tipos de processo é feita tornando tais problemas um caso de
18
programação linear como encontrados em pequenas empresas que possuem falta
de instrumentos para tratar tais problemas.
2.2. Sistemas de Produção
Seja a empresa de grande ou pequeno porte, é de suma importância res-
saltar a diferença entre suas fábricas e seus respectivos sistemas de programa-
ção e controle de produção. Como afirma ROCHA (2011), Sistema de Produção
pode ser visto de diversas maneiras, o que lhe confere características específicas,
e resultam em arranjos particulares de programação de produção.
Existe uma grande dificuldade em encontrar uma solução geral para a
programação de produção segundo ZACCARELLI (1982). Isso porque cada fábri-
ca tem suas particularidades. O autor salienta três particularidades importantes
desta diferenciação:
O tipo de indústria;
O tamanho da empresa;
As diferenças entre estruturas administrativas.
Sendo assim, mesmo empresas semelhantes em produção possuem es-
truturas administrativas diferentes que geram sistemas de programação de produ-
ção diferentes.
Assim, ZACCARELLI (1982) classifica e subdivide as industrias conforme
sua influencia nos processos administrativos conforme os Quadros 1 e 2:
19
Quadro 1 - Sumário das Influências nos aspectos administrativos (Fonte: ZACCARELLI (1982))
Tipo Contínuo Tipo Intermitente
Caracteristicas
Produz relativamente grande volume e pequena variedade de
produtos. Regimes de produção pouco
flexível.
Produz grande variedade de produtos em pequenos volumes.
Regime de produção muito flexível.
Exemplos Indústrias químicas, usina de aço,
linhas de montagem. Máquinas pesadas, grandes
transmissores de rádio, navios
Previsão de vendas Relativamente fácil para um período de um ano ou mais
Em geral, para poucos meses.
Projeto do produto
Estudado com grande detalhe antes de iniciar a produção.
Alterações pouco frequentes no projeto do produto.
É frequentemente alterado durante a produção.
O produto é projetado de forma a poder ser executado com o
equipamento disponível.
Equipamento
Especialmente projetado. Poucas ajustagens das máquinas. Necessita de grande manutenção
preventiva. A carga de trabalho das máquinas
é uniforme.
Do tipo universal. Ajustagens muito frequêntes.
Carga de trabalho das máquinas sujeita a variações.
Movimentação dos materiais
Altamente mecanizado, distâncias pequenas, equipamento com
propósito único, material movido continuamente de uma operação
para outra.
Feito com equipamento flexível, geralmente com pouca repetição;
necessita de corredores e passagens entre o quipamento. É necessário instruir sobre “o que” e
“para onde” mover.
Material
Consumo pouco variável de material, mínimo de material em
processamento, sem bancos entre operações.
Materiais de grande variedade se acumulam, geralmente, em cada operação; estoque relativamente
grande.
Pessoal
Operários pouco especializados executam sempre a mesma operação; pessoal altamente
qualificado planeja o processo produtivo e estuda o produto.
Operários especializados tem trabalho variado.
Há necessidade de determinar a cada dia que trabalhos o pessoal
deverá executar.
Operações Frequentes as operações
altamente repetitivas. Operações muito variadas
requerem instruções frequentes.
20
Quadro 2 - Influencia do tipo de indústria sobre o planejamento e controle da produção (Fonte: ZACCARELLI (1982)).
Sistema de PCP para produção
Altamente Repetitiva Sistema de PCP para
produção por Encomenda
Complexidade Relativamente simples, mas
pequenas falhas tem grandes repercussões no lucro.
Relativamente complexo, as falhas tem pequena
repercurssão no custo.
Planejamento do processo produtivo
(preparação de informações técnicas
para a execução, programação e controle
das operações)
Feito antes da venda do produto. Deve dispor de informações precisas sobre os tempos de
processamento, velocidade de transporte, custo de operação,
características dos materiais etc.
Feito quase todo após a venda do produto.
Como o produto varia muito, deve dispor de elementos para
calcular com rapidez os tempos de processamento, estimativa de custos e para determinar o melhor roteiro
para as operações.
Programação (agenda de produção)
Feita, principalmente, com base na previsão de vendas.
Programa o nível geral de atividade.
Feita com base nos pedidos recebidos.
Programa cada operação.
Ordens de produção (documentos para instruir, autorizar e
controlar as operações)
Poucas e simples. Pequeno número de impressos.
Para cada operação com respectivas requisições de
material e ferramentas, instruções para inspeção etc.
Estoques Planejados em função da
programação.
Apenas parte dos materiais é mantida em estoque, os
demais são adquiridos para atender aos pedidos
específicos.
Liberação da produção (distribuição das ordens
de produção) Muito simples.
Complexa e de grande importância
Controle de custos Pouco trabalhoso. Muito trabalhoso.
Pela análise dos quadros se nota a necessidade de programações de
produção específicos para cada indústria evidenciando a necessidade de um bom
planejamento e controle da produção por parte do tomador de decisões. Portanto,
a busca pelo melhor desempenho do sistema de produção, acarreta em um
processo de modelagem matemática, como por exemplo a aplicação do método
da Programação Linear (ROCHA, 2011).
2.3. Programação Linear
MIRANDA; MARTINS e FARIA (2007) relatam que a técnica de progra-
mação linear foi consolidada por George Dantzig, em 1.947, quando desenvolvia
técnicas de otimização para problemas militares, e também do desenvolvimento
do método simplex, capaz de resolver qualquer problema linear.
21
POLON (2010) expõe que problemas de planejamento e programação da
produção são geralmente estudados como parte da Pesquisa Operacional, que,
segundo o autor, é um ramo da engenharia relacionada à aplicação de métodos
científicos para problemas de tomada de decisão que por fim se estabelece solu-
ções ótimas.
BELLIS; PINHO e PAMPLONA (2004) explicam que a pesquisa
operacional trabalha da seguinte forma:
Formulação do problema: em que serão definidos os objetivos do estudo
e estabelecidas as restrições do sistema em estudo;
Construção do modelo: nesta fase é construído um modelo matemático
constituído por equações e inequações, as quais formaram a função obje-
tivo e as restrições, sendo estas representadas por variáveis de decisão e
variáveis não controladas;
Solução através do modelo: realizado através de técnicas matemáticas
específicas;
Teste do modelo e da solução: pode ser realizado com dados históricos
do sistema. Na ausência destes dados, o sistema deve operar sem mu-
danças e em seguida existe o confronto dos dados com o desempenho do
modelo. Nesta fase será decidido se o modelo deverá continuar em uso
ou será reformulado;
Estabelecimento de controles da solução: a partir do momento em que o
modelo é aceito, seus parâmetros devem ser continuamente controlados
para garantir a validade da solução adotada;
Implementação e acompanhamento: a implantação deve ser acompa-
nhada de perto para se observar o comportamento do sistema e possíveis
adequações que se fizerem necessárias.
COSTA (2009) complementa afirmando que a Programação Linear é uma
ferramenta da Pesquisa Operacional que usa um modelo matemático composto
por funções necessariamente lineares para minimizar ou maximizar parâmetros.
OLIVEIRA (2009) define a função da programação linear como sendo uma
ferramenta aplicada a soluções de problemas que objetivam a otimização de um
22
sistema em estudo. Portanto a Programação Linear fornece uma ferramenta ao
processo de tomada de decisão visando alcançar os melhores resultados.
Na programação linear, o tratamento destes problemas é feito a partir de
modelagens representadas por expressões lineares. Cabe ressaltar, que existe a
dificuldade em se modelar estudos reais, mas que tais tratamentos apresentam
confiabilidade satisfatória.
ALVES (2007) define que a programação linear tem como tarefa básica a
maximização ou minimização de uma função linear, definida como Função Objeti-
vo, que respeita um sistema linear de igualdades ou desigualdades, as quais são
chamadas Restrições do Modelo.
Para COSTA (2009), um modelo de programação linear é constituído por
uma equação, que descreve a “função objetivo” com parâmetros a serem maximi-
zados ou minimizados, e um conjunto de equações ou inequações que descre-
vem as restrições do problema real.
MIRANDA; MARTINS e FARIA (2007) estabelecem premissas para a
criação de modelo matemático. São elas:
1) Definir as variáveis do problema;
2) Definir a função-objetivo: expressão matemática linear para a qual se
deseja otimizar por meio da melhor combinação das variáveis básicas
(maximização ou minimização);
3) Definir o conjunto de restrições: uma inequação ou igualdade que de-
ve ser satisfeita pelas variáveis de um modelo matemático.
Para PAULO, et al., (2003) a modelagem da Programação Linear é uma
programação matemática em que a função-objetivo e as restrições assumem ca-
racterísticas lineares observando-se limitações impostas pelo processo produtivo
ou pelo mercado.
23
De modo geral, segundo PAULO, et al., (2003), a Programação Linear
pode ser descrita conforme ilustra a Figura 1:
Figura 1 Definição da Programação Linear (Imagem adaptada de Paulo, et al., 2003)
ROCHA (2011) afirma que a programação linear é uma técnica de resolu-
ção de equações lineares, considerada como uma técnica de otimização para re-
solver problemas de maximização ou minimização de um determinado objetivo.
OLIVEIRA (2009) estabelece que a otimização se refere: (i) a maximização de
parâmetros tais como: lucro, vendas, uso efetivo de uma área, nível de produção
e uso de um determinado recurso; ou (ii) a minimização de parâmetros tais como:
custo de produção, uso de um determinado recurso de alto valor monetário e em-
prego de mão de obra.
ALVES (2007) denota que para a resolução de problemas de programa-
ção linear, são necessários dois passos fundamentais: primeiramente deve-se
fazer a modelagem do problema, e posteriormente aplicar uma técnica para resol-
vê-lo.
Para este trabalho, o método de resolução proposto é a aplicação do su-
plemento SOLVER do Microsoft Excel®.
24
2.4. Planilhas Eletrônicas e o suplemento SOLVER
JUNIOR e SILVA (2005) ressaltam a importância de se ter o conhecimen-
to apurado dos custos de produção e margens de lucros dos produtos, pois estes
são fatores de importância na tomada de decisão de se produzir maiores ou me-
nores quantidades de um determinado produto. Assim, um modelo matemático
para um sistema de produção pode ser trabalhado em planilhas eletrônicas com
facilidade.
Planilhas eletrônicas são ferramentas comumente usadas para analisar
dados e modelar problemas quantitativos gerenciais, como sustentam LEON;
PRZASNYSKI e SEAL (1996). Os autores, ainda, afirmam que é razoável assumir
que a maior parte da modelagem feita no mundo dos negócios, em que se tem
aspecto temporal, é realizada utilizando planilhas eletrônicas. Isto se dá, princi-
palmente, devido ao custo acessível do software e também por serem ferramen-
tas de fácil uso. Para CEZARINO; FILHO e RATTO (2009), o grande atrativo des-
tas planilhas é a facilidade de criar interfaces flexíveis para o usuário com um cus-
to baixo, e assim, permitir que ele possa tomar decisões dentro de um ambiente
customizado.
NETO e ZANELLA (2007) sustentam que o Excel é uma poderosa ferra-
menta capaz de realizar cálculos e sistematizar dados, e vai além de construir
planilhas de controle de despesas domésticas ou relatórios sobre um projeto, e de
possibilitar a integração e automatização de sistemas inteiros de gerenciamento
de empresas e indústrias. Os autores ainda ressaltam: “Muitas das maiores em-
presas do mundo usam o Excel para criar aplicações personalizadas.”.
CEZARINO, FILHO e RATTO (2009) discorrem que, devido ao alto custo
de software de sistemas de gerenciamento e sua ausência em pequenas empre-
sas, abre-se uma oportunidade para o desenvolvimento de ambientes de apoio à
decisão de baixo custo e que, ambientes computacionais baseados em planilhas
eletrônicas, juntamente com suplementos adicionais de modelagem e solução de
problemas, são uma ótima alternativa. Os autores ainda acrescentam que o uso
da planilha eletrônica é mais simples que tais softwares e permite gravação de
modelos sem necessidade das montagens das planilhas pelo usuário, possibili-
tando que técnicos, sem conhecimento aprofundado em informática, possam se
beneficiar desta ferramenta.
25
Dentre as varias ferramentas disponíveis no mercado, ROCHA (2011) diz
que, para auxiliar os gestores na tomada de decisão, pode-se utilizar o Solver pa-
ra resolução de problemas de produção. O Solver é uma ferramenta disponível no
Excel que visa a encontrar uma solução ótima para os problemas de programação
linear. Para NETO e ZANELLA (2007) o Solver possibilita a realização de
simulações em um modelo criado, para, depois de testado e aprovado, ser
usado no ambiente real, ou seja, a empresa tem a possibilidade de simular
diferentes cenários e optar por aquele que apresentar maior lucro financeiro.
E, ainda, ROCHA (2011) ressalta que as planilhas eletrônicas do Excel
vêm conquistando um ótimo espaço no mercado, principalmente, em grandes in-
dústrias, pois o Excel permite o desenvolvimento de aplicações personalizadas,
além de possibilitar a automatização de sistemas de gerenciamento.
JÚNIOR e SOUZA (2004) explicam que o Solver faz parte de um conjunto
de programas algumas vezes chamado de ferramentas de análise hipotética. Os
autores ainda explicam que o Solver trabalha com um grupo de células relaciona-
das direta ou indiretamente com a fórmula na célula de destino. Assim, o Solver
ajusta os valores nestas células variáveis especificadas, chamadas de células
ajustáveis, para produzir o resultado especificado na fórmula da célula de destino.
ROCHA (2011) completa afirmando que é possível aplicar restrições a cé-
lulas ajustáveis, células de destino ou a outras células direta ou indiretamente re-
lacionadas à célula de destino para restringir os valores que o Solver poderá usar.
NETO e ZANELLA (2007) explicam que esta ferramenta pode ser utiliza-
da para determinar soluções de problemas envolvendo múltiplas variáveis e res-
trições determinando a melhor solução e pode representar economia de capital e
recursos ao determinar as melhores e mais eficientes maneiras de alocá-los. E
completam afirmando que se pode economizar o tempo que se levaria buscando
soluções por tentativas e erro.
Ainda, ROCHA (2011) destaca que a linguagem Visual Basic for Applica-
tions (VBA) é uma importante alternativa para automatização do uso da planilha
do Excel. O autor ainda ressalta que a linguagem permite a criação de macros
para a realização de tarefas repetidas e ainda permite integração com os produtos
da Microsoft Office, tais como: Word, Excel, Access, Outlook, PowerPoint,
FrontPage e também em produtos como o AutoCAD.
26
CEZARINO, FILHO e RATTO (2009) lembra que a ferramenta Solver,
presente na versão padrão comercial do Excel, resolve apenas problemas de pe-
quena dimensão (i.e. até duzentas variáveis), porém é possível, com um pequeno
investimento, obter uma licença para uso desta mesma ferramenta para proble-
mas com mais de 8000 variáveis. Em todo caso, para a proposta deste trabalho a
versão padrão atende ao esperado.
2.5. A Pequena Empresa e o Processo Decisório
O planejamento da produção é fundamental para a otimização da produ-
ção e, consequentemente, para a maximização dos resultados financeiros das
empresas. No entanto, apesar dos avanços nas tecnologias de informação,
MIGLIOLI; OSTANEL e TACHIBANA (2004) observam que existe nas pequenas
empresas uma grande dificuldade com relação à geração de conhecimento e
crescimento, o que leva à conclusão que muitas das pequenas empresas brasilei-
ras perdem espaços e oportunidades de mercado devido ao improviso na tomada
de decisões e na formulação de estratégias.
Assim, é necessário que pequenas empresas desenvolvam planos de
produção que permitam melhorar suas ações. Para isso a programação linear e o
solver são ferramentas de grande potencial para diminuir a incerteza e o improvi-
so nas tomadas de decisões.
De fato, como afirmam CEZARINO; FILHO e RATTO (2009), empresas
menores convivem com problemas de menor escala e, ferramentas sofisticadas,
por certo, não seriam de grande valia. Neste caso, então, o uso de planilhas ele-
trônicas, associado ao solver, apresenta-se como alternativa de baixo custo e bai-
xa complexidade para solução de problemas gerenciais em pequenas empresas.
MIGLIOLI, OSTANEL e TACHIBANA (2004) enfatizam que deve-se criar
ambientes de aprendizagem, através de cursos e treinamentos internos, dirigidos
à sua realidade, em que o gestor da pequena empresa possa adquirir
conhecimentos necessários para manipular as planilhas eletrônicas como
ferramenta de apoio à decisão.
A ideia deste trabalho é que a construção de uma interface que utiliza
recursos de planilha Excel e o suplemento Solver que permita aos tomadores de
27
decisão, pouco familiarizados com modelos matemáticos e ferramentas computa-
cionais, tomar decisões gerenciais diárias.
28
3.DESENVOLVIMENTO
3.1. Estudo das aplicações de Programação Linear
Inicialmente, fez-se um estudo na literatura buscando as aplicações da
programação linear. Nesta pesquisa, focou-se nas aplicações em processos pro-
dutivos industriais para constatar em quais, os problemas de programação foram
representados em modelos lineares, além de suas restrições para a otimização.
Na exploração de problemas de produção, variadas aplicações foram en-
contradas tais como as listadas abaixo:
Maximização de lucros;
Minimização de custos de produção;
Minimização de tempo em estoques;
Melhor rota de transporte;
Melhor número de frotas;
Melhor rota de processamento a custo mínimo;
Minimização de produção em excesso;
Redução no número de lotes;
Determinação do melhor mix de produção;
Determinação de misturas ideais de matérias-primas;
Minimização de alocação de máquinas;
Minimização do desperdício de matéria-prima;
Melhor uso das linhas de produção;
Melhor rotação de culturas;
Notou-se a abrangência de áreas nas quais a programação linear pode
ser aplicada para a sua otimização, podendo ser aplicada em Processos de Pro-
dução, Investimento em ações, Finanças Corporativas, Distribuição, Aquisitivos e
Recursos Humanos.
Embora a área de aplicação seja grande, verificou-se, também, uma a
grande aplicação de modelos lineares em Indústrias de Processos, ou seja, aque-
29
las que agregam valor a materiais por meio de processos de mistura, separação,
conformação ou reações químicas visando validar a proposta do trabalho.
Também, buscou-se nos estudos da literatura as restrições aplicadas nas
otimizações. A partir das restrições observadas, listou-se (QUADRO 3) alguma
das restrições mais comumente encontradas:
Quadro 3 - Restrições comuns em sistemas de produção
Restrições
Sistemas de produção
Capacidade produtiva
Volume de processadores
Número de processadores disponíveis
Tempo de processamento
Tempo de folga de equipamentos
Tempo de trabalho de equipamentos
Limite de estocagem
Manutenção de estoque
Meios de transportes disponíveis
Tempo de transporte
Tempo para entrega
Quantidades de cada componente
Matéria-Prima disponível
Geração de subprodutos
Consumo de subprodutos
Mão de obra disponível (tempo)
Subcontratações
Demanda máxima ou mínima de vendas
Recursos financeiros
Pela análise do Quadro 3, notou-se que as restrições podem ser classifi-
cadas e resumidas da seguinte forma:
Produtivas - Quantidades de produtos a serem feitos;
Operacionais – Equipamentos e mão de obras disponíveis;
Mercadológicas - Limites de vendas (máxima ou mínima).
O Quadro 3 pode ser usado para o auxílio ao usuário a estabelecer as
restrições de seu modelo. Lembrando que estas são algumas das restrições pos-
síveis de serem encontradas e, cabe ao usuário analisar seu sistema produtivo e
determinar quais restrições são aplicáveis.
30
3.2. Desenvolvimento de modelos matemáticos
Após os estudos feitos no levantamento de aplicações de programação li-
near, foi observado que existe um padrão ao se construir os modelos e as suas
restrições. Por se tratar de equacionamento linear as variações de um modelo
para outro ocorrem somente nos números de variáveis trabalhadas.
A maior complexidade ocorre na elaboração das restrições, pois estas li-
mitações são impostas pelo processo produtivo ou pelo mercado, ou ainda, traba-
lham com muitas restrições, que são combinações de etapas de processo sendo
necessária uma análise combinatória.
Para este trabalho, foi estabelecida a função objetivo como sendo a defi-
nição da programação linear que é descrita da seguinte forma:
( )
Sujeito a
{ }
( )
...
( )
Condição de Não-Negatividade
Em que:
( ) Função objetivo
xi variável de decisão
ci coeficiente da função objetivo
aii coeficiente da restrição
n número de variáveis
m número de restrições
Para a determinação do modelo geral pelo usuário, foi elaborada a se-
guinte estrutura lógica (FIGURA 2): (i) primeiramente definir as variáveis que pre-
tende controlar no problema e representá-la de modo algébrico, (ii) criar uma fun-
Restrições
31
ção linear em termos das variáveis de decisão, (iii) definir o objetivo central do
problema: maximizar ou minimizar a função objetivo, (iv) e, por último, identificar
as limitações impostas pelo problema e expressá-las como equações ou inequa-
ções lineares em função das variáveis de decisão. Portanto, a definição do pro-
cesso que se vai modelar é determinado pela gerência e deve ser focado em uma
área ou um processo chave em específico.
Figura 2- Esquema lógico para a elaboração do modelo geral
Para um melhor entendimento da construção do modelo e sua utilização,
por parte da pequena empresa, foi também elaborado um manual de utilização da
interface, o qual se encontra disponível no APÊNDICE A.
3.3. Preparação das interfaces VBA
Para criação da interface levou-se em consideração a estrutura lógica pa-
ra a construção do modelo geral apresentado na seção 3.2. Assim, elaborou-se a
arquitetura da funcionalidade das interfaces e as rotinas das macros necessárias
para se trabalha com o Solver. A Figura 3 mostra o esquema elaborado.
Para a criação das interfaces e para controle e personalização do ambien-
te proposto foi utilizado o Visual Basic for Applications (VBA).
A interface inicial (Figura 4) foi criada para que o usuário forneça o núme-
ro de variáveis a serem analisadas e, ao avançar, toda a estrutura das planilhas é
criada.
32
A interface seguinte (Figura 5) trata da função objetivo em que o usuário
deverá escolher a opção de maximizar ou minimizar sua função objetivo, bem
como fornecer os coeficientes da função objetivo. Para tanto, foi criada a interface
com uma caixa de texto na qual o usuário fornece o valor do coeficiente e clica
em um botão de comando que insere o valor do coeficiente. Uma lista de visuali-
zação foi adicionada para o usuário acompanhar os dados já inseridos.
A interface seguinte mostra as restrições inseridas (Figura 6). Para a in-
serção das restrições foi construída outra interface que é chamada por um botão
de comando. Essa interface (Figura 7) de inserção de restrição foi construída de
modo semelhante à interface da função objetivo. Nela o usuário pode inserir vá-
rias restrições seguidas, clicando no botão de comando “Nova Restrição”, sem a
necessidade de sair da interface de inserção de restrições.
Por fim, a macro de execução do Solver é chamada e uma última interfa-
ce é apresentada com os valores da otimização (Figura 8).
Figura 3 - Arquitetura da funcionalidade das interfaces e macros adotadas.
33
Figura 4 - Interface inicial construída no Visual Basic for Applications
Figura 5 - Interface para a inserção dos parâmetros necessários para a Função Objetivo
34
Figura 6 - Interface das Restrições do problema
Figura 7 - Interface na qual o usuário insere uma restrição por vez
35
3.4. Preparação das macros e planilhas eletrônicas
A programação das rotinas das macros foi estruturada para que, a cada
avanço nas interfaces, a planilha fosse construída e organizada em um modelo
padrão. Este modelo padrão significa colocar cada valor e equações em arranjos
organizados de linhas e colunas para que fiquem disponíveis para realizar a gene-
ralização do modelo.
A Figura 9 mostra como foi organizada e construída a planilha para exe-
cução do Solver.
Figura 8 - Interface dos resultados da otimização com os valores das variáveis e o total da otimização
36
Figura 9 - Planilha padrão com os arranjos de linhas e colunas para a generalização do mo-delo
O primeiro procedimento para a preparação das planilhas foi determinar
um espaço para o intervalo das constantes da função objetivo, denominas por Ci,
e seus respectivos valores. Da mesma maneira, foi determinado um espaço para
as variáveis de decisão, denominadas Xi, sem valores, pois o Solver irá determi-
nar valores ótimos para elas. A planilha também inclui uma tabela com os valores
das restrições do sistema trabalhado.
A partir da planilha organizada, foi implementado o código VBA para pos-
sibilitar a criação automática da planilha e interligação das macros, planilhas e
interface para a utilização generalizada do suplemento Solver. O código VBA en-
contra-se disponível no APÊNDICE B.
37
3.5. Teste de desempenho da interface
O teste de desempenho da interface foi feito por meio da aplicação de ca-
sos de programação linear encontrados na literatura. Com a proposta de se traba-
lhar com casos rotineiros e de baixo grau de complexidade.
3.5.1. Análise de desempenho 1 – (JÚNIOR; SOUZA, 2004)
1.2.3 Problema da Fábrica de Motores
A LCL Motores Ltda., uma fábrica de motores especiais, recebeu recen-
temente R$90.000,00 em pedidos de seus três tipos de motores. Cada motor ne-
cessita de um determinado número de horas de trabalho no setor de montagem e
de acabamento.
A LCL pode terceirizar parte da sua produção. A tabela a seguir resume
estes dados.
Modelo 1 2 3 Total
Demanda 3000 un. 2500 un. 500 un. 6000 un.
Montagem 1 h/un. 2 h/un. 0,5 h/un. 6000 h
Acabamento 2,5 h/un. 1 h/un. 4 h/un. 10000 h
Custo Produção R$ 50 R$ 90 R$ 120
Terceirizado R$ 65 R$ 92 R$ 140
A LCL Motores deseja determinar quantos motores devem ser produzidos
em sua fábrica e quantos devem ser produzidos de forma terceirizada para aten-
der à demanda de pedidos.
3.5.1.1. Solução esperada por programação linear.
Sendo Fi o número de motores dos modelos i (i = 1, 2, 3). E T i o número
de motores terceirizados dos modelos i (i = 1, 2, 3).
A função-objetivo é em função dos custos de cada motor, então se escre-
ve como função objetivo o custo total:
Sujeito a;
(Tempo de Montagem)
(Tempo do Acabamento)
(Demanda modelo 1)
38
(Demanda modelo 2)
(Demanda modelo 3)
3.5.1.2. Utilização da Interface
Neste caso tem-se uma fábrica que produz três modelos de motores e também
terceiriza a fabricação dos mesmos modelos de motores. O que se deseja é mi-
nimização do custo total. Então a função-objetivo, em função dos custos individu-
ais é:
Sujeito a;
(Tempo de Montagem)
(Tempo do Acabamento)
Assim, os parâmetros para o Solver são:
Coeficientes da função objetivo = 50; 90; 120; 65; 92 e140
Coeficientes das restrições
Restrição 1 1; 2; 0,5; 0; 0 e 0 | menor igual | 6000
Restrição 2 2,5; 1; 4; 0; 0 e 0 | menor igual | 10000
Restrição 3 1; 0; 0; 1; 0 e 0 | igual | 3000
Restrição 4 0; 1; 0; 0; 1 e 0 | igual | 2500
Restrição 5 0; 0; 1; 0; 0 e 1 | igual | 500
O resultado da otimização pela interface é mostrada na Figura 10. Pela
otimização é recomendável a terceirização de 2000 motores do modelo 2. A fabri-
ca deverá fazer 3000, 500 e 500 dos modelos 1, 2 e 3, respectivamente.
39
3.5.2. Análise de desempenho 2 – Notações da Disciplina Métodos de
Apoio a Decisão, Grupo de Controle e Gestão.
Uma empresa é propriedade de dois sócios. A empresa em questão pro-
duz bicicletas de dois modelos, uma mais sofisticada para todo-o-terreno (modelo
TT) e outra mais simples para passeio (modelo PP). Dada a qualidade dos seus
produtos e com a primavera a chegar, os dois sócios sabem que irão vender to-
das as bicicletas que conseguirem, estando apenas limitado pelo processo produ-
tivo.
Para definir o melhor plano de produção para o próximo mês fizeram uma
análise ao seu sistema produtivo, tendo chegado às seguintes conclusões:
- Cada bicicleta TT requer 3 horas de soldagem e cada PP requer 3 de
soldagem
- As bicicletas TT necessitam de 6 horas de maquinação e as PP ape-
nas 4 horas
- As bicicletas TT consomem 9 horas de trabalho no departamento de
montagem e as PP apenas 4
Figura 10 – Interface de resultados da análise de desempenho 1
40
O número de horas de trabalho disponíveis no próximo mês nos depar-
tamentos de maquinagem, soldagem e montagem são respectivamente
2400, 1500 e 2700
Sabendo que as bicicletas PP originam um lucro de R$40 e as TT R$80,
ajude os dois sócios a encontrarem o melhor plano de produção para o próximo
mês.
3.5.2.1. Solução esperada por programação linear.
Sendo x1 a quantidade de bicicletas PP e x2 a quantidade de bicicletas
TT, se tem como função objetivo o lucro total:
Sujeito a;
(Maquinagem)
(Soldagem)
(Montagem)
3.5.2.2. Utilização da Interface
A elaboração do modelo seguiu a expectativa de maximizar o lucro, tendo
como função objetivo o lucro total descrito por:
E sujeito a;
(Maquinagem)
(Soldagem)
(Montagem)
Assim, os parâmetros para o Solver são:
Coeficientes da função objetivo = 80 e 40
Coeficientes das restrições
Restrição 1 6 e 4 | menor igual | 2400
Restrição 2 3 e 3 | menor igual | 1500
Restrição 3 9 e 4 | menor igual | 2700
Após a inserção dos dados na interface trabalhada obteve-se como resul-
tado de maximização de lucros, uma produção de 140 bicicletas do modelo TT e
360 bicicletas do modelo PP com lucro total de R$25600,00. Os resultados da
interface são mostrados na Figura 11.
41
3.5.3. Análise de desempenho 3 – (ECKER; KUPFERSCHMID, 1988)
Exercise 2.14
The Wood Products Company uses three machines to produce two prod-
ucts. The following technology table gives the hours on each machine required to
produce one unit of each product, and the total time available on each machine
during the production period.
Machine Time Used in Making Total Machine Time
Availible in Produc-tion Period Product 1 Product 2
Lathe 1,1 2 1000
Sander 3 4,5 2000
Polisher 2,5 1,3 1500
The problem faced by the company is that it wants to maximize the total
number of products made, but it wants to be sure that the amount of product 1 is
at least one third the total number produced.
(a) Formulate a linear programming model for this problem.
(b) Suppose that instead of 3 machines and 2 products, 300 machines are
used to produce 200 products. Let
Figura 11 - Interface de resultados da análise de desempenho 2
42
rij = number of hours on machine j required to produce one unit of product i
cj = available machine time on machine j
Formulate a linear programming model for this enlarged version of the prob-
lem.
3.5.3.1. Solução esperada por programação linear.
Sendo x1 e x2 a quantidade de produtos 1 e 2, respectivamente temos
que:
Sujeito a;
(lathe)
(sander)
(polisher)
( ) (proporcionalidade)
Para nosso caso somente a questão (a) nos interessa.
3.5.3.2. Utilização da Interface
Pela utilização da lógica para construção do modelo teve-se as seguintes
condições:
Sujeito a;
(lathe)
(sander)
(polisher)
( ) (proporcionalidade)
Para este caso tem-se:
Coeficientes da função objetivo = 1 e 1
Coeficientes das restrições
Restrição 1 1,1 e 2 | menor igual | 1000
Restrição 2 3 e 4,5 | menor igual | 2000
Restrição 3 2,5 e 1,3 | menor igual | 1500
Restrição 4 0,67 e - 0,33 | menor igual | 0
43
A Figura 12 mostra a interface de resultados com os valores otimizados.
Para este caso os valores ótimos seriam produzir 165 unidades do produ-
to 1 e 335 unidades do produto 2.
3.5.4. Análise de desempenho 4 – Problema 1.2.5. (JÚNIOR; SOUZA,
2004)
Uma refinaria processa vários tipos de petróleo. Cada tipo de petróleo
possui uma planilha de custos diferente, expressando, condições de transporte e
preços na origem. Por outro lado, cada tipo de petróleo representa uma configu-
ração diferente de subprodutos para a gasolina. Na medida em que certo tipo de
petróleo é utilizado na produção da gasolina, é possível a programação das con-
dições de octanagem e outros requisitos. Esses requisitos implicam na classifica-
ção do tipo de gasolina obtida.
Supondo que a refinaria trabalhe com uma linha de quatro tipos diferentes
de petróleo e deseje produzir as gasolinas amarela, azul e superazul, programar a
mistura dos tipos de petróleo atendendo às condições que se seguem nas tabelas
a seguir:
Figura 12 - Interface de resultados da análise de desempenho 3
44
Tabela 1 - Quantidade disponível do Petróleo
Tipo de Petróleo Quantidade Máxima Dis-
ponível (barril/dia) Custos por Bar-
ril/dia (R$)
1 3500 19
2 2200 24
3 4200 20
4 1800 17
Tabela 2 - Percentuais para Limites de Qualidade das Gasolinas
Tipo de Gasolina Especificação Preço de Venda
(R$/Barril)
Superazul Não mais que 30% de 1 Não mais que 40% de 2 Não mais que 50% de 3
35
Azul Não mais que 30% de 1 Não mais que 10% de 2
28
Amarela Não mais que 70% de 1 22
3.5.4.1. Solução esperada por programação linear.
Sendo xij = número de barris de petróleo de tipo j (j = 1, 2, 3, 4) que serão
destinados à produção da gasolina i (i = A-gasolina amarela, Z-gasolina azul e S-
gasolina superazul).
O modelo para a função-objetivo de maximização de vendas fica:
Sujeito a;
(Quantidade disponível do petróleo tipo 1)
(Quantidade disponível do petróleo tipo 2)
(Quantidade disponível do petróleo tipo 3)
(Quantidade disponível do petróleo tipo 4)
(Especificações para gasolina do tipo S)
(...)
(...)
(Especificações para gasolina do tipo Z)
(...)
(Especificações para gasolina do tipo A)
45
3.5.4.2. Utilização da Interface
O sistema de produção em questão deseja otimizar a mistura de petróleo
4 tipos de petróleo para a fabricação de três tipos de gasolina relacionando seus
preços. O modelo proposto de 12 variáveis é:
Sujeito a;
(Quantidade disponível do petróleo tipo 1)
(Quantidade disponível do petróleo tipo 2)
(Quantidade disponível do petróleo tipo 3)
(Quantidade disponível do petróleo tipo 4)
Especificações da mistura de petróleo:
(gasolina do tipo S)
(...)
(...)
(gasolina do tipo Z)
(...)
(gasolina do tipo A)
Para este caso temos:
Coeficientes da função objetivo = 3; -2; 2; -5; 9; 5; 8; 1; 16; 11; 15 e 8
Coeficientes das restrições
Restrição 1 1; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0 e 0 | menor igual | 3500
Restrição 2 0; 1; 0; 0; 0; 1; 0; 0; 0; 1; 0 e 0 | menor igual | 2200
Restrição 3 0; 0; 1; 0; 0; 0; 1; 0; 0; 0; 1 e 0 | menor igual | 4200
Restrição 4 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 0 e 1 | menor igual | 1800
Restrição 5 0; 0; 0; 0; 0; 0; 0; 0; 0,7; -0,3; -0,3; -0,3 | menor igual | 0
Restrição 6 0; 0; 0; 0; 0; 0; 0; 0; -0,4; 0,6; -0,4; -0,4 | maior igual | 0
Restrição 7 0; 0; 0; 0; 0; 0; 0; 0; -0,5; -0,5 0,5; -0,5 | menor igual | 0
Restrição 8 0; 0; 0; 0; 0,7; -0,3; -0,3; -0,3, 0; 0; 0; 0 |menor igual | 0
Restrição 9 0; 0; 0; 0; 0,9; -0,1; -0,1; -0,1, 0; 0; 0; 0 |maior igual | 0
Restrição 10 0,3; -0,7; -0,7; -0,7; 0; 0; 0; 0; 0; 0; 0; 0; | menor igual | 0
46
A janela de resultados deste problema é mostrada na Figura 13. Portanto
têm-se os barris destinados a apenas algumas gasolinas: Z1, Z3, Z4,S1, S2 e S3.
Figura 13 - Interface de resultados da análise de desempenho 4
47
3.5.5. Análise de desempenho 5
Este teste foi realizado a partir da modelagem feita por MARETH, et al.,
(2012) para a gestão de produção de uma indústria de usinagem. O modelo foi
construído a partir do cálculo da margem de contribuição e lucro líquido utilizando
como ferramenta de resolução de programação linear o software pago LINDO ®.
O artigo apresentou dois modelos a partir da gestão de custos da empre-
sa. Um modelo para a Margem de Contribuição e outro modelo para o Lucro Lí-
quido.
Modelo para Margem de Contribuição:
Modelo para Lucro Líquido:
Sujeito as seguintes restrições:
(Tempo
de máquina);
(Custo
de Mão de Obra);
(Custo de
Matéria Prima);
(Demanda Mínima produto 1);
(Demanda Mínima produto 2);
(Demanda Mínima produto 3);
(Demanda Mínima produto 4);
(Demanda Mínima produto 5);
(Demanda produto 6);
(Demanda Máxima produto 1);
(Demanda Máxima produto 2);
(Demanda Máxima produto 3);
(Demanda Máxima produto 4);
(Demanda Máxima produto 5);
(Custos e Despesas Fixas).
48
Para este caso, construiu-se a Tabela 1 com os coeficientes das funções
do processo.
Tabela 3 - Coeficientes das funções para os parâmetros utilizados no Solver
Maximizar Z1 3,21 6,17 15,33 5,36 13,05 419,32
Maximizar Z2 0,96 2,08 0,91 0,15 7,24 267,35
Restrição 1 4,89 2 1,5 2,5 3,75 35,73
<= 218887
Restrição 2 0,41 0,18 0,15 0,92 5,33 12,95
<= 6997,8
Restrição 3 2,4 5,5 7,38 2,9 9,73 241,7
>= 2770
Restrição 4 1 0 0 0 0 0
>= 50
Restrição 5 0 1 0 0 0 0
>= 50
Restrição 6 0 0 1 0 0 0
>= 50
Restrição 7 0 0 0 1 0 0
>= 50
Restrição 8 0 0 0 0 1 0
>= 50
Restrição 9 0 0 0 0 0 1
= 25
Restrição 10 1 0 0 0 0 0
<= 2774
Restrição 11 0 1 0 0 0 0
<= 1050
Restrição 12 0 0 1 0 0 0
<= 302
Restrição 13 0 0 0 1 0 0
<= 1084
Restrição 14 0 0 0 0 1 0
<= 2649
Restrição 15 2,25 4,09 16,24 5,51 5,81 151,97
<= 25328
Assim, os valores dos coeficientes foram inseridos na interface e finalizou-
se a aplicação. A janela de resultados é apresentada na Figura 14 e Figura 15.
Figura 14 - Interface de resultados da primeira maximização da análise 5
49
Os resultados da interface são apresentados conforme a Tabela 2:
Tabela 4 - Resultados da simulação na Interface proposta utilizando-se o solver como fer-ramenta de resolução.
Margem de Contribuição
Lucro Líquido
Z maximizado = 43690,84
Z maximizado = 18953,09
Variável Valor
Variável Valor
c1 2774,00
c1 2774,00
c2 1050,00
c2 1050,00
c3 302,00
c3 302,00
c4 68,48
c4 50,00
c5 983,00
c5 986,19
c6 25,00 c6 25,00
De modo comparativo, os resultados obtidos por MARETH, et al. (2012)
são apresentados na Tabela 3:
Figura 15 - Interface de resultados da segunda maximização da análise 5
50
Tabela 5 - Resultados obtidos por MARETH (2012) utilizando o software pago LINDO®
Margem de Contribuição Lucro Líquido
Total função obj. (Z maximizado) =
46042,93
Total função obj. (Z maximizado) =
18050,33
Variável Valor
Variável Valor
x1 2774,00
x1 2774,00
x2 1050,00
x2 1050,00
x3 302,00
x3 199,83
x4 1084,00
x4 50,00
x5 746,13
x5 925,60
x6 25,00 x6 25,00
Nota-se que nas duas otimizações, tanto pelo Solver quanto pelo LINDO,
tem-se um valor próximo de maximização, apresentando um desvio na diferença
de valores de 5,1 % para a Margem de Contribuição e de 5% para o Lucro Líqui-
do. No entanto, é visível que na Maximização 1 os produtos 4 e 5 possuem valo-
res significativamente diferentes. O mesmo acontece na Maximização 2 em que
os produtos 3 e 5 também apresentam uma diferença significante. Acredita-se
que a fonte desta variação seja o método de resolução utilizado pelo SOLVER e
do LINDO.
51
4. CONCLUSÕES
No estudo de busca por aplicações da programação linear pôde-se con-
cluir que, notavelmente, o uso de ferramentas computacionais para planejamento
cresceu muito nos últimos anos. E também, devido à facilidade e preço acessível,
o Excel vem despontando entre os softwares de otimização para o uso da pro-
gramação linear. Isso se deve, em grande parte, ao fato dele possuir um ambiente
customizado e, muitas vezes, sem custo de implantação.
Ainda, pôde-se confirmar a larga aplicação da Programação Linear em di-
versas áreas, desde Recursos Humanos até Sistemas de Produção.
É plausível afirmar que se deve estimular a utilização destes ambientes,
devido aos ótimos resultados de trabalhos envolvendo esses aplicativos.
Todos os trabalhos encontrados mostram que os modelos aplicados em
programação linear são eficazes ao produzir soluções otimizadas e muitos deles
com um ganho significativo.
Com a utilização do Visual Basic for Applications pôde-se desenvolver
uma interface amigável para a fácil utilização do suplemento Solver , restando ao
usuário somente a inserção das constantes sem se preocupar com a organização
e layout das tabelas. Nas análises de desempenho as interfaces agiram como
esperado, fornecendo e integrando a planilha à interface. O resultados obtidos
nas otimizações é comparável aos da literatura evidenciando a correta programa-
ção das rotinas e interação com o recurso Solver. Ainda, o Solver mostra-se uma
poderosa ferramenta comparável a softwares pagos como o LINDO.
Assim pode-se afirmar que o aplicativo desenvolvido neste trabalho aten-
de às expectativas das pequenas empresas, por ser um aplicativo auxiliar na to-
mada de decisão sem custos de aquisição e implantação.
52
REFERÊNCIAS BIBLIOGRÁFICAS
ABREU, J. D. O estudo da pesquisa operacional no campo da programação
de produção em sistemas agroindustriais. Disponível em:
<http://www.administradores.com.br/informe-se/producao-academica/o-estudo-da-
pesquisa-operacional-no-campo-da-programacao-de-producao-em-sistemas-
agroindustriais/2240/>.
ALVES, J. M. C. B. Um sistema para o planejamento de produção e vendas
de uma empresa mineradora. Dissertação de Mestrado em Engenharia Mineral,
Universidade Federal de Ouro Preto, Ouro Preto, 2007.
BELLIS, P. M. D.; PINHO, A. F.; PAMPLONA, E. D. O. Definição de mix de
produção com uso de programação linear e custos empresariais. p. 14 XI
Congresso Brasileiro de Custos, Porto Seguro , 2004.
BISPO, C. A. F. Uma análise da nova geração de sistemas de apoio à
decisão. Dissertação de Mestrado, Escola de Engenharia de São Carlos,
Universidade de São Paulo, São Carlos, 1998.
BRITO, R. G. F. A. Planejamento Programação e Controle da Produção. 2ª
Ediçao. São Paulo: Editora Imam, 2000. 108 p. p.
CEZARINO, W.; FILHO, O. S. S.; RATTO, J. R. Planejamento agregado da
produção: Modelagem e solução via planilha Excel & Solver. Revista
Produção. ABEPRO, v. IX, n. Nº III, p. 28, 2009.
COSTA, A. R. N. Programação da produção otimizada em indústrias de
panificação. 2009. 119f. Dissertação (Mestrado em Métodos Numéricos em
Engenharia), Universidade Federal do Paraná, Curitiba, 2009.
ECKER, J. G.; KUPFERSCHMID, M. Introdution to operations research. New
York: John Wiley & Sons, v. Vol. 1, 1988. 509 p. p.
53
FEY, E.; SANTOS, S. R. Planejamento de um sistema agrícola utilizando
programação linear.. Congresso e Mostra de AgroInformática, Ponta Grossa,
2000.
FROSSARD, A. C. P. Programação linear: Maximização de lucros e
minimização de custos. Revista Científica da Faculdade Lourenço Filho. v. Vol.
6 , n. 1, p. 19-48, 2009.
GITOTTI, L. J.; NISHIMURA, V. S.; MESQUITA, M. A. Simulação em planilhas
para programção de ordens de produção em sistemas Job Shop. XXXI
Encontro NAcional de Engenharia de Produção , Belo Horizonte, 2011.
GRANDI, B. Uso da programação linear, através de planilha eletrônica
(Excel), como auxílio no planejamento de sistemas de produção agrícola. p.
5 Congresso e Mostra de AgroInformática, Ponta Grossa, 2000.
JÚNIOR, A. D. C. G.; SOUZA, M. J. F. Solver (excel): Manual de Referência.
Apostila, Universidade Federal de Ouro Preto, Ouro Preto, 2004.
JÚNIOR, J. C. M. Programação linear no planejamento agregado de
produção e vendas de uma indústria siderúrgica. 2009. 77 f. Dissertação
(Mestrado em Engenharia de Produção), Universidade Federal de MInas Gerais,
Belo Horizonte, 2009.
JÚNIOR, J. F. D. A.; SILVA, A. B. D. Um sistema de apoio à decisão baseado
em planilhas eletrônicas para o planejamento da produção na indústria de
laticínios. Revista Brasileira de Agroinformática. v. Vol. 7, n. n. 2, p. 17-31, 2005.
KLANN, R. et al. Utilização da programação linear na otimização de
resultados de uma empresa do ramo de transporte rodoviário de cargas. Vol.
1, ABCustos Associação Brasileira de Custos, [S.l.], 2010.
LEON, L.; PRZASNYSKI, Z.; SEAL, K. C. Spreadsheets and OR/MS models: an
enduser perspective. Interfaces. p. 92-104, 1996.
54
MARETH, T. et al. Programação linear como ferramenta de apoio a gestão de
custos: Um estudo de caso em uma indústria de usinagem. Revista Eletrônica
Pesquisa Operacional para o Desenvolvimento. v. Vol.4, n. 2ª Edição, Rio de
Janeiro, p. p. 125-138, 2012.
MIGLIOLI, M.; OSTANEL, L. H.; TACHIBANA, W. K. Planilhas eletrônicas como
ferramentas para apoio à decisão e geração de conhecimento na pequena
empresa. p. 8 XXIV Encontro Nacional de Engeneharia de Produção ,
Florianópolis, 2004.
MIRANDA, J.; MARTINS, V. F.; FARIA, A. F. D. O uso da programação linear
num contexto de laticínios com várias restrições na capacidade produtiva.
Revista Custos e @gronegócio. v. Vol. 3, n. Edição Especial, p. 40 - 58, 2007.
MUNHOZ, J. R.; MORABITO, R. Um modelo baseado em programação linear
e programação de metas para análise de um sistema de produção e
distribuição de suco concentrado congelado de laranja. Revista Gestão &
Produção. v. Vol. 8, n. n.2, p. 139-159, ago. 2001.
NETO , A. R.; ZANELLA, C. Planejamento da produção com a utilização do
solver-excel na empresa Bondio Alimentos S.A. XXVII Encontro NAcional de
Engenharia de Produção , Foz do Iguaçu, 2007.
NETO, A. R.; DEIMLING, M. F.; TOSATI, M. C. Aplicação da programação
linear no planejamento e controle de produção: Definição do mix de
produção de uma indústria de bebidas. p. 10 XIII SIMPEP, Bauru, 2006.
OENNING, V. et al. Teoria das restrições e programação linear. Uma análise
sobre o enfoque de otimização da produção. p. 8 XXIV Encontro Nacional de
Engenharia de Produção , Florianópolis, 2004.
OLISZESKI, C. A. N. Modelos de planejamento agrícola: Um cenário para
otimização de processos agroindustriais. Dissertação (Mestrado em
Engenharia de Produção - Programa de de Pós-Graduação em Tenologia),
Universidade Tecnológica Federal do Paraná, Ponta Grossa, 2010.
55
OLIVEIRA, L. V. Utilização da programação linear para produção de sopa
desidratada em leito de jorro. VII Congresso Brasileiro de Engenharia Química
em Iniciação Científica, Uberlândia, 2009.
OLIVEIRA, V. A. D. Programação da produção de um estaleiro náutico. 2011.
126 f. Dissertação (Mestrado em Engenharia Mecânica e de Materiais),
Universidade Tecnológica Federal do Paraná, Curitiba, 2011.
PAULO, E. et al. Aplicação da programação linear para redução de custos de
produção: Enfoque sobre o planejamento de produção e do quadro
funcional. p. 17 Fundação Visconde de Cairu, Salvador, 2003.
PEKNY, J. F.; REKLAITIS, G. V. Towards the Convergence of theory and
practice: A technoloy guide for scheduling/planning methodology in
proceedings of the foundations of computer aided process operations. p. 1-
20 Conference - FOCAPO, Snowbird. Utah, 1998.
POLON, P. E. Otimização da produção da indústria de embutidos. Tese
(Doutorado em Engenharia Química), Universidade Estadual de Maringá,
Maringá, 2010.
ROCHA, P. T. Programação matemática da produção em processos batelada
utilizando planilhas do Excel com interface amigável. Dissertação de
Mestrado em Engenharia Química, Universidade Estadual de Maringá, Maringá,
2011.
SEVERO, L. S. Aplicação de modelo de programação da produção na
indústria de couros. Dissertação de Mestrado em Engenharia Química,
Universidade Federal do Rio Grande do Sul, Porto Alegre, 2007.
VIEIRA, C. et al. Otimização de um processo produtivo por meio do uso
conjunto da teoria das restrições com programação linear: Estudo de caso
no segmento de plásticos descartáveis. p. 13 XXXI Encontro Nacional de
Engenharia de Produção, Belo Horizonte, 2011.
56
ZACCARELLI, S. B. Programação e controle da produção. 6ª Edição. São
Paulo: Pioneira, 1982. 292 p. p.
57
APÊNDICE A – Manual de utilização da Interface de Programação
da Produção por Programação Linear – Interface PPPL
63
APÊNDICE B – Macros: Código VBA
Macro 1 – Interface Inicial
Private Sub CommandButton1_Click() 'Testar se alguma opção de aplicação foi selecionada Dim Checar As Boolean Dim C As Object Checar = False For Each C In Controls If TypeName(C) = "OptionButton" Then If C.Value = True Then Checar = True End If End If Next C 'Caso não encontre nenhuma opção seleciona mostrar mensagem de erro If Checar = False Then MsgBox "Selecione uma opção de Aplicação" Exit Sub End If 'Caso tudo estaja selecionado seguir em frente 'Este calcula o caso de Aplicação Geral 'Primeiramente testa se o número de variáveis foi fornecido If TextBox3 = "" Then MsgBox "Informe o número de variáveis" Exit Sub End If Var = TextBox3.Value UserForm1.Hide ' 'Macro 1 'Cria a planilha na forma correta de aplicação Solver ' ' Range("A1").Select ActiveCell.FormulaR1C1 = "Planejamento de Produção por Programação Linear" With Selection.Font .Name = "Calibri" .Size = 18 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone
64
.ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontMinor End With Selection.Font.Italic = True Range("D2").Select ActiveCell.FormulaR1C1 = "Nº de variáveis=" Columns("D:D").Select Columns("D:D").EntireColumn.AutoFit Range("A4").Select ActiveCell.FormulaR1C1 = "Função Objetivo" Range("D5").Select ActiveCell.FormulaR1C1 = "Total função Otimizada" Columns("D:D").Select Columns("D:D").EntireColumn.AutoFit Range("D5").Select ActiveCell.FormulaR1C1 = "Total função obj." Range("D7").Select ActiveCell.FormulaR1C1 = "Variável Otimizada" Columns("D:D").Select Columns("D:D").EntireColumn.AutoFit Range("E7").Select ActiveCell.FormulaR1C1 = "Valor" Range("A7").Select ActiveCell.FormulaR1C1 = "Coeficientes" Columns("B:B").Select Columns("A:A").ColumnWidth = 11.86 Range("B7").Select ActiveCell.FormulaR1C1 = "Valor" Range("A4:E4").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With Selection.Borders(xlEdgeBottom).LineStyle = xlNone With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone Dim z_obj As Integer 'Cria as colunas das n variáveis For z_obj = 1 To Var
65
Range("A" & z_obj + 7).Select ActiveCell.FormulaR1C1 = "x" & z_obj Next z_obj Dim w As Integer 'Cria as colunas das n variáveis a ser otimizada For w = 1 To Var Range("D" & w + 7).Select ActiveCell.FormulaR1C1 = "c" & w Next w Range("E2").Select ActiveCell.FormulaR1C1 = "" & Var UserForm2.Show End Sub Private Sub CommandButton2_Click() UserForm1.Hide End Sub
Macro 2 – Interface da Função Objetivo
Option Explicit Private Sub CommandButton1_Click() ' 'Checa se todos os parâmetros fora preenchidos Dim Checar As Boolean Dim C As Object Checar = False For Each C In Controls If TypeName(C) = "OptionButton" Then If C.Value = True Then Checar = True End If End If Next C If Checar = False Then 'Caso não encontre nenhuma opção seleciona mostrar men-sagem de erro MsgBox "Selecione uma opção de Otimização" Exit Sub End If ' 'Insere o somatório da função objetivo Call SomatorioObjetivo
66
' 'Marcada a opção, seguir em frente UserForm2.Hide UserForm3.Show End Sub Private Sub CommandButton2_Click() UserForm2.Hide UserForm1.Show End Sub Private Sub CommandButton3_Click() Dim w w = Plan1.Range("T5").Value If w < Range("E2") Then Dim q q = Plan1.Range("B65000").End(xlUp).Row Range("B" & q + 1).Select ActiveCell.FormulaR1C1 = TextBox1.Text Range("T5").Select ActiveCell.FormulaR1C1 = w + 1 TextBox1 = "" Call PreencherListBox Else MsgBox "Todas as variáveis já foram preenchidas!" TextBox1 = "" End If End Sub Private Sub OptionButton1_Click() 'MMV é usado para se referir ao MaxMinVal do parametro SolverOk ' 'Caso deseja-se Maximizar a função objetivo ' If OptionButton1.Value = True Then Range("T4").Value = 1 End If End Sub Private Sub OptionButton2_Click() ' 'Caso deseja-se Minimizar a função objetivo ' If OptionButton2.Value = True Then Range("T4").Value = 2 End If End Sub Private Sub UserForm_Initialize() 'ao inicializar o form preenche o controle Call PreencherListBox
67
End Sub Sub PreencherListBox() Dim lastRow As Long Dim i As Integer ListBox1.Clear With ListBox1 'define nº colunas .ColumnCount = 2 End With ' Verifica qual a ultima linha preenchida lastRow = Plan1.Range("A65000").End(xlUp).Row 'adiciona dados For i = 8 To lastRow Me.ListBox1.AddItem Plan1.Range("A" & i) Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Plan1.Range("B" & i) Next End Sub Sub SomatorioObjetivo() ' 'Adiciona a somatória da função objetivo Dim f As String 'Salva o somatório Dim y As String 'Intermediário para o somatório Dim m As Long 'Contador para percorrer todos os coeficientes f = "=" For m = 1 To Plan1.Range("E2").Value y = "B" & m + 7 & "*E" & m + 7 f = f & "+" & y Next m Range("E5").Select 'Insere o somatório na célula correspondente ActiveCell.Formula = f End Sub
Macro 3 – Interface das Restrições
Option Explicit Private Sub CommandButton1_Click() Módulo1.Solver UserForm3.Hide UserForm5.Show End Sub Private Sub CommandButton3_Click()
68
UserForm4.Show End Sub Private Sub UserForm_Activate() ' 'Preenche ListBox com o número de restrições inseridas Call PreencherListBoxRestricoes End Sub Private Sub UserForm_Initialize() ' 'Cria o cabeçalho das Restrições ' Range("H4:I4").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = False .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge ActiveWindow.SmallScroll ToRight:=2 ActiveCell.FormulaR1C1 = "Restrições" Range("G4:I4").Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With Selection.Borders(xlEdgeBottom).LineStyle = xlNone With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .ColorIndex = xlAutomatic .TintAndShade = 0 .Weight = xlThin End With
69
Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone ' 'Cria um contador para construção da planilha de restrição ' Range("T7").Select ActiveCell.FormulaR1C1 = 7 ' 'Cria um contador de restrições ' Range("T8").Select ActiveCell.FormulaR1C1 = 1 End Sub Sub PreencherListBoxRestricoes() Dim sa ListBox1.Clear With ListBox1 .ColumnCount = 1 End With sa = Plan1.Range("T8") Me.ListBox1.AddItem sa End Sub
Macro 4 – Interface de adição de restrições
Option Explicit Private Sub CommandButton1_Click() '################################ 'Checar se tudo foi preenchido '################################ 'Checa se foi fornecido valores dos coeficientes If Range("T6") = 0 Then MsgBox "Nenhum valor dos coeficientes foram Digitados" Exit Sub End If If Range("T6") < Range("E2") Then MsgBox "Ainda falta valores dos coeficientes" Exit Sub End If 'Checa se foi selecionado o igualador Dim Checar As Boolean Dim C As Object Checar = False For Each C In Controls If TypeName(C) = "OptionButton" Then If C.Value = True Then
70
Checar = True End If End If Next C 'Caso não encontre nenhuma opção seleciona mostrar mensagem de erro If Checar = False Then MsgBox "Selecione o igualador: <=, =, >= !" Exit Sub End If 'Checa se foi dado valor a igualdade If TextBox2 = "" Then MsgBox "Forneça o valor da igualdade ou desigualdade" Exit Sub End If '################################# 'Caso tudo OK, prosseguir '################################# 'Inserir somatório das multiplicações LHS Call Somatorio ' 'Conta para a próxima restrição Dim d As Integer d = Plan1.Range("T7") d = d + Range("E2") + 5 Range("T7").Select ActiveCell.FormulaR1C1 = "" & d ' 'Conta o número de restrições Dim h As Integer h = Plan1.Range("T8") h = h + 1 Range("T8").Select ActiveCell.FormulaR1C1 = "" & h ' 'Controle para manter o valor de t Range("T6").Select ActiveCell.FormulaR1C1 = 0 UserForm4.Hide End Sub Private Sub CommandButton3_Click() ' 'Checagem se foi digitado o valor da variável If TextBox1 = "" Then
71
MsgBox "Nenhum valor foi digitado!" Else ' 'Caso digitado, armazena valor na célula correspondente Dim w w = Plan1.Range("T6").Value 'Controla o número de variáveis digitadas If w < Range("E2") Then Dim q q = Plan1.Range("I65000").End(xlUp).Row Range("I" & q + 1).Select ActiveCell.FormulaR1C1 = TextBox1.Text Range("T6").Select 'Controle do número de variáveis adiciona-das ActiveCell.FormulaR1C1 = w + 1 TextBox1 = "" Call PreencherListBox Else MsgBox "Todas as variáveis já foram preenchidas!" TextBox1 = "" End If End If End Sub Private Sub CommandButton4_Click() UserForm4.Hide End Sub Private Sub CommandButton5_Click() '################################ 'Checar se tudo foi preenchido '################################ 'Checa se foi fornecido valores dos coeficientes If Range("T6") = 0 Then MsgBox "Nenhum valor dos coeficientes foram Digitados" Exit Sub End If If Range("T6") < Range("E2") Then MsgBox "Ainda falta valores dos coeficientes" Exit Sub End If 'Checa se foi selecionado o igualador Dim Checar As Boolean Dim C As Object Checar = False
72
For Each C In Controls If TypeName(C) = "OptionButton" Then If C.Value = True Then Checar = True End If End If Next C 'Caso não encontre nenhuma opção seleciona mostrar mensagem de erro If Checar = False Then MsgBox "Selecione o igualador: <=, =, >= !" Exit Sub End If 'Checa se foi dado valor a igualdade If TextBox2 = "" Then MsgBox "Forneça o valor da igualdade ou desigualdade" Exit Sub End If '################################# 'Caso tudo OK, prosseguir '################################# 'Inserir somatório das multiplicações LHS Call Somatorio ' 'Conta para a próxima restrição Dim d As Integer d = Plan1.Range("T7") d = d + Range("E2") + 5 Range("T7").Select ActiveCell.FormulaR1C1 = "" & d ' 'Conta o número de restrições Dim h As Integer h = Plan1.Range("T8") h = h + 1 Range("T8").Select ActiveCell.FormulaR1C1 = "" & h ' 'Controle para manter o valor de t Range("T6").Select ActiveCell.FormulaR1C1 = 0 'Limpa a list box ListBox1.Clear 'Limpa Textbox2 TextBox2 = ""
73
'Preenche a listbox com as novas restrições Call PreencherRestricoes End Sub Private Sub OptionButton1_Click() ' 'Escolha do igualador ' Dim g As Integer If OptionButton1.Value = True Then g = Plan1.Range("T7") + Plan1.Range("E2") + 1 Range("I" & g).Value = 1 End If End Sub Private Sub OptionButton2_Click() ' 'Escolha do igualador ' Dim g As Integer If OptionButton2.Value = True Then g = Plan1.Range("T7") + Plan1.Range("E2") + 1 Range("I" & g).Value = 2 End If End Sub Private Sub OptionButton3_Click() ' 'Escolha do igualador ' Dim g As Integer If OptionButton3.Value = True Then g = Plan1.Range("T7") + Plan1.Range("E2") + 1 Range("I" & g).Value = 3 End If End Sub Private Sub TextBox2_Change() ' 'Adiciona o valor RHS a célula Dim j As Integer j = Plan1.Range("T7") + Plan1.Range("E2") + 2 Range("I" & j).Value = TextBox2.Value ' End Sub Private Sub UserForm_Initialize() ' 'Cria os espaços para as restrições e seus coeficientes ' Call PreencherRestricoes Range("T6").Select
74
ActiveCell.FormulaR1C1 = 0 ListBox1.Clear End Sub Sub PreencherListBox() Dim lastRow As Long Dim i As Integer Dim S As Integer S = Plan1.Range("T7").Value ListBox1.Clear With ListBox1 'define nº colunas .ColumnCount = 2 End With ' Verifica qual a ultima linha preenchida lastRow = Plan1.Range("H65000").End(xlUp).Row 'adiciona dados For i = S To lastRow - 3 Me.ListBox1.AddItem Plan1.Range("H" & i) Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Plan1.Range("I" & i) Next End Sub Sub PreencherRestricoes() Dim r As Integer 'Cria as colunas das n variáveis das restrições Dim t As Integer Dim p As Integer r = Plan1.Range("H65000").End(xlUp).Row Range("G" & r + 2).Select ActiveCell.FormulaR1C1 = "nº" & Range("T8") Range("H" & r + 2).Select ActiveCell.FormulaR1C1 = "Coeficiente" Range("I" & r + 2).Select ActiveCell.FormulaR1C1 = "Valor" For t = 1 To Range("E2").Value Range("H" & r + 3).Select ActiveCell.FormulaR1C1 = "x" & t r = r + 1 Next t p = Plan1.Range("H65000").End(xlUp).Row Range("H" & p + 1).Select ActiveCell.FormulaR1C1 = "LHS=" Range("H" & p + 2).Select ActiveCell.FormulaR1C1 = "Igualador=" Range("H" & p + 3).Select ActiveCell.FormulaR1C1 = "RHS=" End Sub Sub Somatorio()
75
' 'Adiciona o somatório do LHS ' Dim z As Integer 'Contador para definir o local da somatória Dim f As String 'Salva o somatório Dim y As String 'Intermediário para o somatório Dim m As Long 'Contador para percorrer todos os coeficientes Dim n 'Intermediário para o valor de "m" z = Plan1.Range("T7") + Plan1.Range("E2") f = "=" For m = 1 To Plan1.Range("T6").Value n = Range("T7") - 1 y = "I" & m + n & "*E" & m + 7 f = f & "+" & y Next m Range("I" & z).Select ActiveCell.Formula = f End Sub
Macro 5 – Interface dos resultados
Option Explicit Private Sub CommandButton1_Click() UserForm5.Hide End Sub Sub PreencherListBox() Dim lastRow As Long Dim i As Integer ListBox1.Clear With ListBox1 'define nº colunas .ColumnCount = 2 End With ' Verifica qual a ultima linha preenchida lastRow = Plan1.Range("D65000").End(xlUp).Row 'adiciona dados For i = 8 To lastRow Me.ListBox1.AddItem Plan1.Range("D" & i) Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Plan1.Range("E" & i) Next End Sub Private Sub UserForm_Click() End Sub
76
Private Sub UserForm_Initialize() Dim r As Long Call PreencherListBox r = Plan1.Range("E5").Value TextBox1.Text = r End Sub
Macro 6 – Aplicação Solver
Linhas de programação para utilização automática do Solver.
Option Explicit Sub Solver() ' ' MACRO para utilizar o solver ' '######################################################################################### ' ' Parâmetros iniciais do solver: Célula destino, Otimização, Intervalo de variáveis, etc.. Dim ChangeAddr As String, MaxMinVal As Long Dim n As Integer ' Procura a última linha preenchida das variáveis n = Plan1.Range("B65000").End(xlUp).Row ChangeAddr = "$E$8:$E$" & n MaxMinVal = Range("T4").Value 'Seta os parâmetros iniciais SolverOk SetCell:="$E$5", MaxMinVal:="" & MaxMinVal, ValueOf:=0, By-Change:="" & ChangeAddr, _ Engine:=2, EngineDesc:="Simplex LP" '######################################################################################### ' 'Adição das Restrições Dim h As Integer 'Número de restrições Dim w As Integer 'Referência para o Loop Dim q As String 'Referência para localizar célula que deve ser lida Dim r As Long
77
h = Plan1.Range("T8") - 1 q = 7 + Plan1.Range("E2") For w = 1 To h r = Range("$I$" & q + 1).Value SolverAdd CellRef:="$I$" & q, Relation:="" & r, Formu-laText:="$I$" & q + 2 q = q + 5 + Plan1.Range("E2") Next w '########################################################################################## ' ' Finaliza o Solver SolverSolve True ' ' Define ação e tipo de relatórios SolverFinish KeepFinal:=1, ReportArray:=1, OutlineReports:=1 End Sub
78
ANEXO – Artigo de referência para teste de desempenho
Análise de desempenho 5 - (MARETH, et al., 2012)