La réponse courte est que G
est maintenu par l'optimiseur dans le cadre du processus de minimisation, tandis que le (D_neg, D, and C)
Les arguments sont transmis en tel quel args
Tuple.
Par défaut, scipy.optimize.minimize
prend une fonction fun(x)
qui accepte un argument x
(qui pourrait être un tableau ou similaire) et renvoie un scalaire. scipy.optimize.minimize
alors trouve une valeur d'argument xp
tel que fun(xp)
est inférieur à fun(x)
pour d'autres valeurs de x
. L'optimiseur est responsable de la création de valeurs de x
et les passer à fun
pour évaluation.
Mais que se passe-t-il si vous avez une fonction fun(x, y)
qui a un paramètre supplémentaire y
Cela doit être transmis séparément (mais est-il considéré comme une constante aux fins de l'optimisation)? C'est ce que le args
Tuple est pour. La Documentation essaie d'expliquer comment le tuple args est utilisé, mais il peut être un peu difficile à analyser:
Args: tuple, facultatif
Des arguments supplémentaires passaient à la fonction objective et à ses dérivés (Jacobian, Hessian).
Effectivement, scipy.optimize.minimize
passera tout ce qui est dans args
comme le reste des arguments à fun
, en utilisant la notation des arguments Asterisk: la fonction est alors appelée fun(x, *args)
pendant l'optimisation. La x
la partie est transmise par l'optimiseur, et le args
Le tuple est donné comme les arguments restants.
Donc, dans votre code, la valeur du G
L'élément est maintenu par l'optimiseur tout en évaluant les valeurs possibles de G
, et le (D_neg, D, C)
Le tuple est passé en tel quel.