这个例子展示了如何解决一个涉及整型变量的优化问题。从R2019b开始,surrogateopt
接受整数约束。在这个例子中,找到点x
这最小化了multirosenbrock
函数在十个维度中从-3到6的整数值参数上。的multirosenbrock
函数是一个难以优化的低规模函数。其最小值为0,在该点处达到(1, 1,…,1)
.代码multirosenbrock
函数出现在这个例子到此结束.
rng (1,“旋风”)%的再现性据nvar = 10;任意偶数磅= 3 * 1(1,据nvar);乌兰巴托= 6 * 1(1,据nvar);有趣= @multirosenbrock;intcon = 1:据nvar;%所有整数变量[溶胶,fval] = surrogateopt(有趣,磅,乌兰巴托,intcon)
surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数求值限制。
索尔=1×101 1 1 1 1 1 1
fval = 0
在这种情况下,surrogateopt
找到了解决方案。
此代码创建multirosenbrock
helper函数。
函数F = multirosenbrock (x)%该函数是Rosenbrock的多维泛化%的功能。假设x是一个矩阵,它以向量化的方式运行%,其中的行是个体。版权所有:The MathWorks, Inc.N =大小(x, 2);%假设x是一个行向量或二维矩阵如果国防部(N, 2)如果N是奇数,则为%错误(“输入行必须有偶数个元素”)结束优势= 1:2:n - 1;均等的= 2:2:N;F = 0(大小(x));F(:,几率)= 1 - x(:,几率);F(:,均等的)= 10 * (x(:,均等的)- x(:,几率)。^ 2);F = (F . ^ 2, 2)总和;结束