Risolvere numericamente un difficile sistema di equazioni


10

Ho un sistema di equazioni non lineari che voglio risolvere numericamente:n

f = ( f 1 , , f n )

f(X)=un'
f=(f1,...,fn)X=(X1,...,Xn)

Questo sistema ha una serie di caratteristiche che lo rendono particolarmente difficile da gestire. Sto cercando idee su come gestire il sistema in modo più efficace.

Perché il sistema è difficile?

  • Le funzioni sono simili a questa (ma ovviamente in più dimensioni):

    Grafica Mathematica

    Hanno altopiani piatti separati da una regione di cambiamento regolare. In 2D, si può immaginare qualcosa di simile per una :fio

    Grafica Mathematica

    Generalmente, ogni ha due altipiani separati da cambiamento graduale intorno a un n - 1 iperpiano dimensionale.fion-1

    fion=1

  • Le funzioni sono molto lente da calcolare. Sto cercando un metodo in grado di ottenere una ragionevole approssimazione della radice nel minor numero di iterazioni possibile.

  • Le funzioni sono calcolate con un metodo Monte Carlo. Ciò significa che ogni volta che vengono calcolati, ottengo un valore casuale leggermente diverso. I derivati ​​sono difficili da stimare. Una volta che siamo abbastanza vicini alla radice, il rumore inizierà a dominare ed è necessario utilizzare la media per aumentare la precisione. Idealmente, dovrebbe essere possibile generalizzare il metodo con una versione equivalente approssimativa stocastica (ad esempio, Newton → Robbins-Monro).

  • nn=2f1(X1,X2)=0f2(X1,X2)=0

Cos'altro so del sistema?

  • Esiste esattamente una radice (dai risultati teorici).

  • fioio

  • fioXiofio(...,Xio,...)Xio-Xjio


Conosci i limiti inferiore e superiore su tutte le variabili, all'interno delle quali deve trovarsi la soluzione? Più stretti quei limiti, meglio è. Puoi dare un esempio deterministico, nella dimensione più alta che desideri, che illustra i tuoi altipiani e le tue difficoltà, ma non richiede la simulazione Monte Carlo e non ha errori casuali nelle funzioni (punti bonus se le derivate possono essere calcolate)? Lo scopo di un tale esempio deterministico è comprendere le difficoltà del problema, non dire che la valutazione Monte Carlo non verrà utilizzata nella soluzione definitiva del tuo problema reale.
Mark L. Stone,

f

Non vedo l'ora di vederlo,
Mark L. Stone,

Risposte:


1

Poiché esiste una singola radice e non ci sono vincoli, potresti avere fortuna ponendolo come un problema di ottimizzazione: minimizza la somma (lungo ogni dimensione) dei quadrati della tua funzione originale.

Probabilmente i metodi di ottimizzazione classica falliranno, ma potrebbero funzionare metodi euristici come algoritmi genetici o CME-ES (adattamento matriciale ecc. Matrice - strategia evolutiva).


Questo è davvero l'approccio da seguire. Guarderei in particolare l'algoritmo SPSA che è stato sviluppato appositamente per il tuo scopo ed è abbastanza robusto.
Wolfgang Bangerth,

2
Il PO menziona che la funzione è molto costosa da valutare (applicando la simulazione Monte Carlo per una valutazione della funzione). Ciò non rappresenta un grosso problema per gli algoritmi genetici e altri algoritmi evolutivi? Sono "banalmente paralleli" (e di solito lo è anche MC), quindi potrebbe essere possibile un massiccio calcolo parallelo ma sono il modo migliore per andare qui?
GertVdE,

@WolfgangBangerth Grazie, come dici tu, sembra la soluzione giusta. Guarderò SPSA.
Szabolcs,

1
Per quanto riguarda le costose valutazioni delle funzioni: è vero che gli algoritmi genetici e i relativi metodi euristici tendono a richiedere un numero maggiore di valutazioni delle funzioni rispetto ai metodi tradizionali. Il vantaggio è che i metodi euristici possono spesso risolvere problemi che 1) richiederebbero altrimenti un metodo specifico del problema o 2) fallirebbero a causa di problemi numerici. Per questo esempio, è probabile che i metodi tradizionali avrebbero problemi a causa della natura stocastica della funzione oggettiva e dei piccoli gradienti lungo alcune dimensioni. SPSA sembra un ottimo metodo candidato per questo problema.
MattKelly,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.