为了账号安全,请及时绑定邮箱和手机立即绑定

找到给定函数值的参数的最佳值

找到给定函数值的参数的最佳值

人到中年有点甜 2021-12-26 10:16:57
我有一个函数 - wait_time(agr1, arg2, arg3) 和这个函数的目标 - target_waiting_time我怎样才能从这个函数中为 target_waiting_time = 特定值找到 arg2 的值?现在我发现它有一个循环,但它太长了。arg1 = some_value1arg2 = some_value2arg3 = some_value3#find waiting timedef wait_time(agr1, arg2, arg3):      wait_prob = another_function(agr1, arg2, arg3)      x = wait_prob / arg2/(arg3*(40))      return xtarget_waiting_time = 100while wait_time < target_wait_time:            arg2 += 1            wait_time = wait_time(agr1, arg2, arg3)optimal_value = arg2
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

此刻,您arg2每次都增加1 并重试,这太慢了。那么,为什么不尝试在每一步都增加更多呢?例如。每次增加+5或+10000,然后一旦你知道例如。它在 100-200 的范围内,您可以使用二进制搜索来搜索该范围。

事实上,存在一个已知的模式,称为https://en.m.wikipedia.org/wiki/Exponential_search,但根据您的需求和您的值将有多大,它可能不是必需的。


查看完整回答
反对 回复 2021-12-26
?
动漫人物

TA贡献1815条经验 获得超10个赞

我用 scipy.optimize.fsolve 决定了它


from scipy import optimize


arg1 = some_value1

arg2 = some_value2

arg3 = some_value3


#find waiting time

def wait_time(agr1, arg2, arg3):

    wait_prob = another_function(agr1, arg2, arg3)

    x = wait_prob / arg2/(arg3*(40))

    return x


target_waiting_time = 100


def func(x):

    return wait_time(agr1, x, arg3) - target_waiting_time 


optimal_value = optimize.fsolve(func, x0 = arg2)


查看完整回答
反对 回复 2021-12-26
  • 2 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号