楼主: zbg100
7188 4

[问答] scipy.optimize.minimize missing 1 required positional argument [推广有奖]

  • 3关注
  • 0粉丝

硕士生

19%

还不是VIP/贵宾

-

威望
0
论坛币
1204 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
9290 点
帖子
42
精华
0
在线时间
219 小时
注册时间
2011-3-2
最后登录
2023-11-10

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
以下代码出错,错误在最后一行,不是很能理解。

另外,如果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'

二维码

扫码加我 拉你入群

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

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

关键词:Positional minimize required argument position required return import method result

已有 1 人评分经验 论坛币 收起 理由
三世相思2013 + 20 + 20 鼓励积极发帖讨论

总评分: 经验 + 20  论坛币 + 20   查看全部评分

沙发
xpz186 发表于 2016-6-12 15:53:58 |只看作者 |坛友微信交流群
应该是 s,b=z 这句出错了。改成两句:
s=z
b=z
已有 1 人评分经验 论坛币 收起 理由
三世相思2013 + 40 + 40 热心帮助其他会员

总评分: 经验 + 40  论坛币 + 40   查看全部评分

使用道具

藤椅
zbg100 发表于 2016-6-17 10:39:15 |只看作者 |坛友微信交流群
xpz186 发表于 2016-6-12 15:53
应该是 s,b=z 这句出错了。改成两句:
s=z
b=z
改了以后,,,感觉没差别,,,

使用道具

板凳
xpz186 发表于 2016-6-20 13:07:04 |只看作者 |坛友微信交流群
zbg100 发表于 2016-6-17 10:39
改了以后,,,感觉没差别,,,
呵呵,你再看看s,b的定义。
s,b在函数中定义,那函数外应该就没有定义了。

使用道具

报纸
xpz186 发表于 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在函数中定义,那在函数外就没有定义了。

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-5-1 15:05