scipy.optimize:制約条件の付け方
import numpy as np import scipy.optimize def func(x): return np.sum((x-2.5)**2)+1
inequality constraintは、returnが正であるような形で関数を書いて指定する。
def con1(x): return 2-x[0] cons1 = ({'type':'ineq','fun':con1})
boundaryはnp.arrayで指定できる。
b1=np.array([[0,10],[0,3.],[0,1.]])
a=scipy.optimize.minimize(func,x0=np.array([7,10,3.]),method='SLSQP',constraints=cons1,bounds=b1) print(a.x) [ 2. 2.49999999 1. ]