【问题标题】:Optimization algorithm in MatlabMatlab中的优化算法
【发布时间】: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


【解决方案1】:

最大值为(0,0)(实际上,当either输入为0时,周期性地为pi的倍数)。否定后,您正在寻找一个正数的最小值。只看外部绝对值,它显然不能低于 0。当sin(x) 的任何一个值为 0 时,就会发生这种情况。 插入,你有f_min = f(0,0) = .0001(0 + 1)^0.1 = 1e-4

这个表达式在二维网格上计算和绘图很简单。这样做直到你弄清楚你在看什么,以及大概的答案应该是什么,然后才调用一个实际的优化器。 GA 听起来不太适合像这样相对平滑的表达式。您得到奇怪答案的原因是只有一个输入参数必须为 0。一旦优化器找到其中一个,另一个输入可以是任何值。

【讨论】:

    猜你喜欢
    • 2021-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 2020-08-05
    • 2015-06-04
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    相关资源
    最近更新 更多