【发布时间】:2022-01-26 04:52:52
【问题描述】:
我有一个包含两个输入变量的函数,我们希望对其进行优化。该函数返回一个输出,我们希望最小化这个输出。在 Python 中执行此操作的最佳方法是什么?
目前函数输入变量已被硬编码,目标是在一个范围内迭代并找到两个参数的最优值。
我研究过 scipy,但不确定如何在我的情况下使用它。
我的代码输出如下所示。
def average_receptance(K_t, C_t):
frequency_matrix = np.array([])
alphabetaE11_matrix = np.array([])
for i in range(first_natural_frequency - natural_frequency_delta,first_natural_frequency + natural_frequency_delta):
frequency_matrix = np.append(frequency_matrix, i)
alphabetaE11_matrix = np.append(alphabetaE11_matrix, math.log(abs(receptance(K_t, C_t, i))))
receptance_average = np.average(alphabetaE11_matrix)
return receptance_average
print(average_receptance(600000, 50))
print(average_receptance(626759, 50))
print(average_receptance(650000, 50))
print(average_receptance(600000, 100))
print(average_receptance(626759, 100))
print(average_receptance(650000, 100))
print(average_receptance(600000, 150))
print(average_receptance(626759, 150))
print(average_receptance(650000, 150))
【问题讨论】:
-
你尝试了什么?有一些算法可以通过你从某个地方得到的点来拟合曲线 - 你可以通过一阶导数 = 0 获得它的最大值/最小值,或者使用模拟退火/爬山之类的东西
标签: python optimization scipy