主要内容

福格拉坦

解决多目标目标实现问题

描述

福格拉坦解决目标实现问题,一个最小化多目标优化问题的公式。

福格拉坦查找指定问题的最小值

最小化 x γ γ 以致 F x 重量 γ 目标 c x 0 c e x 0 一个 x b 一个 e x b e l b x u b

重量目标b,说真的是向量,一个Aeq矩阵,Fx),cx),量表信x)是返回向量的函数。Fx),cx),量表信x)可以是非线性函数。

x,乌兰巴托可以作为向量或矩阵传递;看到矩阵的参数

例子

x= fgoalattain (有趣的x0目标重量试图使目标函数由有趣的达到指定的目标目标通过改变x,从x0,重量为重量

传递额外的参数说明如何在必要时向目标函数和非线性约束函数传递额外参数。

例子

x= fgoalattain (有趣的x0目标重量一个b解决受不平等影响的目标实现问题* x≤b

x= fgoalattain (有趣的x0目标重量一个bAeq说真的解决受平等制约的目标实现问题Aeq * x =说真的.如果不存在不等式,集合一个= []b = []

例子

x= fgoalattain (有趣的x0目标重量一个bAeq说真的乌兰巴托有限度地解决目标实现问题x乌兰巴托.如果不存在等式,则设置Aeq = []说真的= [].如果x(我)下面是无界的,集lb(i)=-Inf;如果x(我)上面是无界的,集合乌兰巴托(i) =正无穷

如果问题的指定输入边界不一致,则输出xx0和输出fval[]

例子

x= fgoalattain (有趣的x0目标重量一个bAeq说真的乌兰巴托非LCON求解非线性不等式下的目标实现问题c (x)或平等量表(x)中定义的非LCON福格拉坦优化,c(x)≤ 0ceq(x)=0.如果不存在边界,则设置磅= []乌兰巴托= [],或两者兼而有之。

例子

x= fgoalattain (有趣的x0目标重量一个bAeq说真的乌兰巴托非LCON选择权用中指定的优化选项解决目标实现问题选择权.使用optimoptions设置这些选项。

x= fgoalattain (问题为客户解决目标实现问题问题中所描述的结构问题

例子

xfval) = fgoalattain (___,对于任何语法,返回所计算的目标函数的值有趣的在解决方案x

例子

xfval获得因子exitflag输出) = fgoalattain (___另外在解决方案处返回达到因子x,一个值exitflag的退出条件福格拉坦,结构输出提供有关优化过程的信息。

例子

xfval获得因子exitflag输出λ) = fgoalattain (___另外返回一个结构λ哪个场在解处包含拉格朗日乘数x

例子

全部折叠

考虑两个目标函数

F x 2 + x - 3. 2 5 + x 2 / 4

这个函数显然是最小化的 F 1 x x 3. ,得到值2,并使之最小化 F 2 x x 0 ,得到值5。

设定目标[3,6]和权重[1,1],从开始解决目标实现问题x0= 1。

有趣= @ (x) [2 + (- 3) ^ 2; 5 + x ^ 2/4);目标=(3、6);重量= [1];x0 = 1;x=fgoalattain(乐趣、x0、目标、重量)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x = 2.0000

找出…的价值 F x 在解决方案。

有趣的(x)
ans =2×13.0000 - 6.0000

福格拉坦准确完成目标。

目标函数为

F x 2 + x - p 1 2 5 + x - p 2 2 / 4

给你,p_1= [2,3] and p_ .2=(4 1)。目标为[3,6],权值为[1,1],线性约束为 x 1 + x 2 4

创建目标函数、目标和权重。

p_1 =(2、3);p_2 = (4 1);有趣= @ (x)[2 +规范(x-p_1) ^ 2; 5 +规范(x-p_2) ^ 2/4];目标=(3、6);重量= [1];

创建线性约束矩阵一个b代表A*x<=b

一个= [1];b = 4;

设定初始点[1,1],解决目标实现问题。

x0 = [1];x = fgoalattain(有趣,x0,目标,体重,A, b)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×22.0694 - 1.9306

找出…的价值 F x 在解决方案。

有趣的(x)
ans =2×13.1484 6.1484

福格拉坦没有达到目标。因为权重是相等的,所以解算器会以相同的比例低于每个目标。

目标函数为

F x 2 + x - p 1 2 5 + x - p 2 2 / 4

给你,p_1= [2,3] and p_ .2=(4 1)。目标是[3,6],权重是[1,1],边界是 0 x 1 3. 2 x 2 5

创建目标函数、目标和权重。

p_1 =(2、3);p_2 = (4 1);有趣= @ (x)[2 +规范(x-p_1) ^ 2; 5 +规范(x-p_2) ^ 2/4];目标=(3、6);重量= [1];

创建边界。

磅= (0,2);乌兰巴托=(3、5);

将起始点设为[1,4],解决目标实现问题。

x0 = [1,4];一个= [];无线性约束b = [];Aeq = [];说真的= [];x = fgoalattain(有趣,x0,目标,体重,A, b, Aeq,说真的,磅,乌兰巴托)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×22.6667 2.3333

找出…的价值 F x 在解决方案。

有趣的(x)
ans =2×12.8889 - 5.8889

福格拉坦超过了目标。因为权重是相等的,所以解算器会以相同的数量超额完成每个目标。

目标函数为

F x 2 + x - p 1 2 5 + x - p 2 2 / 4

给你,p_1= [2,3] and p_ .2=(4 1)。目标为[3,6],权值为[1,1],非线性约束为 x 2 4

创建目标函数、目标和权重。

p_1 =(2、3);p_2 = (4 1);有趣= @ (x)[2 +规范(x-p_1) ^ 2; 5 +规范(x-p_2) ^ 2/4];目标=(3、6);重量= [1];

非线性约束函数为norm4.m文件。

类型norm4
函数[c,ceq] = norm4(x) ceq = [];C = norm(x)^2 - 4;

为线性约束和边界创建空输入参数。

一个= [];Aeq = [];b = [];说真的= [];磅= [];乌兰巴托= [];

设初始点为[1,1],解决目标实现问题。

x0 = [1];x = fgoalattain(有趣,x0,目标,体重,A, b, Aeq,说真的,磅,乌兰巴托,@norm4)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×21.1094 - 1.6641

找出…的价值 F x 在解决方案。

有趣的(x)
ans =2×14.5778 - 7.1991

福格拉坦没有达到目标。尽管权重相等, F 1 x 距离目标3大约1.58,并且 F 2 x 与目标6相差1.2。非线性约束阻碍了求解x平等地实现目标。

通过设置选项返回迭代显示来监控目标实现解决方案过程。

选择= optimoptions (“fgoalattain”“显示”“通路”);

目标函数为

F x 2 + x - p 1 2 5 + x - p 2 2 / 4

给你,p_1= [2,3] and p_ .2=(4 1)。目标为[3,6],权值为[1,1],线性约束为 x 1 + x 2 4

创建目标函数、目标和权重。

p_1 =(2、3);p_2 = (4 1);有趣= @ (x)[2 +规范(x-p_1) ^ 2; 5 +规范(x-p_2) ^ 2/4];目标=(3、6);重量= [1];

创建线性约束矩阵一个b代表A*x<=b

一个= [1];b = 4;

为线性等式约束、边界和非线性约束创建空输入参数。

Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];

设定初始点[1,1],解决目标实现问题。

x0 = [1];x = fgoalattain(有趣,x0,目标,体重,A, b, Aeq,说真的,磅,乌兰巴托,nonlcon,选项)
达到最大线搜索定向Iter F-count因素约束steplength导数过程0 4 0 4 1 9 1 0.883 0.2813 -5.194 2.5 -0.535 1 2 14 e-09 1 3 19 24 0.1484 - 2.868 0.1452 0.883 0.005926 - 1 4 e-06 1 0.883 5 29日0.1484 - 6.839 e-13 1 0.883黑森当地最低可能的修改。约束满足。Fgoalattain停止是因为当前搜索方向的大小小于步长公差值的两倍,并且约束条件满足到约束公差值之内。
x =1×22.0694 - 1.9306

所报告的达到因子的正值表明福格拉坦没有找到满足目标的解决方案。

目标函数为

F x 2 + x - p 1 2 5 + x - p 2 2 / 4

给你,p_1= [2,3] and p_ .2=(4 1)。目标为[3,6],权值为[1,1],线性约束为 x 1 + x 2 4

创建目标函数、目标和权重。

p_1 =(2、3);p_2 = (4 1);有趣= @ (x)[2 +规范(x-p_1) ^ 2; 5 +规范(x-p_2) ^ 2/4];目标=(3、6);重量= [1];

创建线性约束矩阵一个b代表A*x<=b

一个= [1];b = 4;

设定初始点[1,1],解决目标实现问题。请求目标函数的值。

x0 = [1];[x, fval] = fgoalattain(有趣,x0,目标,体重,A, b)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×22.0694 - 1.9306
fval=2×13.1484 6.1484

目标函数值高于目标的意义福格拉坦不能满足目标。

目标函数为

F x 2 + x - p 1 2 5 + x - p 2 2 / 4

给你,p_1= [2,3] and p_ .2=(4 1)。目标为[3,6],权值为[1,1],线性约束为 x 1 + x 2 4

创建目标函数、目标和权重。

p_1 =(2、3);p_2 = (4 1);有趣= @ (x)[2 +规范(x-p_1) ^ 2; 5 +规范(x-p_2) ^ 2/4];目标=(3、6);重量= [1];

创建线性约束矩阵一个b代表A*x<=b

一个= [1];b = 4;

设定初始点[1,1],解决目标实现问题。要求目标函数、达到因子、退出标志、输出结构和拉格朗日乘子的值。

x0 = [1];[x, fval attainfactor, exitflag,输出,λ)= fgoalattain(有趣,x0,目标,重量,A, b)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×22.0694 - 1.9306
fval=2×13.1484 6.1484
attainfactor = 0.1484
exitflag = 4
输出=结构体字段:firstderopt: [] constructor: 6.7482e-13 message: '…'
λ=结构体字段:下:[2x1 double]上:[2x1 double] eqlin: [0x1 double] eqnonlin: [0x1 double] ineqlin: 0.5394 ineqnonlin: [0x1 double]

的正值获得因子表示目标未达到;你也可以通过比较看到这一点fval目标

lambda.ineqlin值为非零,表明线性不等式约束了解。

目标函数为

F x 2 + x - p 1 2 5 + x - p 2 2 / 4

给你,p_1= [2,3] and p_ .2=[4,1]。目标为[3,6],初始权重为[1,1]。

创建目标函数、目标和初始权重。

p_1 =(2、3);p_2 = (4 1);有趣= @ (x)[2 +规范(x-p_1) ^ 2; 5 +规范(x-p_2) ^ 2/4];目标=(3、6);重量= [1];

设置线性约束 x 1 + x 2 4

A = [1 1];b = 4;

从这一点着手解决目标实现问题X0 = [1 1]

x0=[1];[x,fval]=fgoalattain(乐趣,x0,目标,体重,A,b)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×22.0694 - 1.9306
fval=2×13.1484 6.1484

每个组件的fval上面是对应的成分吗目标,表示目标尚未实现。

通过设定目标来增加满足第一个目标的重要性重量(1)到一个更小的值。

重量(1)=1/10;[x,fval]=fgoalattain(乐趣,x0,目标,重量,A,b)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×22.0115 - 1.9885
fval=2×13.0233 - 6.2328

现在fval(1)更接近于目标(1),而fval(2)是远离目标(2)

改变目标(2)到7,在当前的解决方案之上。解决方案的变化。

目标(2)= 7;[x, fval] = fgoalattain(有趣,x0,目标,体重,A, b)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×21.9639 - 2.0361
fval=2×12.9305 - 6.3047

这两个组件的fval是否小于对应的分量目标.但fval(1)更接近于目标(1)fval(2)目标(2).当目标无法实现时,较小的权重更有可能使其组成部分近乎满足,但当目标可以实现时,过度成就的程度就会降低。

将权重改为相等。的fval结果与目标的距离是一样的。

重量(2)= 1/10;[x, fval] = fgoalattain(有趣,x0,目标,体重,A, b)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×21.7613 - 2.2387
fval=2×12.6365 - 6.6365

约束可以保留结果fval从同样接近目标。例如,设置上限为2x (2)

乌兰巴托=[正无穷,2];磅= [];Aeq = [];说真的= [];[x, fval] = fgoalattain(有趣,x0,目标,体重,A, b, Aeq,说真的,磅,乌兰巴托)
可能的局部最小值。满足约束。fgoalattain已停止,因为当前搜索方向的大小小于步长公差值的两倍,并且约束满足在约束公差值范围内。
x =1×22.0000 - 2.0000
fval=2×13.0000 - 6.2500

在这种情况下,fval(1)完全符合它的目标,但是fval(2)这比它的目标还小。

输入参数

全部折叠

目标函数,指定为函数句柄或函数名称。有趣的是一个接受向量的函数x返回一个向量F,目标函数的取值为x。您可以指定该函数有趣的函数文件的句柄:

x = fgoalattain (@myfun x0,目标,重量)

在哪里myfunMATLAB是一种®等功能

函数F = myfun(x)…%计算函数在x处的值。

有趣的也可以是匿名函数的函数句柄:

x = fgoalattain (@ (x) sin (x) * x), x0,目标,重量);

的用户定义值xF是数组,福格拉坦使用线性索引将它们转换为向量(参见数组索引).

为了使目标函数尽可能接近一个目标值(即既不大于也不小于),请使用optimoptions设置EqualityGoalCount选择的目标数量需要在目标值的附近。这样的目标必须被分割成向量的第一个元素F返回的有趣的

假设目标函数的梯度也可以计算出来SpecifyObjectiveGradient选择是真正的,按下列规定:

选择= optimoptions(‘fgoalattain’,‘SpecifyObjectiveGradient’,真的)

在本例中,函数有趣的必须在第二个输出参数中返回渐变值G(a)在x.梯度由偏导数组成dF / dx每一个F当时x.如果F是长度的向量x长度n,在哪里n为长度x0,然后是梯度GF (x)是一个n-借-矩阵G (i, j)是的偏导数F (j)关于x(我)(即jth列G梯度是j目标函数F (j)).

设置SpecifyObjectiveGradient真正的是只有当问题没有非线性约束时才有效,还是问题有非线性约束时有效SpecifyConstraintGradient设置为真正的.在内部,目标被折叠到约束中,因此求解器需要同时提供梯度(目标和约束),以避免估计梯度。

数据类型:烧焦|一串|function_handle

初始点,指定为实向量或实数组。解算器使用元素的数量x0大小x0来确定变量的数量和大小有趣的接受。

例子:x0 =(1、2、3、4)

数据类型:双重的

目标要达到,指定为真正的矢量。福格拉坦试图找到最小的乘数γ这使得这些不平等适用于所有的值在解决方案x

F x 目标 重量 γ

假设重量为正向量:

  • 如果求解器找到一个点x同时实现所有目标,然后是实现因素γ是消极的,目标是超额完成的。

  • 如果解算器找不到一个点x同时实现所有目标,然后是实现因素γ是积极的,但目标没有实现。

例子:(1 3 6)

数据类型:双重的

相对达到因子,指定为实向量。福格拉坦试图找到最小的乘数γ这使得这些不平等适用于所有的值在解决方案x

F x 目标 重量 γ

目标所有非零,以确保未完成或超额完成积极目标的百分比相同,设定重量abs(目标).(活动目标是阻碍进一步改进解决方案目标的一组目标。)

的组件重量向量归零导致相应的目标约束被视为硬约束而不是目标约束。设置硬约束的另一种方法是使用输入参数非LCON

重量是正的,福格拉坦试图使目标函数小于目标值。使目标函数大于目标值,设置重量是消极的而不是积极的。要查看权重对解决方案的某些影响,请参见权重、目标和约束对目标实现的影响

要使目标函数尽可能接近目标值,请使用EqualityGoalCount选项,并将目标指定为返回的向量的第一个元素有趣的(见有趣的选择权).例如,请参见多目标目标实现优化

例子:abs(目标)

数据类型:双重的

线性不等式约束,指定为实矩阵。一个是一个-借-N矩阵,在哪里是不平等的数量,和N是变量的数量(元素的数量x0).对于大问题,请通过一个作为一个稀疏矩阵。

一个编码线性不等式

A*x<=b

在哪里x列向量是N变量x (:),b是一个具有元素。

例如,指定

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30日

输入以下约束条件:

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:要指定x分量的和为1或更小,请使用一个= 1 (1,N)b = 1

数据类型:双重的

线性不等式约束,指定为实向量。b是一个元素向量相关的一个矩阵。如果你通过b作为行向量,求解器内部转换b到列向量b (:).对于大问题,不予考虑b作为一个稀疏向量。

b编码线性不等式

A*x<=b

在哪里x列向量是N变量x (:),一个矩阵的大小是多少-借-N

例如,考虑一下这些不平等:

x1+ 2x2≤10
3.x1+ 4x2≤20
5x1+ 6x2≤30。

通过输入以下约束来指定不等式。

= [1, 2, 3, 4, 5, 6);b =(10、20、30);

例子:要指定x分量的和为1或更小,请使用一个= 1 (1,N)b = 1

数据类型:双重的

线性等式约束,指定为实矩阵。Aeq是一个-借-N矩阵,在哪里是相等数,并且N是变量的数量(元素的数量x0).对于大问题,请通过Aeq作为一个稀疏矩阵。

Aeq编码线性等式

Aeq * x =说真的

在哪里x列向量是N变量x (:),说真的是一个具有元素。

例如,指定

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20,

输入以下约束条件:

Aeq =[1、2、3、2、4、1];说真的=(10、20);

例子:要指定x分量的和为1,使用Aeq = 1 (1, N)说真的= 1

数据类型:双重的

线性等式约束,指定为实向量。说真的是一个元素向量相关的Aeq矩阵。如果你通过说真的作为行向量,求解器内部转换说真的到列向量贝基(:).对于大问题,不予考虑说真的作为一个稀疏向量。

说真的编码线性等式

Aeq * x =说真的

在哪里x列向量是N变量x (:),Aeq矩阵的大小是多少-借-N

例如,考虑以下等式:

x1+ 2x2+ 3x3.= 10
2x1+ 4x2+x3.= 20.

通过输入以下约束来指定相等项。

Aeq =[1、2、3、2、4、1];说真的=(10、20);

例子:要指定x分量的和为1,使用Aeq = 1 (1, N)说真的= 1

数据类型:双重的

下界,指定为实向量或实数组。如果元素的数量x0等于中的元素数,然后指定

x(我)> =磅(我)总的来说

如果努美尔(磅)<努美尔(x0),然后指定

x(我)> =磅(我)1 <= I <= numel(lb)

如果元素较少比在x0,解算器发出警告。

例子:要指定所有x分量都是正数,请使用lb=零(尺寸(x0))

数据类型:双重的

上界,指定为实向量或实数组。如果元素的数量x0等于中的元素数乌兰巴托,然后乌兰巴托指定

x (i) < =乌兰巴托(我)总的来说

如果元素个数(乌兰巴托)<元素个数(x0),然后乌兰巴托指定

x (i) < =乌兰巴托(我)1<=i<=numel(ub)

如果元素较少乌兰巴托比在x0,解算器发出警告。

例子:要指定所有x分量都小于1,使用乌兰巴托= 1(大小(x0))

数据类型:双重的

非线性约束,指定为函数句柄或函数名。非LCON是接受向量还是数组的函数x并返回两个数组,c (x)量表(x)

  • c (x)非线性不等式约束数组在x福格拉坦试图满足

    c(x)<=0的所有条目c

  • 量表(x)数组的非线性等式约束在x福格拉坦试图满足

    ceq(x)=0的所有条目量表信

例如,

x=fgoalattain(@myfun,x0,…@mycon)

在哪里mycon是一个MATLAB函数,如:

函数[c,ceq] = mycon(x)%计算非线性不等式在x. ceq =…计算x处的非线性等式。

假设约束的梯度也可以计算出来SpecifyConstraintGradient选择是真正的,按下列规定:

选择= optimoptions(‘fgoalattain’,‘SpecifyConstraintGradient’,真的)

在本例中,函数非LCON必须在第三和第四个输出参数中返回,GC,梯度c (x),GCeq,梯度量表(x).看非线性约束有关如何将梯度“条件化”,以便在不接受已提供梯度的求解器中使用。

如果非LCON返回一个向量c组件和x长度n,在哪里n为长度x0,然后是梯度GCc (x)是一个n-借-矩阵,在哪里GC (i, j)是的偏导数c(j)关于x(我)(即jth列GC梯度是jth不等式约束c(j)).同样地,如果量表信p组件,梯度GCeq量表(x)是一个n-借-p矩阵,在哪里GCeq (i, j)是的偏导数行政长官(j)关于x(我)(即jth列GCeq梯度是jth等式约束行政长官(j)).

设置SpecifyConstraintGradient真正的只有在下列情况下才有效SpecifyObjectiveGradient被设置为真正的.在内部,目标被折叠到约束中,因此求解器需要同时提供梯度(目标和约束),以避免估计梯度。

因为最优化工具箱™函数只接受类型的输入双重的,用户提供的目标和非线性约束函数必须返回类型的输出双重的

看到传递额外的参数有关如何参数化非线性约束函数的说明非LCON,如果必要的。

数据类型:烧焦|function_handle|一串

的输出,指定为优化选项optimoptions或者一个结构optimset返回。

控件中缺少一些选项optimoptions显示。这些选项在下表中以斜体显示。有关详细信息,请参见视图选项

有关具有不同名称的选项的详细信息optimset,请参阅当前和旧选项名称

选项 描述
ConstraintTolerance

约束违背的终止容限,一个正标量。默认值是1 e-6.看公差和停止标准

optimset,名字是托尔康

诊断

显示关于要最小化或解决的功能的诊断信息。的选择是“上”“关闭”(默认)。

DiffMaxChange

有限差分梯度(正标量)变量的最大变化。默认值为

DiffMinChange

有限差分梯度(正标量)变量变化的最小值。默认值是0

显示

显示水平(见迭代显示):

  • “关闭”“没有”显示没有输出。

  • “通路”在每次迭代时显示输出,并给出默认退出消息。

  • “iter-detailed”在每次迭代时显示输出,并给出技术退出消息。

  • “通知”仅在函数不收敛时显示输出,并给出默认退出消息。

  • “通知详细信息”仅当功能不收敛时显示输出,并给出技术退出消息。

  • “最后一次”(默认)仅显示最终输出,并给出默认退出消息。

  • 最后详细的只显示最终输出,并给出技术性退出消息。

EqualityGoalCount

目标所需的目标数量有趣的达到目标目标(非负整数)。这些目标必须划分为F.默认值是0.例如,请参见多目标目标实现优化

optimset,名字是GoalsExactAchieve

FiniteDifferenceStepSize

有限差分的标量或向量步长因子。当您设置FiniteDifferenceStepSize一个向量v,正有限差分δ

δ= v *标志的(x) *马克斯(abs (x)、TypicalX);

在哪里符号“(x) =符号(x)除了标志' (0)= 1. 中心有限差分是

δ= v *马克斯(abs (x)、TypicalX);

标量FiniteDifferenceStepSize展开成一个向量。默认值是sqrt (eps)对于正向有限差分,和eps ^ (1/3)对于中心有限差分。

optimset,名字是FinDiffRelStep

FiniteDifferenceType

用于估计梯度的有限差分类型“前进”(默认),或“中央”(中心)。“中央”需要两倍的函数求值,但通常更准确。

该算法在估计两种类型的有限差分时小心地遵守边界。例如,它可能会采取后退一步,而不是向前一步,以避免在边界外的一个点上计算。

optimset,名字是FinDiffType

FunctionTolerance

函数值的终止公差(一个正标量)。默认值是1 e-6.看公差和停止标准

optimset,名字是TolFun

FunValCheck

检查表示目标函数和约束值是否有效。“上”当目标函数或约束返回复杂值时显示错误,,或.默认的“关闭”显示没有错误。

MaxFunctionEvaluations

允许的最大函数求值数(一个正整数)。默认值是100 * numberOfVariables.看公差和停止标准迭代和功能计数

optimset,名字是MaxFunEvals

MaxIterations

允许的最大迭代次数(正整数)。默认值是400.看公差和停止标准迭代和功能计数

optimset,名字是麦克斯特

MaxSQPIter

允许的最大SQP迭代次数(正整数)。默认值是10*max(numberOfVariables, numberoffinequalities + numberOfBounds)

MeritFunction

如果该选项设置为“multiobj”(默认设置),使用目标达成价值函数。如果此选项设置为“singleobj”,可以使用fmincon价值函数。

OptimalityTolerance

一阶最优性的终止容限(正标量)。默认值是1 e-6.看一阶最优性测量

optimset,名字是TolFun

OutputFcn

优化函数在每次迭代时调用的一个或多个用户定义函数。传递一个函数句柄或函数句柄的单元格数组。默认为none ([]).看到输出函数和绘图函数语法

PlotFcn

显示算法执行过程中各种进度的图。从预定义的情节中选择或编写您自己的。传递名称、函数句柄或由名称或函数句柄组成的单元数组。对于定制的绘图函数,传递函数句柄。默认为none ([]).

  • “optimplotx”绘制当前点。

  • “optimplotfunccount”绘制函数计数。

  • “optimplotfval”绘制目标函数值。

  • “optimplotconstrviolation”绘制最大约束违背。

  • “optimplotstepsize”绘制步长。

自定义绘图函数使用与输出函数相同的语法。看到优化工具箱的输出函数输出函数和绘图函数语法

optimset,名字是PlotFcns

RelLineSrchBnd

直线搜索步长上的相对界(一个实非负标量值),使总位移在x满足x)|≤relLineSrchBnd·max(| . b0x) | |typicalx) |).该选项提供了对位移大小的控制x当解算器采取过大的步骤时。默认值为“无”([]).

RelLineSrchBndDuration

中指定的边界所对应的迭代次数RelLineSrchBnd应该是主动的。默认值是1

SpecifyConstraintGradient

由用户定义的非线性约束函数的梯度。当此选项设置为时真正的福格拉坦期望约束函数有四个输出,如非LCON.当此选项设置为时(默认),福格拉坦使用有限差分估计非线性约束的梯度。

optimset,名字是GradConstr这些值是“上”“关闭”

SpecifyObjectiveGradient

由用户定义的目标函数的梯度。参考的描述有趣的查看如何定义渐变。将此选项设置为真正的福格拉坦使用用户定义的目标函数梯度。默认的,,使福格拉坦使用有限差分估计梯度。

optimset,名字是格拉多布这些值是“上”“关闭”

阶跃公差

终止上公差x(积极的标量)。默认值是1 e-6.看公差和停止标准

optimset,名字是TolX

TolConSQP

内部迭代SQP约束冲突的终止容差(正标量)。默认值为1 e-6

TypicalX

典型的x值。元素的数量TypicalX等于中的元素数x0,起点。默认值为一(numberofvariables,1).的福格拉坦函数使用TypicalX为梯度估计缩放有限差分。

UseParallel

表示并行计算。什么时候?真正的福格拉坦平行估计梯度。默认值是.看并行计算

例子:optimoptions(“fgoalattain”、“PlotFcn”、“optimplotfval”)

问题结构,指定为具有此表中的字段的结构。

字段名 入口

客观的

目标函数有趣的

x0

初始点x

目标

目标的实现

重量

目标的相对重要因素

Aineq

线性不等式约束的矩阵

bineq

线性不等式约束的向量

Aeq

线性等式约束的矩阵

说真的

线性等式约束的向量
下界向量
乌兰巴托 上界向量

非LCON

非线性约束函数

解算器

“fgoalattain”

选择权

使用创建的选项optimoptions

你必须至少提供客观的x0目标重量解算器,选择权字段问题结构。

数据类型:结构体

输出参数

全部折叠

解,返回实向量或实数组。的大小x和尺寸一样吗x0.通常,x什么时候能解决局部问题exitflag是正的。有关解决方案质量的信息,请参见当求解成功时

目标函数在解时的值,作为实数组返回。一般来说,fval有趣的(x)

成就因子,返回为实数。获得因子包含的值γ在解决方案中。如果获得因子是消极的,目标已经超额实现;如果获得因子是积极的,目标没有完全实现。看到目标

原因福格拉坦已停止,返回为整数。

1

函数收敛到一个解x

4

搜索方向的大小小于指定的公差,约束冲突小于选项。ConstraintTolerance

5

方向导数的大小小于指定的公差,且约束冲突小于选项。ConstraintTolerance

0

超过迭代次数选项。麦克斯特在我ons或者超过函数求值的次数选项。米axFunctionEvaluations

-1

被输出函数或绘图函数停止

-2

没有找到可行点。

关于优化过程的信息,作为表中字段的结构返回。

迭代

迭代次数

功能计数

功能评估的数量

lssteplength

相对于搜索方向的行搜索步长的大小

constrviolation

约束函数的最大值

stepsize

最后一次位移的长度x

算法

优化算法

第一顺序选择

一阶最优性的度量

消息

退出消息

解处的拉格朗日乘数,作为表中字段的结构返回。

较低的

下界对应于

上界对应于乌兰巴托

线性不等式

线性不等式对应于一个b

eqlin

对应的线性等式Aeq说真的

伊内克诺林

对应的非线性不等式c非LCON

埃克诺林

对应的非线性等式量表信非LCON

算法

有关福格拉坦算法和目标实现的讨论概念,见算法

选择功能

应用程序

优化活动编辑器任务为福格拉坦

扩展功能

之前介绍过的R2006a