我遇到了一个问题,当试图在Python中最小化以下函数时,float是不可迭代的。我已经检查过了,问题似乎在于我如何使用这个最小化。只是为了澄清,传递给a和b的值将在0.0和1.0之间。任何想法都非常感谢!
我把一些代码放在这里只是为了展示:
def func1(x):
return (x-1)\*\*2
def func2(x):
return math.pow(x-0.5,2)
p1 = 1.0 - a
p2 = 1.0 - b
bound1 = (0.0,p1)
bound2 = (0.0,p2)
x0 = 0.5
result1 = minimize(func1, x0, method='SLSQP', bounds = bound1)#, options={'maxiter':3})
result2 = minimize(func2, x0, method='SLSQP', bounds = bound2)#, options={'maxiter':3})
newX = result1.x
newY = result2.x
1条答案
按热度按时间rlcwz9us1#
问题是
bounds
需要一个元组列表(或者Bounds
对象),而这里您只是提供了一个元组。由于你的成本函数只有一个参数可以应用边界,你只需要将当前的
bounds
更改为一个包含一个元组的列表,如下所示:下面是工作代码: