gpt4 book ai didi

python - 如何在有约束的 scipy 中使用最小化函数

转载 作者:IT老高 更新时间:2023-10-28 21:10:06 25 4
gpt4 key购买 nike

我需要一些关于 python(scipy) 中优化函数的帮助问题是优化 f(x) 其中 x=[a,b,c...n]。约束条件是 a、b 等的值应介于 0 和 1 之间,并且 sum(x)==1。 scipy.optimise.minimize 函数似乎最好,因为它不需要微分。我如何传递论点?

使用排列创建一个 ndarray 太长了。我现在的代码如下:-

import itertools as iter
all=iter.permutations([0.0,.1,.2,.3,.4,.5,.6,.7,.8,.9,1.0],6) if sum==1
all_legal=[]
for i in all:
if np.sum(i)==1:
#print np.sum(i)
all_legal.append(i)
print len(all_legal)
lmax=0
sharpeMax=0
for i in all_legal:
if sharpeMax<getSharpe(i):
sharpeMax=getSharpe(i)
lmax=i

最佳答案

您可以使用 COBYLASLSQP 进行约束优化,如 docs 中所述。 .

from scipy.optimize import minimize

start_pos = np.ones(6)*(1/6.) #or whatever

#Says one minus the sum of all variables must be zero
cons = ({'type': 'eq', 'fun': lambda x: 1 - sum(x)})

#Required to have non negative values
bnds = tuple((0,1) for x in start_pos)

将这些组合到最小化函数中。

res = minimize(getSharpe, start_pos, method='SLSQP', bounds=bnds ,constraints=cons)

关于python - 如何在有约束的 scipy 中使用最小化函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18767657/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com