scipy constrain аргумент non-x0

Предположим, что у меня есть import scipy def fitness ( w , assets , rf = 0. , dt = '2016-12-30' ): mu = float ( ptf_mean ( assets , w , dt )) sigma = float ( ptf_var ( активы , w , dt )) sigma_sum = сигма . sum () util = - ( мю - ВЧ ) / ( сигма ) возвращение Util ИНГ функции:

b_ = [(0.,1.) for i in range(2)]
c_ = ({'type':'eq', 'fun': lambda w: sum(w)-1. }) 
optimized = scipy.optimize.minimize(fitness, np.matrix([1.,0.]), (assets, rf, dt), 
            method='SLSQP', constraints=c_,bounds=b_) 

А также:

sigma_sum

Nox0, скажем, я хочу сдерживать assets. Как я мог это сделать? Все примеры ограничений, которые я видел в документах, меняются только rfили wв моем примере.

Я отказываюсь от определения dt, sigma_sumи wпоскольку они не связаны с проблемой, но предполагаем, что код скомпилирован.

Спасибо!

python,scipy,

0

Ответов: 1


0

w является функцией w (и параметров). Ограничить это означает ограничение, wчтобы sigma_sumудовлетворять некоторому условию. Это предполагает наличие вызываемого, возвращающего значение, включающее sigma_sum, например:

c2_ = ({'type':'eq', 'fun': lambda w: sigma_sum(w) - 42})

где sigma_sumопределено

def sigma_sum(w, assets, rf=0., dt='2016-12-30'):
    mu = float(ptf_mean(assets,w,dt))
    sigma  = float(ptf_var(assets,w,dt)) 
    return sigma.sum()

Чтобы избежать дублирования кода, вы, вероятно, захотите использовать это sigma_sumв своей функции, которая вычисляет цель.

питон, SciPy,
Похожие вопросы
Яндекс.Метрика