Mi chiedevo se qualcuno avesse qualche suggerimento per minimizzare una funzione, f (x, y), dove x e y sono numeri interi. Ho ricercato molte tecniche di minimizzazione e ottimizzazione, come BFGS e altri di GSL, e cose da ricette numeriche. Finora, ho provato a impiantare un paio di schemi diversi. Il primo funziona selezionando la direzione della più grande discesa f (x + 1, y), f (x-1, y), f (x, y + 1), f (x, y-1) e segui quella direzione con minimizzazione della linea. Ho anche provato a usare un metodo downhill simplex (Nelder-Mead). Entrambi i metodi rimangono bloccati lontano dal minimo. Entrambi sembrano lavorare su funzioni più semplici, come trovare il minimo di un paraboloide, ma penso che entrambi, e specialmente il primo, siano progettati per funzioni in cui xey sono valori reali (doppi). Un altro problema è che ho bisogno di chiamare f (x, y) il minor numero possibile di volte. Parla con l'hardware esterno e impiega un paio di secondi per ogni chiamata. Qualsiasi idea per questo sarebbe molto apprezzata.Minimizzazione di f (x, y) dove x e y sono interi
Ecco un esempio della funzione di errore. Mi spiace di non averlo postato prima. Questa funzione richiede un paio di secondi per valutare. Inoltre, le informazioni che query dal dispositivo non aggiunge all'errore se è sotto il nostro valore desiderato, solo se è al di sopra
double Error(x,y)
{
SetDeviceParams(x,y);
double a = QueryParamA();
double b = QueryParamB();
double c = QueryParamC();
double _fReturnable = 0;
if(a>=A_desired)
{
_fReturnable+=(A_desired-a)*(A_desired-a);
}
if(b>=B_desired)
{
_fReturnable+=(B_desired-b)*(B_desired-b);
}
if(c>=C_desired)
{
_fReturnable+=(C_desired-c)*(C_desired-c);
}
return Math.sqrt(_fReturnable)
}
Anche le idee relative alla classe e al comportamento della tua funzione saranno apprezzate. – EFraim
Interessante domanda. È divertente come la matematica diventi prima difficile quando hai iniziato a conoscere le frazioni e i numeri reali, e di nuovo difficile dopo averli rimossi e tornare ai numeri naturali. =) –
Conosci l'equazione per f (x, y)? – Noldorin