功能未知的系统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之间的相关性?所以检查下一组 根据第一次经验,数据将具有系统优势 - 可以在这里应用模糊逻辑吗?
答案 0 :(得分:2)
除非您知道某些更多关于该函数的内容,否则不可能比检查每个值做得更好。
考虑这样的事情:(仅将x
作为参数 - 在3D中绘图有点困难 - 但同样适用于2个参数)(假设z
的值越高越好)
如上所述,没有办法预测功能是否会跳跃,或者它会发生在哪里。
或者连续性可能会少得多:
如果您只想要z
的合适值,则不一定是最佳值:
你可以检查几个值(随机地,沿着一些增量,例如检查1.1,1.2,1.3等,或者用其他方法),并希望得到z
的正确值。 / p>
但是,由于上面显示的情况,我们无法保证 - 您可能最终得到的价值远远超过最优价值。
答案 1 :(得分:0)
如果没有关于功能f
的任何其他信息,例如smooth function
,只有蛮力才能找到解决方案。它将是100%正确的解决方案。
任何其他尝试并不比随机选择X和Y更好,因为不会给予任何保证。
因此,如果您找到解决方案的时间比其有效性更重要,那么最佳解决方案是随机选择X和Y.
答案 2 :(得分:0)
首先,只有200 * 100可能值,蛮力将获得快速100%准确的答案。我认为没有理由进一步优化它(除非这是在紧密的循环中完成的,或者可能在以后需要更高的尺度)
但是,如果您的问题可能会扩大,并且由于我们正在讨论“可能最大”(而不是最大限度)值,一种方法可能是在某些点采样数据,并执行 {{3在这个范围内估算数据的行为。
假设它背后有一些理性(可能会或可能不会) - 你会得到一条与你的数据非常接近的曲线。
之后 - 使用通用方法(派生词)来找到局部最大值(并从中得到全局最大值)。
虽然这不是100%准确,但它会让你接近最大值,假设数据分离背后有理性。