有没有什么方法可以给Matlab中的变量添加扰动?

发布于 2024-11-04 00:24:31 字数 394 浏览 6 评论 0原文

我有一个名为 A101x82 大小矩阵。我试图最小化目标函数 obj_fun,其值是使用 A 间接计算的。

现在,为了最小化此目标函数 obj_fun,我需要扰动 A 的值。我想检查 obj_fun 的值是否下降。如果不是,那么我需要将 A 的值扰乱/更改为一定百分比,以便最大限度地减少 obj_fun。继续扰动/改变A的值,直到我们得到最小的obj_fun。在任何扰动之前,我的 A 平均值约为 1.1529e+003。

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

I have a 101x82 size matrix called A. I am trying to minimize an objective function obj_fun, whose value is computed indirectly using A.

Now in order to minimize this objective function obj_fun, I need to perturb the values of A. I want to check if obj_fun is going down in values or not. If not, then I need to do perturb/change values of A to a certain percentage such that it minimizes obj_fun. Keep on perturbing/changing values of A until we get minimum obj_fun. My average value of A before any perturbation is ~ 1.1529e+003.

Does any one have suggestion how can I do this? Also, I care a bit about speed i.e. the method/algorithm should not be too slow. Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

忘东忘西忘不掉你 2024-11-11 00:24:31

您可以向 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

You can add random Gaussian noise to 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文