在不确定性下查找函数的最大值

时间:2012-06-02 15:41:52

标签: perl artificial-intelligence max

我有三个值X,Y和Z.这些值的范围介于0和1之间(包括0和1)。 当我调用函数f(X,Y,Z)时,它返回一个值V(0到1之间的值)。我的目标是选择X,Y,Z,使返回值V尽可能接近1。

选择过程应该是自动化的,X,Y,Z的正确值是未知的。

由于我的用例,可以将Y和Z设置为1(值1对输出没有任何影响)并搜索X的最佳值。 之后,我可以用该值替换X,并对Y执行相同的操作。对Z.

执行相同的过程

如何找到“功能的最大值”?是否有某种“渐变下降”或爬山算法或类似的东西? 整个模块是用perl编写的,所以也许有一个可以解决这个问题的perl软件包?

2 个答案:

答案 0 :(得分:2)

您可以使用模拟退火。它是一种多变量优化技术。它还用于获取旅行销售员问题的部分解决方案。它是彼得·诺维格(Peter Norvig)的“人工智能”(Intro to AI book)中提到的搜索算法之一。

它的爬山算法取决于随机变量。此外,它不一定会给你“最佳”答案。您还可以根据计算/时间需求改变它所需的迭代次数。

http://en.wikipedia.org/wiki/Simulated_annealing http://www1bpt.bridgeport.edu/sed/projects/449/Fall_2000/fangmin/chapter2.htm

答案 1 :(得分:1)

我建议你看一下实现 Nelder-Mead方法Math::Amoeba来找到函​​数上的静止点。