scipy.optimize.minimize如何知道要搜索哪个变量?

问题描述

我有下面的代码可以工作,但是我确实有两个关于语法如何工作的问题。

# Define some working variables
# n,an int
# er,an (n x 1) np.array of expected returns
# smallcov,an (n x n) matrix of covariances
# init_guess,an (n x 1) np.array of floats
# bounds,a tuple of n tuples,where the inner tuples are (2 x 1)

return_equals_target = {
    'type': 'eq',#    'args': (er,),# <===================================================== LINE 1
    'fun' : lambda w: target_return - erk.portfolio_return(w,er),}

weights_sum_to_one = {
    'type': 'eq','fun' : lambda w: np.sum(w) - 1
}

objective = lambda w,c : w.T @ c @ w

results = minimize(
    objective,init_guess,args=(smallcov,method='SLSQP',constraints=(return_equals_target,weights_sum_to_one),bounds = bounds
)

问题1 (更重要) 函数objective带有两个参数wcminimize怎么知道哪个是最小化的,哪个是最小化的常数?

问题2 请参阅上面的第1行,并考虑是否将我替换的代码及其下面的行替换为以下内容

    'args': (er,'fun' : lambda w,r: target_return - erk.portfolio_return(w,r),

两个版本给出的结果相同,所以如果变量minimize仍然在作用域内,为什么还要使用er的'args'参数呢?

感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)