J'utilise le module scipy.optimize pour trouver des poids d'entrée optimaux qui minimiseraient ma sortie. À partir des exemples que j'ai vus, nous définissons la contrainte avec une équation unilatérale; nous créons ensuite une variable qui est du type "inégalité". Ma question est de savoir comment le package d'optimisation sait si la somme des variables dans ma contrainte doit être inférieure à 1 ou supérieure à 1?
...
def constraint1(x):
return x[0]+x[1]+x[2]+x[3]-1
....
con1 = {'type': 'ineq', 'fun': constraint1}
lien vers la solution complète que j'utilise dans mon exemple: http://apmonitor.com/che263/index.php/Main/PythonOptimization
Je vous remercie.
Si vous vous référez à https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html et faites défiler jusqu'à la minimisation contrainte des fonctions scalaires multivariées (minimiser), vous pouvez trouver ça
Cet algorithme permet de traiter des problèmes de minimisation contraints de la forme:
où les inégalités sont de la forme C_j(x) >= 0
.
Ainsi, lorsque vous définissez la contrainte comme
def constraint1(x):
return x[0]+x[1]+x[2]+x[3]-1
et spécifiez le type de la contrainte comme
con1 = {'type': 'ineq', 'fun': constraint1}
il suppose automatiquement que la contrainte est sous la forme standard x[0]+x[1]+x[2]+x[3]-1>=0
c'est à dire., x[0]+x[1]+x[2]+x[3]>=1