主要内容

指定起始点MultiStart,具体问题具体分析

在解决问题时使用MultiStart在基于问题的方法中,您可以使用以下一种或两种技术指定起始点:

  • 创建一个矢量OptimizationValues对象使用optimvalues函数。传递这个向量作为x0参数解决

  • 设置MinNumStartPoints调用时的名称值参数解决.如果MinNumStartPoints超过的点数x0,然后解决在问题边界内随机创建额外的点。

初始点向量

对于本例,创建初始点向量作为变量的网格x由-10到10的整数值组成,并为变量y的半整数值组成5/2通过5/2.的optimvalues函数需要一个问题,所以用目标函数创建一个优化问题山峰(x, y)

你必须指定点optimvalues这样,点数的维度(索引)是最后的。例如,给出一个标量的多个值tn点,指定

t 1 t 2 t n 这是1 × -n,n是最后一个索引。)

给出一个向量变量的多个值w指定长度为2的

w 1 , 1 w 1 , 2 w 1 , 3. w 1 , n w 2 , 1 w 2 , 2 w 2 , 3. w 2 , n 这是2乘-n,n是最后一个索引。)

这个规则对行向量也成立。换句话说,您指定多个行向量,就像每个行向量都是列向量一样。

给出一个矩阵的多个值一个这是2 × 3

一个 1 , 1 , 1 一个 1 , 2 , 1 一个 1 , 3. , 1 一个 2 , 1 , 1 一个 2 , 2 , 1 一个 2 , 3. , 1 一个 1 , 1 , 2 一个 1 , 2 , 2 一个 1 , 3. , 2 一个 2 , 1 , 2 一个 2 , 2 , 2 一个 2 , 3. , 2 一个 1 , 1 , n 一个 1 , 2 , n 一个 1 , 3. , n 一个 2 , 1 , n 一个 2 , 2 , n 一个 2 , 3. , n (这是2 × 3 ×n,n是最后一个索引。)

在本例中,确保指定了标量变量的多个值x而且y作为行向量,在标量中t的例子。

X = optimvar(“x”下界= -10,UpperBound = 10);Y = optimvar(“y”下界= 5/2 UpperBound = 5/2);prob = optimproblem(Objective=peaks(x,y));Xval = -10:10;Yval = (-5:5)/2;[x0x,x0y] = meshgrid(xval,yval);将x0x和x0y转换为最佳值的行向量X0 = optimvalues(prob,x=x0x(:)',y=x0y(:)');

从所有点开始求解最小值问题x0

ms = MultiStart;[sol,fval,eflag,output] = solve(prob,x0,ms)
使用MultiStart解决问题。MultiStart从所有起始点完成运行。所有231次本地求解器运行都汇聚了一个正的本地求解器出口标志。
索尔=带有字段的结构:X: 0.2283 y: -1.6255
Fval = -6.5511
eflag = localminimumfoundalldc
输出=带有字段的结构:funcCount: 2230 localSolverTotal: 231 localSolverSuccess: 231 localSolverIncomplete: 0 localSolverNoSolution: 0 message: 'MultiStart从所有起始点....完成运行' local: [1x1 struct] objectiveDerivative: "reverse-AD" constraintDerivative: "auto" globalSolver: " MultiStart " solver: " fmincon "

随机起点

再次解决问题,这次使用MultiStart从25个随机初始点开始。设置初始点解决[1,2]

init。x= -1; init.y = 2; rng默认的%用于重现性[sol2,fval2,eflag2,output2] = solve(prob,init,ms,MinNumStartPoints=25)
使用MultiStart解决问题。MultiStart从所有起始点完成运行。所有25次本地求解器运行都汇聚了一个正的本地求解器出口标志。
sol2 =带有字段的结构:X: 0.2283 y: -1.6255
Fval2 = -6.5511
eflag2 = localminimumfoundalldc
output2 =带有字段的结构:funcCount: 161 localSolverTotal: 25 localSolverSuccess: 25 localSolverIncomplete: 0 localSolverNoSolution: 0 message: 'MultiStart从所有起始点....完成运行' local: [1x1 struct] objectiveDerivative: "reverse-AD" constraintDerivative: "auto" globalSolver: " MultiStart " solver: " fmincon "

这一次,MultiStart从25个伪随机初始点开始运行。解和以前一样。

另请参阅

||

相关的话题

Baidu
map