A descrição desse "algoritmo simplex em declive" nas versões originais das Receitas Numéricas é particularmente lúcida e útil. Por isso, citarei partes relevantes. Aqui está o plano de fundo:
Na minimização unidimensional, foi possível agrupar um mínimo .... Ai! Não há procedimento análogo no espaço multidimensional. ... O melhor que podemos fazer é dar ao nosso algoritmo um palpite inicial; isto é, um vetor de variáveis independentes como o primeiro ponto a tentar. Supõe-se que o algoritmo faça seu próprio caminho ladeira abaixo através da complexidade inimaginável de uma topografia dimensional até encontrar um mínimo (pelo menos local).NNN
O método simplex em declive deve ser iniciado não apenas com um único ponto, mas com pontos , definindo um simplex inicial. [Você pode considerar esses pontos como um ponto inicial inicial junto com] que os são vetores de unidade e onde é uma constante que é seu palpite da escala de comprimento característica do problema. ...P 0 P i = P 0 + λ e i e i N λN+1P0
Pi=P0+λei(10.4.1)
eiNλ
A maioria das etapas apenas [move] o ponto do simplex onde a função é maior ("ponto mais alto") pela face oposta do simplex para um ponto mais baixo. ...
Agora, para o problema em questão, encerrando o algoritmo. Observe a generalidade da conta: os autores fornecem conselhos intuitivos e úteis para encerrar qualquer otimizador multidimensional e, em seguida, mostram especificamente como ele se aplica a esse algoritmo específico. O primeiro parágrafo responde à pergunta diante de nós:
Os critérios de rescisão podem ser delicados. Normalmente, podemos identificar um "ciclo" ou "etapa" do nosso algoritmo multidimensional. É então possível terminar quando a distância do vetor movida nesse passo é fracionariamente menor em magnitude do que alguma tolerância TOL
. Como alternativa, poderíamos exigir que a diminuição no valor da função na etapa final fosse fracionariamente menor que alguma tolerância FTOL
. ...
Observe bem que um dos critérios acima pode ser enganado por uma única etapa anômala que, por um motivo ou outro, não conseguiu chegar a lugar algum. Portanto, frequentemente é uma boa idéia reiniciar uma rotina de minimização multidimensional em um ponto em que afirma ter encontrado um mínimo. Para esta reinicialização, você deve reinicializar qualquer quantidade de entrada auxiliar. No método simplex em declive, por exemplo, você deve reinicializar dos vértices do simplex novamente pela equação , com sendo um dos vértices do mínimo reivindicado.N + 1 ( 10.4.1 ) P 0NN+1(10.4.1)P0
As reinicializações nunca devem ser muito caras; afinal, seu algoritmo converge para o ponto de reinicialização uma vez e agora você está iniciando o algoritmo já existente.
[Páginas 290-292.]
O código que acompanham este texto, em Numerical Recipes esclarece o significado de "fraccionadamente menor": a diferença entre os valores de e (tanto valores do argumento ou valores da função) é "fraccionadamente menor" do que um limiar quandoy T > 0xyT>0
|x|−|y|f(x,y)=2|x|−|y||x|+|y|<T(1)
com .f(x,y)=(|x|+|y|)/2
O lado esquerdo de às vezes é conhecido como "diferença absoluta relativa". Em alguns campos, é expresso como uma porcentagem, onde é chamado de "erro percentual relativo". Consulte o artigo da Wikipedia sobre Mudança e diferença relativa para obter mais opções e terminologia.(1)
Referência
William H. Press et al. , Receitas Numéricas: A Arte da Computação Científica. Cambridge University Press (1986). Visite http://numerical.recipes/ para obter as edições mais recentes.