• Nenhum resultado encontrado

Página de saída: gerahtml_solver.pl

No documento Otimização via Internet (páginas 86-99)

A rotina gerahtml_solver.pl é reponsável pela riaçãoda página de saída, podendo

onter asolução oualguma mensagem de erro, onforme já dis utido naSeção 3.6.

A saída de erroé padrãopara todos osprogramas de otimização,sendo simplesmente

a mensagem de erro gerada pelo ompilador ou outro programa que tenha dete tado o

erro. Assim, asalterações quedevem ser feitasemgerahtml_solver.pl para in lusão de

um novo programa são referentes somente à saída ontendo a solução (ou seja, quando

o s ript é hamado om o parâmetro ok). Como exemplo, segue o tre ho do ódigo do

s ript gerahtml_algen an.pl:

# Se o problema não pde ser resolvido, saida.html onterá a mensagem

# om o erro en ontrado

if($tipo_saida ne "ok"){

.

.

}

# O problema foi resolvido

else{

######################### #### #### ### #### #### #### #### #### #### #### #### #

# IMPORTANTE: TRECHO A SER MODIFICADO NA INCLUS O DE UM NOVO SOLVER #

# CRIAR NOVO ARQUIVO COM O NOME GERAHTML_NOMEDOSOLVER #

######################### #### #### ### #### #### #### #### #### #### #### #### #

# Define se haverá botão adi ional para a esso à informações detalhadas

# Se o ódigo abaixo retornar $detail=0 signifi a que não haverá tal botão

.

.

# Es reve em saida.html as informações do solver

print HTML "Nome do usuário: $user <br>";

print HTML "Senha: $senha <br>";

print HTML "<table>";

print HTML "<tr><td>Dimensão do problema</td><td>=</td><td> $n</ td>< /tr> ";

print HTML "<tr><td>Número de restrições</td><td>=</td> <td> $m</ td>< /tr> ";

.

.

print HTML "</table><br><br><br>";

############################ #### #### ### #### #### #### #### #### #### #### #

# FIM DO TRECHO A SER MODIFICADO #

############################ #### #### ### #### #### #### #### #### #### #### #

Veja na Figura 4.4 omo  a a página de saída gerada por este ódigo. Ainda nessa

gura,notequehádoisbotõesnonaldapágina. Oprimeirodeles,Versaídadetalhada,

éop ional,esóéexibidoquando

$detail > 0

no ódigoa ima. Os ript exe utadoquando este botão éa ionado édetail. gi, ujotre ho aser alteradoémostrado abaixo:

.

.

if($solver eq "GENCAN"){

open(SAIDA,"$user_home/algen an. out" );

}

elsif($solver eq "ALGENCAN"){

open(SAIDA,"$user_home/algen an. out" );

}

.

.

Nainserçãode um novoprograma de otimização,basta riarum nova láusula ondi-

ionalno ódigoa ima omonomedonovoprogramaedoarquivo omasaídadetalhada.

Aalteração emsolu . gi, responsávelpelosegundo botão,Versolução,éidênti a à

Neste trabalho, foi apresentado um sistema que integra, via internet, diferentes pro-

gramas de otimização. Para ada programa, há uma página que des reve omo enviar

um problema e omo ongurar suas opções. Para os novos usuários, é possível fazer

umasubmissão simpli ada, aoes olher derivadasautomáti ase usar valorespadrão dos

parâmetros do programa. Para os usuários experientes, há a possibilidade de se fazer

inúmerostestes apenas tro andoas opçõesna páginado programa.

Uma omponente importante integrada ao sistema é o pa ote Adol-C, que pode ser

usado para al ular as derivadas das funções enviadas pelo usuário. Como, em geral, os

programasdeotimizaçãone essitamdasderivadasdasfunçõesquevaiotimizar,sugere-se

queo Adol-C sejautilizadonos próximos programas a sereminseridos.

O sistemaainda possui o esquema das duas las (de ompilação eexe ução, que or-

remem paralelo),apossibilidadede an elamentodeum trabalho,oenviodos resultados

por orreio eletrni o, entre outras inúmeras fun ionalidadesjá dis utidas neste texto.

É importantesalientarque este trabalhodeve servir omo ponto de partidapara um

amplo sistema de otimização. Para tal, é fundamental a in lusão de novos programas

de otimização no sistema. Comofoi visto, a di uldade eminserir novos programas está

rela ionada ao número de opções que o desenvolvedor do programa deseja deixar dis-

poníveis ao usuário. Assim, espera-se que, ao término da leitura deste texto, um leitor

om onhe imentobási odalinguagem Perlpossainserir um novo programa omopções

análogasàs doGENCAN edo ALGENCAN.

Entretanto, o objetivo deste texto não é simplesmente servir omo um manualde re-

ferên ia para o Ótimo. Foram dis utidas as di uldades envolvidas ao desenvolver um

sistema desse tipo, que integra programas muito diferentes om o propósito de resolver

o problema do usuário. O texto pode ainda ser útil para usuários que desejem utilizar

separadamente programas que estão no sistema, omo o Adol-C e o ALGENCAN, por

onter expli ações su intas eexemplos.

desenvolvedores dos programas de otimização. Entretanto, osdesenvolvedores não deve-

rãoter a essoaos detalhesdostrabalhossubmetidos,amde garantira onden ialidade

das informaçõesenviadas.

Outro módulo que poderia ser programado no sistema refere-se à prioridade na exe-

ução dos problemas. Já foi men ionado que, na ompilação, é obtida a dimensão e o

número de restrições doproblemaenviado. Assim, osistemapoderiavarrera lade exe-

ução e dar prioridade para os problemas menores, que, provavelmente, serão resolvidos

mais rapidamente. Dessamaneira,evitar-se-iaqueum problema grande ongestionasse a

la de exe ução.

Por m, poderia ser riada uma página web para a administração do sistema, om

a esso restrito,de modoqueas prin ipais onguraçõesdo sistemapudessem ser visuali-

Estrutura de diretórios e arquivos

Nestaseção,sãoenumeradostodososdiretóriosearquivosquefazempartedosistema,

a ompanhados de umabreve des rição. Umnome om uma barranonal representa um

diretório.

Figura1: Estrutura de diretórios

adol _base/ : Contém oprogramaAdol-Cinstalado. Seus arquivosde ongura- ção, bibliote aemanualde uso.

ba kup/ : Contém ba kups dosistema emdiferentes datas.

bin/ : Contém osarquivosexe utáveis dosistema.

 ompila.pl: Responsávelpelalade ompilação,é hamadoenquantohouver

trabalhonessa la.

 omp_algen an.pl : Compila osarquivosdoprograma ALGENCAN.

 exe ut.pl : Responsável pela la de exe ução, é hamado enquanto houver

trabalhonessa la.

 gerahtml_gen an.pl : Gera apágina de saída do GENCAN.

 gerahtml_algen an.pl : Gera a páginade saída doALGENCAN.

 roda : Arquivo bash que rodao programa de otimização.

 roda_deriv : Arquivobash querodaoexe utável geradopeloAdol- para o

GENCAN.

 roda_deriv_evalf : Arquivo bashque rodaoexe utável geradopeloAdol-

para oALGENCAN.

 roda_deriv_eval : Arquivobashquerodaoexe utávelgeradopeloAdol-

para oALGENCAN.

gi-bin/ : Contém osarquivos CGI dosistema.

 algen an. gi : Re ebe os arquivos dousuário para ouso do ALGENCAN.

 an ela. gi : Can ela um trabalhosubmetido.

 gi-lib.pl : Bibliote a CGI.

 oment. gi : Re ebe os omentários enviados aosistema.

 detail. gi : Exibesaída detalhada dos programas de otimização.

 la. gi : Exibe las de ompilação e exe ução.

 gen an. gi : Re ebe osarquivosdo usuáriopara o uso doGENCAN.

 result. gi : Exibepágina de saída.

 solu . gi : Exibe o vetor ontendo a soluçãodo problema.

las/ : Contém aslas de ompilação eexu ução.  la .txt : Trabalhos nala de ompilação.

 lae.txt : Trabalhosna lade exe ução.

help/ : Contém arquivosde ajuda e sugestões.  bugs.txt : Relatório om osbugs onhe idos.

 users.txt : Sugestões feitas pelos usuáriosna páginado sistema.

publi _html/ : Contém páginasemHTML e funçõesemJavaS ript.  algen an.html : ProgramaALGENCAN.

 ontato.html : Envio de sugestões.

 an ela.html : Can elamentode trabalhos.

 gen an.html : ProgramaGENCAN.

 gen an_det.html : Programa GENCANsem detalhes.

 tipodif.html : Informações sobre produto Hessiana-vetor usando diferenças

nitas (ALGENCAN).

 index.html : Página ini ial dosistema.

 logos/ : Contém as gurasusadas nas páginas.

 fun oes.js : Funções em JavaS ript.

 fun oes_det.js : Funções emJavaS ript para páginassem detalhes.

 result.html : Verresultado de trabalho.

solvers/ : Contém osprogramas de otimização dosistema.  algen an/ : Programa ALGENCAN.

 ../algen an_aux.f : Arquivo do programa sem adimensão máxima dos ve-

tores.

 ../algen anma_aux.f : Arquivo doprograma sem a dimensão máxima dos

vetores.

 ../ ong_algen an.pl : Prepara oprograma para ser usado nosistema.

 algen an/autodif/ : Contém arquivos para diferen iaçãoautomáti a.

 ../ onverte_ .pl : Converte eval para diferen iação.

 ../ onverte_f.pl : Converte evalf para diferen iação.

 algen an/autodif/avalia_der/ : Contémfunçõesqueavaliamasderivadas

geradas peloAdol- .

 algen an/autodif/avalia_der/ / : Avaliaderivadas para funções enviadas

emC.

 ../avalia_gder. pp : Gradientede evalf

 ../avalia_hlpder. pp : Hessiana doLagrangiano vezes um vetor

 ../avalia_ja der. pp : Gradientede eval

 algen an/autodif/avalia_der/ pp/ : Avalia derivadas para funções envi-

adas em C++. Os arquivos deste diretório têm o mesmo nome dos arquivos

enviadas em Fortran. Os arquivos deste diretório têm o mesmo nome dos

arquivos listadosno diretórioanterior, assimserão omitidos.

 algen an/autodif/gerader_eval /: Contém funçõesquegeramasderiva-

das de eval .

 ../aux_eval _ . pp : Função auxiliarpara eval em C.

 ../aux_eval _ pp. pp : Funçãoauxiliarpara eval emC++.

 ../aux_eval _f. pp : Funçãoauxiliarpara eval em Fortran.

 ../main_eval _ . pp : Chama função auxiliarpara inipem C.

 ../main_eval _ pp. pp : Chama função auxiliarpara inipemC++.

 ../main_eval _f. pp : Chama função auxiliarpara inipemFortran.

 algen an/autodif/gerader_evalf/ : Contém funções que geram as deri-

vadas de evalf. Os arquivos deste diretório têm o mesmo nome dos arquivos

listadosno diretórioanterior, assim serão omitidos.

 algen an/avalia_vazio/ : Contém funções vazias doprograma.

 ../avalia_g_vazio. : evalgemC.

 ../avalia_g_vazio.f : evalgem Fortran.

 ../avalia_h _vazio. : evalh emC.

 ../avalia_h _vazio.f : evalh em Fortran.

 ../avalia_hlp_vazio. : evalhlp emC.

 ../avalia_hlp_vazio.f : evalhlp emFortran.

 ../avalia_h_vazio. : evalhem C.

 ../avalia_h_vazio.f : evalhem Fortran.

 ../avalia_ja _vazio. : evalja emC.

 ../avalia_ja _vazio.f : evalja em Fortran.

 algen an/ba kup/ : Contém a instalaçãoe arquivosoriginais doprograma.

 algen an/ / : Contém arquivos auxiliarespara a linguagem C.

 ../algen anma. : Interfa e algen an/C.

 ../algen anma.h : Bibliote a para algen anma.

 ../ Fortran.h : Bibliote a para a interfa e.

 ../ wrapper.h : Bibliote a para ainterfa e.

 ../inip_padrao. pp : Inip emC++. (UNIR C om C++)

 ../inip_padrao.f : Inip emFortran.

 algen an/pega_n/ : Contém funções que apturam a dimensão de inip.

 ../pega_n. : Para inipemC.

 ../pega_n. pp : Para inipem C++. (UNIR C om C++)

 ../pega_n.f : Para inipemFortran.

 gen an/ : ProgramaGENCAN.

 ../algen an_aux.f : Arquivo do programa sem adimensão máxima dos ve-

tores.

 ../algen anma_aux.f : Arquivo doprograma sem a dimensão máxima dos

vetores.

 ../ ong_gen an.pl : Preparao programa para ser usado no sistema.

 gen an/autodif/ : Contém arquivospara diferen iação automáti a.

 ../ onverte_f.pl : Converte evalf para diferen iação.

 algen an/autodif/avalia_der/ : Contémfunçõesqueavaliamasderivadas

geradas peloAdol-C.

 ../avalia_gder. pp : Gradientede evalf

 ../avalia_hlpder. pp : Hessiana doLagrangiano vezes um vetor

 ../avalia_ja der. pp : Gradientede eval

 gen an/autodif/gerader/ : Contém funções que geram as derivadas de

evalf.

 ../aux_ . pp : Função auxiliarpara evalf emC.

 ../aux_ pp. pp : Função auxiliarpara evalf emC++.

 ../aux_f. pp : Função auxiliarpara evalf emFortran.

 ../main_ . pp : Chamafunção auxiliarpara inipem C.

 ../main_ pp. pp : Chama função auxiliarpara inipemC++.

 ../main_f. pp : Chama função auxiliarpara inipem Fortran. (Posso fazer

uma só, mas per o X0)

 gen an/avalia_vazio/ : Contém funções vazias doprograma.

 ../avalia_g_vazio. : evalg emC.

 ../avalia_h _vazio.f : evalh em Fortran.

 ../avalia_hlp_vazio. : evalhlp emC.

 ../avalia_hlp_vazio.f : evalhlp emFortran.

 ../avalia_h_vazio. : evalhem C.

 ../avalia_h_vazio.f : evalhem Fortran.

 ../avalia_ja _vazio. : evalja emC.

 ../avalia_ja _vazio.f : evalja em Fortran.

 gen an/ba kup/ : Contém ainstalaçãoe arquivos originaisdo programa.

 gen an/inip_padrao/ : Contém funções inip om valores padrão.

 ../inip_padrao. : Inip emC.

 ../inip_padrao. pp : Inip em C++. (UNIR C om C++: Aqui há dife-

rença!)

 ../inip_padrao.f : InipemFortran.

 gen an/pega_n/ : Contém funções que apturam a dimensão de inip.

 ../pega_n. : Para inipem C.

 ../pega_n. pp: ParainipemC++. (UNIRC omC++: Aquihádiferença!)

 ../pega_n.f : Para inip emFortran.

Funções do Adol-C usadas no sistema

Cál ulode g =

∇F (x)

:

int gradient(tag,n,x,g)

short int tag; // tape de identifi ação

int n; // número de variáveis independentes

double x[n℄; // vetor independente x

double g[n℄; // vetor resultante

Cál ulode z =

2

F(x)

.v: int hess_ve (tag,n,x,v,z)

short int tag; // tape de identifi ação

int n; // número de variáveis independentes

double x[n℄; // vetor independente x

double v[n℄; // vetor tangente v

double z[n℄; // vetor resultante

Cál ulode h=

u

T

.

2

F(x)

.v :

int lagra_hess_ve (tag,m,n,x,v, u,h)

short int tag; // tape de identifi ação

int m; // número de variáveis dependentes

int n; // número de variáveis independentes

double x[n℄; // vetor independente x

double v[n℄; // vetor tangente v

double u[m℄; // vetor de multipli adores u

double h[n℄; // vetor resultante

Cál ulode

2

F(x)

esparsa:

int sparse_hess(tag,n,repeat,x, &nnz ,&r ind, & in d,&v alue s)

int repeat; // guardar padrão de esparsidade

double x[n℄; // vetor independente x

int nnz; // número de elementos não nulos

unsigned int rind[nnz℄; // índi e da linha

unsigned int ind[nnz℄; // índi e da oluna

double values[nnz℄; // valor dos elementos não nulos

Cál ulode

F

′′

(x)

esparsa:

int sparse_ja (tag,m,n,repeat, x,&n nz,& rin d,& ind, &val ues)

short int tag; // tape de identifi ação

int m; // número de variáveis dependentes

int n; // número de variáveis independentes

int repeat; // guardar padrão de esparsidade

double x[n℄; // vetor independente x

int nnz; // número de elementos não nulos

unsigned int rind[nnz℄; // índi e da linha

unsigned int ind[nnz℄; // índi e da oluna

[1℄ R.Andreani;E.G.Birgin;J.M. Martínez;M.L.S huverdt.On AugmentedLagran-

gian methods with general lower-level onstraints. SIAM Journal on Optimization

18, p.1286-1309, 2007.

[2℄ R. Andreani; E. G. Birgin; J. M. Martínez; M. L. S huverdt. Augmented Lagran-

gianmethodsunderthe onstantpositivelinear dependen e onstraintquali ation.

Mathemati al Programming 111, p.5-32, 2008.

[3℄ E. G. Birgin & J. M. Martínez.Large-s ale a tive-set box- onstrained optimization

method with spe tral proje ted gradients. Computational Optimization and Appli-

ations 23, p.101125, 2002.

[4℄ E. G. Birgin e J. M. Martínez. Stru tured Minimal-Memory inexa t quasi-Newton

method and se ant pre onditioners for Augmented Lagrangian Optimization. Com-

putational Optimization and Appli ations 39,pp. 116 (2008).

[5℄ J.Czyzyk; M.Mesnier;J.Moré. TheNEOS Server. IEEE J. ComputationalS ien e

and Engineering 5, p.6875, 1998.

[6℄ E. D. Dolan. NEOS server 4.0 administrative guide. Te hni al memorandum

ANL/MCS-TM-250, Mathemati s and Computer S ien e Division, Argonne Nati-

onal Laboratory,Argonne, IL, EUA, 2002.

[7℄ E. D. Dolan; R. Fourer; J. J. Moré; T. S. Munson. The NEOS Server: version 4

and beyond. Preprint ANL/MCS-P947-0202, Mathemati s and Computer S ien e

Division,Argonne National Laboratory,Argonne, IL, EUA, 2002.

[8℄ J.E.F. Friedl.Masteringregularexpressions: powerfulte hniquesforPerlandother

tools.Beijing, China,O'Reilly,1998.

[9℄ A. Griewank; D. Juedes; H. Mitev; J. Utke; O. Vogel; A. Walther. Algorithm 755:

Adol-C:apa kage fortheautomati dierentiationofalgorithmswritteninC/C++.

Houston, EUA, CGI101. om, 1999.

No documento Otimização via Internet (páginas 86-99)

Documentos relacionados