Bonjour à tous,
Je cherche actuellement à minimiser une fonction à l'aide d'un algorithme sous Python. La fonction est un peu compliquée et fait appel à un solveur FEA pour être calculé. Quoi qu'il en soit, j'ai pu définir ma fonction de manière classique en fonction du paramètre que je cherche à optimiser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
def fonction_calcul(Parametre1):
      blabla definition fonction
      return valeur de la fonction
Cette dernière définition de la fonction marchant bien, je peux facilement avoir les valeurs de ma fonction_calcul pour les valeurs de paramètres que je souhaite. Sachant cela, je pensais pouvoir dés lors utiliser "bêtement" scipy.optimize pour trouver la valeur de minimization de ma fonction et hélas, cela ne marche pas !
Voyez ce que j'obtiens en partant de la valeur de départ x=1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
x_start=1.0
>>>	
result = spo.minimize(fonction_calcul, x_start)
>>>	
result
      fun: 106.69134802297765
 hess_inv: array([[1]])
      jac: array([0.])
  message: 'Optimization terminated successfully.'
     nfev: 2
      nit: 0
     njev: 1
   status: 0
  success: True
        x: array([1.])
Globalement, comme vous le voyez, minimize calcul une seule valeur et s'arrête à cette valeur, considérant qu'il a bien optimisé (sachant que en l'occurence, la valeur de minimisation se trouve autour de 0.03...).

J'ai essayé minimize avec une fonction "classique" (polynome) et cela fonctionne bien pour trouver la valeur de minimisation...

Une idée de comment faire fonction minimize dans mon cas ?

Merci beaucoup !
Pierre