Sto tentando di utilizzare le funzioni scipy.optimize
per trovare un minimo globale di una funzione complicata con diversi argomenti. scipy.optimize.minimize
sembra fare il lavoro meglio di tutti, vale a dire il metodo "Nelder-Mead". Tuttavia, tende ad andare nelle aree fuori dal dominio degli argomenti (per assegnare valori negativi agli argomenti che possono essere solo positivi) e restituisce quindi un errore in questi casi. C'è un modo per limitare i limiti degli argomenti all'interno della funzione? O forse all'interno di altre funzioni scipy.optimize
?Scipy.optimize: come limitare i valori degli argomenti
ho trovato i seguenti consigli:
Quando i parametri cadono fuori del campo ammissibile, restituire un numero enorme selvaggiamente (lontano dai dati da montare). Questo (si spera) penalizzerà questa scelta di parametri così tanto che
curve_fit
si stabilirà su un altro set di parametri ammissibile come ottimale.
given in this previous answer, ma nel mio caso la procedura richiederà molto tempo computazionale.
Fare in modo che la funzione di costo restituisca un costo elevato quando gli input sono al di fuori dell'intervallo consentito è una pessima idea perché la funzione di ricerca trascorrerà la maggior parte della sua energia alla ricerca dello spazio infinito di risposte non ammissibili.Usa l'argomento 'constraint' da' scipy.minimize' per specificare un metodo che indichi all'algoritmo dove limitare la sua ricerca. cercare 'vincoli' qui: http://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.minimize.html#scipy.optimize.minimize –