Seu problema de otimização tem dois objetivos concorrentes: maximizar e maximizar . Isso é conhecido como otimização multi-objetivo (ou multi-critério ), e esses problemas têm um número infinito de soluções, cada uma baseada em uma escolha específica do peso relativo dos objetivos (ou seja, é mais importante que esteja próximo para o valor máximo que para ?). Se ambos têm a mesma importância para você, você pode simplesmente minimizar a função
em que e são os valores máximos conhecidos dek=f1(p1,p2)t=f2(p1,p2)f1f2F(p1,p2)=(f1(p1,p2)−K)2+(f2(p1,p2)−T)2,
KTke , respectivamente. Caso contrário, você adicionaria um peso correspondente antes de cada termo. (Se os valores máximos não fossem conhecidos, você minimizaria )t−f21−f22
Para encontrar um minimizador de , você só pode usar valores de função de em um determinado ponto . Isso é conhecido como otimização livre de derivado ; veja, por exemplo, Introdução à Otimização sem Derivativos por Conn, Scheinberg e Vicente ou capítulo 9 em Otimização Numérica . A maioria deles usa derivadas aproximadas com base em diferenças finitas ou derivadas de funções de interpolação. Como é uma função de apenas duas variáveis, construir aproximações de diferenças finitas do Hessiano completo não é muito caro (ou instável). A idéia é a seguinte: dado um ponto , você constrói um modelo quadrático local
FF(p1,p2)Fpk=(pk1,pk2)mk(pk+d)=F(pk)+(gk)Td+12dTHkd,
calcule seu minimizador e defina . Aqui, para um pequeno (mas não muito pequeno, veja abaixo) ,
com e , é o gradiente aproximado e
é uma aproximação de Taylor do Hessiano. Isso requer avaliação dedkpk+1=pk+dkϵ>0gk=(g1,g2)T,gi=F(pk+ϵei)−F(pk−ϵei)2ϵ
e1=(1,0)Te2=(0,1)THk=(h11h21h12h22),hij=F(pk+ϵei+ϵej)−F(pk+ϵei)−F(pk+ϵej)+F(pk)ϵ2
F em 5 pontos adicionais em cada iteração.
Uma questão importante em qualquer aproximação de diferença finita é a escolha de : se for muito grande, você terá uma aproximação ruim da derivada; se for muito pequeno, você corre o risco de cancelamento e, portanto, a instabilidade numérica. Uma boa regra geral é , em que é o arredondamento da unidade (cerca de para precisão dupla).ϵϵ=u1/3u10−16
Na prática, você gostaria de combinar isso com uma estratégia de região de confiança, na qual exigiria para dentro de uma bola cujo raio você se adapta durante a iteração (consulte os livros mencionados acima).dk
Uma comparação de algoritmos e implementações para otimização sem derivadas pode ser encontrada nesta página da Web , que acompanha o artigo "Otimização sem derivadas: uma revisão de algoritmos e comparação de implementações de software" por Luis Miguel Rios e Nikolaos V. Sahinidis
p1
ep2
tal quek
et
atingir (tanto quanto possível) os seus valores máximos? Suponho que você tenha uma função que, dadap1
ep2
, retorne o valor dek
et
, mas nenhuma informação sobre os derivados dek
et
com relação ap1
ep2
?