gpt4 book ai didi

Python Scipy Optimizer Minimize : Constraints and bounds are not working as expected, 如何使其工作?

转载 作者:太空宇宙 更新时间:2023-11-03 16:37:55 26 4
gpt4 key购买 nike

待优化的功能:

def optimize(allocs, allStocksNormalized):
allocs = allStocksNormalized * allocs
postvalues = allocs * startvalue
portfolioValues = postvalues.sum(axis=1)
cumulativeReturns = (portfolioValues[-1] / portfolioValues[0]) - 1
return cumulativeReturns*-1

调用函数:

allocsGuess = [0.3,0.3,0.3,0.1]

cons = ({'type': 'eq', 'fun' : lambda inputs: 1 - (np.sum(abs(inputs)))})

bnds = [(0.0, 1.0), (0.0, 1.0), (0.0, 1.0), (0.0, 1.0)]

min_cum_return = optimizer.minimize(optimize, allocsGuess, args=(allStocksNormalized,) ,
method='SLSQP', bounds=bnds, constraints=cons,
options={'disp': True})

print("X = {}, Y = {}".format(min_cum_return.x,min_cum_return.fun))

现在返回的结果是这样的 -

X = [  3.47499807e-14   1.00000000e+00   0.00000000e+00   0.00000000e+00], Y = -14.500342231347526

我想要以下条件的约束 -

  1. 分配数组 (X) 中的每个值都应在 0.0 和 1.0 之间(我为此使用边界)
  2. 数组 X 的绝对值之和应恰好等于 1.0(我为此使用了约束)

正如我们所看到的,我从 X 数组获得的结果不符合任何一个标准。

我该如何改进它才能正常工作?

最佳答案

尝试以下操作:

bnds = ((0.0, 1.0), (0.0, 1.0), (0.0, 1.0), (0.0, 1.0))

bnds 应该是一个元组

关于Python Scipy Optimizer Minimize : Constraints and bounds are not working as expected, 如何使其工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37060082/

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