我有一个函数,该函数带有一些参数并返回浮点数。并且每个参数都有分布。
class Ranges:
K = range(0, 100)
D = range(0, 100)
KD_difference = ('K>D', 'K<D', 'K=D', None)
def function(parameters):
# <some code>
return result # -10.2 or 32.4 etc.
如何通过快速优化功能找到参数的优化值?
I've tried grid optimisation:
for K in Ranges.K:
for D in Ranges.D:
for KD in Ranges.KD_difference:
parameters = (K, D, KD)
result = function(parameters)
# ... chose parameters, that give max result value
...但是太慢了。比我尝试过随机搜索:
import random
while True:
parameters = (
random.choice(Ranges.K),
random.choice(Ranges.D),
random.choice(Ranges.KD_difference)
)
result = function(parameters)
# ... chose parameters, that give max result value
...但是它不能为我提供参数的完全优化的值。
现在,我正在寻找使用scipy.optimize。但是我不明白,我应该把每个参数的分布放到哪里,以及如何获取参数“ KD_difference”的字符串值。 请给我建议或示例,如何优化参数?