Оптимизация с помощью алгоритма Matlab - Condswarm / Geneti c - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь использовать алгоритм частиц-роя / geneti c для решения проблемы максимумов. Тем не менее, функция продолжает давать мне минимумы. Как изменить его так, чтобы он нашел для максимумов.

Мой простой код выглядит следующим образом:

options = optimoptions('particleswarm','Swarmsize',100);

[x2,fval2] = particleswarm(Rmodel.predictFcn,nvar,lb,ub,options);

Rmodel - это модель линейной регрессии. Я использую его только для тестирования.

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

С https://se.mathworks.com/help/gads/particleswarm.html:

x = particleswarm(fun,nvars) пытается найти вектор x, который достигает локального минимума fun. nvars - это размер (число проектных переменных) fun.

У меня нет доступа к глобальному набору инструментов оптимизации для проверки функции частиц тепла, но если я правильно понимаю, все, что вам нужно перевернуть функцию и вместо поиска минимумов Rmodel.predictFcn вы ищите минимумы -Rmodel.predictFcn (обратите внимание на знак минус).

0 голосов
/ 27 февраля 2020

это нормально, я нашел это. В Matlab вы не можете просто использовать -Rmodel.predictFcn.

, вам нужно определить обработчик функции. например, invPredict = @ (x) -Rmodel.predictFcn (x)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...