有没有办法在Matlab中为变量添加扰动?

时间:2011-04-30 22:27:45

标签: matlab minimize

我有一个名为101x82的{​​{1}}大小矩阵。我正在尝试最小化目标函数A,其值使用obj_fun间接计算。

现在为了尽量减少这个目标函数A,我需要扰乱obj_fun的值。我想检查A是否会降低值。如果没有,那么我需要干扰/更改obj_fun的值到某个百分比,以便最小化A。继续扰动/更改obj_fun的值,直到我们得到最小值A。在任何扰动之前我的平均值obj_fun是~1.1529e + 003。

有没有人建议我该怎么做?另外,我关心速度,即方法/算法不应该太慢。感谢。

1 个答案:

答案 0 :(得分:2)

您可以将随机高斯噪声添加到A

A = 0; % seed value for A with something more interesting than 0
best = obj_fun(A);

for iter = 1:max_iter % max_iter should be the maximum number of iterations
  newA = A + normrnd(0, 1, size(A));
  newObj = obj_fun(A);
  if( newObj < best )
    best = newObj;
    A = newA;
  end
end