主要内容

optimvalues

为优化问题创造价值

自从R2022a

描述

例子

瓦尔= optimvalues (概率dataname1、dataval1…)创建一个OptimizationValues对象。概率.通过使用名称-值参数指定所有变量名及其相关值,以及可选的目标值或约束值。例如,要指定x从1到99取奇数,

Val = optimvalues(prob,x=1:2:99);

使用瓦尔的初始点或初始总体概率

例子

全部折叠

为…创建初始点遗传算法(遗传算法求解器)中基于问题的方法,创建一个OptimizationValues对象使用optimvalues

用Rosenbrock函数作为适应度(目标)函数,为二维问题创建优化变量。

X = optimvar(“x”下界= 5,UpperBound = 5);Y = optimvar(“y”下界= 5,UpperBound = 5);Rosenbrock = (10*(y - x.^2))。^2 + (1-x) ^2;prob = optimproblem(目标=rosenbrock);

在边界内随机创建100个2-D点。这些点必须是行向量。

rng默认的%用于再现性Xval = -5 + 10*兰特(1100);Yval = -5 + 10*兰特(1100);

创建初始点值对象。因为不计算适应度值,所以值显示为在显示中。

Vals = optimvalues(prob,x=xval,y=yval)
变量属性:x:[3.1472 4.0579 -3.7301 4.1338 1.3236 -4.0246 -2.2150 0.4688 4.5751 4.6489 -3.4239 4.7059 4.5717 -0.1462 3.0028 -3.5811 -0.7824 4.1574 2.9221 4.5949 1.5574 -4.6429 3.4913 4.3399 1.7874 2.5774 2.4313 -1.0777 1.5548 -3.2881 2.0605…y:[-3.3782 2.9428 -1.8878 0.2853 -3.3435 1.0198 -2.3703 1.5408 1.8921 2.4815 -0.4946 -4.1618 -2.7102 4.1334 -3.4762 3.2582 0.3834 4.9613 -4.2182 -0.5732 -3.9335 4.6190 -4.9537 2.7491 3.1730 3.6869 -4.1556 -1.0022 -2.4013 3.0007 -0.6859…]客观特性:目的:[南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南南……]

解决问题的方法遗传算法从起点开始瓦尔斯.集遗传算法人口为100的选项。

Opts = optimoptions(“遗传算法”PopulationSize = 100);[sol,fv] = solve(问题,vals,求解器=“遗传算法”,选择=选择)
用遗传算法求解问题。优化终止:适应度值的平均变化小于options.FunctionTolerance。
索尔=带字段的结构:X: 1.0000 y: 1.0000
Fv = 4.1061e-09

遗传算法返回一个非常接近真实解的解X = 1 y = 1附近的适应度值0

为…创建初始点surrogateopt在基于问题的方法中,创建一个OptimizationValues对象使用optimvalues

以Rosenbrock函数为目标函数,为二维问题创建优化变量。

X = optimvar(“x”下界= 5,UpperBound = 5);Y = optimvar(“y”下界= 5,UpperBound = 5);Rosenbrock = (10*(y - x.^2))。^2 + (1 - x) ^2;prob = optimproblem(目标=rosenbrock);

创建约束条件,使解在以原点为半径2的圆盘上,并位于直线y = 1 + x以下。

圆盘= x^2 + y^2 <= 2^2;probe . constraints .disc =磁盘;直线= y <= 1 + x;probo . constraints .line = line;

在边界内随机创建40个2-D点。这些点必须是行向量。

rng默认的%用于再现性N = 40;xval = -5 + 10*rand(1,N);yval = -5 + 10*rand(1,N);

求随机点上的Rosenbrock函数。函数值必须是行向量。该步骤是可选的。如果不提供函数值,surrogateopt求各点上的目标函数值(xval yval).当您有函数值时,可以通过将值作为数据提供来节省求解器的时间。

fval = 0 (1,N);i = 1:N p0 = struct(“x”xval(我),“y”yval(我));Fval (i) = evaluate(rosenbrock,p0);结束

评估点上的约束条件。约束值必须是行向量。该步骤是可选的。如果不提供约束值,surrogateopt计算点上的约束函数(xval yval)

= 0 (1,N);lineval = 0 (1,N);i = 1:N p0 = struct(“x”xval(我),“y”yval(我));Discval (i) =不可行(disc,p0);Lineval (i) = in可行性(线,p0);结束

创建初始点值对象。

vals =优化值(prob,x=xval,y=yval,Objective=fval,disc=discval,line=lineval)
变量属性:x:[3.1472 4.0579 -3.7301 4.1338 1.3236 -4.0246 -2.2150 0.4688 4.5751 4.6489 -3.4239 4.7059 4.5717 -0.1462 3.0028 -3.5811 -0.7824 4.1574 2.9221 4.5949 1.5574 -4.6429 3.4913 4.3399 1.7874 2.5774 2.4313 -1.0777 1.5548 -3.2881 2.0605…y:[-0.6126 -1.1844 2.6552 2.9520 -3.1313 -0.1024 -0.5441 1.4631 2.0936 2.5469 -2.2397 1.7970 1.5510 -3.3739 -3.8100 -0.0164 4.5974 -1.5961 0.8527 -2.7619 2.5127 -2.4490 0.0596 3.9090 4.5929 0.4722 -3.6138 -3.5071 -2.4249 3.4072…]目标属性:目标:[1.1067e+04 3.1166e+04 1.2698e+04 1.9992e+04 2.3846e+03 2.6593e+04 2.9811e+ 04 3.6362e+04 1.9515e+04 4.1421e+04 3.7452e+04 1.1541e+03 1.6457e+04 1.5914e+03 3.5654e+04 5.9109e+ 04 5.9109e+03 5.7015e+04 1.0703…]约束属性:磁盘:[6.2803 13.8695 16.9638 21.8023 7.5568 12.2078 1.2024 0 21.3146 24.0987 12.7394 21.3751 19.3057 7.4045 19.5331 8.8248 17.7486 15.8313 5.2656 24.7413 4.7390 23.5542 8.1927 18.7982 14.4752 23.7379 2.1343 10.2207 10.7168 12.6920 11.8543…]线:[0 0 5.3853 0 0 2.9222 0.6709 0 0 0 0.1841 0 0 0 0 2.5648 4.3798 0 0 0 0 1.1938 0 0 1.1217 1.0155 0 0 0 0 0.3467 1.2245 4.3736 0.9735 7.3213 0 0 0 0 0 3.3884]

解决问题的方法surrogateopt从起点开始瓦尔斯

[sol,fv] = solve(问题,vals,求解器=“surrogateopt”
使用代理解决问题。

图优化图函数包含一个轴对象。标题为Best Function Value的axes对象:0.0185996,xlabel Iteration, ylabel Function Value包含2个line类型的对象。其中一行或多行仅使用标记显示其值。这些对象表示最佳函数值(不可行)、最佳函数值。

surrogateopt停止,因为它超过了'options.MaxFunctionEvaluations'设置的函数计算限制。
索尔=带字段的结构:X: 0.8637 y: 0.7455
Fv = 0.0186

surrogateopt返回一个接近真实解的解X = 1 y = 1附近有一个目标函数值0

输入参数

全部折叠

优化问题,指定为OptimizationProblem对象。创建概率使用optimproblem

从…获得有用的输出optimvalues,您还必须在名称-值参数中包含一些数据。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

例子:Val = optimvalues(x=xvals,y=yvals)

指定为实双数组的变量、命名目标或命名约束的数据。指定变量的所有数据名称。目标和约束函数名是可选的。

当你指定造船点,每个点的值dataname参数必须具有以下维度。

prob.property.name 大小(价值)
标量或向量 元素个数(prob.property.name)——- - - - - -造船
矩阵或数组 大小(prob.property.name)——- - - - - -造船

特别是,如果dataname是向量,它的值是多少dataname参数是一个矩阵造船列。例如,如果“x”变量是长度为2的行向量,并且造船是3,然后“x”变量规范可能是:

Val = optimvalues(问题,“x”,[1 2 3;4 5 -6]);

这个规范意味着“x”取三个值(1、4)(2、5),(3、6)

例子:对于标量“x”两元行向量“y”Nval = 2Val = optimvalues(prob,x=[5,3],y=[1 2;3 4]).输出瓦尔有两个值:X = 5, y = [1 3]而且X = 3, y = [2 4]

数据类型:

未命名目标函数的值,指定为实双数组。值的大小与中相同dataname

针对优化问题,可以通过以下两种方式指定多个目标函数的值:

  • 客观的优化问题的属性是一个函数句柄,函数在其中返回一个向量或数组。在本例中,将值指定为矩阵。矩阵的每一行表示一个目标在各个点上的值。每一列表示不同目标在某一点上的值。

  • 客观的优化问题的属性具有多个命名目标。在本例中,为每个已命名的目标指定值,将其名称作为dataname论点。

这些解算器使用任何提供的目标函数值:

  • 遗传算法

  • gamultiobj

  • paretosearch

  • surrogateopt

例子:为了一个目标和两点,val = optimvalues(概率,x =[3,5],客观= [exp (3) + 1, exp (5) 1])

数据类型:

未命名约束函数的值,指定为实双数组。值的大小与中相同dataname

针对优化问题,可以通过两种方式指定多个约束函数的值:

  • 约束属性的优化问题是一个函数句柄,函数在其中返回一个数组。在本例中,将值指定为比函数返回值多一个维度的数组。

  • “约束”属性的优化问题具有多个命名约束。在本例中,使用命名约束的名称作为dataname论点。

这些解算器使用任何提供的非线性约束函数值:

  • paretosearch

  • surrogateopt

这些解算器确保线性约束在所有迭代或所有种群成员中都得到满足:

  • 遗传算法

  • gamultiobj

  • paretosearch

  • patternsearch

  • surrogateopt

例子:对于两点和三个约束条件,val = optimvalues(概率,x =[3,5],客观= [exp (3) + 1, exp(5) 1],约束= [4 5;7 2;0.2 12])

数据类型:

输出参数

全部折叠

点和函数值,作为向量返回OptimizationValues对象。向量有造船条目,造船点数是多少瓦尔

版本历史

R2022a中引入