DESENVOLVIMENTO DE UMA INTERFACE VBA...

84
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

Transcript of DESENVOLVIMENTO DE UMA INTERFACE VBA...

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.

EPÍGRAFE

"Feliz é aquele que transfere o que

sabe e aprende o que ensina"

Cora Coralina

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

58

59

60

61

62

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)

79

80

81

82

83

84