marcio bastos bsi tcc
DESCRIPTION
pesquisa operacionalTRANSCRIPT
FACULDADE DAS INDÚSTRIAS – FAMEC
MÁRCIO BASTOS
APLICATIVO PARA RESOLUÇÃO DE PROBLEMAS DE PROGRAMAÇÃO LINEAR
SÃO JOSÉ DOS PINHAIS
JUNHO / 2014
MÁRCIO BASTOS
APLICATIVO PARA RESOLUÇÃO DE PROBLEMAS DE PROGRAMAÇÃO LINEAR
Trabalho apresentado à disciplina de Trabalho de Conclusão de Curso, sob solicitação da professora Cassiana Fagundes da Silva para obtenção de nota no oitavo período do curso de Bacharelado em Sistemas de Informação.
SÃO JOSÉ DOS PINHAIS
JUNHO / 2014
ii
RESUMO
O trabalho apresentará como foco principal o desenvolvimento de um
aplicativo voltado a Pesquisa Operacional, especificamente para Programação
Linear e a importância da utilização de um aplicativo que auxilie durante a execução
dos problemas que envolvem a programação linear.
Com a Programação Linear, pode se resolver inúmeros problemas que
envolvem alocação de recursos, rotas, pessoas ente outros, dependendo do ramo
que for utilizado, com isso percebe – se que a importância da Pesquisa Operacional
que vai além de apenas resolver problemas matemáticos, mais também pode
solucionar problemas do nosso cotidiano.
Com este trabalho, o leitor compreenderá os conceitos relacionais a Pesquisa
Operacional, Programação Linear e demais subitens, e compreender a importância
da utilização do aplicativo em questão para solucionar os problemas envolvendo
Programação Linear.
Palavras – Chaves: Pesquisa Operacional, Programação Linear, Aplicativo.
iii
LISTA DE TABELAS
TABELA 1 – NÚMEROS E INCÓGNITAS.................................................................24TABELA 2 – SINAIS DE RESTRIÇÃO.......................................................................24TABELA 3 – REGRAS...............................................................................................25TABELA 4 – EXEMPLIFICAÇÃO...............................................................................25TABELA 5 – MANTER ARQUIVO..............................................................................26TABELA 6 – EDITAR ARQUIVO................................................................................27TABELA 7 – EXECUTAR O ARQUIVO.....................................................................27TABELA 8 – ACESSAR CONTEÚDO DE AJUDA.....................................................28TABELA 9 – CRIAR NOVO ARQUIVO......................................................................29TABELA 10 – ABRIR O ARQUIVO............................................................................30TABELA 11 – SALVAR O ARQUIVO.........................................................................31TABELA 12 – SALVAR ARQUIVO COMO................................................................33TABELA 13 – SELECIONAR SAIR............................................................................34TABELA 14 – EXECUTAR ARQUIVO.......................................................................35TABELA 15 – DESFAZER ALTERAÇÕES NO ARQUIVO........................................37TABELA 16 – REFAZER ALTERAÇÕES NO ARQUIVO...........................................38TABELA 17 – RECORTAR CONTEÚDO DO ARQUIVO...........................................38TABELA 18 – COPIAR CONTEÚDO DO ARQUIVO.................................................39TABELA 19 – COLAR CONTEÚDO NO ARQUIVO...................................................40TABELA 20 – SELECIONAR TODO O CONTEÚDO DO ARQUIVO.........................40TABELA 21 – DELETAR O CONTEÚDO DO ARQUIVO...........................................41TABELA 22 – OBTER AJUDA...................................................................................42TABELA 23 – OBTER INFORMAÇÕES SOBRE O APLICATIVO.............................43TABELA 24 – ÍNDICE DE ATIVIDADES PARAO CRONOGRAMA...........................53TABELA 25 – CRONOGRAMA..................................................................................53
iv
LISTA DE ILUSTRAÇÕES
FIGURA 1 – MODELO MATEMÁTICO......................................................................10FIGURA 2 – SUPORTE DO SCPSOLVER................................................................18FIGURA 3 – ESTRUTURA BÁSICA DO ECLIPSE....................................................19FIGURA 4 – ASTAH COMMUNITY...........................................................................20FIGURA 5 – CASO DE USO GERAL........................................................................26FIGURA 6 – MANTER O ARQUIVO..........................................................................29FIGURA 7 – EXECUTAR ARQUIVO.........................................................................35FIGURA 8 – EDITAR O ARQUIVO............................................................................37FIGURA 9 – OBTER AJUDA.....................................................................................42FIGURA 10 – EDITAR O ARQUIVO..........................................................................44FIGURA 11 – MANTER O ARQUIVO........................................................................45FIGURA 12 – EXECUTAR O ARQUIVO....................................................................46FIGURA 13 – SELECIONAR AJUDA.........................................................................47FIGURA 14 – INÍCIO.................................................................................................48FIGURA 15 – MENSAGEM........................................................................................48FIGURA 16 – IO.........................................................................................................49FIGURA 17 – CÓDIGO..............................................................................................50FIGURA 18 – EQUAÇÃO...........................................................................................51FIGURA 19 – TELAS.................................................................................................52FIGURA 20 – TELA INICIAL......................................................................................55FIGURA 21 – MENU ARQUIVO................................................................................56FIGURA 22 – MENU EDITAR....................................................................................57FIGURA 23 – MENU EXECUTAR ARQUIVO............................................................58FIGURA 24 – MENU DE AJUDA...............................................................................59FIGURA 25 – ABRIR ARQUIVO................................................................................60FIGURA 26 – SALVAR ARQUIVO.............................................................................61FIGURA 27 – TELA DE RESULTADO DE MODELO COM SOLUÇÃO....................62FIGURA 28 – TELA DE RESULTADO DE MODELO SEM SOLUÇÃO.....................63FIGURA 29 – TELA DE AJUDA.................................................................................64FIGURA 30 – TELA DE ALERTA PARA SOBRESCREVER ARQUIVO...................65FIGURA 31 – TELA DE ALETAR PARA SALVAR.....................................................66FIGURA 32 – TELA SOBRE O OPTILIANA..............................................................66FIGURA 33 – TELA DE ERRO CAUSADA POR UM ELEMENTO QUE NÃO FAZ PARTE DO MODELO................................................................................................67FIGURA 34 - ORDEM ERRADA DOS ELEMENTOS DO MODELO.........................68FIGURA 35 – TELA DE ERRO OCASIONADA POR CARACTERE INVÁLIDO........69FIGURA 36 – TELA DE ERRO CAUSADA POR EXECUTAR UM ARQUIVO QUE NÃO É CONTÉM UMA PL.........................................................................................70FIGURA 37 – TELA DE ERRO AO EXECUTAR SEM SELECIONAR MAXIMIZAR OU MINIMIZAR..........................................................................................................71
v
LISTA DE SIGLAS E ABREVIATURAS
ASCII American Standard Code for Information Interchange
C Linguagem de Programação
C++ Linguagem de Programação
CPLEX Biblioteca de Programação Linear da IBM
CVS Concurrent Version System
GNU General Public License
GLPK GNU Linear Programming Kit
GUI Graphical User Interface
Hardware Parte Física de um computador
IBM International Business Machines
IDE Ambiente de Desenvolvimento Integrado
IO Input/Output
JAVA Linguagem de Programação
JDK Java Development Kit
JRE Java Runtime Envioronment
JVM Java Virtual Machine
LINUX Sistema Operacional
LPSOLVER Biblioteca de Programação Linear Open Source
MAC OS Sistema Operacional
MYSQL Banco de Dados
OAK Linguagem de Programação
OO Orientado a Objeto
PL Programação Linear
PO Pesquisa Operacional
POJO Plain Old Java Objects
POO Programação Orientada a Objetos
UML Unified Modeling Language
WINDOWS Sistema Operacional
vi
SUMÁRIO
1 INTRODUÇÃO..........................................................................................................12 PESQUISA OPERACIONAL....................................................................................32.1 MODELAGEM MATEMÁTICA...............................................................................52.1.1 Definição do Problema e Coleta de Dados.........................................................62.1.2 Formulação e Construção do Modelo.................................................................62.1.3 Solução do Modelo.............................................................................................72.1.4 Validação do Modelo..........................................................................................72.1.5 Aplicação do Modelo...........................................................................................82.2 PROGRAMAÇÃO LINEAR ...................................................................................92.2.1 Itens da Programação Linear............................................................................112.2.2 Algumas Aplicações Da Programação Linear...................................................123 FERRAMENTAS E TECNOLOGIAS......................................................................143.1 JAVA....................................................................................................................143.1.1 Características da Linguagem Java..................................................................153.2 PROGRAMAÇÃO ORIENTADA A OBJETOS.....................................................163.3 BIBLIOTECAS DE PROGRAMAÇÃO LINEAR....................................................173.3.1 Gnu Linear Programming Kit (Glpk)..................................................................173.3.2 SCPSolver........................................................................................................183.4 ECLIPSE..............................................................................................................193.5 ASTAH.................................................................................................................204 SISTEMA PROPOSTO...........................................................................................224.1 OBJETIVO GERAL DO SISTEMA.......................................................................224.2 REQUISITOS FUNCIONAIS DO SISTEMA.........................................................224.3 REQUISITOS NÃO FUNCIONAIS DO SISTEMA................................................234.4 DIAGRAMA DE CASO DE USO..........................................................................254.4.1 Diagrama de Caso de uso geral.......................................................................254.4.2 Caso de Uso Especifico Manter Arquivo...........................................................284.4.3 Caso de uso Executar arquivo..........................................................................354.4.4 Caso de Uso Editar Arquivo..............................................................................364.4.5 Acessar conteúdo de ajuda...............................................................................424.5 DIAGRAMAS DE SEQUENCIA...........................................................................444.6 DIAGRAMAS DE CLASSE..................................................................................475 CRONOGRAMA.....................................................................................................536 RESULTADOS OBTIDOS......................................................................................546.1 CARACTERISTICAS BASICAS...........................................................................556.2 CARACTERISTICAS DE ENTRADA E SAIDA....................................................596.3 CARACTERISTICAS DOS RESULTADOS.........................................................616.4 CARACTERISTICAS INFORMATIVAS...............................................................646.5 CARACTERISTICAS DE ALERTA......................................................................677 CONSIDERAÇÕES FINAIS....................................................................................72REFERÊNCIAS.........................................................................................................73
vii
1
1 INTRODUÇÃO
A pesquisa operacional tem contribuído muito para o desenvolvimento
econômico de muitos países, sendo uma dessas contribuições o aumento da
produtividade em diversas áreas, uma das áreas dentro da pesquisa operacional é a
programação linear que desde 1950 tem sido de grande importância para as mais
diversas organizações ao redor do mundo, poupando milhares de dólares, por esse
motivo hoje a maior parte da computação cientifica é dedica à programação linear,
essa técnica por sua vez utiliza de modelos matemáticos com funções lineares para
resolver os mais variados problemas encontrados na sociedade em geral. (HILLIER ,
2006).
O presente trabalho tem como objetivo geral o desenvolvimento de um
aplicativo para resolução de problemas de programação linear, especificamente um
editor.
Objetivando especificamente pesquisas bibliográficas sobre pesquisa
operacional, modelagem matemática, programação linear, ferramentas e tecnologias
a ser utilizada assim como o desenvolvimento do sistema proposto.
E também será apresentado neste trabalho tecnologias como a linguagem de
programação Java, programação orientada a objetos, Editor eclipse, biblioteca de
programação Linear GLPK, SCPSolver entre outros, afim de auxiliar no
desenvolvimento do sistema.
Ao término desta pesquisa espera-se que o pesquisador tenha uma visão
clara do caminho para desenvolvimento de sistemas que tenham como requisito a
resolução de problemas de programação linear.
A estrutura deste trabalho será organizada conforme segue:
O capitulo 1 apresenta uma breve introdução sobre o que será descrito no
decorrer do trabalho.
No capitulo 2 é realizado a fundamentação teórica sobre a Pesquisa
Operacional, modelagem matemática, juntamente com a explicação de
Programação Linear e seus subitens.
O capitulo 3 é descrito as ferramentas e tecnologias usadas para a execução
do sistema proposto.
O capitulo 4 aborda o projeto de desenvolvimento do aplicativo, contendo o
projeto lógico.
2
No capítulo 5 é descrito o cronograma do trabalho.
No capítulo 6 são apresentados os resultados obtidos.
No capítulo 7 se encontra as considerações finais sobre os conhecimentos
adquiridos durante a pesquisa.
3
2 PESQUISA OPERACIONAL
Desde a revolução industrial até os dias atuais, algumas empresas cresceram
e se tornaram complexas, ou seja, as oficinas de artesãos evoluíram para grandes
corporações, e gerando grande divisão de trabalho e a segmentação das
responsabilidades gerenciais que se tornariam os propulsores que contribuíram para
o aumento dessas instituições.
Desde o advento da revolução industrial, o mundo presencia um crescimento extraordinário no tamanho e complexidade das organizações. As pequenas oficinas de artesãos de outrora evoluíram para as corporações bilionárias de hoje. Um fator crucial dessa mudança revolucionaria foi o extraordinário aumento na divisão do trabalho e a segmentação das responsabilidades gerenciais nessas organizações. (HILLIER; LIEBERMAN, 2006, p. 01).
O aumento do tamanho das organizações pode resultar em complexidade e
alta especialização das operações, assim então, gerar conflitos de atividades
exercidas pelas organizações, surgindo também, dificuldades para alocar recursos.
Sendo assim, essas dificuldades contribuíram para o surgimento da pesquisa
operacional, pois a mesma tende a ser uma ferramenta de grande importância para
alocar recursos, pessoas, elaboração de rotas, entre outros. Ao inserir esta
metodologia nas empresas é gerado um ganho considerável para a instituição, pois
a mesma consegue administrar melhor os seus recursos e processos, fazendo com
que a empresa consiga se tornar ou se manter competitiva.
Em Taha (2008) é afirmado que foi na Inglaterra, no período em que ocorria a
segunda guerra mundial que a pesquisa operacional teve seu primeiro uso formal,
onde cientistas optaram por tomar decisões baseadas na ciência, assim otimizando
os processos das forças armadas dos países aliados, ao fim da guerra, as técnicas
viriam a ser adaptadas ao uso civil.
Então pode se dizer que a atividade denominada de PO foi atribuída na
segunda guerra mundial, com a necessidade de alocar recursos de forma eficiente
nas operações militares, assim como, nas atividades exercidas nessas operações.
No decorrer da guerra, os comandos militares convocaram cientistas para resolver
de modo científico os problemas de táticas e estratégia. “Quando a guerra acabou, o
sucesso do empreendimento bélico despertou interesse na sua aplicação fora do
ambiente militar” (HILLIER , 2006, p. 02).
4
Pode-se dizer que as origens da pesquisa operacional, as suas raízes estão
firmadas em um passado distante, ou seja, muitos cientistas já vêm ao decorrer da
história da ciência elaborando técnicas a fim de se obter o ótimo de cada operação,
tentando resolver problemas da melhor forma possível com o mínimo possível de
recursos, distâncias e esforço.
Podemos dizer que a busca pelo ótimo encontra as suas raízes na antiguidade. Podemos citar Euclides, Newton, Euler, Monge, Lagrange, Hamilton, Leontief, Von Neumann... Gaspard monge, por exemplo, publicou em 1781, num trabalho intitulado “Mémoire sur la théorie des déblas et des remblais”, um estudo sobre o melhor caminho para mover pedras de um lugar para outro. (NETO, 2009, p.01)
Ao final da guerra sociedade, em específico a indústria, pode usufruir de um
ganho considerável no campo da pesquisa operacional, pois os cientistas envolvidos
na aplicação da PO durante a guerra, assim como outros cientistas que viriam a se
interessar pela área desenvolveram pesquisas que resultaram em grande melhoria
dos métodos utilizados. Em contrapartida, nesse momento da história da
humanidade estava surgindo uma nova ferramenta, o computador, onde tal
fenômeno é descrito por Hillier (2006) como “avalanche” da revolução
computacional, a informática por sua vez, viria ser uma ferramenta de extrema
utilidade para resolver problemas modelados com as técnicas de pesquisa
operacional.
Após a guerra, muitos dos cientistas que haviam participado da equipe de PO ou que ouviram falar a esse respeito motivaram-se para desenvolver pesquisas relevantes nesse campo resultando em avanços importantes no estado-da-arte. [...] Um segundo fator que deu ímpeto ao crescimento desse campo foi a “avalanche” da revolução computacional. (HILLIER, 2006, p. 02).
Segundo Hillier (2006) pesquisa operacional é a especificação para pesquisa
sobre operações, essa técnica é aplicada em problemas de condução, coordenação
de operação em áreas tais como: manufaturas, transportes, construção,
telecomunicação, financeiro, assistência medica, militar e serviços públicos. Além
disso, ainda segundo Hillier (2006) a PO, tem contribuído de forma significativa na
melhoria da economia de países que faz seu uso.
Segundo Taha (2008) existem vários métodos para resolver problemas com
pesquisa operacional.
5
Ou seja, cada contexto, cada problema, deve ser analisado objetivando a
aplicação da técnica que mais se encaixa no contexto a ser resolvido, dentre as
inúmeras áreas, ou seja, categorias, as técnicas dentro da pesquisa operacional,
vale ressaltar que ao decorrer da história a técnica mais utilizada vem sendo a
programação linear.
Em PO, não temos uma única técnica para resolver todos os modelos matemáticos que podem surgir na prática. Em vez disso, o tipo e a complexidade do modelo matemático é que determinam a natureza do método de solução. [...] A técnica mais utiliza em PO é a programação linear. Ela é aplicada a modelos cujas funções objetivo e restrição são lineares. (TAHA, 2008, p.02)
Pode ser visto que é ao final da modelagem matemática que é determinado o
método de solução, pois cada modelo se enquadra melhor em uma determinada
categoria da pesquisa operacional.
2.1 MODELAGEM MATEMÁTICA
Modelagem matemática se da através de um conjunto de atividades que tem
por objetivo a criação de um modelo matemático, basicamente a modelagem
matemática é composta por cinco atividades, sendo elas: a experimentação, onde se
obtém os dados; a abstração, onde são desenvolvidos os modelos matemáticos; a
resolução, onde se resolve o problema com técnicas; a validação, onde é verificado
se o modelo realmente faz o que se propõe; a modificação, manutenção do modelo
a fim de se obter a perfeição e adaptação a novos requisitos.
Segundo Bassanezi (2002 apud NETO, 2009), a modelagem matemática
consiste de cinco atividades, experimentação, abstração, resolução, validação e a
modificação.
Para Hillier (2006) a modelagem da PO consiste na definição do problema e
coleta de dados, formulação de um problema matemático, derivar soluções a partir
do modelo, o teste do modelo e aplicação do modelo.
Em Taha (2008) é descrito que para desenvolver um modelo de PO, é
utilizado um processo que contem cinco etapas, sendo elas: Definição do problema;
construção do modelo; Solução do modelo; validação do modelo; implementação da
solução.
6
2.1.1 Definição do Problema e Coleta de Dados
Muitas vezes as equipes de PO enfrentam contextos onde o problema a ser
resolvido esta pouco evidente devido à complexidade do ambiente em que ele está
contido, onde a equipe tem apenas descrições vagas e imprecisas, e a partir desde
contexto será necessário abstrair os elementos da modelagem matemática, em todo
caso pode se dizer que a definição do problema e coleta de dados é a etapa onde o
problema é definido, e em seguida criasse um enunciado, ou seja, elaborasse uma
primeira interpretação do problema a ser resolvido. Feito isto, deve-se determinar os
objetivos e as restrições sobre o que deve ser feito.
A maioria dos problemas práticos enfrentados pelas equipes de PO é inicialmente descrita a eles de uma forma vaga e imprecisa [...] Isso abrange determinar coisas como os objetivos apropriados, restrições sobre o que pode ser feito. (HILLIER, 2006, p.08).
Porém em Taha (2008) é afirmado que a definição do escopo se dá através
da investigação, onde são identificados três elementos essenciais para um modelo
de decisão sendo eles: a descrição das alternativas de decisão, que são as variáveis
do modelo; o objetivo de estudo, que é o objetivo que se pretende chegar com a
resolução do problema; as limitações do modelo, o universo que o modelo
trabalhara, as suas limitações, as variáveis de decisão e as restrições.
A meta é identificar três elementos principais de um problema de decisão: (1) descrição das alternativas de decisão, (2) determinação do objetivo de estudo e (3) especificações das limitações sob as quais o sistema modelado funciona. (TAHA, 2008, p.04).
Ou seja, descrever as alternativas de decisão, determinar os objetivos a ser
estudado e especificar as limitações do funcionamento do sistema modelado.
2.1.2 Formulação e Construção do Modelo
A formulação de um problema matemático e a construção do modelo envolve
em transformar o problema real em uma formulação matemática, onde se tornara
evidente ou não a utilização de uma estratégia, seja ela através da programação
linear, ou de qualquer outra técnica. “implica uma tentativa de traduzir a definição do
problema em relações matemáticas” (TAHA, 2008, p.04).
7
A definição do modelo e discussão sobre o modelo criado é de grande
importância, pois um modelo mal formulado e confiado como certo vai logicamente
atrapalhar muito em vez de ajudar a instituição em suas operações ou decisões, fica
evidente então que a modelagem deve ser correta, deve estar correta no que diz
respeito ao negócio.
Para Hillier (2006) a formulação se dá através da construção de um modelo
matemático que descreve o problema. Porem, para isso a equipe deve discutir sobre
o modelo criado, assim como a sua abordagem matemática, Hillier (2006) afirma
também que os modelos são representações de ideias e que tem grande grau de
importância no mundo dos negócios.
2.1.3 Solução do Modelo
Ao criar um modelo matemático para resolução de um problema e equipe de
pesquisa operacional deve decidir a forma como será abordado o procedimento a
fim de derivar soluções, conforme as dimensões do modelo aumentam se torna
imprescindível a utilização do computador para trazer essas soluções.
Após a formulação de um problema matemático para o problema em questão, a próxima fase em um estudo de PO é desenvolver um procedimento (normalmente baseado em computador) para derivar soluções para o problema desse modelo. (HILLIER, 2006, p 15)
Taha (2008) afirma que esta etapa é a solução do modelo, é por si a mais
simples de todas as outras etapas, afirma também que nesta etapa são utilizados
algoritmos de otimização bem definidos.
Ao derivar soluções se cria uma demanda, onde se torna essencial o uso de
computadores para auxiliar no processo de derivação de soluções, também é
afirmado que na maioria dos casos, esta etapa de solução do modelo não é a etapa
principal de estudo.
2.1.4 Validação do Modelo
Validar o modelo é uma etapa importante, pois ele será usado inúmeras
vezes ao decorrer do tempo, tornando-se crucial o seu funcionamento, essa
validação é feita verificando se os resultados fazem sentido, se os números são
8
familiares referentes ao contexto em que está sendo aplicado e se esses resultados
são aceitáveis, outra característica é que os modelos criados tende a evoluir ao
decorrer do tempo, assim como um sistema o modelo matemático também requer
manutenção, onde são inseridas restrições ou até adaptação a um tipo de ambiente
novo, enfim, ele evolui.
Verifica se o modelo proposto faz ou não o que diz fazer – isto é, ele prevê adequadamente o comportamento do sistema em estudo? Inicialmente a equipe de PO deve estar certa de que o resultado do modelo não inclua “surpresas”. Em outras palavras a solução faz sentido? (TAHA, 2008, p.04)
Desenvolver um modelo matemático extenso é parecido com o
desenvolvimento de um sistema computacional “desenvolver um modelo matemático
de grandes dimensões é análogo, em certos aspectos, a desenvolver um programa
de computador muito extenso” (HILLIER, 2006, p. 17). Pois, assim como um sistema
de computador, que depois de pronto pode apresentar algumas anomalias que
necessitam de reparos ou inserção de melhoria e adaptação a um novo contexto, de
modo geral isso também pode ocorrer em um modelo matemático.
2.1.5 Aplicação do Modelo
Esta etapa é onde a equipe de pesquisa operacional se prepara para aplicar o
modelo, neste momento, se for definido que o modelo é para uso repetitivo, devesse
então, instalar um sistema bem documentado, assim como predito pela gerência.
Em muitos casos são necessários vários meses para desenvolver, testar e instalar
este sistema. Neste contexto em que se refere a modelagem matemática a palavra
sistema se refere ao modelo em si, ou seja, o modelo matemático também pode ser
descrito como um sistema.
Se o modelo for para ser usado repetidamente, a próxima etapa é instalar um sistema bem-documentado para aplicação do modelo conforme prescrito pela gerência. [...] Na maioria dos estudos de PO, podem ser necessários vários meses ( ou mais ) para desenvolver, testar e instalar esse sistema computacional. (HILLIER , 2006, p. 19).
Por outro lado Taha (2008) afirma que se devem validar os resultados,
transformando-os em instruções claras para as pessoas que administrarão o sistema
recomendado.
9
Deve existir uma documentação visando proporcionar um uso claro do
modelo por parte dos usuários que farão seu uso, de forma geral os resultados
obtidos também devem ser documentado, pois o usuário deve ter noção clara do
que significa cada item que faz parte do resultado.
2.2 PROGRAMAÇÃO LINEAR
A programação linear está entre os maiores e mais importantes avanços
científicos do século XX, as instituições fazem seu uso, tendo como objetivo obter
soluções ótimas para as mais variadas categorias de problemas. “Podemos dizer
que é aquela que melhor serve aos objetivos das pessoas e das organizações.
Nessa situação, podemos citar como exemplo o propósito de encontrar o lucro
máximo com custo mínimo” (BARBOSA e ZANARDI, 2010, p13), dessa forma
aprimorando seus processos e obtendo como resultado a minimização de gastos e
maximização de lucro, além disso, outros setores sociais também encontraram
utilidade para aplicar a programação linear, e assim, também usufruindo da técnica.
No decorrer do tempo vindo dos anos de 1950, a programação linear tem
ajudado empresas a sobreviverem em um mercado competitivo, pode ser dito que
ao aplicar às técnicas de programação as empresas têm evitado prejuízo e gastos
em proporção de milhões de dólares, sendo uma ferramenta padronizada dentro de
certas empresas.
O desenvolvimento da programação linear tem sido classificado entre os mais importantes avanços científicos dos meados do século XX e temos que concordar com essa afirmação. Seu impacto desde 1950 tem sido extraordinário. Hoje em dia é uma ferramenta-padrão que poupou muitos milhares ou milhões de dólares para muitas empresas ou até mesmo negócios de tamanho moderado em diversos países industrializados ao redor do mundo; e seu emprego em outros setores da sociedade se espalhou rapidamente. (HILLIER , 2006, p. 25).
Muitas empresas de sucesso fazem uso da programação linear para auxiliar
na tomada de decisão, aplicando a mesma em uma infinidade de problemas
encontrados em uma grande quantidade de negócios.
Uma pesquisa feita pelo Departamento de Computação do Imperial College
em Londres mostra que 85% das empresas citadas na Fortune 500 utilizam a
programação linear para ajudar as mesmas na tomada de decisão.
10
É observado que de certa forma a programação linear ajuda as empresas a
chegarem ao sucesso, pois é evidente o grande numero de empresas de sucesso
que fazem o seu uso.
Segundo comentários de pesquisadores do Departamento de Computação do Imperial College de Londres, uma pesquisa realizada junto às empresas listadas na Fortune 500, 85% das empresas que responderam à pesquisa afirmaram que utilizam a programação linear como uma ferramenta para tomada de decisões (NOGAMI, 2004)
Segundo Hillier (2006) para resolver problemas de programação linear é
usada à modelagem matemática, onde a mesma é composta obrigatoriamente por
funções lineares.
Um grupo de funções lineares faz com que o sistema matemático modelado
obedeça a uma regra lógica de um determinado comportamento proposto a ser
seguido, limitando assim ao sistema gerar resultados que obedeçam e sigam as
regras impostas, criadas pelas funções lineares, ou seja, restrições.
Também em Barboza (2005) é dito que um problema de programação linear
(PL) é composto por três itens, a função objetivo, as restrições das variáveis de
decisão contendo relação e linearidade e por último as variáveis de decisão.
FIGURA 1 – MODELO MATEMÁTICO
FONTE: (O AUTOR).
A programação linear é uma técnica dentre outras da pesquisa operacional,
no entanto existem varias categorias de problemas dentro da pesquisa operacional
que podem ser resolvidos através da técnica de programação linear existem também
11
métodos e algoritmos utilizados para resolver problemas de programação linear, um
exemplo de método bastante utilizado é o simplex, pois seu uso não se restringe
facilmente ao tamanho do problema a ser resolvido. “um procedimento de solução
extraordinariamente eficiente, chamado método simplex, se encontra disponível para
solucionar até mesmo problemas de programação linear de enormes
dimensões.”(HILLIER, 2006, p.26).
Deve ficar claro que além do método simplex, existem vários outros métodos
que possibilitam a resolução de problemas de programação linear.
2.2.1 Itens da Programação Linear
Os itens basicamente são variáveis de decisão, que são as incógnitas do
modelo, na figura 1 elas são representadas pelas variáveis que começam em x0 e
vão até x8. Elas podem ser definidas como quantificadores e também podem ou não
ter relações com outras variáveis.
Portanto, se houver n decisões quantificáveis relacionadas a serem feitas, elas serão representadas na forma de variáveis de decisão (digamos x1. x2, ..., xn) cujos valores respectivos devem ser determinados. (HILLIER , 2006, p12)
Uma função objetivo é composta por medidas de desempenho, um conjunto
de variáveis de decisão, onde as variáveis são os valores a serem encontrados, que
nada mais são do que as representações matemáticas dos objetos abstraídos. Vale
ressaltar que quando agrupadas são definidas como uma função linear.
A função objetivo por sua vez são medidas de desempenho agrupadas, onde
cada medida de desempenho deve atender um objetivo, cada medida de
desempenho nasce de uma abstração, seja ela a representação de um lucro, como
também a representação de um estado.
Em Barbosa (2005) é afirmado que uma função objetivo é composta por uma
função linear, onde a mesma é composta por variáveis de decisão. No item 1 da
figura 1 se observa um exemplo de função objetivo.
Restrições do modelo são funções lineares que obrigam o modelo a interagir
em um determinado universo, essas restrições visam fazer com que o resultado
respeite as regras determinadas, essas funções são compostas pode equações ou
inequações lineares. Uma restrição é composta por operações matemáticas entre as
12
variáveis, no entanto essas operações devem respeitar o resultado máximo ou
mínimo que se obtém ao aplicar essas operações, exemplo: x+y<=9, nesse caso a
soma de x e y deve resultar em um valor igual ou menor que 9.
Quaisquer restrições nos valores que podem ser atribuídos a essas variáveis de decisão também são expressas como uma função matemática tipicamente por meio de desigualdades ou equações. (como, P =3x1+2x2 <=10). Essas expressões matemáticas para limitações são normalmente denominadas restrições. (HILLIER , 2006, p12)
Pode-se dizer que a restrição do modelo é formada por variáveis de decisão,
respeitando o modelo matemático e organizadas no formato de equações ou
inequações lineares que juntas limitam o funcionamento do modelo a trabalhar
respeitando o que se propõe “Relações de interdependência entre as variáveis de
decisão que se expressam por um conjunto de equações ou inequações lineares,
chamadas de restrições do modelo” (BARBOZA, 2005, p.10)
Hillier (2006) afirma que quaisquer restrições imposta ao modelo também é
representado de forma matemática onde são feitas normalmente por desigualdades
ou equações lineares.
No item 2 e 3 da figura 1 é mostrado o setor do modelo matemático composto
por restrições, estas restrições por sua vez, neste modelo em específico, forçam as
equações a ter como resultado máximo somente o número um, porém também,
essas restrições vão poder ter um valor mínimo de zero, devido as variáveis de
decisão estarem obrigando o resultado ser maior ou igual a zero, então o sistema
inteiro deve trabalhar a fim de gerar resultados contendo apenas zero ou um.
2.2.2 Algumas Aplicações da Programação Linear
A programação linear pode ser usada para resolver inúmeros problemas tais
como: elaboração de rotas, alocação de recursos, alocação de pessoas, otimizar o
uso de uma área, seja uma plantação ou uma construção, otimizar lucros
minimizando despesas, entre muitos outros, em Hillier (2006) é descrita estas e
outras muitas utilidades para a programação linear.
Em Nogami (2004) é citado um exemplo de uma empresa que tem por
objetivo maximizar seus lucros, porém devesse obedecer às restrições do meio de
produção, essa empresa por sua vez, fabrica dois produtos, onde cada um desses
13
produtos necessita de mão de obra e utilização de equipamento com valores
distintos, e também o lucro referente a cada produto é diferente.
Visando valores ótimos na utilização de recursos Munhoz (2001) diz que a
programação linear pode ser utilizada como um dos recursos necessários para
resolver problemas relacionados à produção de derivados da laranja, entre eles
sucos concentrados congelados levando em consideração a variedade da laranja
assim como sua distribuição, pois o problema tem em sua essência, uma grande
quantidade de variáveis originaria de análises de grandes quantidades de
informações. Existem também dois problemas interessantes que podem ser
resolvidos com o auxílio da programação linear, sendo eles: o problema de
trasporte, que visa otimizar a trajetória de transporte de mercadorias e o problema
da designação que objetiva alocar pessoas para realizar determinadas tarefas. Estes
dois problemas, o problema de transporte e de designação, por mais que tenham
nomes diferentes, eles têm muito em comum no que diz respeito à modelagem. “O
problema da designação pode ser visto como um tipo especial de problema de
transporte” (HILLIER, 2006, p.308).
Uma observação interessante sobre o problema de designação é que ele se
torna uma alternativa interessante para elaborar a alocação de professores, ou seja,
criação de grades horarias para instituições de ensino, pois existem um número
finito de professores, matérias, horários, turmas, turnos, dias e também se tem
restrições de turnos, pois cada professor pode estar em vários turnos ou nenhum
turno, existe também as restrições de horários, pois cada professor pode ter uma
variedade de horários únicos em comparação com outros professores, há também
restrições lógicas onde um professor não pode estar em várias turmas no mesmo
horário, e também pode ser defino o número máximo de horas de matéria semanal
por turma, assim como a não variação de professores que lecionam a mesma
matéria em uma mesma turma, entre outros, abstraindo matematicamente o
problema temos variáveis de decisão que podem representar um evento, este
evento é a aula, o momento em que todos os itens do problema tem ligação, esse
momento pode assumir um valor, este valor por sua vez pode afirmar a existência ou
não dá aula, a figura 1 tem a estética de uma modelagem de um contexto como
este, enfim, por existir esses itens sendo os mesmos contidos na programação
linear, se torna possível utilizar a programação linear para resolver este problema.
3 FERRAMENTAS E TECNOLOGIAS
14
Para construção do editor será utilizada a linguagem de programação JAVA, o
editor eclipse, a metodologia orientada a objetos, o SCPSolver como interface para
acessar a biblioteca GLPK que permite resolução de problemas de programação
linear.
3.1 JAVA
Em meados de 1990 a Sun Mycrosystems realizou o financiamento de uma
pesquisa interna com o codinome Green, onde a principal tarefa era estudar a
criação de um dispositivo eletrônico inteligente destinado ao consumidor final. Esse
projeto obteve um resultado que foi uma linguagem de programação similar o C.
Tempos depois seu nome foi modificado para Oak, e logo após certo tempo foi que
recebeu nome Java o qual foi inspirado no nome de uma ilha que tem esse nome.
Segundo JORGE (2004),
Há certa curiosidade por trás deste nome. Java é o nome de uma ilha do Pacifico, onde se produz um tipo especial de café. A inspiração do nome se deu quando a equipe de desenvolvimento provou esse café. Os integrantes (viciados na bebida) deram-se conta de como era apreciada por profissionais da área de desenvolvimento, de modo que não foi difícil prestar uma homenagem ao batizar a nova linguagem de programação com o nome Java. (JORGE, 2004, p.2).
O nome mudou de Oak para Java devido a problemas de registro, problemas
relacionados a direitos autorais do nome. “Devido a problemas de copyright, o Oak
recebe o novo nome Java” (JUNIOR, 2007, p.21).
A linguagem Java pode ser considerada similar a C/C++ e C#, devido ambas
estar voltadas para orientação de objetos e possuem um alto grau de semelhança.
A programação orientada a objetos (POO) é universalmente adotada como o
padrão de mercado para o desenvolvimento de aplicações para todos os modelos de
softwares.
O JAVA foi apresentado ao mercado em 1995 pela Sun Microsystems, porém
anteriormente, em 1991 um grupo de projeto da Sun definiu a importância da criação
de uma nova plataforma de desenvolvimento a fim de portar o software criado nesta
plataforma a diferentes equipamentos, pois já se tinha conhecimento de uma
proposta que visava criar uma classe de computadores capazes de se comunicar de
15
inúmeras formas, assim a equipe idealizava mais, ela queria ampliar essa qualidade
destes computadores com a utilização do JAVA.
Tudo começou em 1991 em um pequeno grupo de projeto da Sun Microsystems denominado Green que pretendia criar uma nova geração de computadores portáteis inteligentes, capazes de se comunicar de muitas formas, ampliando suas potencialidades de uso. Para tanto decidiu-se criar também uma nova plataforma para o desenvolvimento destes equipamentos de modo que seu software pudesse ser portado para os mais diferentes tipos de equipamentos. (JUNIOR, 2007, p.20)
Em 1996 a Sun fornece gratuito ao público um conjunto de ferramentas com a
denominação de JDK 1.02, sendo estas ferramentas, disponibilizadas a desenvolver
em Java nas plataformas Solaris e Windows 95/NT.
3.1.1 Características da Linguagem Java
A linguagem de computadores Java tem como características: Alto
desempenho, portabilidade, segurança, simplicidade, multithreaded e é orientada a
objetos. “Essa linguagem de programação possui como principais características:
simplicidade, orientação a objetos, portabilidade e alta performance e segurança.”
(JUNIOR, 2007, p.10).
Java é uma linguagem de programação que além de tipada, portável é
definida como uma linguagem orientada a objeto pois atende os requisitos de uma
linguagem OO que podem ser compreendidas como abstração, encapsulamento e
hereditariedade. “Java atende a todos os requisitos necessários para que uma
linguagem seja considerada orientada a objetos (que resumidamente são: oferecer
mecanismos de abstração, encapsulamento e hereditariedade)” (JUNIOR, 2007,
p23).
A linguagem de programação java é independente de plataforma pois o Java
não é compilado para o hardware, mas sim compilado para a JVM com o javac,
quando compilado o arquivo recebe o nome de Bytecode, que ao serem executados
são interpretados pela JVM.
Nessa linguagem, os programas são escritos em arquivos-texto com a extensão .java. Ao serem compilados com o compilador javac, são gerados os arquivos .class. Um arquivo .class é constituídos de bytecodes, código interpretado pela Máquina Virtual Java(Java Virtual Machine). (ASCENCIO e VENERUCHI, 2007, p.10)
16
Ascencio (2007) é dito que o código java, escrito em arquivos com a extensão
.java é compilado pelo compilador Javac, onde são gerados arquivos (.class) que
podem ser interpretados pela JVM.
3.2 PROGRAMAÇÃO ORIENTADA A OBJETOS
A POO Consiste em uma técnica onde se agrupam operações e dados
específicos, onde formam um grupo de funcionalidades, onde podem ser descritos
como métodos e atributos.
A Orientação a Objetos (OO) é uma técnica de programação que se baseia na construção e utilização de objetos. Um objeto ao combinar dados e operações específicas delimita um conjunto particular de funcionalidades ou responsabilidades (JUNIOR, 2007, p.76)
Resumindo Jones (2001), observasse uma afirmação onde se diz que para
ser orientado a objetos é fundamental respeitar alguns conceitos, tais como:
encapsulamento, ocultação de informação e implementação, retenção de estado,
identidade de objeto, mensagens, classes, herança, polimorfismo e generalização.
Características da programação orientada a objetos:
Encapsulamento na orientação a objetos é um conjunto de atributos e
métodos aonde representa um estado em um objeto, estes atributos têm
níveis de visibilidade dentro da aplicação, onde somente as operações do
objeto têm permissão para acessar o atributo.
Ocultação de informação e implementação é controle da visibilidade dos
dados ou implementação do que se deseja encapsular.
Retenção de estado é a capacidade de um objeto guardar uma informação
e possa futuramente repassá-la caso seja necessário.
Identidade de objeto é a capacidade de o objeto ser identificado como uma
entidade única dentro do sistema
Mensagem é a capacidade de comunicação entre os objetos a fim de fazer
um pedido para que um ouro objeto aplique um de seus métodos
Classes são mecanismos que definem comportamento e estrutura de
objetos, pode-se afirmar que um objeto é a instancia de uma classe.
Herança é a habilidade de herdar atributos e métodos de outra classe.
17
Polimorfismo é a capacidade de uma operação se comportar de maneira
diferente para classes diferentes
Generalização é a relação de uma classe com outras mais específicas
3.3 BIBLIOTECAS DE PROGRAMAÇÃO LINEAR
3.3.1 Gnu Linear Programming Kit (GLPK)
O GLPK é uma biblioteca que possui componentes matemáticos que
possibilitam a resolução de problemas de programação linear, um dos componentes
oferecido por ele é o simplex dual e primal.
Ele é disponibilizado para todas as pessoas que tenham interesse de utilizá-
lo, da mesma maneira ele esta disponível também para a comunidade de
desenvolvedores, o GLPK é protegido utilizando-se dos termos da licença GNU,
sendo assim, ele é denominado como um software livre, ou seja, um projeto de
código fonte aberto, código livre, ele foi escrito na linguagem de programação C e
além de fornecer solução à programação linear também oferece soluções no
contexto de programação inteira mista, além de varias outras técnicas da pesquisa
operacional.
O GNU Linear Programming (GLPK) é um pacote de software destinado a resolver problemas em larga escala de programação linear (LP), de programação inteira mista (MIP), e outros problemas relacionados (MENDONÇA SANTOS, 2011, p.03)
Bressan (2004) também afirma que o GLPK é um software livre “O software
GLPK — Gnu Linear Programming Kit, por exemplo, consiste em uma biblioteca de
programação linear com código fonte aberto” (BRESSAN e LEITE DE OLIVEIRA,
2004,p.336).
Devido as suas características, o GLPK é uma alternativa interessante para
ser utilizado em aplicativos que visam resolver problemas de programação linear,
pois ele oferece tudo que é necessário para resolução de tal problema, além é claro
de ser um ótimo software.
18
3.3.2 SCPSolver
O SCPSolver é uma solução interessante para desenvolvedores JAVA que
desejam ter acesso à biblioteca GLPK que é escrita em C, o SCPSolver possibilita a
utilização de três bibliotecas que são utilizadas para resolver problemas de PL.
Em Planatscher (2013) pode-se observar que o SCPSolver é uma biblioteca
escrita em JAVA, e para o seu desenvolvimento foi utilizado o Eclipse e o otimizador
JProfiler, o SCPSolver foi desenvolvido para possibilitar acesso rápido e
descomplicado as bibliotecas de programação linear por parte dos programadores
JAVA, sendo que essas bibliotecas são escritas em sua grande maioria em C/C++,
desta forma o SCPSolver esta possibilitando a portabilidade de desenvolvimento e
uso para desenvolvedores e usuário que fazem uso das plataformas Windows, Linux
e Mac Os x.
SCPSolver atualmente é funcional com a JVM de 32 bits e com a versão do
JAVA 1.5 ou maior, oferece acesso as bibliotecas GLPK, LPsolver, e CPLEX da IBM
conforme é mostrado na figura 2.
FIGURA 2 – SUPORTE DO SCPSOLVER
FONTE: (PLANATSCHER E SCHOBER, 2013)
SCPSolver disponibiliza ao desenvolvedor JAVA duas alternativas de
implementação sendo uma de alto nível e uma de baixo nível.
19
3.4 ECLIPSE
Para programar em JAVA pode ser utilizado um ambiente de desenvolvimento
integrado (IDE), que disponibilizam utilidades que visam facilitar o trabalho dos
desenvolvedores, o Eclipse é um IDE que foi desenvolvido com investimento forte da
IBM, nos dias atuais do desenvolvimento deste trabalho o Eclipse está sendo
disponibilizado gratuitamente para download.
Em Gonçalves (2006) é afirmado que o IDE teve um investimento por parte da
IBM de mais de quarenta milhões de dólares no seu desenvolvimento, tempos
depois transforma o IDE em um projeto de código livre chamado de Eclipse.org, que
inicialmente começou com as empresas Borland, IBM, Merant, QNX Software
Systems, Rational Software, Red Hat, SUSE, TogetherSoft e Webgain.
Eclipse é um ambiente integrado de desenvolvimento, é software de código
aberto, por sua vez ele é livre. "O eclipse em si fornece apenas o ambiente integrado
para execução dos plug-ins e uns poucos plug-ins básicos, como editor de textos
ASCII, sistema de ajuda e integração aos CVS"(GONÇALVES, 2006, p22). Na figura
3 é mostrada a estrutura básica do Eclipse.
FIGURA 3 – ESTRUTURA BÁSICA DO ECLIPSE
FONTE: (GONÇALVES, 2006, P24).
20
Entre outros o Eclipse é multiplataforma, assim como tem suporte a vários
idiomas, assim como várias linguagens de programação. “Você pode programar em
outras linguagens como C/C++, Cobol e até mesmo C#.” (Gonçalves, 2006, p26).
3.5 ASTAH
O Astah é um aplicativo que permite modelagem visual de diagramas, tais
como diagramas de sequência, diagrama de caso de uso, diagramas de classes,
entre outros, ele é voltado para desenvolvedores que utilizam a metodologia
orientada a objetos, nos dias atuais existem versões não gratuitas e uma versão
gratuita.
O aplicativo Astah Community pode ser observado na figura 4.
FIGURA 4 – ASTAH COMMUNITY.
FONTE: (O AUTOR).
Segundo Yoshidome (2012) Astah é um software voltado a auxilinar na
criação de diagramas UML, tem uma versão para uso livre porém não é de codigo
21
aberto, e outras versões mais completas são vendidas. Sendo as versões: Astah
Community, Astah UML, Astah Professional e Astah Share.
22
4 SISTEMA PROPOSTO
Visando integração com SCPSolver que faz uso da biblioteca GLPK, será
criando um aplicativo que possibilite ao usuário a inserção de um modelo
matemático de programação linear, ficando a cargo do aplicativo transformar o
modelo inserido pelo usuário em um modelo legível ao SCPSolver, que por sua vez
utilizada o GLPK para fazer os devidos cálculos, ficando também a cargo do
aplicativo proposto interpretar os dados retornado pelo SCPSolver e disponibilizar os
resultados ao usuário utilizador. O aplicativo recebeu o nome de OptLiAna.
4.1 OBJETIVO GERAL DO SISTEMA
Desenvolver um aplicativo para resolução de problemas de programação linear,
especificamente na forma de um editor, possibilitando que o usuário de forma simples
possa obter resultado para problemas de programação linear.
4.2 REQUISITOS FUNCIONAIS DO SISTEMA
O aplicativo deve conter uma área de texto para que o usuário possa colocar sua
modelagem matemática de programação linear.
Deve executar problemas de programação linear.
Deve existir um botão para executar a modelagem
Deve possibilitar ao usuário manipular o arquivo, ou seja, salvar, abrir e criar novo,
assim como, opção para fechar o aplicativo.
O aplicativo deve conter opção de edição de arquivo, tais como: colar, copiar,
selecionar tudo, fazer, refazer, deletar.
Deve existir um menu com opção de ajuda, onde mostre exemplos de formatos
suportados.
Deve existir uma tela de resultado, onde seja imprimido o resultado, caso o
problema seja impossível de se resolver, uma tela é mostrada com a mensagem
“Não foi encontrada solução”.
Deve existir um menu de ajuda mostrando exemplos de modelos suportados.
O aplicativo deve possibilitar ao usuário acesso aos menus de forma que o usuário
possa usar o mouse, assim como apenas o teclado.
23
Quando o usuário selecionar criar um arquivo, o aplicativo deve verificar se
existe um arquivo editado na área de texto, caso exista, o sistema deve emitir
um alerta, perguntando se o usuário deseja salvar o atual arquivo, assim
como a opção de cancelar a operação para retornar ao editor.
Ao selecionar a opção salvar, o aplicativo deve verificar se o arquivo a ser
salvo existe no disco, caso exista o asterisco no conto superior esquerdo
deve sumir e o arquivo salvo em disco, caso não exista arquivo em disco, o
sistema deve abrir a tela de diálogo com a opção para salvar o arquivo, assim
como selecionar a pasta de destino.
Do mesmo modo quando for selecionado a opção para sair do aplicativo, o
aplicativo deve verificar se existe arquivo em edição na área de texto, caso
exista, o sistema deve emitir um alerta, perguntando se o usuário deseja
salvar o atual arquivo, assim como a opção de cancelar a operação para
retornar ao editor.
Ao executar um arquivo o sistema deve verificar se está selecionado a opção
maximizar ou minimizar, caso não esteja, deve-se emitir um alerta ao usuário
sobre tal condição.
As mensagens de erro devem aparecer em um campo de texto inferior.
Deve existir atalhos de teclado para as funções do aplicativo, exceto para o item de
menu denominado sobre.
4.3 REQUISITOS NÃO FUNCIONAIS DO SISTEMA
Deve-se restringir a entrada de modelagem que não tenham seus elementos
baseados nos seguintes formatos, descrito na tabela 01 e tabela 02.
A função objetivo, restrições do modelo e variáveis de decisão devem seguir
as seguintes regras descritas na tabela 03 exemplificada na tabela 04.
O aplicativo ira ser executado apenas em Java x86, ou seja, Java 32 bits.
O aplicativo deve ser executado em Sistema operacional Windows Seven
x64, ou seja, Windows Seven 64 bits.
TABELA 1 – NÚMEROS E INCÓGNITAS
Formato dos Formato Formato da Descrição:
24
elementos: do
número:
incógnita:
-1.2x1 -1.2 X1 Números
negativos.
1.2x1 1.2 x1 Número irracional
representado com
ponto.
2x1 2 x1 Número inteiro
-2umaincognitagrande -2 umaincognitagrande Números
negativos.
1.2umaincognitagrande 1.2 umaincognitagrande Exemplo de
incógnita grande
2umaincognitagrande 2 umaincognitagrande Outro exemplo com
um número inteiro.
1.208275340848026x1 1.2082753
40848026
x1 Exemplo de um
número irracional.
FONTE: (O AUTOR).
TABELA 2 – SINAIS DE RESTRIÇÃO
Sinais de restrição: Descrição:
<= Menor ou igual.
>= Maior ou igual.
= Igual.
FONTE: (O AUTOR).
TABELA 3 – REGRAS
Elementos da modelagem Descrição
25
Função objetivo Deve estar na primeira linha em referência aos
outros itens.
Restrições do modelo Cada restrição deve estar em uma única linha.
Variáveis de decisão Deve obedecer a logica da modelagem, ela
deve estar na função objetivo.
FONTE: (O AUTOR).
TABELA 4 – EXEMPLIFICAÇÃO
Modelo. Descrição
1.208275340848026x1+x2
x1<=9.208275340848026
x2<=9
x1>=0
x2>=0
Cada linha deve conter apenas o que se
destina a ela, ou seja, cada equação deve
estar em uma linha.
FONTE: (O AUTOR).
4.4 DIAGRAMA DE CASO DE USO
4.4.1 Diagrama de Caso de uso geral
O caso de uso geral é uma generalização dos casos de uso do aplicativo,
sendo esses casos: manter arquivo; Editar arquivo; Executar arquivo e Acessar
conteúdo de ajuda. Eles estão descritos nas tabelas 5, 6, 7 e 8. A representação
gráfica do caso de uso geral está em evidencia na figura 5.
FIGURA 5 – CASO DE USO GERAL
26
FONTE: (O AUTOR).
TABELA 5 – MANTER ARQUIVO
Nome do caso de uso. Manter Arquivo.Caso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para acessar as opções de manter arquivo.
Pré-condiçõesPós-CondiçõesFluxo PrincipalAções do Ator Ações do Sistema1. Selecionar menu Arquivo.
2. Apresentar itens do menu ArquivoRestrições/validações.
FONTE: (O AUTOR).
TABELA 6 – EDITAR ARQUIVO
27
Nome do caso de uso. Editar Arquivo.Caso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para acessar as opções de editar o arquivo
Pré-condiçõesPós-CondiçõesFluxo PrincipalAções do Ator Ações do Sistema1. Selecionar menu Editar.
2. Apresentar itens do menu EditarRestrições/validações.
FONTE: (O AUTOR).
TABELA 7 – EXECUTAR O ARQUIVO
Nome do caso de uso. Executar Arquivo.Caso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para acessar as opções para executar o arquivo
Pré-condiçõesPós-CondiçõesFluxo PrincipalAções do Ator Ações do Sistema1. Selecionar menu Execução.
2. Apresentar itens do menu Execução
Restrições/validações.
FONTE: (O AUTOR).
TABELA 8 – ACESSAR CONTEÚDO DE AJUDA
28
Nome do caso de uso. Acessar conteúdo de ajuda.Caso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para acessar as opções do menu conteúdo de ajuda.
PrecondiçõesPós-Condições
Fluxo PrincipalAções do Ator Ações do Sistema1. Selecionar menu Ajuda.
2. Apresentar itens do menu Ajuda.Restrições/validações.
FONTE: (O AUTOR).
4.4.2 Caso de Uso Especifico Manter Arquivo
Segue as tabelas 9, 10, 11, 12 e 13 com as descrições específicas dos
respectivos casos de uso: Criar novo arquivo, Abrir arquivo, salvar arquivo, Salvar
arquivo como, selecionar sair, a especificação do caso de uso Manter Arquivo pode
ser observado na figura 6.
FIGURA 6 – MANTER O ARQUIVO
29
FONTE: (O AUTOR).
TABELA 9 – CRIAR NOVO ARQUIVO
Nome do caso de uso. Criar novo arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para Criar um novo arquivo.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar o menu de Arquivo.
2. Apresentar os itens do menu de Arquivo.
3. Seleciona o item de menu Executar4. Cria um novo arquivo.
Restrições/validações. Caso exista um arquivo com alteração no campo de edição do editor o sistema de emitir uma
30
mensagem ao usuário perguntando se deseja salvar o arquivo.
Fluxo Alternativo – Criar novo arquivoAções do Ator. Ações do Sistema.1. Pressionar as teclas ctrl+n.
3. Cria um novo arquivo.Restrições/validações. Caso exista um arquivo com
alteração no campo de edição do editor o sistema de emitir uma mensagem ao usuário perguntando se deseja salvar o arquivo.
FONTE: (O AUTOR).
TABELA 10 – ABRIR O ARQUIVO
Nome do caso de uso. Abrir arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para Abrir um arquivo.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar o menu de Arquivo.
2. Apresentar os itens do menu de Arquivo.
3. Seleciona o item de menu Abrir arquivo.
4. Apresenta a janela com as opções de abrir arquivo e cancelar a operação.
5. Seleciona o arquivo e pressiona o botão Abrir.
6. Apresenta o arquivo no campo de edição do editor.
Restrições/validações.Fluxo Alternativo – Criar novo arquivo - CancelarAções do Ator. Ações do Sistema.1. Selecionar o menu de Arquivo.
2. Apresentar os itens do menu de Arquivo.
3. Seleciona o item de menu Abrir
31
arquivo.4. Apresenta a janela com as opções de abrir arquivo e cancelar a operação.
5. Pressiona o botão Cancelar.6. Fecha a janela de diálogo.
Fluxo Alternativo 2 – Criar novo arquivoAções do Ator. Ações do Sistema.1. Pressiona as teclas ctrl+n.
4. Apresenta a janela com as opções de abrir arquivo e cancelar a operação.
5. Pressiona o botão Cancelar.6. Fecha a janela de diálogo.
Fluxo Alternativo 3 – Criar novo arquivoAções do Ator. Ações do Sistema.1. Pressiona as teclas ctrl+n.
2. Apresenta a janela com as opções de abrir arquivo e cancelar a operação.
3. Seleciona o arquivo e pressiona o botão Abrir.
4. Apresenta o arquivo no campo de edição do editor.
FONTE: (O AUTOR).
TABELA 11 – SALVAR O ARQUIVO
Nome do caso de uso. Salvar arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para Salvar um arquivo.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar o menu de Arquivo.
2. Apresentar os itens do menu de Arquivo.
3. Seleciona o item de menu Salvar.4. Apresenta a janela com as opções Para salvar o arquivo e cancelar a operação.
5. Nomeia o arquivo e pressiona o
32
botão Salvar.6. Escreve o arquivo em disco.
Restrições/validações. Deve existir conteúdo na área de edição do editor.
Fluxo Alternativo – Salvar ArquivoAções do Ator. Ações do Sistema.1. Selecionar o menu de Arquivo.
2. Apresentar os itens do menu de Arquivo.
3. Seleciona o item de menu Salvar.4. Escreve o arquivo em disco.
Restrições/validações. Arquivo à ser salvo deve existir em disco.
Fluxo Alternativo 2 – Salvar arquivoAções do Ator. Ações do Sistema.1. Pressiona as teclas ctrl+s
2. Apresenta a janela com as opções Para salvar o arquivo e cancelar a operação.
3. Nomeia o arquivo e pressiona o botão Salvar.
4. Escreve o arquivo em disco.Restrições/validações. Deve existir conteúdo na área de
edição do editor.Fluxo Alternativo 3 – Salvar arquivoAções do Ator. Ações do Sistema.1. Pressiona as teclas ctrl+s
4. Escreve o arquivo em disco. Restrições/validações. Arquivo à ser salvo deve existir
em disco.Fluxo Alternativo 4 – Cancelar Salvar arquivoAções do Ator. Ações do Sistema.1. Pressiona as teclas ctrl+s
2. Apresenta a janela com as opções Para salvar o arquivo e cancelar a operação.
3. Pressiona o botão Cancelar.4.Fecha a janela de diálogo e não salva o arquivo.
FONTE: (O AUTOR).
TABELA 12 – SALVAR ARQUIVO COMO
Nome do caso de uso. Salvar arquivo como
33
Caso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para Salvar um arquivo como.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar o menu de Arquivo.
2. Apresentar os itens do menu de Arquivo.
3. Seleciona o item de menu Salvar como.
4. Apresenta a janela com as opções Para salvar o arquivo e cancelar a operação.
5. Nomeia o arquivo e pressiona o botão Salvar.
6. Escreve o arquivo em disco.Restrições/validações.Fluxo Alternativo – Cancelar Salvar arquivo comoAções do Ator. Ações do Sistema.1. Selecionar o menu de Arquivo.
2. Apresentar os itens do menu de Arquivo.
3. Seleciona o item de menu Salvar como.
4. Apresenta a janela com as opções Para salvar o arquivo e cancelar a operação.
5. Nomeia o arquivo e pressiona o botão Cancelar.
6.Fecha a janela de diálogo e não salva o arquivo.
FONTE: (O AUTOR).
TABELA 13 – SELECIONAR SAIR
Nome do caso de uso. Selecionar sair
34
Caso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para sair do editor.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar o menu de Arquivo.
2. Apresentar os itens do menu de Arquivo.
3. Seleciona o item de menu Sair4. Encerra a execução do aplicativo.
Restrições/validações. Caso exista um arquivo com alteração no campo de edição do editor o sistema de emitir uma mensagem ao usuário perguntando se deseja salvar o arquivo.
Fluxo Alternativo – Selecionar sairAções do Ator. Ações do Sistema.1. Pressionar o botão X.
3. Cria um novo arquivo.4. Encerra a execução do aplicativo.
Restrições/validações. Caso exista um arquivo com alteração no campo de edição do editor o sistema de emitir uma mensagem ao usuário perguntando se deseja salvar o arquivo.
Restrições/validações. Caso exista um arquivo com alteração no campo de edição do editor o sistema de emitir uma mensagem ao usuário perguntando se deseja salvar o arquivo.
4.4.3 Caso de uso Executar arquivo
35
Esta descrição de caso de uso é referente à ação que usuário exerce sobre o
aplicativo no que diz respeito a execução do arquivo evidenciado na tabela 14 e na
figura 7.
FIGURA 7 – EXECUTAR ARQUIVO
FONTE: (O AUTOR).
TABELA 14 – EXECUTAR ARQUIVO
Nome do caso de uso. Executar arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para Executar o arquivo em edição.
Pré-Condições. Inserção de conteúdo na área de texto do editor.
Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar na barra de ferramentas o radiobutton para minimizar ou maximizar.
36
2. Selecionar menu Execução. 3. Apresentar o item do menu Execução.
4. Seleciona o item de menu Executar5. Mostra a tela de resultado contendo a solução.
Restrições/validações. Caso exista não conformidade na edição do arquivo, o sistema deve retornar uma mensagem de erro.
Fluxo Alternativo – Executar arquivoAções do Ator. Ações do Sistema.1. Selecionar na barra de ferramentas o radiobutton para minimizar ou maximizar.2. Pressionar a tecla F5
3. . Mostra a tela de resultado contendo a solução.
Restrições/validações. Caso exista não conformidade na edição do arquivo, o sistema deve retornar uma mensagem de erro.
FONTE: (O AUTOR).
4.4.4 Caso de Uso Editar Arquivo
Esta descrição de caso de uso é referente às ações que usuário exerce sobre
o aplicativo no que diz respeito à edição do arquivo, ficando evidente nas tabelas 15
até a tabela 21 e na figura 8.
FIGURA 8 – EDITAR O ARQUIVO
37
FONTE: (O AUTOR).
TABELA 15 – DESFAZER ALTERAÇÕES NO ARQUIVO
Nome do caso de uso. Desfazer alterações no arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para desfazer alterações no arquivo em edição.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar menu Editar.
2. Apresentar itens do menu Editar.3. Seleciona o item de menu Desfazer Adição.
4. Desfaz a última alteração feita no arquivo em edição
Restrições/validações.Fluxo Alternativo – Desfazer alterações no arquivo
38
Ações do Ator. Ações do Sistema.1. Pressionar as teclas ctrl+z.
2. Desfaz a última alteração feita no arquivo em edição.
FONTE: (O AUTOR).
TABELA 16 – REFAZER ALTERAÇÕES NO ARQUIVO
Nome do caso de uso. Refazer alterações no arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para refazer alterações no arquivo em edição.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar menu Editar.
2. Apresentar itens do menu Editar.3. Seleciona o item de menu Refazer Adição.
4. Refaz a última alteração feita no arquivo em edição
Restrições/validações.Fluxo Alternativo – Desfazer alterações no arquivo Ações do Ator. Ações do Sistema.1. Pressionar as teclas ctrl+y
2. Refaz a última alteração feita no arquivo em edição.
FONTE: (O AUTOR).
TABELA 17 – RECORTAR CONTEÚDO DO ARQUIVO
Nome do caso de uso. Recortar conteúdo do arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para utilizar a opção de recorte.
Pré-Condições.
39
Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Seleciona o conteúdo que deseja recortar no editor2. Selecionar menu Editar.
3. Apresentar itens do menu Editar.4. Seleciona o item de menu Recortar.
5. Recortar o conteúdo selecionado.Restrições/validações.Fluxo Alternativo – Recortar conteúdo do Arquivo.Ações do Ator. Ações do Sistema.1. Seleciona o conteúdo que deseja recortar no editor2. Pressionar as teclas ctrl+x
3. Desfaz a última alteração feita .
FONTE: (O AUTOR).
TABELA 18 – COPIAR CONTEÚDO DO ARQUIVO
Nome do caso de uso. Copiar conteúdo do arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas para copiar o conteúdo.Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Seleciona o conteúdo que deseja copiar.2. Selecionar menu Editar.
3. Apresentar itens de o menu Editar.4. Seleciona o item de menu Copiar.
5. Copiar o conteúdo selecionado.Restrições/validações.Fluxo Alternativo – Copiar conteúdo do Arquivo.Ações do Ator. Ações do Sistema.1. Seleciona o conteúdo.2. Pressionar as teclas ctrl+c
3. Copiar o conteúdo selecionado.
FONTE: (O AUTOR).TABELA 19 – COLAR CONTEÚDO NO ARQUIVO
40
Nome do caso de uso. Colar conteúdo no arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para colar o conteúdo no campo de texto do editor.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar menu Editar.
2. Apresentar itens do menu Editar.3. Seleciona o item de menu Colar.
4. Cola o conteúdo previamente copiado no campo de edição do editor.
Restrições/validações.Fluxo Alternativo – Copiar conteúdo do Arquivo.Ações do Ator. Ações do Sistema.1. Pressionar as teclas ctrl+v.
2. Cola o conteúdo previamente copiado no campo de edição do editor.
FONTE: (O AUTOR).
TABELA 20 – SELECIONAR TODO O CONTEÚDO DO ARQUIVO
Nome do caso de uso. Selecionar todo o conteúdo do arquivo
Caso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para selecionar todo o conteúdo do arquivo em edição.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Selecionar menu Editar.
2. Apresentar itens do menu Editar.3. Seleciona o item de menu Selecionar Tudo.
4. Seleciona todo o conteúdo do
41
arquivo em edição.Restrições/validações.Fluxo Alternativo – Selecionar todo o conteúdo do Arquivo.Ações do Ator. Ações do Sistema.1. Pressionar as teclas ctrl+a.
2. Seleciona todo o conteúdo do arquivo em edição
FONTE: (O AUTOR).
TABELA 21 – DELETAR O CONTEÚDO DO ARQUIVO
Nome do caso de uso. Deletar o conteúdo do arquivoCaso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para Deletar o conteúdo do arquivo.
Pré-Condições.Pós-Condições.Fluxo Principal.Ações do Ator. Ações do Sistema.1. Seleciona o conteúdo do arquivo em edição.2. Selecionar menu Editar.
3. Apresentar itens do menu Editar.4. Seleciona o item de menu Deletar.
4. Deleta o conteúdo selecionado.Restrições/validações.Fluxo Alternativo – Deletar o conteúdo do arquivo.Ações do Ator. Ações do Sistema.1. Pressiona as tecla Delete
2. Deleta o conteúdo selecionadoFluxo Alternativo 2 – Deletar o conteúdo do arquivo.1. Posiciona o cursor à esquerda do conteúdo e pressiona Delete.
2. Deleta caracteres a direita.
FONTE: (O AUTOR).
4.4.5 Acessar conteúdo de ajuda
42
O caso de uso Acessar conteúdo de ajuda é descrito nas tabelas 22 e 23 e
tem sua representação gráfica na figura 9.
FIGURA 9 – OBTER AJUDA
FONTE: (O AUTOR).
TABELA 22 – OBTER AJUDA
Nome do caso de uso. Obter ajuda.Caso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para acessar o conteúdo de ajuda do sistema.
Pré-CondiçõesPós-Condições
43
Fluxo PrincipalAções do Ator Ações do Sistema1. Selecionar menu de Ajuda.
2. Apresentar itens do menu Ajuda.
3. Seleciona o item de menu Conteúdo de Ajuda.
4. Apresentar tela com conteúdo de ajuda.
Restrições/validações.Fluxo Alternativo – Obter AjudaAções do Ator Ações do Sistema1. Pressionar a tecla F1.
2. Apresentar tela com conteúdo de ajuda.
FONTE: (O AUTOR).
TABELA 23 – OBTER INFORMAÇÕES SOBRE O APLICATIVO
Nome do caso de uso. Obter informações sobre o aplicativo.
Caso de Uso Geral.Ator Principal. Usuário. Atores Secundários.Resumo. Este caso descreve as etapas
percorridas por um usuário para acessar o conteúdo com informações sobre o aplicativo.
Pré-CondiçõesPós-CondiçõesFluxo PrincipalAções do Ator Ações do Sistema1. Selecionar menu de Ajuda.
2. Apresentar itens do menu Ajuda.
3. Seleciona o item de menu Sobre o Optiliana.
4. Apresentar tela com conteúdo de Descrição do Optliana.
Restrições/validações
FONTE: (O AUTOR).
4.5 DIAGRAMAS DE SEQUENCIA
44
As figuras 10, 11, 12 e 13 mostram o fluxo dos objetos para cumprir os
objetivos descritos nos casos de uso, sendo eles: Editar arquivo, Manter arquivo,
Executar arquivo e Selecionar ajuda.
FIGURA 10 – EDITAR O ARQUIVO
FONTE: (O AUTOR).
FIGURA 11 – MANTER O ARQUIVO
45
FONTE: (O AUTOR).
FIGURA 12 – EXECUTAR O ARQUIVO
46
FONTE: (O AUTOR).
FIGURA 13 – SELECIONAR AJUDA
47
FONTE: (O AUTOR).
4.6 DIAGRAMAS DE CLASSE
Neste capítulo são apresentados os diagramas de classes da aplicação,
representados nas figuras 14, 15, 16, 17, 18 e 19, em todas as imagens se tem as
classes e seus pacotes, cada Imagem representa um pacote e suas respectivas
classes, Cada imagem é nomeada com o mesmo nome do pacote que ela
representa.
FIGURA 14 – INÍCIO
48
FONTE: (O AUTOR).
FIGURA 15 – MENSAGEM
FONTE: (O AUTOR).
49
FIGURA 16 – IO
FONTE: (O AUTOR).
50
FIGURA 17 – CÓDIGO
FONTE: (O AUTOR).
51
FIGURA 18 – EQUAÇÃO
FONTE: (O AUTOR).
FIGURA 19 – TELAS
52
FONTE: (O AUTOR).
5 CRONOGRAMA
53
TABELA 24 – ÍNDICE DE ATIVIDADES PARAO CRONOGRAMA
Siglas Descrição
E1 Escolha do tema e orientador, proposta do projeto.
E2 Apoio do orientador na execução do projeto.
E3 Pesquisa bibliográfica
E4 Fundamentação teórica
E5 Desenvolvimento do projeto lógico
E6 Desenvolvimento do sistema
E7 Testes
E8 Revisão dos testes
E9 Entrega do sistema e apresentação final.
FONTE: (O AUTOR).
TABELA 25 – CRONOGRAMA
Mês Jul2013
Ago2013
Set2013
Out2013
Nov2013
Feb2014
Mar2014
Abr2014
Mai2014
Jun2014
Atividades E1 E1
E2 E2 E2 E2 E2 E2 E2 E2 E2
E3 E3 E3 E3 E3 E3
E4 E4 E4 E4
E5 E5 E5
E6 E6 E6 E6
E7 E7 E7
E8 E8
E9
FONTE: (O AUTOR).
6 RESULTADOS OBTIDOS
54
O aplicativo para resolução de problemas de programação linear foi nomeado de
OptiLiAna e é composto pelas seguintes características:
A tela principal descrita na figura 20.
Na figura 21 é representado o menu de arquivo que é também mostrado no
diagrama de caso de uso Manter arquivo.
O caso de uso editar arquivo deu origem ao menu editar que pode ser visto
na figura 22.
O caso de uso executar arquivo deu origem ao menu executar, assim como a
barra de tarefa do editor, a barra de tarefa pode ser vista claramente na figura
20 composta por três itens, um botão executar e dois botões de seleção rádio,
no entanto o menu executar pode ser visto na figura 23.
O caso de uso selecionar ajuda, deu origem ao menu ajuda, representado na
figura 24.
A tela abrir arquivo é representado na figura 25.
É mostrada a tela de salvar arquivo na figura 26.
Na figura 27 é a tela com resultado de um modelo com solução e a figura 28 é
mostrada a tela do modelo sem solução.
A tela de ajuda do aplicativo pode ser vista na figura 29.
As telas com os alertas para salvar e para reescrever arquivo estão
representadas na figura 30 e 31.
Na figura 32 está a tela sobre o OptiLiAna, ou seja, sobre o aplicativo.
Pode ser vista na figura 33 uma tela erro causada por existir um elemento que
não faz parte do modelo.
Ao escrever no editor os elementos de diferente a especificada uma
mensagem de erro é emitida e pode ser vista na figura 34.
Na figura 35 é mostrada uma mensagem de erro ocasionada por um
caractere inválido.
A figura 36 mostra uma mensagem de erro causada por tentar executar um
arquivo que não é um modelo de programação linear.
Ao tentar executar o arquivo sem selecionar maximizar ou minimizar é
mostrado uma mensagem de erro que pode ser vista na figura 37.
6.1 CARACTERISTICAS BASICAS
55
Após descompactar e executar o arquivo OptiLiAna.jar, o usuário vai se
deparar com a tela descrita na figura 20, nesta tela o usuário pode editar sua
modelagem matemática que visa ser resolvida com a programação linear, existe um
menu com os itens, arquivo, editar, execução, existe também uma opção de ajuda,
além disso o usuário conta com uma barra onde contem opções para sua
modelagem matemática onde ele pode selecionar maximizar ou minimizar e também
executar o arquivo
No canto superior direito esta localizada as opções do aplicativo, onde é
possível maximizar, minimizar ou fechar o aplicativo, no canto superior esquerdo
encontra-se o nome do aplicativo e o ícone do mesmo, caso o exista edição sem
salvar, um asterisco é mostrado na frente do nome do aplicativo. Na parte inferior se
encontra um campo de texto, onde as mensagens de erros serão exibidas.
FIGURA 20 – TELA INICIAL
FONTE: (O AUTOR).
O menu (Arquivo) expresso na figura 21 é composto por opções que auxiliam
o usuário na edição do arquivo, uma destas opções é o item que tem por nome
56
(Novo) ou as teclas de atalho (Ctrl+N) é as opções de como o usuário pode criar um
arquivo, também existe a opção (Abrir) ou as teclas de atalho (Ctrl+O) que possibilita
abrir um arquivo existente, a opção (Salvar) ou as teclas de atalho (Ctrl+S) permite
que o usuário salve o arquivo, a opção (Salvar Como) permite que o usuário salve
um arquivo, a opção (Sair) quando selecionada fecha o aplicativo.
Os ícones do menu são inspirados no padrão do sistema operacional, os
atalhos são inspirados em editores já existentes, como o Eclipse.
FIGURA 21 – MENU ARQUIVO
FONTE: (O AUTOR).
Na figura 22 é representado o menu (Editar) e seus respectivos itens, o
usuário tem como opções, clicar em (Desfazer) ou usar as teclas de atalho (Ctrl+Z)
para desfazer, especificamente essa opção tem como objetivo desfazer a última
ação do usuário no editor de texto, logo no que diz respeito a edição de texto,
também neste contexto de edição de texto existe a opção (Refazer) que se torna
ativa para uso somente se o usuário já desfez alguma ação, sendo assim, ao
57
selecionar essa opção ou usar as teclas de atalho (Ctrl+Y) o usuário refaz seu texto
desfeito, ambas as operações de desfazer e refazer desfaz e refaz caractere por
caractere.
O item (Recortar) ou as teclas de atalho (Ctrl+X) possibilita que o usuário
recorte o texto selecionado, o item (Copiar) ou as teclas de atalhos (Ctrl+C) permite
que o usuário copie o texto selecionado, a tecla (Colar) assim como os atalhos
(Ctrl+V) quando ativadas cola o texto previamente copiado no editor do aplicativo, o
item (Selecionar Tudo) ou as teclas (Ctrl+A) seleciona todo o conteúdo contido no
editor.
O item (Deletar) do menu ou a tecla (Delete) ao ativar deleta o conteúdo
selecionado do editor.
FIGURA 22 – MENU EDITAR
FONTE: (O AUTOR).
58
Na figura 23 é mostrado o menu (Execução) e seu único item (Executar), essa
é uma opção que o usuário pode utilizar para executar o arquivo, o usuário pode
também utilizar a tecla (F5).
FIGURA 23 – MENU EXECUTAR ARQUIVO
FONTE: (O AUTOR).
O menu (Ajuda) visto na figura 24 disponibiliza ao usuário duas opções,
sendo a opção (Conteúdo de Ajuda) ou a tecla de Atalho (F1) que traz ao usuário
dicas de uso do aplicativo, essas dicas são uteis ao usuário, pois fara com que ele
insira de maneira correta os dados no editor do aplicativo, se o usuário teve pouco
contado com programação linear o conteúdo de ajuda do aplicativo pode ser uma
forma de o usuário ter uma noção ou esclarecimento sobre os itens da modelagem
de programação linear, também é possível acessar o item (Sobre o OptiLiAna) onde
fornece ao usuário utilizador informações sobre o autor do aplicativo.
59
FIGURA 24 – MENU DE AJUDA
FONTE: (O AUTOR).
6.2 CARACTERISTICAS DE ENTRADA E SAIDA
Na figura 25 esta representada a tela que se apresenta ao usuário após o
mesmo selecionar (Abrir) ou fazer uso das teclas de atalho (Ctrl+O), nesta tela o
usuário poderá navegar no sistema de arquivo de seu sistema operacional,
selecionar o arquivo que deseja editar e finalmente clicar no botão (abrir), feito isto o
conteúdo do arquivo estará no editor de texto do aplicativo, existe também o botão
(Cancelar) que possibilita ao usuário cancelar a operação, se clicar este botão, a
janela de dialogo fechara e o usuário voltara para a tela inicial do aplicativo.
60
FIGURA 25 – ABRIR ARQUIVO
FONTE: (O AUTOR).
Se o usuário fizer uso da opção (Salvar Como) do menu (Arquivo) vai se
deparar com a tela representada na figura 26, essa tela permite que o usuário
navegue no sistema de arquivo de seu sistema operacional e escolha um local que
achar apropriado para salvar seu arquivo previamente editado, para salvar o arquivo
o usuário deve clicar no botão (salvar) nomear o arquivo e adicionar ou não uma
extensão ao arquivo feito isto a tela de dialogo fechara e o usuário retornara a tela
inicial do aplicativo, porem o conteúdo salvo continuara no editor do aplicativo, o
usuário também conta com a opção de cancelar a operação se for clicado o botão
(Cancelar) da janela de dialogo, a janela será fechada e o usuário retornara a tela
inicial do aplicativo, o conteúdo continuara na área de edição do aplicativo, porem
não estará salvo.
61
FIGURA 26 – SALVAR ARQUIVO
FONTE: (O AUTOR).
6.3 CARACTERISTICAS DOS RESULTADOS
O usuário tem a sua disposição duas opções de telas para os resultados,
sendo elas ativadas automaticamente, variando entre uma e outra conforme o
resultado, na figura 27 é representado uma tela de resultado de modelo com
solução, a tela é composta por itens, sendo a mensagem de solução ótima
encontrada, onde afirma que uma solução foi encontrada, em outra linha se encontra
o valor objetivo que se refere ao valor da função objetivo, nas linhas a seguir abaixo
da frase (VALORES DAS VARIAVEIS) é evidenciado em cada linha uma variável de
decisão e seu respectivo valor resultante do calculo pelo GLPK, na linha em que se
encontra a palavra (MAXIMIZAR) é representada a função objetiva inserida pelo
usuário e nas linhas abaixo o restante da modelagem inserida pelo usuário, essa
descrição da modelagem é útil, pois se o usuário não fechar ou fechar a janela, ele
pode escrever um novo modelo matemático e executar, caso ele não tenha fechado
62
a janela uma nova janela de resultado será exibida, sendo assim mais tarde ele
pode navegar entre as janelas de resultado e a existência da modelagem por ele
feita estar contida na janela de resultados, ele saberá a qual modelagem tal
resultado se refere. No canto superior direito o usuário encontra as opções de
fechar, maximizar ou minimizar a janela de resultados, no canto superior esquerdo
se encontra o nome do aplicativo o nome da tela.
FIGURA 27 – TELA DE RESULTADO DE MODELO COM SOLUÇÃO
FONTE: (O AUTOR).
Outra tela de resultado é mostrada na figura 28, esta tela além das opções de
maximizar, minimizar e fechar e a identificação da tela e do aplicativo são uma
63
mensagem de (Não foi encontrada solução) neste caso, significar que o modelo
executado não tem solução.
FIGURA 28 – TELA DE RESULTADO DE MODELO SEM SOLUÇÃO
FONTE: (O AUTOR).
64
6.4 CARACTERISTICAS INFORMATIVAS
Ao selecionado o menu (Ajuda) e em seguida acionado o item de menu
(Conteúdo de Ajuda) ou pressionar a tecla de atalho (F1) o usuário tem a sua
disposição uma tela com algumas informações sobre o aplicativo, dentre estas
informações se encontra a descrição do ambiente ao qual o aplicativo foi testado,
assim como instruções de uso, esclarecendo ao usuário o formato numérico a ser
utilizado, os tipos de sinais suportados, exemplos de modelagem, ordem dos
elementos do modelo matemático. A figura 29 se refere a tela descrita.
FIGURA 29 – TELA DE AJUDA
FONTE: (O AUTOR).
65
Quando o usuário está tentando salvar um arquivo com o mesmo nome em
um mesmo diretório, é acionada uma janela de dialogo descrita na figura 30, onde é
perguntando ao usuário se o mesmo deseja sobrescrever o arquivo já existente,
caso o usuário selecione (Sim), o arquivo existente será sobrescrito, caso ele
selecione (Não) a janela de dialogo é fechada e o foco é direcionado ao editor, neste
caso o conteúdo do editor não estará salvo.
FIGURA 30 – TELA DE ALERTA PARA SOBRESCREVER ARQUIVO
FONTE: (O AUTOR).
A figura 31 representa uma janela de dialogo que o usuário se depara quando
existe um conteúdo ainda não salvo no editor e o usuário tenta criar um arquivo ou
fechar o aplicativo utilizando qualquer recurso disponível para este fim, neste caso o
usuário conta com duas opções, ele pode acionar os botões (Sim) ou (Não), sendo
obrigatório, escolher uma das opções.
Se o usuário decidir cancelar a operação, a janela de dialogo fechara
retornando o foco para o aplicativo, sem ter feito qualquer modificação no conteúdo
do editor, no entanto o arquivo continua sem ser salvo.
Porem se o usuário decidir optar por escolher em não salvar o arquivo, um
novo arquivo é criado, e neste caso o conteúdo existente no editor é descartando.
Mas se o usuário decidir por salvar o arquivo outra janela de dialogo para
salvar o arquivo, janela a qual esta representada na figura 26 será aberta e o usuário
devera fazer todo o procedimento descrito para salvar o arquivo, feito isso, ou seja,
ao final do procedimento, o aplicativo salva o arquivo que estava no editor e fornece
ao usuário um editor vazio.
66
FIGURA 31 – TELA DE ALETAR PARA SALVAR
FONTE: (O AUTOR).
Na figura 32 esta representada a tela que se apresenta ao usuário após ele
ter navegado no menu (Ajuda) e ter selecionado a opção de item de menu (Sobre o
OptiLiAna), essa tela tem como objetivo fornecer uma informação básico sobre a
autoria do aplicativo, essa tela é composta pelo nome do aplicativo, endereço
eletrônico do desenvolvedor, o nome do desenvolvedor, o ano que o aplicativo foi
desenvolvido e o ícone do aplicativo, assim como as opções de minimizar a janela
ou fechar localizadas no canto superior direito, ainda na parte superior porem na
parte esquerda esta localizado o nome do aplicativo e seu ícone.
FIGURA 32 – TELA SOBRE O OPTILIANA
FONTE: (O AUTOR).
67
6.5 CARACTERISTICAS DE ALERTA
Na figura 33 é representada uma tela com um exemplo de erro de modelagem
no que se refere à quantidade de variáveis de decisão, neste caso existe as
variáveis x1 e x2 na função objetivo, no entanto se tenta colocar uma variável x3
como uma restrição, mas como a variável x3 não existe na função objetivo o
aplicativo deve rejeitar a modelagem quando a opção executar for acionada de
qualquer maneira possível, sendo pelo menu (Execução) ou pela opção da barra, ou
até mesmo pela tecla de atalho (F5), neste caso será emitido uma mensagem de
erro ao usuário que estra visível na área de texto inferior do aplicativo.
FIGURA 33 – TELA DE ERRO CAUSADA POR UM ELEMENTO QUE NÃO FAZ
PARTE DO MODELO
FONTE: (O AUTOR).
68
Sabendo que o conteúdo de ajuda informa ao usuário a forma com que o
modelo matemático deve ser escrito no editor do aplicativo, também deve ser levado
em consideração que o usuário pode se enganar e digitar seu modelo de forma não
conforme como descrito a ser seguido.
Neste caso se o usuário cometer um engano e colocar a função objetivo na
posição inferior referente a quaisquer elementos da modelagem matemática o
aplicativo vai emitir uma mensagem de erro representada na figura 34 avisando ao
usuário que existe um erro na função objetivo.
FIGURA 34 - ORDEM ERRADA DOS ELEMENTOS DO MODELO
FONTE: (O AUTOR).
69
Se no momento da execução do modelo matemático escrito no editor de texto
do aplicativo o modelo matemático apresentar algum caractere não conforme como
definido no conteúdo de ajuda do aplicativo, o aplicativo emitira uma mensagem de
erro, fornecendo a informação ao usuário sobre um erro de caractere, na figura 35
pode ser observada uma modelagem não conforme, pois existe um elemento que
não tem sentido com as conformidades do aplicativo que é a ultima linha digitada
onde se tem x2.=7, os sinais suportados pelo editor são menor ou igual, igual e
maior ou igual (<=, = e >=).
FIGURA 35 – TELA DE ERRO OCASIONADA POR CARACTERE INVÁLIDO
FONTE: (O AUTOR).
70
Observasse na figura 36 uma mensagem de erro acionada ao executar o
arquivo do editor que não é uma PL, na figura 36 o usuário tenta executar um
arquivo contendo apenas os caracteres (adf) como esses caracteres não formam
uma modelagem matemática que possibilite a resolução com programação linear
dentro das exigências do aplicativo, tal mensagem é fornecida ao usuário.
FIGURA 36 – TELA DE ERRO CAUSADA POR EXECUTAR UM ARQUIVO QUE
NÃO É CONTÉM UMA PL.
FONTE: (O AUTOR).
No entanto, se usuário tentar executar o arquivo do editor de texto do
aplicativo sem selecionar um dos itens (Maximizar) ou (Minimizar) localizados na
barra do aplicativo será emitido ao usuário uma mensagem de erro exemplificada na
figura 37, informando o mesmo sobre a não seleção de uma das opções.
71
FIGURA 37 – TELA DE ERRO AO EXECUTAR SEM SELECIONAR MAXIMIZAR
OU MINIMIZAR
FONTE: (O AUTOR).
72
7 CONSIDERAÇÕES FINAIS
Neste trabalho, o acadêmico em questão abordou como tema principal a
Pesquisa Operacional, especificamente a Programação Linear, e durante a pesquisa
foi notado que algumas tecnologias poderiam ser utilizadas para o desenvolvimento
do sistema proposto e também foi percebido que seria possível demonstrar com
clareza a importância deste aplicativo e da programação linear para auxiliar na
resolução de problemas de pesquisa operacional.
A pesquisa feita ao decorrer deste trabalho foi de grande importância para
adquirir os conhecimentos necessários que tornariam possível o desenvolvimento do
aplicativo que foi proposto para este trabalho.
Como objetivos futuros pode se destacar a expansão do aplicativo para
suportar programação inteira e programação binaria entre outros, fornecendo ao
usuário um menu com opções para que o mesmo possa escolher o método que
deseja aplicar ao modelo.
73
REFERÊNCIAS
ASCENCIO, Ana F. G.; CAMPOS, Edilene A. V. Fundamentos da Programação de Computadores. 2ª. ed. São paulo: Pearson, 2007.
BARBOSA, Marcos A.; ZANARDI, Ricardo A. D. Iniciação à Pesquisa Operacional no Ambiente de Gestão. 1ª. ed. Curitiba: Ibprex, 2010.
BARBOZA, Angela O. Simulação e Técnicas da Computação Evolucionária Aplicadas a Problemas de Programação Linear Inteira Mista. Curitiba: Repositório Institucional da Universidade Tecnológica Federal do Paraná (RIUT), 2005.
BRESSAN, Glaucia M.; OLIVEIRA, Aurelio R. L. Reordenamento eficiente das colunas básicas na programação de lotes e cortes. Pesquisa Operacional, Rio de Janeiro, v. XXIV, n. 2, Maio 2004. ISSN 0101-7438.
GONÇALVES, Edson. Dominando o Eclipse. São Paulo: Ciência Moderna 2006.
HILLIER, Frederick S.; LIEBERMAN, Geradl J. Introdução à Pesquisa Operacional. 8ª. ed. São Paulo: McGraw-Hill, 2006.
JONES, Meiler P. Fundamentos do Desenho Orientado a Objeto com UML. Tradução: PASCHOA, Celso R. São Paulo: Makron Books, 2001.
JUNIOR, Peter J. Java Guia do Programador. São Paulo: Novatec, 2007.
SANTOS, Luiz C. D. M. M. A Importância dos Software Livres na Engenharia de Produção. Anais do Congresso Nacional Universidade, EAD e Software Livre, II, n. 2, 2011.
MUNHOZ, José R.; MORABITO, Reinaldo. 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. Gestão & Produção, São Carlos, v. VIII, n. 2, Agosto 2001. ISSN 0104-530X.
NETO, Luiz L. S. Pesquisa Operacional no Ensino Médio. Synergismus scyentifica UTFPR, p. 42, 2009.
NOGAMI, Otto. O Uso Da Programação Linear Na Otimização Da Produção: Um Aplicativo Para A Microeconomia. Pensamento & Realidade, São Paulo, v. 15, 2004. ISSN 2237-4418.
PLANATSCHER , Hannes; SCHOBER, Michael. Scpsolver - An Easy To Use Java Linear Programming Interface. scpsolver, 2013. DisponÍvel em: <http://scpsolver.org/>. Acesso em: 26 de abril de 2014.
TAHA, Hamdy A. Pesquisa Operacional: uma visão geral. 8. ed. São Paulo: Pearson, 2008.
74
YOSHIDOME, Ewelton Y. C. et al. Uma Apoio Sistematizado à Implementação do Processo de Desenvolvimento de Requisitos do MPS.BR e CMMI a partir do Uso de Ferramentas de Software Livre. Workshop em Engenharia de Requisitos , n. 15, 2012.
JORGE, Marcos. Java Passo a Passo Lite. São Paulo: Pearson 2004.