• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Aplicação comercial de otimização de funções usando método de solução Simplex, com foco em sistemas de saúde nutricional e dietética
 

Aplicação comercial de otimização de funções usando método de solução Simplex, com foco em sistemas de saúde nutricional e dietética

on

  • 1,127 views

Eficiˆencia e confiabilidade de resultado s˜ao as duas caracter´ısticas procuradas com ...

Eficiˆencia e confiabilidade de resultado s˜ao as duas caracter´ısticas procuradas com
maior frequˆencia nos softwares atualmente. Desenvolvedores de software est˜ao cada
vez mais preocupados em melhorar estes dois pontos nos produtos que oferecem. Para
sistemas que trabalham com volume grande de dados e com necessidade de apresentar
resposta r´apida e precisa ao usu´ario, os desenvolvedores est˜ao `a procura de algoritmos
que tragam esta caracter´ıstica.
Os algoritmos matem´aticos que oferecem a modelagem de dados est˜ao sendo cada vez
mais procurados para atingir este objetivo. Este trabalho aplica o algoritmo Simplex em
uma situa¸c˜ao comum do cotidiano de uma software house , mostrando a usabilidade da
modelagem matem´atica para solu¸c˜ao de problemas complexos.

Statistics

Views

Total Views
1,127
Views on SlideShare
1,127
Embed Views
0

Actions

Likes
0
Downloads
10
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Aplicação comercial de otimização de funções usando método de solução Simplex, com foco em sistemas de saúde nutricional e dietética Aplicação comercial de otimização de funções usando método de solução Simplex, com foco em sistemas de saúde nutricional e dietética Document Transcript

    • Universidade Estadual de Campinas - UNICAMP Centro Superior de Educa¸˜o ca Tecnol´gica - CESET o ¸˜ ¸˜Aplicacao comercial de otimizacao ¸˜ ´ de funcoes usando metodo de ¸˜ solucao Simplex, com foco em ´ sistemas de saude nutricional e ´ dietetica Vanessa Oliveira Campos Limeira 2007
    • i Universidade Estadual de Campinas - UNICAMP Centro Superior de Educa¸˜o ca Tecnol´gica - CESET o ¸˜ ¸˜Aplicacao comercial de otimizacao ¸˜ ´ de funcoes usando metodo de ¸˜ solucao Simplex, com foco em ´ sistemas de saude nutricional e ´ dietetica Vanessa Oliveira Campos Trabalho de Gradua¸˜o Interdisciplinar (TGI) ca apresentado ao Centro Superior de Educa¸˜o Tecnol´gica ca o - CESET como requisito de conclus˜o do Curso de a Tecnologia em Inform´tica. a Orientador: Marli Gomes de Freitas Hernandes Limeira 2007
    • iiAos meus amigos Elaine, Fernando e Marcela, e ` minha irm˜ L´ a a ılian.
    • iii”Quis custodiet ipsos custodes?” Juvenal
    • ivSum´rio aLista de figuras vResumo (Abstract) 11 Introdu¸˜o ca 22 Metodologia e tecnologias envolvidas 33 Solu¸˜o do problema ca 84 Conclus˜o a 26Gloss´rio a 27Referˆncias Bibliogr´ficas e a 30
    • vLista de Figuras Figura 1: Dependˆncia entre os pacotes do Agenda Nutricional . . . . . . . . . . 12 e Figura 2: Diagrama de Pacotes: Agenda Nutricional: negocios . . . . . . . . . . 13 Figura 3: Diagrama de Pacotes: Agenda Nutricional: persistencia . . . . . . . . 14 Figura 4: Modelo de dados para os produtos e nutrientes . . . . . . . . . . . . . 15 Figura 5: Exemplo de rela¸˜o entre as informa¸˜es, no modelo de dados proposto 15 ca co Figura 6: Agenda Nutricional: Controle de m´ ltiplas janelas internas . . . . . . 17 u Figura 7: Agenda Nutricional: Janela padr˜o de consulta de registros . . . . . . 18 a Figura 8: JMPS: O problema do prot´tipo: quadro inicial do Simplex . . . . . . 19 o Figura 9: JMPS: O problema do prot´tipo: primeira itera¸ao . . . . . . . . . . . 20 o c˜ Figura 10: JMPS: O problema do prot´tipo: pivoteamento da linha . . . . . . . 20 o Figura 11: JMPS: O problema do prot´tipo: ajuste das demais linhas da tabela o 20 Figura 12: JMPS: O problema do prot´tipo: primeira itera¸˜o finalizada . . . . 20 o ca Figura 13: JMPS: O problema do prot´tipo: resultado ´timo . . . . . . . . . . . 20 o o Figura 14: JMPS: Solu¸˜o do problema atrav´s do m´todo Gr´fico . . . . . . . . 21 ca e e a Figura 15: JMPS: Edi¸˜o de problema de otimiza¸˜o . . . . . . . . . . . . . . . 21 ca ca Figura 16: Estrutura interna do sistema JMPS . . . . . . . . . . . . . . . . . . . 22 Figura 17: Pacote calculo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
    • 1Resumo (Abstract) Eficiˆncia e confiabilidade de resultado s˜o as duas caracter´ e a ısticas procuradas commaior frequˆncia nos softwares atualmente. Desenvolvedores de software est˜o cada vez e amais preocupados em melhorar estes dois pontos nos produtos que oferecem. Para sistemasque trabalham com volume grande de dados e com necessidade de apresentar respostar´pida e precisa ao usu´rio, os desenvolvedores est˜o ` procura de algoritmos que tragam a a a aesta caracter´ ıstica. Os algoritmos matem´ticos que oferecem a modelagem de dados est˜o sendo cada vez a amais procurados para atingir este objetivo. Este trabalho aplica o algoritmo Simplex emuma situa¸˜o comum do cotidiano de uma software house, mostrando a usabilidade da camodelagem matem´tica para solu¸˜o de problemas complexos. a ca
    • 21 Introdu¸˜o ca Todos os dias vemos novas tecnologias surgirem, se aprimorarem. Com elas vˆm o ciclo evicioso de aprimoramento de hardware e software. Novas teorias de todas as disciplinas da´rea de exatas s˜o utilizadas na computa¸˜o, auxiliando neste aprimoramento cont´a a ca ınuo. O software faz parte de uma tendˆncia de evolu¸˜o constante. A Engenharia de e casoftware est´ constantemente se aperfei¸oando, de forma a trazer cada vez mais t´cnica a c ee m´todos eficazes para melhorar o desempenho tanto do processo de desenvolvimento equanto do software em si. Desta forma, a matem´tica e a inform´tica se unem para trazer o que existe de melhor a aem cada e traduzir tudo isto em um software de qualidade, que atenda n˜o somente as anecessidades do usu´rio, mas que utilize todo o potencial de hardware dispon´ atual- a ıvelmente. Funda¸˜es como a Computational Infrastructure for Operation Research , COIN- coOR, trabalham na cria¸˜o e dissemina¸˜o de solu¸˜es computacionais para problemas ca ca comatem´ticos. a Este trabalho prop˜e demonstrar em uma aplica¸˜o comercial, focada na ´rea de sa´ de, o ca a umais especificamente em nutri¸˜o e diet´tica, o uso de m´todos e modelos matem´ticos ca e e asimples para solucionar problemas de c´lculos complexos; neste caso, otimiza¸˜o de prob- a calemas lineares. A proposta ´ desenvolver um sistema que se utilize de um m´todo de otimiza¸˜o e e calinear, o m´todo Simplex, para calcular a quantidade de n produtos compondo uma edieta nutricional, de acordo com a composi¸˜o nutricional de cada produto selecionado capara a dieta. O sistema utiliza dietas de referˆncia, que s˜o compostas por nutrientes em e aquantidades espec´ ıficas, para calcular as quantidades de cada produto necess´rios a suprir aa ingest˜o m´ a ınima ou m´xima de nutrientes da dieta de referˆncia. a e Este trabalho est´ organizado em dois cap´ a ıtulos: Metodologia e tecnologias envolvidas,que descreve o modelo matem´tico escolhido (Simplex) e as tecnologias utilizadas no adesenvolvimento do sistema; Solu¸˜o do Problema, subdividindo em se¸˜es que descrevem ca coo problema selecionado no projeto, a metodologia utilizada para desenvolver o sistema eintegrar os componentes selecionado. O trabalho ainda conta com Introdu¸˜o, Conclus˜o, ca aGloss´rio e Referˆncias Bibliogr´ficas. a e a
    • 32 Metodologia e tecnologias envolvidas2.1 O problema A populariza¸˜o do computador pessoal trouxe consigo uma necessidade de evolu¸˜o ca cado hardware e do software que atingiu largamente todos os n´ ıveis da sociedade - desdeo ambiente dom´stico, com o largo uso do microcomputador para jogos e home office, eat´ o ambiente do escrit´rio - independente do setor econˆmico da empresa (ind´ stria, e o o ucom´rcio e governo). Com a constante adapta¸˜o do software aos servi¸os dispon´ e ca c ıveis edos servi¸os aos softwares, criou-se um mercado virtualmente infinito para a produ¸˜o de c casoftware. Atualmente, o mercado de software personalizado - software desenvolvido para um fimespec´ ıfico, em contrapartida ao software de prateleira, feito com caracter´ ısticas gen´ricas ee distribu´ em larga escala - tem apresentado um crescimento muito atrativo, que se ıdomostra com o grande n´ mero de empresas desenvolvedoras de software que surgem a cada uano. Com o mercado aberto ` novos sistemas e a competi¸˜o causada pelo n´ mero de a ca uempresas especializadas, possuir um diferencial ´ importante. e Os softwares produzidos atualmente, de forma personalizada, possuem como requisitosas regras do neg´cio do cliente, suas necessidades particulares. Sistemas de controle tˆm o edominado a demanda no mercado, pois s˜o servi¸os cruciais dentro das empresas, e estes a csistemas demandam, muitas vezes, c´lculos complexos envolvendo m´ ltiplas vari´veis. A a u ademanda constante por performance e velocidade de resposta, aliada ` press˜o de cumprir a acronogramas apertados e o baixo conhecimento da equipe de desenvolvimento em solu¸˜es cocomputacionais complexas, levam ` utiliza¸˜o de c´lculos aproximados com altas taxas a ca ade erro.2.2 Programa¸˜o linear e m´todo Simplex ca e A programa¸˜o linear apresenta uma solu¸˜o de baixo custo computacional e com ca caredu¸˜o da margem de erro para problemas de otimiza¸˜o com m´ ltiplas vari´veis, como ca ca u a´ o caso de in´ meros sistemas de controle - almoxarifado, finan¸as, produ¸˜o, etc.e u c ca
    • 4 A programa¸˜o linear consiste em problemas de otimiza¸ao que utilizam fun¸˜es lin- ca c˜ coeares. Existem casos t´ ıpicos de programa¸˜o linear, como o Problema de Transporte, caque foi utilizado inicialmente para determinar o menor custo de transporte entre diversasf´bricas de um produto e diversos centros consumidores [6]. Situa¸˜es t´ a co ıpicas de aplica¸˜o cada programa¸˜o linear s˜o os casos onde se deseja, por exemplo, maximizar o lucro de ca auma empresa, minimizar o custo de produ¸˜o de um determinado produto, etc. ca A programa¸˜o linear utiliza-se de um modelo matem´tico composto por uma fun¸˜o ca a caobjetiva e de restri¸˜es t´cnicas representadas por inequa¸˜es. Por exemplo: co e co Lucro = 2x1 + 3x2 (2.1)        4x1 + 3x2 ≤ 10    t´cnicas  e 6x1 − x2 ≥ 20     Restric˜es o  (2.2) x1 ≥ 0      de n˜o negatividade a     x2 ≥ 0     Neste modelo, encontramos os seguintes elementos: • Vari´veis de decis˜o: a a s˜o as vari´veis que representam as decis˜es a serem a a o tomadas. Por exemplo, em uma f´brica onde se deseja otimizar a produ¸˜o para a ca maximizar o lucro, as vari´veis de decis˜o representar˜o os produtos que ela produz. a a a No exemplo acima, as vari´veis de decis˜o s˜o x1 e x2 . a a a • Fun¸˜o objetivo: representa o objetivo do modelo. No nosso exemplo, maximizar ca o lucro. • Restri¸˜es: co s˜o representadas por inequa¸˜es lineares e identificam as situa¸˜es a co co que imp˜em limita¸˜es ao modelo. Existem dois tipos de restri¸˜es: t´cnicas, por o co co e exemplo, quantidades m´ ınimas que devem ser produzidas de um produto; e de n˜o a negatividade, que impedem que os valores encontrados para as vari´veis de decis˜o a a sejam negativos (n˜o ´ poss´ produzir -20 pe¸as). a e ıvel c Para solucionar os problemas de programa¸˜o linear existem diversos algoritmos defini- cados, como Gauss-Jordan e Simplex. Estes algoritmos e suas variantes definem passos epontos de parada para o c´lculo de problemas de otimiza¸˜o. Neste trabalho, optamos a capor utilizar o algoritmo Simplex para solucionar os problemas de otimiza¸˜o propostos. ca
    • 5 O Simplex ´ o algoritmo b´sico da programa¸˜o linear. Seu objetivo ´ transformar e a ca euma matriz fornecida em outra padronizada, de acordo com a necessidade do problema.A matriz fornecida ´ criada a partir das equa¸˜es geradas de otimiza¸˜o e restri¸˜es. e co ca coUtilizando o exemplo anterior, a matriz inicial ficaria:    4 3 10    (2.3) 6 −1 20 O Simplex soluciona o problema atrav´s de in´ meras itera¸˜es, onde a cada itera¸˜o e u co caocorre o pivotamento da matriz. Terminam-se as itera¸˜es quando a matriz atinge o coestado ´timo, ou seja, quando atingem-se valores para as vari´veis dentro de faixas pr´- o a eestabelecidas. Por exemplo, num problema de maximiza¸˜o, quando todas as vari´veis ca aencontraram-se com valores maiores ou iguais a zero, identifica uma matriz ´tima. o Para exemplificar o funcionamento do algoritmo Simplex, usaremos o problema[7]: minx1 + 2x2 x1 + x2 ≤ 2 x1 − x2 ≥ 1 (2.4) s.a. x1 ≥ 0 x2 ≥ 0 Colocando-o na forma normal1 : minx1 + 2x2 x1 + x2 + x3 = 2 x1 − x2 − x4 = 1 x1 ≥ 0 (2.5) s.a. x2 ≥ 0 x3 ≥ 0 x4 ≥ 0 Multiplicando a equa¸˜o de restri¸˜o x1 - x2 - x4 = 1 por -1, obt´m-se uma solu¸˜o ca ca e cainicial, cuja matriz ´ identidade. e 1 A forma normal da equa¸ao linear implica em transformar a inequa¸ao em uma equa¸ao, ou seja, c˜ c˜ c˜eliminar os sinais de desigualdade, acrescentando vari´veis novas que complementem a solu¸ao da equa¸ao. a c˜ c˜Tamb´m conhecida por forma canˆnica. e o
    • 6 x1 x2 x3 x4 -z x3 1 1 1 0 0 2 x4 -1 1 0 1 0 -1 -z 1 2 0 0 1 0 Por´m, esta solu¸˜o n˜o ´ admiss´ e ca a e ıvel, pois b2 ≤ 0:   0  p= (2.6)   −1 Introduzindo p como vari´vel x0 na nossa matriz, obtemos: a x1 x2 x3 x4 x0 -z x3 1 1 1 0 0 0 2 x4 -1 1 0 1 -1 0 -1 -z 1 2 0 0 0 1 0 Efetua-se a troca da vari´vel x0 pela x4 , pois esta ´ a que possui valor b negativo. a eObt´m-se o quadro: e x1 x2 x3 x4 x0 -z x3 1 1 1 0 0 0 2 x0 1 -1 0 -1 1 0 1 -z 1 2 0 0 0 1 0 Neste quadro, observa-se que x0 = - x1 + x2 + x4 + 1 . Sendo assim, a vari´vel que adeve ser escolhida para entrar na base, no lugar de x0 , ´ aquela que tiver o coeficiente emais positivo na linha da vari´vel x0 . No nosso caso, esta vari´vel ´ a x1 . a a e Com esta troca, chegamos ao resultado: x1 x2 x3 x4 x0 -z x3 0 2 1 1 -1 0 1 x1 1 -1 0 -1 1 0 1 -z 0 3 0 1 -1 1 -1 O resultado ´timo ´ alcan¸ado quando n˜o existem resultados negativos na linha do o e c az. Note os valores das vari´veis: x1 =0; x2 =3; x3 =0; x4 =1. a
    • 72.3 Arcabou¸o tecnol´gico c o O conjunto tecnol´gico mais utilizado atualmente no desenvolvimento de software otem variado entre os baseados em Java e .NET. Adotamos o conjunto para Java nestetrabalho. A escolha pela tecnologia Java tem fundamento no fato de todo o kit necess´rio apara desenvolver e manter o software ser gratuito e estar dispon´ ıvel na internet paraaquisi¸˜o, incluindo toda a documenta¸˜o necess´ria para seu entendimento. ca ca a Foi utilizado o conjunto de ferramentas: • Linguagem de programa¸˜o: Java SDK 5.0 ca 2 • Banco de dados: Compat´ JDBC ıvel • Infraestrutura de desenvolvimento: – IDE: Eclipse 3.2 – Framework de banco de dados: Hibernate 3.0 – Gera¸˜o de relat´rios: Jasper Reports 1.2.8 ca o – Projeto de relat´rios: iReport 1.2.8 o – Controle de vers˜o: CVS a O software produzido neste trabalho ser´ distribu´ gratuitamente, sob licen¸a GPL, a ıdo catrav´s do servi¸o de hospedagem de software SourceForge.net. e c 2 Devido ao uso do Hibernate nos servi¸os de persistˆncia, utilizamos os bancos de dados PostgreSQL c e8.2 e Microsoft SQL Server 2003 nos testes de desenvolvimento.
    • 83 Solu¸˜o do problema ca3.1 O problema escolhido O objetivo inicial deste trabalho ´ demonstrar a aplica¸ao de m´todos matem´ticos e c˜ e ano cotidiano do desenvolvimento de software. A programa¸ao linear, aplicada com o c˜m´todo Simplex, ´ um dos mecanismos com maior potencial de aplica¸˜o, e por isto, foi e e cao escolhido. O problema selecionado refere-se a um problema de nutri¸˜o. Problemas de nutri¸˜o e ca cadiet´tica s˜o constantemente encontrados em livros de programa¸˜o linear nos exemplos e e a caexerc´ ıcios, geralmente de forma simplificada, usando duas ou at´ no m´ximo trˆs vari´veis. e a e aEm geral, estes problemas envolvem dois produtos nutricionais (vitaminas, prote´ ınas,minerais) e deseja minimizar o custo de uma dieta. O problema proposto neste trabalho ´ mais complexo, j´ que envolve solu¸˜o com- e a caputacional implementada em um sistema, o que nos d´ uma margem de c´lculo maior, a aampliando o n´ mero de vari´veis que poderemos manipular. u a A proposta ´ gerar uma dieta nutricional, baseada em componentes nutricionais b´sicos e ae uma dieta de referˆncia (por exemplo, a dieta m´ e ınima de 2500 calorias, indicada emqualquer produto consum´ ıvel), utilizando a tabela nutricional de produtos consum´ ıveis in-dicada pelo nutricionista ou paciente usu´rio do sistema. O sistema implementa o m´todo a eSimplex e realiza os c´lculos a partir da dieta de referˆncia selecionada no momento da a econstru¸˜o da dieta nutricional desejada. ca Na proposta n˜o est´ incluso tratamento de custo, peso, altura, idade ou quadro cl´ a a ınicodo paciente, ou seja, o sistema n˜o se prop˜e a utilizar-se de heur´ a o ısticas cl´ ınicas paraselecionar a melhor dieta para um paciente. O objetivo ´ gerar uma dieta utilizando-se de euma dieta de referˆncia, criada previamente, e de uma lista de produtos desejados para econsumo pelo paciente. Os produtos ser˜o as vari´veis do problema e as restri¸˜es ser˜o a a co ageradas a partir da dieta de referˆncia. O fator de minimiza¸˜o ou maximiza¸˜o da dieta e ca caser´ fornecido, tamb´m, pela dieta de referˆncia - representado por um dos componentes a e edesta dieta. Por exemplo, numa dieta recomendada de 2500 calorias/dia, o elemento dereferˆncia ´ a caloria. Neste caso, nosso problema ser´ de maximiza¸˜o, j´ que esta dieta e e a ca a
    • 9regula uma ingest˜o m´ a ınima de 2500 calorias por dia. O sistema ir´ calcular a quantidade am´ ınima de cada produto que dever´ ser consumida pelo paciente, a fim de atingir as 2500 acalorias m´ ınimas desejadas.3.2 An´lise e solu¸˜o a ca Existem poucos componentes dispon´ ıveis prontos que implementem algoritmos deotimiza¸˜o. Encontramos o componente CLP que implementa diversos algoritmos Sim- caplex linear e n˜o-linear, como o Simplex Primal, Dual Simplex, Simplex n˜o linear, entre a aoutros. O componente CLP foi desenvolvido utilizando a linguagem de programa¸˜o C++ cae ´ distribu´ gratuitamente pela Computational Infrastructure for Operations Research e ıdo(COIN-OR), uma funda¸˜o sem fins lucrativos para ciˆncia e educa¸˜o, cuja miss˜o ´ a de ca e ca a ecriar e disseminar o conhecimento relacionado a todos os aspectos de pesquisa operacionalcomputacional [2]. O componente CLP foi implementado com o objetivo de ser utilizadolargamente em aplica¸˜es comerciais ou n˜o. co a Outro componente pesquisado foi o GLPK - GNU Linear Programming Kit [5], de-senvolvido em C Ansi. O GLPK implementa os m´todos Simplex (primal e dual), mas efoi descartado devido ` tecnologia utilizada em seu desenvolvimento. a A escolha pelo arcabou¸o tecnol´gico guiou a escolha do componente a ser utilizado, c oo que descartou o uso do CLP pela complexidade da integra¸˜o via chamada nativa de cabibliotecas C++ no Java, o que tornaria o custo do projeto mais alto (aumento signi-ficativo do prazo para desenvolvimento) e reduziria a manutenibilidade do software final,pois a integra¸˜o de m´ ltiplas linguagens, al´m de dificultar a manuten¸˜o do software ca u e capelo pr´prio fato de mesclar duas tecnologias diferentes, impactaria na performance final odo sistema, pois existe queda de performance computacional quando se realiza chamadasnativas, mesmo que ambos os lados do programa estejam muito bem desenvolvidos, etenham considerado todos os pontos poss´ ıveis de otimiza¸˜o do desempenho de software. caO GLPK foi desconsiderado pela mesma raz˜o e com o agravante de que n˜o foi desen- a avolvido utilizando o paradigma da orienta¸˜o a objetos, o que aumentaria a dificuldade cade integra¸˜o com o Java. ca Devido ao fato do objetivo n˜o ser a implementa¸˜o do m´todo Simplex e, sim, a a ca edemonstra¸˜o de seu uso, pesquisamos componentes desenvolvidos em Java, similares ca
    • 10ao CLP. N˜o foi poss´ a ıvel localizar componentes, por´m, localizamos um desenvolvedor eque realizou um projeto acadˆmico similar ao proposto neste trabalho, utilizando Java. eMichael Bochenek desenvolveu o applet Java Mathematical Programming Suite [1], por´m, epelo curto prazo estabelecido para o projeto, somente foi implementado o m´todo Simplex ee o m´todo Gr´fico para resolu¸˜o de problemas de programa¸˜o linear. Em contato com e a ca caBochenek, os fontes do applet foram cedidos para serem adaptados a este projeto. O applet JMPS utiliza o m´todo Simplex para solucionar equa¸˜es prontas ou qualquer e coequa¸˜o informada pelo usu´rio. Iremos utilizar o applet fornecido por Bochenek para ca ademonstrar o uso do modelo Simplex proposto neste trabalho e ilustrar as itera¸˜es do coSimplex, al´m de demonstrar a estrutura interna implementada, as adapta¸˜es necess´rias e co apara ser utilizado neste projeto e o desempenho trazido ao c´lculo final proposto. a3.2.1 Criando o sistema Agenda Nutricional O sistema Agenda Nutricional foi projetado para ilustrar o uso do m´todo Simplex no ec´lculo da dieta nutricional. O objetivo do sistema Agenda Nutricional ´ o de fornecer fer- a eramentas que auxiliem na prescri¸˜o de uma dieta nutricional. Seus principais elementos cas˜o: a 1. Cadastro de Produtos: permite manter o cadastro de todos os produtos (ali- mentos) que estar˜o dispon´ a ıveis para o paciente compor sua dieta. 2. Cadastro de Nutrientes: tabela de dom´ ınio, n˜o ´ poss´ alterar a lista de a e ıvel nutrientes existentes atrav´s da aplica¸˜o, por´m o sistema fornece uma lista de e ca e nutrientes padronizada [8]. 3. Cadastro de Nutricionistas: tabela de dom´ ınio; o objetivo ´ possuir informa¸˜es e co do nutricionista necess´rias ` sua identifica¸˜o. A primeira fase do desenvolvimento a a ca n˜o inclui o cadastro de nutricionistas; esta funcionalidade ser´ implementada em a a fases posteriores. 4. Cadastro de Dietas de referˆncia: permite manter o cadastro das dietas que e ser˜o utilizadas como referˆncia na prescri¸˜o ao paciente - uma dieta de referˆncia a e ca e ´ a dieta de 2500 calorias di´rias para um adulto. e a
    • 11 5. Cadastro de Pacientes: o cadastro de pacientes permite manter informa¸˜es co m´ ınimas necess´rias ` identifica¸˜o do paciente e seu hist´rico cl´ a a ca o ınico. 6. Prescri¸˜o de dietas: ca permite ao nutricionista prescrever uma dieta a um pa- ciente cadastrado; o sistema utiliza o m´todo simplex para, implicitamente, calcular e as quantidades de cada produto selecionado pelo nutricionista, de acordo com a quantidade m´ ınima ou m´xima de cada nutriente indicada na dieta de referˆncia, a e otimizando de acordo com o produto de referˆncia da mesma. e O Agenda Nutricional utiliza um sistema de banco de dados para armazenar as in-forma¸˜es, por´m n˜o ´ dependente de tecnologia de banco de dados, ou seja, o usu´rio co e a e apode escolher um gerenciador de banco de dados da sua preferˆncia para utilizar o sistema eAgenda Nutricional. O sistema foi projetado de forma a ser totalmente independente deplataforma e de gerenciador de banco de dados. Sua interface foi desenhada para que seadeque `s configura¸˜es locais do usu´rio. Todas as configura¸˜es b´sicas do sistema po- a co a co adem ser feitas atrav´s de arquivos texto, edit´veis em qualquer editor de texto dispon´ e a ıvelno computador do usu´rio. a Outra caracter´ ıstica importante do sistema ´ a tradu¸˜o para m´ ltiplos idiomas. O e ca usistema foi projetado para permitir a tradu¸˜o de todos os termos para qualquer idioma. caPara isto, existe um arquivo de idiomas onde os termos s˜o categorizados. A vers˜o a aprincipal do sistema foi feita completamente em portuguˆs brasileiro, por´m, havendo a e enecessidade de tradu¸˜o para outro idioma, digamos, inglˆs, basta criar uma c´pia do ca e oarquivo de idiomas original, traduzir os termos e configurar o sistema para o novo idioma;ao reiniciar a aplica¸˜o, o sistema identifica o idioma selecionado e utiliza o arquivo de caidiomas adequado. A arquitetura do sistema ´ muito simples, por´m utiliza-se de quatro camadas: ap- e eresenta¸˜o, servi¸os, neg´cios e persistˆncia. As camadas est˜o distribu´ ca c o e a ıdas de forma areduzir a interdependˆncia entre elas, assim: e
    • 12 Figura 1: Dependˆncia entre os pacotes do Agenda Nutricional e A n´ ıvel de implementa¸˜o, as chamadas entre as camadas ocorrem no sentido da cacamada de apresenta¸˜o para a camada de persistˆncia, ou seja, as classes de apresenta¸˜o ca e cafazem chamadas `s classes de servi¸os, mas n˜o ocorre o inverso - servi¸os chamando a c a capresenta¸˜o. Tamb´m n˜o existe liga¸˜o entre as camadas n˜o adjacentes, ou seja, ca e a ca aa camada de apresenta¸˜o desconhece a existˆncia da camada de neg´cios. Assim, as ca e ocamadas somente possuem comunica¸˜o com as duas camadas adjacentes, o que facilita caa manuten¸˜o, pois ´ poss´ isolar um problema encontrado em uma camada. ca e ıvel Os erros ocorridos nas camadas mais internas s˜o encaminhados `s camadas mais a aexternas atrav´s de exce¸˜es e estas exce¸˜es s˜o tratadas somente na camada de apre- e co co asenta¸˜o, onde o usu´rio toma conhecimento delas atrav´s de mensagens padronizadas. ca a e As camadas de servi¸os e de neg´cios est˜o intimamente ligadas. Devido ` baixa com- c o a aplexidade da aplica¸˜o, a camada de servi¸os foi simplificada, sendo apenas uma camada ca cde troca de mensagens, basicamente. Entretanto, a camada de servi¸os possui um forte cacoplamento com a camada de apresenta¸˜o. Por exemplo, escolheu-se apresentar os resul- catados das consultas em forma de tabela na camada de apresenta¸˜o. Deste modo, decidiu- case centralizar a cria¸˜o desta tabela na camada de servi¸os para que houvesse garantia de ca cque a tabela criada sempre fosse a mesma, com as mesmas colunas, comportamento, etc.Assim, o servi¸o implementado gera uma instˆncia do objeto javax.swing.JTable - tipica- c amente um elemento de apresenta¸˜o - com os dados resultantes da consulta solicitada na cacamada de apresenta¸˜o. ca
    • 13 Figura 2: Diagrama de Pacotes: Agenda Nutricional: negocios O acesso ao banco de dados ´ feito atrav´s do framework Hibernate, que faz a comu- e enica¸˜o entre a aplica¸˜o e o banco de dados. Al´m de trazer a liberdade de tecnologia - ca ca eo Hibernate utiliza conex˜es JDBC ao banco de dados, permitindo que o acesso seja feito oa qualquer gerenciador que possua driver JDBC dispon´ -, o Hibernate traz agilidade ıvelna constru¸˜o da aplica¸˜o pois ele cria todas as consultas e comandos de manipula¸˜o de ca ca cadados utilizando uma adapta¸˜o pr´pria do SQL chamada HSQL. Ao desenvolvedor basta ca ocriar os arquivos de mapeamento l´gico do banco de dados, indicando quais vari´veis da o aaplica¸˜o est˜o ligadas a quais campos e tabelas do banco. Como o Hibernate somente ca autiliza o arquivo de mapeamento, a aplica¸˜o se torna independente de tecnologia de cabanco de dados, sendo necess´rio somente indicar em um arquivo de configura¸˜o pr´prio a ca odo Hibernate qual o driver JDBC, o servidor onde o banco de dados est´ instalado e o ausu´rio e senha de acesso. a
    • 14 Figura 3: Diagrama de Pacotes: Agenda Nutricional: persistencia A estrutura de c´lculo do m´todo Simplex foi embutida na camada de neg´cios, j´ que a e o ao c´lculo faz parte da l´gica interna e do conjunto de regras do sistema. Veremos esta a oestrutura com mais detalhes na se¸˜o Adaptando o applet para o sistema Agenda caNutricional e vice-versa. Com a arquitetura definida, o componente de c´lculo do Simplex selecionado, iniciou- ase a pesquisa pela fonte de dados. A maior dificuldade foi encontrar uma fonte de dadosconfi´vel, pois para o funcionamento adequado do sistema, ´ necess´rio que a tabela a e anutricional dos produtos esteja correta. O departamento de nutri¸˜o da Universidade cade S˜o Paulo (USP) [4] disponibiliza consulta online ` tabela nutricional dos alimentos a anacionais e de consumo nacional. Por´m, n˜o h´ possibilidade de fazer c´pia completa do e a a obanco de dados. O objetivo era o de localizar uma base de dados confi´vel que pudesse aser importada para o Agenda Nutricional sem perda de informa¸˜o e sem impactar no cacronograma estabelecido para o projeto. Em prosseguimento ` pesquisa, localizamos o aBanco de Composi¸˜o dos Alimentos do Departamento de Agricultura dos Estados Unidos ca- USDA. O USDA disponibiliza o National Nutrient Database for Standard Reference ,
    • 15que pode ser utilizado gratuitamente. Este banco est´ dispon´ em formatos texto e do a ıvelMicrosoft Access. O Agenda Nutricional utilizou o Standard Reference 19, de agosto de2006 [8]. Para modelar o banco de dados, foi utilizado o banco do USDA como base. Nestemodelo temos os elementos Nutriente, Produto e Unidade de Medida. Cada nutrientepossui uma unidade de medida padr˜o. Um produto ´ composto por diversos nutrientes; a ea quantidade de cada nutriente ´ indicada a partir de uma quantidade de produto, numa edeterminada unidade de medida. Figura 4: Modelo de dados para os produtos e nutrientes Por exemplo, uma unidade de abacaxi cont´m 476 kcal. e Figura 5: Exemplo de rela¸ao entre as informa¸oes, no modelo de dados proposto c˜ c˜ A partir do modelo proposto para o sistema Agenda Nutricional, foi desenvolvido umm´todo de migra¸˜o de dados das tabelas do Microsoft Access para o banco de dados do e casistema. O processo ´ o descrito: e
    • 16 • Criaram-se as consultas desejadas no MS-Access, de acordo com os dados que deseja- se importar. Por exemplo, foi criada uma consulta que retorna uma lista dos pro- dutos dispon´ ıveis e sua composi¸˜o. ca • As consultas foram executadas e os resultados salvos em arquivos textos tabulados. • Desenvolveu-se, em Java, uma ferramenta de migra¸˜o que lˆ os arquivos textos ca e tabulados e gera os comandos SQL para inser¸˜o dos dados no banco de dados do ca sistema Agenda Nutricional, granvando em arquivos texto estes comandos. • Os arquivos SQL foram executados no gerenciador de banco de dados escolhido e os dados importados com sucesso. Os pr´ximos passos, seguindo o cronograma estabelecido para o projeto, foram im- oplementar todas as funcionalidades do sistema que n˜o dependessem do c´lculo que seria a arealizado pelo applet - que ainda necessitava adapta¸˜es. Para a apresenta¸˜o, optamos co capor utilizar as ferramentas do Java Swing. Isto trouxe independˆncia de plataforma ` e aaplica¸˜o e reduziu a necessidade de adapta¸˜es para os diversos sistemas operacionais ca coque o usu´rio pode utilizar. a A interface gr´fica foi desenvolvida de forma a utilizar os padr˜es de interface conheci- a odos em aplica¸˜es comerciais. O uso de m´ ltiplas janelas independentes foi desconsiderado co upois a maioria do p´ blico est´ acostumada a aplica¸˜es que gerenciam janelas internas. u a coPor isto, a camada de apresenta¸˜o foi desenhada de forma a utilizar janelas internas na caaplica¸˜o - modelo MDI. Isto trouxe maior controle das janelas e ampliou o n´ mero de ca ujanelas que o usu´rio pode manter abertas em seu campo visual. A aparˆncia utiliza o vi- a esual padr˜o do sistema operacional utilizado pelo usu´rio, evitando o desconforto causado a apela mudan¸a brusca de padr˜o de telas. c a
    • 17 Figura 6: Agenda Nutricional: Controle de m´ ltiplas janelas internas u Foram utilizados padr˜es de projeto (Design patterns) que facilitaram a implementa¸˜o o cade diversas caracter´ ısticas da interface. Todas as janelas implementam o padr˜o Singleton, an˜o permitindo m´ ltiplas instˆncias da mesma janela durante a execu¸˜o do sistema. a u a caDesta forma, economiza-se mem´ria do computador, pois a m´quina virtual do Java o aconsome muita mem´ria para construir a janela. Assim, utilizamos o padr˜o Composite o apara armazenar as instˆncias das janelas e reduzir o tempo de abertura das mesmas. a Os conceitos de Orienta¸˜o a Objetos foram aplicados amplamente, inclusive no de- casenho da interface. Observando o pacote apresenta¸˜o, podemos notar o uso de abstra¸˜o, ca caheran¸a e encapsulamento, que s˜o os trˆs pilares da orienta¸˜o a objetos. c a e ca A classe abstrata apresentacao.adicionais.JanelaInterna implementa os padr˜es Sin- ogleton e Composite. Ela cont´m referˆncia a todas as janelas abertas do sistema. Esta e eclasse gerencia todas as janelas internas da aplica¸˜o. Ela tamb´m ´ a classe m˜e de todas ca e e aas janelas de cadastro e consulta. No pacote apresentacao.consultas, possu´ ımos uma classe abstrata ConsultaForm que
    • 18´ filha de apresentacao.adicionais.JanelaInterna e m˜e de todas as classes Consulta. Estae aclasse determina o leiaute padr˜o das janelas de consulta e todas as telas de consulta aherdam suas caracter´ ısticas. Figura 7: Agenda Nutricional: Janela padr˜o de consulta de registros a A ultima tarefa do projeto foi a adapta¸˜o do applet JMPS para realizar o c´lculo do ´ ca am´todo Simplex, conforme pode ser visto nas se¸˜es seguintes. e co3.2.2 O funcionamento do Applet O sistema Java Mathematical Programming Suite - JMPS [1] ´ um sistema de com- eposi¸˜o muito simples. Bochenek n˜o utilizou arquiteturas complexas e n˜o utilizou-se ca a ade recursos como pacotes e estruturas mais complexas para organizar o sistema. Istodificultou o entendimento do software no in´ ıcio, pois o sistema n˜o apresentava nenhuma adocumenta¸˜o ou estrutura de referˆncia que pudesse ser utilizada. ca e Como o JMPS ´ um applet e n˜o foi desenvolvido como um componente reaproveit´vel, e a aas camadas de neg´cio e apresenta¸˜o estavam mescladas, ou seja, n˜o havia separa¸˜o o ca a ca
    • 19formal entre as a¸˜es de apresenta¸˜o e de neg´cio. Se observarmos a arquitetura pro- co ca oposta do Agenda Nutricional, veremos que existe completa separa¸˜o entre neg´cio e ca oapresenta¸˜o, o que nos d´ liberdade para reutilizar a camada de neg´cios em outros pro- ca a ojetos, sem necessidade de adapta¸˜es - por exemplo, se quisermos distribuir uma vers˜o co aweb do Agenda Nutricional, basta reprojetar a camada de apresenta¸˜o e de servi¸os, pois ca cos dados ser˜o tratados da mesma maneira, independente da forma como estes dados ser˜o a aapresentados. Isto n˜o ocorre no sistema JMPS, por isto houve necessidade de grande aadapta¸˜o do c´digo, inclusive para n˜o prejudicar a arquitetura do Agenda Nutricional. ca o a O primeiro passo foi entender como o JMPS funciona. Para isto, utilizamos as equa¸˜es coque ele traz de exemplo e inserimos tamb´m equa¸˜es retiradas da bibliografia de re- e coferˆncia. Vamos apresentar neste trabalho a resolu¸˜o passo-a-passo de uma equa¸˜o e ca casugerida pelo sistema JMPS e, logo em seguida, a forma como ele monta uma novaequa¸˜o, por exemplo, inserida pelo usu´rio - esta montagem ser´ utilizada internamente ca a apelo Agenda Nutricional para iniciar o c´lculo. a Um dos exemplos propostos pelo JMPS ´ o seguinte problema de otimiza¸˜o: e ca maxz = 3x1 + 5x2 x1 ≤ 4 2x2 ≤ 12 (3.1) s.a. 3x1 + 2x2 ≤ 18 x1 ≥ 0 x2 ≥ 0 O primeiro quadro do Simplex ´ montado: e Figura 8: JMPS: O problema do prot´tipo: quadro inicial do Simplex o Escolhe-se a vari´vel que ser´ utilizada no pivotamento: a a
    • 20 Figura 9: JMPS: O problema do prot´tipo: primeira itera¸˜o o ca Realiza-se o pivotamento e os valores da linha s˜o recalculados (dividindo-se o valor apelo valor do pivot): Figura 10: JMPS: O problema do prot´tipo: pivoteamento da linha o O restante da tabela ´ ajustado: e Figura 11: JMPS: O problema do prot´tipo: ajuste das demais linhas da tabela o Finaliza-se a itera¸˜o: ca Figura 12: JMPS: O problema do prot´tipo: primeira itera¸ao finalizada o c˜ Nova itera¸˜o ´ feita, seguindo os mesmos passos da itera¸˜o anterior. Neste problema, ca e cas˜o somente necess´rias duas itera¸˜es para chegar-se ao resultado ´timo: a a co o Figura 13: JMPS: O problema do prot´tipo: resultado otimo o ´
    • 21 O sistema tamb´m oferece a resolu¸˜o atrav´s do m´todo Gr´fico, para o mesmo e ca e e aproblema: Figura 14: JMPS: Solu¸ao do problema atrav´s do m´todo Gr´fico c˜ e e a O JMPS possui uma funcionalidade de inclus˜o de problemas novos. Estes problemas as˜o inseridos atrav´s de uma interface pr´pria e podem ser utilizados na funcionalidade a e ode solu¸˜o pelos m´todos Simplex e Gr´fico, conforme o exemplo anterior. A interface ca e apara inserir o novo problema ´ muito simples: e Figura 15: JMPS: Edi¸ao de problema de otimiza¸ao c˜ c˜ O sistema solicita o n´ mero de vari´veis do problema e o n´mero de restri¸˜es. Con- u a u coforme esta informa¸˜es, s˜o solicitadas a fun¸˜o a ser otimizada, o m´todo (minimiza¸˜o co a ca e caou maximiza¸˜o) e as restri¸˜es. O problema, ent˜o, est´ pronto para ser solucionado ca co a aatrav´s do m´todo Simplex ou Gr´fico. e e a Para efeito ilustrativo, reorganizamos as classes de implementa¸˜o do JMPS em pa- cacotes, de acordo com seus objetivos e similaridades:
    • 22 Figura 16: Estrutura interna do sistema JMPS No pacote applet, concentramos as classes principais de apresenta¸˜o, que gerenciam caas telas do sistema JMPS e tratam da exibi¸˜o dos dados. O pacote methods cont´m ca eas classes principais dos m´todos propostos pelo JMPS - o m´todo Big M possui classe e emas n˜o foi completamente implementado e n˜o possui apresenta¸˜o no applet. Os pa- a a cacotes misc e segundo cont´m classes que s˜o compartilhadas pelos m´todos do JMPS. e a eNuma compara¸˜o com a arquitetura adotada pelo Agenda Nutricional, estas classes rep- caresentariam as camadas de neg´cios e servi¸os. A dificuldade em separar apresenta¸˜o o c cade neg´cios no JMPS ocorreu principalmente pelo fato de que mensagens ao usu´rio s˜o o a atratadas nas classes do pacote misc e n˜o somente no pacote applet, como seria de se aesperar. Trataremos das classes importantes ao Simplex na pr´xima se¸˜o. o ca3.2.3 Adaptando o applet para o sistema Agenda Nutricional evice-versa A primeira tarefa de adapta¸˜o foi tratar o JMPS de forma a extrair o componente cade c´lculo de dentro do applet. Assim, analizamos a estrutura do JMPS, retiramos as adiretivas de apresenta¸˜o e incorporamos no Agenda Nutricional. ca O JMPS utiliza diversas classes para construir um problema a ser calculado. Estaestrutura ´ composta pelas classes: e
    • 23 • Constraint - gerencia as restri¸˜es co • ComplexConstraint - cont´m os dados de uma restri¸˜o e ca • ConstraintContainer - cont´m todas as restri¸˜es de um problema e co • SimpleConstraint - gerencia restri¸˜es com uma unica vari´vel co ´ a • ZFunction - fun¸˜o a ser otimizada ca • TableData - tabela que armazena os valores a serem manipulados na otimiza¸˜o ca • SimplexMethod - implementa o m´todo Simplex e • MathUtil - conjunto de opera¸˜es matem´ticas necess´rias ao m´todo Simplex co a a e • Number - gerencia os valores utilizados no c´lculo. Internamente, trata todos os a valores como ponto flutuante. Estas estrutura foram adaptadas e adicionadas ao Agenda Nutricional no pacote ne-gocios.dieta.calculo, conforme abaixo: Figura 17: Pacote calculo
    • 24 A classe negocios.dieta.calculo.CalculoDietaOtimizada ´ chamada pela classe nego- ecios.dieta.DietaPrescrita no momento em que est´ preparando os dados para enviar para aa camada de persistˆncia. A classes CalculoDietaPersonalizada recebe um objeto Di- eetaPrescrita que cont´m todos os produtos e a dieta de referˆncia indicada pelo usu´rio e e ado sistema. A classe CalculoDietaOtimizada cria instˆncias de: a • ZFunction: a fun¸˜o a ser otimizada ´ constru´ utilizando-se somente os nutrientes ca e ıda presentes na dieta de referˆncia; cada produto ´ uma vari´vel da fun¸˜o principal e e a ca e a quantidade do nutriente de referˆncia presente no produto ´ utilizado como e e coeficiente da vari´vel equivalente na equa¸˜o. a ca • ConstraintContainer: o sistema gera uma restri¸˜o para cada nutriente da dieta de ca referˆncia. e • TableData: ´ criada uma instˆncia vazia; ´ neste objeto que ser˜o armazenados os e a e a valores finais do c´lculo. a Para realizar o c´lculo, o JMPS utiliza os valores armazenados em TableData, as arestri¸˜es e a fun¸˜o Z. O c´lculo sobre estes valores (atrav´s dos pivotamentos) determina co ca a eo crit´rio de parada e o t´rmino do c´lculo, chegando ao resultado ´timo. e e a o Foi necess´rio realizar diversas adapta¸˜es no c´digo do JMPS e no modelo de dados a co odo sistema Agenda Nutricional, para que os dois pudessem se comunicar adequadamente.O controle de fluxo do c´lculo do Simplex estava nas classes de apresenta¸˜o, pois a cada a caitera¸˜o eram apresentadas mensagens ao usu´rio (conforme pode ser visto na se¸˜o an- ca a caterior). No JMPS a classe SimplexMethod se ocupa somente dos c´lculos; toda a regra ado algoritmo est´ fora da classe, neste caso, na classe de apresenta¸˜o. Para que n˜o hou- a ca avesse impacto no resultado, optou-se por n˜o realizar esta altera¸˜o neste momento, pois a carequer um estudo mais delicado do JMPS que n˜o era poss´ de encaixar no cronograma a ıveldo projeto. Assim, limitamo-nos a incluir um m´todo privado na classe CalculoDietaO- etimizada que realiza as chamadas aos m´todos corretos do Simplex, de acordo com a el´gica do JMPS. N˜o havia sido previsto vari´veis de controle na dieta de referˆncia para o a a egerenciar o m´todo de c´lculo (minimiza¸˜o e maximiza¸˜o) e indicar o produto de re- e a ca caferˆncia. Tais controles foram adicionados para que pudesse ser realizado o acoplamento edos dois sistemas.
    • 25 Observamos que n˜o houve impacto no tempo de resposta da prescri¸˜o ap´s a inclus˜o a ca o ados mecanismos de c´lculos usando o Simplex. O tempo que o algoritmo utilizou para arealizar os c´lculos ´ impercept´ ao usu´rio, principalmente pelo fato de tal mecanismo a e ıvel aestar embutido na a¸˜o de persistˆncia dos dados no banco de dados, que ´ uma opera¸˜o ca e e calenta, j´ que realiza opera¸˜es de leitura e grava¸˜o de disco. a co ca
    • 264 Conclus˜o a A implementa¸˜o do Simplex utilizada n˜o impactou no desempenho geral do sistema e ca atrouxe redu¸˜o da margem de erro nos c´lculo, pois n˜o foram feitos c´lculos aproximados, ca a a amas utilizou-se um algoritmo de otimiza¸˜o comprovadamente eficiente. ca Apesar de ainda ser necess´rio uma s´rie de ajustes arquiteturais no cocmponente a eJMPS, a utiliza¸˜o deste componente ´ muito simples. Notamos durante o uso e an´lise do ca e aJMPS que existem liga¸˜es entre as classes principais que provavelmente s˜o desnecess´rias. co a aPor exemplo, para o c´lculo do Simplex, n˜o seria necess´rio utilizar quatro objetos de a a arestri¸˜o diferentes, mas somente um seria o suficiente para o c´lculo adequado. Uti- ca alizar padr˜es de projeto, como o Composite provavelmente ajudaria na performance e osimplificaria ainda mais o componente. Pudemos obsevar que a implementa¸˜o de algoritmos matem´ticos requer estudos ca aaplicados do algoritmo e da linguagem de programa¸˜o a ser utilizada e adapta¸˜es s˜o ca co anecess´rias. Utilizar-se de abstra¸˜es ´ imprescind´ a co e ıvel para identificar os objetos maisprov´veis na manipula¸˜o dos dados produzidos e consumidos pelo m´todo selecionado. a ca eNo caso do Simplex, selecionado para uso neste projeto, abstraiu-se a fun¸˜o Z (fun¸˜o a ca caser otimizada) e as restri¸˜es (equa¸˜es que restringem o espectro dos dados). co co Percebemos que, se n˜o for prevista na fase de projeto a utiliza¸˜o de algum m´todo a ca eespec´ ıfico, como foi o caso deste projeto, o impacto de incluir tal m´todo no sistema e´ muito alto, pois impacta no modelo de dados, nos casos de uso, no projeto em sie(componentes, pacotes e classes) e na interface ao usu´rio. a Entretanto, pudemos notar que ´ totalmente vi´vel a utiliza¸˜o de modelos matem´ticos e a ca ano cotidiano de desenvolvimento de software e estes modelos devem ser considerados nos ´primeiros est´gios da engenharia de software. E importante que o analista de requisitos atenha conhecimento de tais modelos, podendo identificar potenciais utilizadores. Ao ar-quiteto e projetista ´ ainda mais importante possuir tal conhecimento, pois pode incluir na earquitetura e no projeto do sistema o uso de padr˜es de projeto e de m´todos matem´ticos o e aque solucionem os problemas levantados pelo analista de requisitos, facilitando, assim, ouso de tais mecanismos no desenvolvimento do sistema.
    • 27Gloss´rio a.NET Plataforma de desenvolvimento de software da Microsoft, concorrente do Java. O .NET fornece diversas ferramentas para o desenvolvimento de software, por´m seu ponto fraco ainda ´ a portabilidade - assim como o e e Java, o .NET trabalha em diversos contextos, mas n˜o possui compilador a para outros sistemas operacionais que n˜o o da Microsoft, apesar de estar a em fase de desenvolvimento dos mesmos.API Application Programming Interface. Interface para o c´digo-fonte de uma o aplica¸˜o ou biblioteca; comp˜e a documenta¸˜o de desenvolvimento. ca o caApplet Aplica¸˜o executada dentro do contexto de outra aplica¸˜o, geralmente ca ca um navegador de internet.Caloria Unidade de medida de energia.Framework Conjunto de c´digos, modelos, bilbiotecas, componentes, etc, reutiliz´veis o a que ajudam no desenvolvimento de software.GNU O Projeto GNU tem por objetivos desenvolver um sistema operacional do tipo Unix inteiramente com software livre. Os sistemas Linux s˜o do tipo a GNU.GPL GNU Public Licence. Licen¸a de software mais utilizada atualmente em c projetos de software livre; em resumo, protege a liberdade do software, garantindo que o software distribu´ via GPL possui c´digo aberto e ıdo o pode ser distribu´ livremente. ıdoHibernate Servi¸o de persistˆncia e consulta a bancos de dados relacionais ou de c e objetos com alto desempenho. Pode ser utilizado com Java e com .NET.
    • 28Home Office Tendˆncia mundial de metodologia de trabalho, onde a pessoa opta por e trabalhar em casa.IDE Integrated Development Environment - Ambiente integrado de desenvolvi- mento. Software utilizado para auxiliar e agilizar o desenvolvimento de software. Geralmente oferece ferramentas de auto-complemento, ajuda online e dicas.iReport Ferramenta visual para projetar relat´rios para o Jasper. oJasper Ferramenta de gera¸˜o de relat´rios para Java. ca oJava Linguagem de programa¸˜o da Sun Microsystems, cujo compilador ´ dis- ca e tribu´ gratuitamente. O Java tem como principal caracter´ ıdo ıstica a porta- bilidade - existem vers˜es do compilador para diversos sistemas opera- o cionais; al´m disto, o Java permite trabalhar com ambientes texto, gr´fico, e a web e port´teis. aJDBC API para Java que define o modo como um cliente (aplica¸˜o) acessa um ca banco de dados.MDI Multiple Document Interface. M´todo de organiza¸˜o de janelas que con- e ca siste em uma janela principal (gerenciador) e n janelas filhas, controladas pela janela principal e dispostas de forma a permanecerem internas ` janela a principal. Neste modelo, todas as janelas do sistema permanecem juntas.SDK Software Development Kit. Conjunto de ferramentas de desenvolvimento utilizadas para criar aplica¸˜es, frameworks, consoles, etc. coSistemas de controle de vers˜o a Software espec´ ıfico utilizado para gerenciar as altera¸oes realizadas em um c˜ software em desenvolvimento. Os sistemas de controle de vers˜o fornecem a ferramentas para acompanhar as altera¸˜es realizadas, voltar uma vers˜o co a do c´digo, etc. Muito utilizado em ambientes de m´ ltiplos desenvolve- o u dores.
    • 29Software de prateleira Software produzido com caracter´ ısticas gen´ricas, com o objetivo de ser e distribu´ em larga escala. Geralmente propriet´rio, ou seja, desenvolvido ıdo a por uma empresa e vendido sob licen¸as restritas de uso. cSoftware house Empresa especializada em desenvolvimento de software. F´brica de soft- a ware.SoureForge.net O maior site de desenvolvimento de software livre no mundo, atualmente. Hospeda mais de 100.000 projetos, fornecendo diversas ferramentas de apoio ao desenvolvimento, como gerenciador de tarefas, gerenciador de bugs, f´runs, sistemas de controle de vers˜o, etc. o a
    • 30Referˆncias Bibliogr´ficas e a[1] BOCHENEK, Michael. The Java Mathematical Programming Suite . Dispon´ em: http://sourceforge.net/projects/javamathprog/ ıvel[2] COIN-OR. CLP Component . Dispon´ ıvel em: http://www.coin- or.org/Clp/faq.html[3] DEAN, Warren. A industrializa¸˜o durante a Rep´blica Velha in Hist´ria ca u o Geral da Civiliza¸˜o Brasileira: III. O Brasil Republicano: 1. Estrutura de poder e ca economia (1889-1930), 4a edi¸˜o . S˜o Paulo: Difel (1985). ca a[4] Departamento de alimentos e nutri¸˜o experimental da Faculdade de Ciˆncias Far- ca e macˆuticas - USP. Tabela de brasileira de composi¸˜o de alimentos . Projeto e ca Integrado de composi¸˜o de alimentos. Universidade de S˜o Paulo. Dispon´ em: ca a ıvel http://www.fcf.usp.br/tabela/index.asp[5] GNU Linear Programming Kit. GLPK Component . Dispon´ ıvel em: http://www.gnu.org/software/glpk[6] LACHTERMACHER, Gerson, Pesquisa Operacional na tomada de decis˜es. S˜o o a Paulo: Campus (2005).[7] PATR´ ICIO, Jo˜o. M´todo Simplex a e in Investiga¸˜o operacional . Ano letivo ca 2006/2007. Dispon´ em: http://www.aim.estt.ipt.pt/ jmmp/InvestOperacional/ ıvel[8] US Department of Agriculture. Composition od Foods Raw, Pro- cessed, Prepared. USDA National Nutrient Database for Stan- dard Reference, Release 19. Baltimore: August, 2006. Dispon´ ıvel em: http://www.nal.usda.gov/fnic/foodcomp/Data/HG72/hg72.html