Maximização simultânea de duas funções sem derivadas disponíveis

8

Eu tenho duas variáveis ke tcomo funções de duas outras variáveis p1e p2. Eu também sei seus valores máximos. Não tenho expressão analítica para isso. Quero encontrar os valores de ke tquais são os mais próximos de seus valores máximos.

Existe uma maneira de otimizar o k = f1(p1, p2)e t = f2(p1, p2)?

Eu posso tentar verificar o produto k0 * t0ou o produto dos quadrados k0^2 * t0^2ou alguma outra relação dos dois.

Isso é eficiente e para onde ir?

Obrigado.

Christian Clason
fonte
1
Você poderia ser um pouco mais específico sobre o que está procurando? Você quer encontrar p1e p2tal que ke tatingir (tanto quanto possível) os seus valores máximos? Suponho que você tenha uma função que, dada p1e p2, retorne o valor de ke t, mas nenhuma informação sobre os derivados de ke tcom relação a p1e p2?
Christian Clason
@ChristianClason sim, você entendeu corretamente. Não consigo obter os derivativos e, em geral, não há analíticos disponíveis.
E você sabe se o máximo de ke tserá atingido no mesmo ponto (que você está tentando encontrar) ou está procurando uma compensação?
Christian Clason
@ChristianClason Presumo (e com certeza) que os valores máximos não estão no mesmo ponto. Estou à procura de um compromisso. Mas não se pode dizer de que maneira - provavelmente posso comparar os produtos ou as somas dos valores ...

Respostas:

14

Há duas questões aqui:

  1. 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)f1f2

    F(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 )tf12f22

  2. 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=(p1k,p2k)

    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ϵ>0
    gk=(g1,g2)T,gi=F(pk+ϵei)F(pkϵei)2ϵ
    e1=(1,0)Te2=(0,1)T
    Hk=(h11h12h21h22),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/3u1016

    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

Christian Clason
fonte
Obrigado pela ótima resposta! É realmente útil, embora o assunto seja bastante complicado para mim. Desculpe, minha reputação é muito baixa, não posso votar em sua resposta.
@AlexPi Não se preocupe, estou feliz que a resposta seja de alguma ajuda. E o assunto é realmente complicado (caso contrário, os matemáticos ficariam sem emprego :)). Se você tiver acesso à caixa de ferramentas de otimização do Matlab, tente inserir seu (que usa um método semelhante ao acima) para ver o que acontece. Ffminunc
Christian Clason
2
@ AlexPi: não tome muito pequeno, ou você terá problemas de estabilidade numérica. eps
Arnold Neumaier 19/09/12
@ ArnoldNeumaier: Bom ponto. Eu adicionei algumas observações sobre esse assunto.
Christian Clason
1
@ChristianClason Acho que o segundo termo no seu h_ij deve ser F (p ^ k + \ epsilon * e_i).
Suzie
2

Com a otimização multiobjetivo, existem várias maneiras de combinar / comparar as variáveis ​​objetivas em sua análise. O problema é que não existe uma maneira "certa" de fazer isso. Depende inteiramente do que realmente é o problema e do que as variáveis ​​representam. É provável que sua melhor aposta maximize algo como onde é um valor positivo arbitrário. Uma vez que você tem uma resposta, veja se você como a resultante e , e modificar conforme necessário até encontrar uma solução que você está feliz com.a k t ak+atakta

Quanto à otimização real, não ter uma expressão analítica para as funções não é o fim do mundo, mas não ter nenhuma informação dificultará as coisas. Se você pode assumir algum nível de suavidade / continuidade, mesmo que seja apenas por partes, pode usar um algoritmo de localização de raiz em uma aproximação derivada para encontrar máximos locais (existem muitos métodos mais sofisticados que isso, mas não estou familiarizado com É provável que outras pessoas aqui apontem você na direção certa). Se você pode estabelecer a convexidade, pode estendê-la à otimização global.

A otimização multiobjetiva de caixa preta verdadeira não é exatamente um problema fácil, mas algumas suposições e um processo iterativo com uma redução objetiva devem fornecer uma resposta aceitável (supondo que exista).

Godric Seer
fonte