楼主: zbg100
7772 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

楼主
zbg100 发表于 2016-6-12 15:40:17 |AI写论文

+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
拉您进交流群
GMT+8, 2025-12-29 22:45