【问题标题】:Use variable X to find maximum value of Y使用变量 X 找到 Y 的最大值
【发布时间】:2021-03-15 16:44:09
【问题描述】:

假设我的函数有输入“A”和“B”,输出“C”。对于 A 的每个值,我想找出 B 的哪个值导致 C 的最大值;然后我想记录值 B 和 C。是否有可以执行此操作的函数?也许取决于收敛机制?

*如果您通过我应用的非 python 相关标签之一找到了这个,请注意我使用的是 python 3.x

【问题讨论】:

  • B 的可能取值范围是多少?
  • 根据提供的信息,暴力破解是唯一的方法。为每个可能的B评估函数,记录最大值。

标签: python python-3.x optimization convergence


【解决方案1】:

让我们定义函数 接受参数(A,B) 并返回一个值C。我们可以用 Python 来优化它

from scipy import optimize

f = lambda a,b: ... # your_code_which_returns_C
optimal_vals = np.zeros((2, len(list_of_all_A_values)))
for i, a in enumerate(list_of_all_A_values) # assuming some list is defined above
    b_opt, c_opt, *rest = optimize.fmin(lambda b: -f(a,b), 0)
    optimal_vals[:,i] = np.array([b_opt, c_opt])

这利用了 scipy 的 fmin 函数,该函数依赖于下坡单纯形算法的收敛性。因此,不要忘记 上的减号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 2023-01-14
    • 2022-11-03
    • 2018-01-19
    • 1970-01-01
    • 2020-02-24
    • 1970-01-01
    相关资源
    最近更新 更多