全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
7688 4
2016-06-12
以下代码出错,错误在最后一行,不是很能理解。

另外,如果def Eu(x,y):的定义方法也会引发类似的错误。

求大神指导!

from math import sqrt
import scipy.optimize as spo
import numpy as np
def Eu(z):
    s,b=z
    return -(0.5*sqrt(s*15+b*5)+0.5*sqrt(s*5+b*12))
bnds=((0,1000),(0,None))
cons=({'type':'ineq','fun': lambda s,b:100-10*s-10*b})    #cons是由字典组成的元组
result=spo.minimize(Eu,[5,5],method='SLSQP',bounds=bnds,constraints=cons)
print(result)


#TypeError: <lambda>() missing 1 required positional argument: 'b'

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-6-12 15:53:58
应该是 s,b=z 这句出错了。改成两句:
s=z
b=z
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-6-17 10:39:15
xpz186 发表于 2016-6-12 15:53
应该是 s,b=z 这句出错了。改成两句:
s=z
b=z
改了以后,,,感觉没差别,,,
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-6-20 13:07:04
zbg100 发表于 2016-6-17 10:39
改了以后,,,感觉没差别,,,
呵呵,你再看看s,b的定义。
s,b在函数中定义,那函数外应该就没有定义了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-6-20 13:21:09
zbg100 发表于 2016-6-17 10:39
改了以后,,,感觉没差别,,,
result=spo.minimize(Eu,[5,5],method='SLSQP',bounds=bnds,constraints=cons)
这个语句中,你只是创建了lambda函数对象,没有给lambda函数传递参数。试着改成:
ld = lambda s,b:100-10*s-10*b
cons=({'type':'ineq','fun': ld(s,b)})    #cons是由字典组成的元组
result=spo.minimize(Eu,[5,5],method='SLSQP',bounds=bnds,constraints=cons)

另,s,b在函数中定义,那在函数外就没有定义了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群