Есть ли способ добавить возмущение к переменной в Matlab? - PullRequest
0 голосов
/ 01 мая 2011

У меня есть матрица размера 101x82, называемая A. Я пытаюсь минимизировать целевую функцию obj_fun, значение которой вычисляется косвенно с использованием A.

Теперь, чтобы минимизировать эту целевую функцию obj_fun, мне нужно возмущать значения A. Я хочу проверить, снижается ли obj_fun в значениях или нет. Если нет, то мне нужно сделать возмущение / изменить значения A на определенный процент, чтобы он минимизировал obj_fun. Продолжайте возмущать / изменять значения A, пока мы не получим минимум obj_fun. Мое среднее значение A до любого возмущения составляет ~ 1.1529e + 003.

Есть ли у кого-нибудь предложения, как я могу это сделать? Кроме того, я немного беспокоюсь о скорости, то есть метод / алгоритм не должен быть слишком медленным. Спасибо.

1 Ответ

2 голосов
/ 01 мая 2011

Вы можете добавить случайный гауссов шум к 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...