查找参数以最大化输出分数

数据挖掘 优化
2022-03-02 03:55:48

不确定这是问的正确地方。假设有一个函数f(),它的实现是未知的,但它返回一个分数。我想通过修改输入参数来获得最高分。我也尝试比蛮力更好(找到所有可能的输入参数组合,如果可能的话)

我知道

  • f()针对已知数据集运行算法。该算法通过输入参数进行调整。
  • f()需要6个参数
  • 我知道每个参数的类型(int、float、boolean)
  • 我知道每个参数的范围,即 [-1,5](int), [0,1](float, percent, ie 0.5 = 50%)
  • 一些参数有一个开放范围,即 >1 (int)
  • 有些是相互依赖的。即最小和最大参数。即最小值 < 最大值。

任何可以帮助我解决这个问题的算法的好的指针都将受到高度赞赏。

1个回答

在这种优化问题中,遗传算法通常是一种很好的方法,假设计算 的值 f()不是太昂贵。

这个想法是将6个参数表示为“基因”。在第一代中,它们的值被随机分配,然后评估(即计算f)一代中的每个“个体”(参数组合),并选择表现最好的“个体”。通过交叉和随机变异获得下一代,并重复该过程直到f收敛到最大值。