• Nenhum resultado encontrado

Os problemas est˜ao contidos em ficheiros com extens˜ao .sif, as linhas que o constituem s˜ao chamadas de cart˜oes e s˜ao classificadas em fun¸c˜ao da informa¸c˜ao que representam. Existem cart˜oes indicadores, que designam o tipo de dados que se segue; cart˜oes de dados, que contˆem os dados do problema; e cart˜oes de coment´arios, que possuem coment´arios sobre o problema. De salientar que existe apenas um descodificador de ficheiros SIF, desenvolvido em Fortran. O SIFDec apenas interpreta os problemas e guarda a informa¸c˜ao do problema em ficheiros Fortran. Estes ficheiros podem depois ser utilizados como dados de entrada por solucionadores para se chegar `a solu¸c˜ao. Esta codifica¸c˜ao divide o problema em v´arias sec¸c˜oes, identificadas pelos seguintes cart˜oes indicadores:

• VARIABLES - Este cart˜ao indicador refere-se `a declara¸c˜ao das vari´aveis,

sendo que estas podem ser declaradas de duas formas, a forma mais directa ou utilizando um ciclo. A forma mais directa, apresentada no exemplo da Figura

5.9, onde cada linha apresenta uma vari´avel, contendo apenas o nome. Neste caso o interpretador cria uma vari´avel por cada linha interpretada, neste caso s˜ao criadas duas vari´aveis com os nomes: x1 e x2. Outra forma ´e utilizando

Figura 5.9 – Declara¸c˜ao de Vari´aveis

um ciclo, apresentada no exemplo da Figura 5.10, isto ´e, tendo uma vari´avel

i, igual a um ´ındice inicial e tendo um ´ındice final, as linhas contidas no ciclo

s˜ao repetidas at´e que a vari´avel i tenha o valor do ´ındice final, tendo em conta que o valor de i incrementa uma unidade em cada execu¸c˜ao do ciclo. Neste caso o interpretador indentifica os ´ındices e cria as vari´aveis em fun¸c˜ao do ciclo

5.5. CODIFICAC¸ ˜AO SIF 67

definido, uma vez que este repete a declara¸c˜ao de xi, onde i representa o ´ındice

do ciclo. Neste caso s˜ao criadas sete vari´aveis com os nomes: x1, x2, x3, x4,

x5, x6 e x7.

Figura 5.10 – Declara¸c˜ao de Vari´aveis utilizando um Ciclo

• START POINT - Apresenta os valores iniciais das vari´aveis, colocando em

cada linha o nome da vari´avel seguido do seu valor. Neste caso o interpretador lˆe cada linha, compara o nome da vari´avel presente na linha com o nome das vari´aveis j´a interpretadas e guarda o respectivo valor em cada uma delas. Existem casos onde o valor das vari´aveis ´e igual para todas, neste caso o ficheiro apresenta apenas uma linha contendo a palavra DEFAULT e o valor em quest˜ao. Neste caso o interpretador atribui o valor apresentado a todas as vari´aveis j´a interpretadas.

• BOUNDS - Apresenta as restri¸c˜oes simples associadas `as vari´aveis, colocando

em cada linha o nome da vari´avel associada, o tipo de limite, se inferior ou superior e seu valor. Neste caso o interpretador lˆe cada linha, e para cada uma delas cria uma restri¸c˜ao, guardando o nome da vari´avel, o tipo de restri¸c˜ao e o seu valor. Existem casos onde as vari´aveis n˜ao tˆem restri¸c˜oes simples associadas, neste caso o ficheiro apresenta apenas uma linha contendo a palavra

DEFAULT. Neste caso o interpretador descarta a linha e n˜ao ´e criada nenhuma restri¸c˜ao.

• GROUPS - Nesta sec¸c˜ao s˜ao declaradas as fun¸c˜oes restri¸c˜ao, caso existam,

e a fun¸c˜ao objetivo, apresentando o nome e a que tipo de fun¸c˜ao se refere (interpreta¸c˜ao em desenvolvimento);

68 CAP´ITULO 5. DESENVOLVIMENTO E IMPLEMENTAC¸ ˜AO DO INTERPRETADOR

• ELEMENT TYPE - S˜ao declarados nesta sec¸c˜ao do ficheiro os tipos de

parˆametro que ser˜ao utilizados posteriormente, disponibilizando apenas o nome do tipo e quantas vari´aveis possui, atribuindo um nome a cada uma delas (interpreta¸c˜ao em desenvolvimento).

• ELEMENT USES - Sec¸c˜ao na qual s˜ao criados os parˆametros, atribuindo

a cada um deles qual o seu tipo (declarados na sec¸c˜ao anterior) e quais as

vari´aveis do problema correspondem `as suas vari´aveis (interpreta¸c˜ao em desenvolvimento).

• INDIVIDUALS - Nesta sec¸c˜ao s˜ao apresentadas as express˜oes para cada

tipo de parˆametro (interpreta¸c˜ao em desenvolvimento).

• GROUP USES - Nesta sec¸c˜ao s˜ao apresentadas as express˜oes, constituidas

pelos parˆametros criados na sec¸c˜ao ELEMENT USES, para a fun¸c˜ao objetivo e fun¸c˜oes restri¸c˜ao (interpreta¸c˜ao em desenvolvimento).

A vari´aveis, parˆametros, fun¸c˜ao objetivo e restri¸c˜oes criadas pelo interpretador, acima referidas, s˜ao, tal como acontece para a codifica¸c˜ao AMPL, objetos das classes

Variavel, Parametro, Objetivo e Restricao, referidas na interpreta¸c˜ao da codifica¸c˜ao AMPL.

6

Testes, Resultados e

Conclus˜oes

6.1

Introdu¸ao

Foram efectuados trˆes tipos de testes, em que o primeiro diz respeito `as fun¸c˜oes implementadas discutidas no cap´ıtulo anterior. Para tal, o interpretador disponibiliza ao programador os dados resultantes das principais fun¸c˜oes, dados estes que cont´em toda as informa¸c˜oes relativas `as vari´aveis, `a fun¸c˜ao objetivo e `as fun¸c˜oes restri¸c˜ao. Desta forma, foi poss´ıvel avaliar o desempenho das fun¸c˜oes implementadas na interpreta¸c˜ao do problema.

Ap´os todas as fun¸c˜oes necess´arias para a interpreta¸c˜ao dos problemas terem sido implementadas e testadas, foram efectuados testes ao interpretador utilizando um total de cento e oitenta e dois problemas testes, da colec¸c˜ao Schittkowski e do reposit´orio Princeton. Estes testes permitiram avaliar o desempenho do interpretador, analisando e comparando os dados dos problemas interpretados com os problemas originais. Por ´ultimo foram ainda efectuados testes `a API, tendo como dados de entrada os problemas interpretados e formulados pelo interpretador, de forma a comparar o seu desempenho frente `a utiliza¸c˜ao de problemas j´a formulados e do

parser como dados de entrada.

70 CAP´ITULO 6. TESTES, RESULTADOS E CONCLUS ˜OES

Documentos relacionados