[問題] Scipy 極大化限制式寫法求解

作者: horby (horby)   2016-01-29 00:23:57
想請教關於scipy限制式的寫法
簡單程式如下:
import numpy as np
import scipy as sp
import scipy.optimize as opt
#給定一些變數值,w0是起始值,w1是限制的依據,score是其他運算資料,不重要
w1 = np.array([ 0.4, 0.3, 0.2, 0.1, 0. , -0.1, -0.2, -0.3, -0.4])
w0 = np.ones(w1.size)/w1.size
score = np.array([ 0.04, -0.24, 0.01, 0. , -0.27, 0.02, 0.03, -0.11, -0.05])
#目標函數
def objfun(w, score, w1):
return -1.0 * np.dot(w, score)
#限制式
bounds = [(-0.1 + i, i+0.1) for i in w1]
#求解
results = opt.minimize(objfun, w0, args = (score, w1),
method = "SLSQP",
bounds = bounds)
基本上我要求解w使函數極大化,但是w的變化範圍限定在w1的正負10%
上述的寫法可以成功,但我想知道以constraints改寫bounds要怎麼寫,
請大家指點一下,謝謝!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com