0

具有未知函数 f(x,y)=z 的系统,x 和 y 是输入,z 是产量或输出。

X:实数,取值范围为(1.01~2.99),步长0.01 Y:取整数,取值范围(1~100) Z:实数表示产量,越多越好。

改变 x 和 y 值会产生不同的 Z 值(X 和 Y 有一些未知的相关性),但我们总是得到相同的 Z 和相同的 X 和 Y。

任务:找到最佳的 X 和 Y 组合,以在输出 (Z) 处获得可能的最佳产量。例如:X = 2.23,Y = 87 可能给出最好的产量 Z=5.15。

除了蛮力,还有其他算法可以搜索最优 X 和 Y 吗?

编辑:

- 是否有一种算法可以学习(发现某种偏差)X 和 Y 之间的相关性?因此,基于第一次经验检查下一组数据将具有系统优势
- 模糊逻辑可以应用在这里吗?

4

3 回答 3

2

除非您对函数有更多了解,否则不可能比检查每个值做得更好。

考虑这样的事情:(仅x作为一个参数 - 以 3D 绘图有点困难 - 但同样适用于 2 个参数)(假设更高的值z更好)

没有办法预测函数中是否会有一些跳跃,如上所述,或者它会发生在哪里。

或者可能会有更少的连续性:

如果您只是想要一个不错的值z,不一定是最佳值:

您可以只检查几个值(随机地,沿着一些增量,例如检查 1.1、1.2、1.3 等,或使用其他方法)并希望为z.

但是,由于上面显示的情况,无法保证 - 您最终可能会得到比最优值差得多的值。

于 2013-11-05T12:30:35.713 回答
0

如果没有关于函数的任何附加信息f,例如smooth function,只有蛮力可以找到解决方案。它将 100% 正确的解决方案。

任何其他不比随机选择 X 和 Y 更好的尝试,因为不会提供任何保证。

因此,如果您找到解决方案的时间比其有效性更重要,那么最佳解决方案将是 X 和 Y 的随机选择。

于 2013-11-05T12:36:53.897 回答
0

首先,只有 200*100 个可能的值,蛮力会得到一个快速 100% 准确的答案。我认为没有理由进一步优化它(除非这当然是在一个紧密的循环中完成的,或者以后可能需要更高的规模)

但是,如果您的问题可能规模更大,并且由于我们正在讨论“可能是最大”(而不是绝对最大)值,一种方法可能是在某些点对数据进行采样,并进行多项式插值以近似数据在这个范围。

假设它背后有一些理性(可能是也可能不是) - 你会得到一条与你的数据非常接近的曲线。
在它之后 - 使用通用方法(导数)找到局部最大值(并由此找到全局最大值)。

虽然这不是 100% 准确,但它会让您接近最大值,假设数据分离背后有合理性。

于 2013-11-05T12:38:17.733 回答