Смешано-целочисленная суррогатная оптимизация

В этом примере показано, как решить задачу оптимизации, которая включает целочисленные переменные. Начинаясь в R2019b, surrogateopt принимает целочисленные ограничения. В этом примере найдите точку x это минимизирует multirosenbrock функционируйте по аргументам с целочисленным знаком в пределах от –3 к 6 в десяти размерностях. multirosenbrock функция является плохо масштабированной функцией, которая затрудняет, чтобы оптимизировать. Его минимальное значение 0, который достигнут в точке [1,1,...,1].

rng(1,'twister') % For reproducibility
nvar = 10; % Any even number
lb = -3*ones(1,nvar);
ub = 6*ones(1,nvar);
fun = @multirosenbrock;
intcon = 1:nvar; % All integer variables
[sol,fval] = surrogateopt(fun,lb,ub,intcon)

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
sol = 1×10

     1     1     0     0     0     0     1     1    -1     1

fval = 6

В этом случае, surrogateopt не находит правильное решение.

Смотрите также

Похожие темы