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 INCLUSO 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.