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

我有一个函数 - wait_time(agr1, arg2, arg3) 和这个函数的目标 - target_waiting_time


我怎样才能从这个函数中为 target_waiting_time = 特定值找到 arg2 的值?


现在我发现它有一个循环,但它太长了。


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


while wait_time < target_wait_time:

            arg2 += 1

            wait_time = wait_time(agr1, arg2, arg3)


optimal_value = arg2


人到中年有点甜
浏览 158回答 2
2回答

鸿蒙传说

此刻,您arg2每次都增加1 并重试,这太慢了。那么,为什么不尝试在每一步都增加更多呢?例如。每次增加+5或+10000,然后一旦你知道例如。它在 100-200 的范围内,您可以使用二进制搜索来搜索该范围。事实上,存在一个已知的模式,称为https://en.m.wikipedia.org/wiki/Exponential_search,但根据您的需求和您的值将有多大,它可能不是必需的。

动漫人物

我用 scipy.optimize.fsolve 决定了它from scipy import optimizearg1 = some_value1arg2 = some_value2arg3 = some_value3#find waiting timedef wait_time(agr1, arg2, arg3):&nbsp; &nbsp; wait_prob = another_function(agr1, arg2, arg3)&nbsp; &nbsp; x = wait_prob / arg2/(arg3*(40))&nbsp; &nbsp; return xtarget_waiting_time = 100def func(x):&nbsp; &nbsp; return wait_time(agr1, x, arg3) - target_waiting_time&nbsp;optimal_value = optimize.fsolve(func, x0 = arg2)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python