Estoy usando el módulo scipy.optimize para encontrar pesos de entrada óptimos que minimicen mi salida. De los ejemplos que he visto, definimos la restricción con una ecuación unilateral; luego creamos una variable que es del tipo 'desigualdad'. Mi pregunta es ¿cómo sabe el paquete de optimización si la suma de las variables en mi restricción debe ser menor que 1 o mayor que 1?
...
def constraint1(x): return x[0]+x[1]+x[2]+x[3]-1....
con1 = {'type': 'ineq', 'fun': constraint1}enlace a la solución completa que estoy usando en mi ejemplo: http://apmonitor.com/che263/index.php/Main/PythonOptimization
Consulte https://docs.scipy.org/doc/scipy-0.18.1/reference/tutorial/optimize.html y desplácese hacia abajo hasta Minimización restringida de funciones escalares multivariadas (minimizar), puede encontrar que
Este algoritmo permite tratar problemas de minimización con restricciones de la forma:
[![ingrese la descripción de la imagen aquí][1]][1]
donde las desigualdades son de la forma C_j(x) >= 0 .
Así que cuando defines la restricción como
def constraint1(x): return x[0]+x[1]+x[2]+x[3]-1y especifique el tipo de restricción como
con1 = {'type': 'ineq', 'fun': constraint1} asume automáticamente que la restricción está en la forma estándar x[0]+x[1]+x[2]+x[3]-1>=0 ie, x[0]+x[1]+x[2]+x[3]>=1 [1]: https://i.stack.imgur.com/E3LPs.png