【发布时间】:2016-05-05 03:42:57
【问题描述】:
我想计算函数 CROSS-IN-TRAY 的最大值,即 此处显示:
所以我在Matlab中做了这个函数:
function f = CrossInTray2(x)
%the CrossInTray2 objective function
%
f = 0.0001 *(( abs(sin(x(:,1)).* sin(x(:,2)).*exp(abs(100 - sqrt(x(:,1).^2 + x(:,2).^2)/3.14159 )) )+1 ).^0.1);
end
我将整个公式乘以 (-1),所以函数是反转的,所以当我要寻找反转公式的最小值时,它实际上是原始公式的最大值。
然后,当我转到优化工具并选择 GA 算法并将下限和上限定义为 -3 和 3 时,它显示了大约 60 次迭代后的结果,大约为 0.13,最终点类似于 [0, 9.34 ]。 最后一点怎么可能不在边界定义的范围内?这个函数的实际最大值是多少?
【问题讨论】:
-
您编写的使用优化工具箱找到此函数最小值的代码在哪里?它缺失了,这是错误的核心。没有它,我们不知道您为什么会收到您声称的错误。
-
我没有写任何代码。我在命令窗口中输入了 optimtool,然后选择 ga 作为求解器,定义了我之前所说的下限和上限,依此类推
-
Note: ga does not enforce bounds to be satisfied when the PopulationType option is 'bitString' or 'custom'.mathworks.com/help/gads/ga.html
标签: matlab mathematical-optimization genetic