• Nenhum resultado encontrado

etodos de Otimiza¸ao para Problemas com Restri¸oes

A API cont´em, implementados at´e ao momento, para resolver problemas com restri¸c˜oes m´etodos de Penalidade ou Barreira e o m´etodo dos Filtros [1]. Considerando o problema apresentado em (2.2), estes m´etodos de otimiza¸c˜ao para problemas n˜ao lineares com restri¸c˜oes convertem, no caso do m´etodo dos Filtros, o problema em dois problemas sem restri¸c˜oes, e no caso dos m´etodos Penalidade ou Barreira o problema ´e convertido em sub-problemas sem restri¸c˜oes, que s˜ao resolvidos usando os algoritmos anteriormente apresentados, utilizados para resolver problemas sem restri¸c˜oes.

O que diferencia estes m´etodos ´e o facto do m´etodo dos Filtros ter em conta a otimalidade e viabilidade separadamente, isto ´e, a finalidade em minimizar a fun¸c˜ao objetivo e minimizar as viola¸c˜oes das restri¸c˜oes enquanto que os m´etodos de Penalidade e Barreira tratam a otimalidade e viabilidade em conjunto [13].

M´etodos de Penalidade ou Barreira

Tanto os m´etodos de Penalidade como de Barreira, come¸cam por converter o problema com restri¸c˜oes do tipo (2.2) num problema sem restri¸c˜oes, apresentado em (2.4), criando para tal uma nova fun¸c˜ao objetivo, contendo informa¸c˜ao da fun¸c˜ao objetivo original, f , e das restri¸c˜oes do problema ci, i = 1, ..., m:

min

x∈Rn Φ(xk, rk) (2.4)

onde:

12 CAP´ITULO 2. API DE OTIMIZAC¸ ˜AO N ˜AO LINEAR

• rk ´e o parˆametro de penalidade ou barreira, com um valor real positivo;

• p ´e uma fun¸c˜ao que penaliza (Penalidade) ou recusa (Barreira) pontos que

violem as restri¸c˜oes;

A nova fun¸c˜ao objetivo Φ a otimizar difere para cada m´etodo de Penalidade e Barreira, abaixo apresentadas.

• M´etodo de Penalidade Est´atica e Dinˆamica:

Ambos os m´etodos tˆem a mesma fun¸c˜ao Φ, apresentada em (2.5). Φ(x) = f (x) + ti=1 αi|ci(x)|q+ mi=t+1 βi[max(0, ci(x))]q, q≥ 1 (2.5)

No entanto, nos m´etodos implementados na API, os parˆametros utilizados na fun¸c˜ao Φ s˜ao actualizados de forma diferente. No m´etodo de Penalidade Est´atica ´e feita da seguinte forma:

parametro ={γ.α1, ..., γ.αt, γ.β1, ..., γ.βm−t}, γ > 1.

No m´etodo de Penalidade Dinˆamica, os parˆametros s˜ao actualizados da seguinte forma:

q > 1;

(C = γ) > 0;

αi(k + 1) = αi(k) + C.|ci(x)|, i = 1, ..., t; βi(k + 1) = βi(k) + C.[max(0, ci(x))], i = t + 1, ..., m. • Fun¸c˜ao Barreira Progressiva:

Φ(x) = f (x) + bx(x) (2.6) onde, bx(x) =        mi=1 [max(ci(x), 0)]2 se x∈ X + se x /∈ X com Ω∈ X. (2.7)

2.2. M´ETODOS DE OTIMIZAC¸ ˜AO 13

• Fun¸c˜ao Barreira Extrema:

Φ(x) =      f (x) se x∈ Ω +∞ se x /∈ Ω . (2.8)

• M´etodo de Penalidade Cl´assica:

Φ(x) = f (x) + p(x) = f (x) + rk mi=1 [max(0, ci(x))]q, q≥ 1. (2.9) • M´etodo de Penalidade ℓ1 : Φ(x) = ℓ1(x, µ) = f (x) + µ ti=1 |ci(x)| + µ mi=t+1 [max(ci(x), 0)], µ−→ +∞. (2.10)

Como ´e vis´ıvel nas fun¸c˜oes acima apresentadas, o m´etodo de Penalidade soma `a fun¸c˜ao original um valor de penalidade em fun¸c˜ao da viola¸c˜ao das restri¸c˜oes, quanto maior for a viola¸c˜ao, maior ´e o valor de penalidade, aumentando assim o valor da nova fun¸c˜ao objetivo, afastando-se do seu valor ´otimo. Uma vez que o m´etodo de otimiza¸c˜ao pretende chegar ao valor ´otimo da fun¸c˜ao, a itera¸c˜ao seguinte ser´a calculada com objetivo de diminuir o valor da penalidade. Utilizando as fun¸c˜oes Barreira, no caso da Barreira Extrema, esta n˜ao permite aceitar pontos fora da regi˜ao admiss´ıvel Ω, regi˜ao criada pelas restri¸c˜oes do problema, atribuindo o valor +∞ `a fun¸c˜ao objetivo. Para o caso da fun¸c˜ao Barreira Progressiva, esta n˜ao permite aceitar pontos fora da regi˜ao admiss´ıvel X, regi˜ao criada pelas restri¸c˜oes relax´aveis do problema, atribuindo o valor +∞ `a fun¸c˜ao objetivo. As restri¸c˜oes relax´aveis s˜ao restri¸c˜oes que podem ser satisfeitas apenas aproximadamente, possibilitando o c´alculo das fun¸c˜oes fora da regi˜ao admiss´ıvel, definida por elas, considerando uma certa tolerˆancia.

14 CAP´ITULO 2. API DE OTIMIZAC¸ ˜AO N ˜AO LINEAR

M´etodo dos Filtros

Este m´etodo converte os problemas com restri¸c˜oes em problemas com 2 fun¸c˜oes distintas, sendo uma, f , contendo a fun¸c˜ao objetivo original, f , e a outra, h, contendo a informa¸c˜ao das restri¸c˜oes do problema. Tendo estas fun¸c˜oes, come¸ca-se por verificar se o valor do ponto xk est´a contido na regi˜ao admiss´ıvel Ω, regi˜ao essa

definida pelas restri¸c˜oes do problema. Se o ponto estiver contido em Ω, a fun¸c˜ao tida em conta pelo m´etodo de otimiza¸c˜ao ´e a fun¸c˜ao f , caso contr´ario, ´e tida em conta a fun¸c˜ao h. O m´etodo procede `a verifica¸c˜ao do ponto no Filtro, caso seja aceite, o

Filtro ´e actualizado e o m´etodo procede `a itera¸c˜ao seguinte (no caso de n˜ao serem verificados os crit´erios de paragem). No caso do ponto n˜ao ser aceite no Filtro ´e utilizado um m´etodo para resolu¸c˜ao de problemas sem restri¸c˜ao para o c´alculo da itera¸c˜ao seguinte para a fun¸c˜ao objetivo, f ou h, dependendo se o ponto anterior era admiss´ıvel ou n˜ao. Obtendo a itera¸c˜ao seguinte, o m´etodo do Filtros repete todo o processo. ´E apresentado na figura2.3 o diagrama de funcionamento do m´etodo dos Filtros.

Figura 2.3 – Funcionamento do M´etodo dos Filtros (Fonte: [1])

2.3. IMPLEMENTAC¸ ˜AO DOS M´ETODOS EM JAVA 15

do conjuntoF tem rela¸c˜ao x ≺ y, ou seja, o Filtro ´e constituido por pontos tal que nenhum domina outro. ´E apresentado na figura2.4um Filtro constituido por quatro pontos, a, b, c e d, que definem a zona proibida, representada a sombreado. Se um novo ponto testado no Filtro for representado por y, situado na zona proibida, este n˜ao ´e aceite. Ao contr´ario dos pontos z e w, que n˜ao se encontram na zona proibida, seriam aceites e incluido no Filtro. No caso do ponto w seriam eliminados os pontos

c e d, visto que, ao actualizar o Filtro com o novo ponto w, estes s˜ao dominados pelo novo ponto, logo seriam eliminados.

Figura 2.4 – Filtro com quatro pontos (Fonte: [1])

2.3

Implementa¸ao dos M´etodos em Java

Como j´a referido anteriormente, este trabalho visa complementar um outro trabalho j´a realizado [1], uma API (Application Programming Interface) que permite resolver problemas de otimiza¸c˜ao, utilizando a tecnologia Java. Esta API permite, a partir de um problema formulado, obter a sua solu¸c˜ao ´otima, recorrendo aos v´arios m´etodos antes apresentados.

16 CAP´ITULO 2. API DE OTIMIZAC¸ ˜AO N ˜AO LINEAR

Para cada m´etodo existe uma Classe associada, apresentada na figura 2.5, que permite ao utilizador a sua utiliza¸c˜ao, para tal necessita de definir o valor das vari´aveis dessas Classes que representam os dados do problema. Essa defini¸c˜ao ´e feita atrav´es dos construtores da Classe, que permitem o processo de duas formas:

• Os parˆametros de entrada s˜ao a Fun¸c˜ao objetivo, f e o vector dos valores

iniciais da vari´avel x0, sob a forma de String´s, neste caso a API recorre a um

parser que interpreta essas Strings;

• O parˆametro de entrada ´e uma instˆancia da Classe ProblemaGeral. Esta Classe

representa o problema em quest˜ao, contendo os respetivos dados.

No caso dos problemas com restri¸c˜oes, existem apenas duas Classes, uma para os m´etodos de Penalidade e Barreira e outra para o m´etodo dos Filtros. Para al´em dos parˆametros de entrada acima apresentados, o construtor da Classe associada aos m´etodos de Penalidade e Barreira tem tamb´em os seguintes parˆametros:

• Vector de Restri¸c˜oes;

• O m´etodo interno a utilizar; • O m´etodo externo a utilizar.

Para o m´etodo dos Filtros, o construtor da Classe associada tem, para al´em dos dados do problema, os seguintes dados parˆametros:

• Vector de Restri¸c˜oes; • A medida h a utilizar; • O m´etodo externo a utilizar.

2.3. IMPLEMENTAC¸ ˜AO DOS M´ETODOS EM JAVA 17

Figura 2.5 – Diagrama de Classes da API

Todos os dados acima apresentados podem n˜ao s´o ser definidos nos construtores das Classes, como tamb´em atrav´es de m´etodos SET (m´etodos que permitem definir o valor dos atributos). Os outros m´etodos disponibilizados pelas Classes s˜ao os m´etodos que devolvem os resultados do problema e alguns dados sobre o processo iterativo. S˜ao eles:

• run(), executa o algoritmo de resolu¸c˜ao do problema; • getDim(), devolve a dimens˜ao do problema;

18 CAP´ITULO 2. API DE OTIMIZAC¸ ˜AO N ˜AO LINEAR

nEvals;

• getSolution(), devolve a aproxima¸c˜ao `a solu¸c˜ao encontrada, x* ;

• evaluateF(x), devolve o valor da fun¸c˜ao objetivo na aproxima¸c˜ao f(x), tem

como entrada o valor das vari´aveis, x ;

• evaluateH(n, xk), devolve o valor da restri¸c˜ao n para o valor da vari´avel na itera¸c˜ao k ;

• numerRestricoes(), devolve o n´umero de restri¸c˜oes;

• numerRestricoes igualdade(), devolve o n´umero de restri¸c˜oes de igualdade; • numerRestricoes desigualdade(), devolve o n´umero de restri¸c˜oes de desigualdade; • numerRestricoes limiteSimples(), devolve o n´umero de restri¸c˜oes do tipo limites

simples.

A utiliza¸c˜ao desta API pode ser feita de v´arias formas, abaixo apresentadas:

• No computador local – Instalando a API, a partir do seu ficheiro .jar, no

pr´oprio computador ´e poss´ıvel ter acesso a todas as suas classes, permitindo assim a sua utiliza¸c˜ao [1]. Tendo acesso `as classes da API torna-se poss´ıvel a resolu¸c˜ao de um problema formulado e inserido pelo utilizador, como ´e apresentado na figura 2.6, no caso de um problema sem restri¸c˜oes e utilizando por exemplo o m´etodo de Pesquisa Coordenada, onde a vari´avel expr ´e a fun¸c˜ao objetivo e a vari´avel initPoint cont´em os valores dos pontos iniciais das vari´aveis. Utilizando o construtor da classe CoordinatedSearch ´e criada uma instˆancia dessa Classe que cont´em os dados do problema enviados por parˆametros. Para resolu¸c˜ao do problema ´e chamado o m´etodo run(), ao ser executado este m´etodo a solu¸c˜ao ´e guardada num vector com a dimens˜ao do problema. V´arios m´etodos est˜ao dispon´ıveis para obter os dados do problema, para o caso da solu¸c˜ao ´e utilizado o m´etodo getLastResult(), que retorna o vector com os valores da solu¸c˜ao [1].

2.3. IMPLEMENTAC¸ ˜AO DOS M´ETODOS EM JAVA 19

Figura 2.6 – Exemplo de utiliza¸c˜ao da API Via Java

• Via Web Services – Permite aos utilizadores terem acesso remoto aos m´etodos

da API, n˜ao sendo necess´ario ter a API instalada no pr´oprio computador. Uma outra vantagem desta implementa¸c˜ao reside no facto de ser poss´ıvel aceder aos m´etodos n˜ao s´o utilizando a tecnologia Java, mas tamb´em muitas outras linguagens de programa¸c˜ao, ao contr´ario da utiliza¸c˜ao local da API, que apenas permite a utiliza¸c˜ao desta com Java. Na figura 2.7 ´e apresentado um exemplo de acesso remoto `a API utilizando Java. Para esta utiliza¸c˜ao apenas ´e necess´ario a importa¸c˜ao, por parte do utilizador, do ficheiro WSDL (Web Service Definition Language), disponibilizado na Web. Este ficheiro cria localmente todos os ficheiros necess´arios para a utiliza¸c˜ao da API [14].

Figura 2.7 – Exemplo de utiliza¸c˜ao da API Via Web Services

• Via Web Vers˜ao 1 – Permite aos utilizadores inserirem os problemas formulados

e selecionarem os m´etodos de otimiza¸c˜ao que pretendem. Como ´e vis´ıvel na Figura 2.8, o utilizador deve introduzir os dados do problema, i.e., o tipo de problema, a sua dimens˜ao e quantas restri¸c˜oes tem associadas, a fun¸c˜ao objetivo, as fun¸c˜oes restri¸c˜ao e o valor do pontos iniciais. Ap´os a introdu¸c˜ao

20 CAP´ITULO 2. API DE OTIMIZAC¸ ˜AO N ˜AO LINEAR

destes dados e escolhido o m´etodo a utilizar o resultado ´e ent˜ao apresentado ao utilizador [14].

Figura 2.8 – Exemplo de utiliza¸c˜ao da API Via Web Vers˜ao 1

• Via Web Vers˜ao 2 – Permite aos utilizadores inserirem os problemas formulados

e selecionarem os m´etodos de otimiza¸c˜ao que pretendem. Tal como na vers˜ao 1, e vis´ıvel na Figura 2.9, ´e necess´ario para al´em do problema formulado, introduzir o tipo de problema, a sua dimens˜ao e o n´umero de restri¸c˜oes. Esta vers˜ao permite al´em da solu¸c˜ao, visualizar os dados do processo iterativo, apresentado na figura 2.10, permitindo uma an´alise de todo o processo, visto serem apresentados graficamente os valores das vari´aveis e da fun¸c˜ao objetivo em cada itera¸c˜ao. Os dados relativos ao processo de resolu¸c˜ao s˜ao guardados em base de dados, podendo assim serem consultados posteriomente [13].

2.3. IMPLEMENTAC¸ ˜AO DOS M´ETODOS EM JAVA 21

Figura 2.9 – Exemplo de utiliza¸c˜ao da API Via Web Vers˜ao 2

Figura 2.10 – Exemplo de utiliza¸c˜ao da API para an´alise do processo iterativo Via Web Vers˜ao 2

3

Codifica¸c˜ao de Problemas

Matem´aticos

3.1

Introdu¸ao

Uma vez que a otimiza¸c˜ao envolve mais do que apenas a aplica¸c˜ao de um algoritmo para minimizar ou maximizar uma fun¸c˜ao objetivo, ´e necess´ario, antes de qualquer rotina de otimiza¸c˜ao ser invocada, um esfor¸co consider´avel para formular o modelo matem´atico subjacente ao problema, e desta forma diminuir o esfor¸co computacional dos algoritmos de otimiza¸c˜ao. A codifica¸c˜ao dos problemas permite tornar estas etapas de formula¸c˜ao mais f´aceis e menos suscet´ıveis a erros [15].

Segundo Emmanuel Fragni`ere [16], a codifica¸c˜ao utilizada deve permitir aos utilizadores codificarem problemas, mas tamb´em compreendˆe-los uma vez codificados, por outro lado, os computadores devem ser capazes de os ler e traduzir. Desta forma ´e poss´ıvel a qualquer pessoa codificar um problema e, se pretender, disponibiliz´a-lo em qualquer parte do mundo via Web.

Estando um problema codificado, ´e poss´ıvel ao utilizador obter a sua solu¸c˜ao, utilizando um solver associado, sem necessidade de o formular e introduzir sempre que quiser obter a solu¸c˜ao. Para al´em da vantagem de reutiliza¸c˜ao de problemas j´a formulados, permite o estudo de problemas de grande escala, visto que existem

24 CAP´ITULO 3. CODIFICAC¸ ˜AO DE PROBLEMAS MATEM ´ATICOS

muitas situa¸c˜oes onde um problema de otimiza¸c˜ao apresenta apenas uma fun¸c˜ao objetivo, restri¸c˜oes simples e um n´umero de vari´aveis relativamente baixo. No entanto, a maioria dos problemas da vida real envolvem centenas de restri¸c˜oes e vari´aveis, n˜ao sendo pratic´avel para o utilizador formular e inserir num solver cada restri¸c˜ao e cada vari´avel [16].

Documentos relacionados