Résolution numérique d'un système d'équations difficile

10

J'ai un système de équations non linéaires que je veux résoudre numériquement:n

f = ( f 1 , , f n )

f(x)=a
f=(f1,,fn)x=(x1,,xn)

Ce système présente un certain nombre de caractéristiques qui le rendent particulièrement difficile à manipuler. Je cherche des idées sur la façon de gérer le système plus efficacement.

Pourquoi le système est-il difficile?

  • Les fonctions sont similaires à celle-ci (mais bien sûr en plusieurs dimensions):

    Graphiques Mathematica

    Ils ont des plateaux plats séparés par une région de changement en douceur. En 2D, vous pouvez imaginer quelque chose comme ça pour un :fi

    Graphiques Mathematica

    Généralement, chaque a deux plateaux séparés par un changement régulier autour d'un hyperplan de dimension n - 1 .fin1

    Des fonctions comme celle-ci sont difficiles à gérer avec des méthodes de type Newton car le dérivé est effectivement nul sur les plateaux. Dans plusieurs dimensions, je ne peux pas facilement trouver une région où aucun desfi n=1 n'a de plateau - si je le pouvais, cela résoudrait le problème. La méthode de bissection fonctionne bien pour , mais elle ne se généralise pas bien à plusieurs dimensions.n=1

  • Les fonctions sont très lentes à calculer. Je recherche une méthode qui puisse obtenir une approximation raisonnable de la racine en aussi peu d'itérations que possible.

  • Les fonctions sont calculées avec une méthode de Monte Carlo. Cela signifie que chaque fois qu'ils sont calculés, j'obtiens une valeur aléatoire légèrement différente. Les dérivés sont difficiles à estimer. Une fois que nous sommes suffisamment proches de la racine, le bruit commencera à dominer, et il est nécessaire d'utiliser la moyenne pour augmenter la précision. Idéalement, il devrait être possible de généraliser la méthode à une version d' approximation stochastique équivalente (par exemple, Newton → Robbins-Monro).

  • Le système est de grande dimension. peut être aussi grand que 10-20. Lorsque , une méthode efficace serait probablement la suivante: essayez de suivre les contours définis par et et voyez où ils se croisent. On ne sait pas comment cela se généraliserait aux dimensions élevées.n = 2 f 1 ( x 1 , x 2 ) = 0 f 2 ( x 1 , x 2 ) = 0nn=2f1(x1,x2)=0f2(x1,x2)=0

Que sais-je d'autre sur le système?

  • Il y a précisément une racine (à partir des résultats théoriques).

  • Je connais la valeur de sur les plateaux (disons que c'est 0 et 1 pour tout ). ifii

  • x i f i ( , x i , ) x i - x j ifi a une relation spéciale avec :  change de façon monotone de 1 à 0 lorsque passe de à . Cela est vrai pour toute valeur fixe des autres .xifi(,xi,)xixji

Szabolcs
la source
Connaissez-vous des limites inférieures et supérieures sur toutes les variables, dans lesquelles la solution doit se situer? Plus ces limites sont serrées, mieux c'est. Pouvez-vous donner un exemple déterministe, dans une dimension aussi élevée que vous le souhaitez, qui illustre vos plateaux et vos difficultés, mais ne nécessite pas de simulation Monte Carlo et n'a pas d'erreurs aléatoires dans les fonctions (points bonus si les dérivées peuvent être calculées)? Le but d'un tel exemple déterministe est de comprendre les difficultés du problème, pour ne pas dire que l'évaluation de Monte Carlo ne sera pas utilisée dans la solution ultime de votre problème réel.
Mark L. Stone
@ MarkL.Stone Bounds: Je ne les connais pas. Mais je peux deviner. Les suppositions devraient être assez larges pour être convaincues qu'elles sont correctes. Exemple: je proposerai un exemple et éditerai la question demain. Je n'ai pas une image beaucoup plus claire de la vraie forme de que ce que j'ai décrit ici, donc mon premier exemple n'est peut-être pas vraiment représentatif du vrai problème. Mais je vais assembler quelque chose fait de fonctions de Fermi (sigmoïdes), et je vais essayer de lui faire avoir autant de difficultés du vrai problème que possible. f
Szabolcs
J'ai hâte de le voir,
Mark L. Stone

Réponses:

1

Puisqu'il n'y a qu'une seule racine et qu'il n'y a pas de contraintes, vous pourriez avoir de la chance de la poser comme un problème d'optimisation: minimisez la somme (le long de chaque dimension) des carrés de votre fonction d'origine.

Les méthodes classiques d'optimisation échoueront probablement, mais des méthodes heuristiques telles que les algorithmes génétiques ou CME-ES (adaptation de matrice covariante, etc. - stratégie évolutive) pourraient fonctionner.

MattKelly
la source
C'est en effet l'approche à suivre. Je voudrais en particulier regarder l'algorithme SPSA qui a été développé spécifiquement pour votre objectif et qui est assez robuste.
Wolfgang Bangerth
2
L'OP mentionne que la fonction est très coûteuse à évaluer (application de la simulation de Monte Carlo pour une évaluation de fonction). Cela ne pose-t-il pas un très gros problème pour les algorithmes génétiques et autres algorithmes évolutionnaires? Ils sont "trivialement parallèles" (et le MC est généralement aussi) donc un calcul parallèle massif pourrait être possible, mais sont-ils la meilleure façon d'aller ici?
GertVdE
@WolfgangBangerth Merci, car vous dites que cela semble être la bonne solution. Je vais regarder SPSA.
Szabolcs
1
En ce qui concerne les évaluations de fonctions coûteuses: Il est vrai que les algorithmes génétiques et les méthodes heuristiques connexes ont tendance à nécessiter un plus grand nombre d'évaluations de fonctions que les méthodes traditionnelles. L'avantage est que les méthodes heuristiques peuvent souvent résoudre des problèmes qui 1) nécessiteraient autrement une méthode spécifique au problème ou 2) échoueraient en raison de problèmes numériques. Pour cet exemple, il est probable que les méthodes traditionnelles auraient du mal en raison de la nature stochastique de la fonction objectif et des petits gradients le long de certaines dimensions. SPSA ressemble à une excellente méthode candidate pour ce problème.
MattKelly