主要内容

patternsearch

使用模式搜索查找最小函数

描述

例子

x= patternsearch (有趣的x0找到一个局部最小值,x,转换为函数句柄有趣的计算目标函数的值。x0为模式搜索算法指定初始点的实向量。

请注意

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

例子

x= patternsearch (有趣的x0一个b最小化有趣的服从线性不等式* xb.看到线性不等式约束

x= patternsearch (有趣的x0一个bAeq说真的最小化有趣的服从线性等式Aeq * x说真的* xb.如果不存在线性不等式,集合一个= []b = []

例子

x= patternsearch (有趣的x0一个bAeq说真的乌兰巴托中的设计变量定义一组上下限x,所以解总是在这个范围内x乌兰巴托.如果不存在线性等式,集合Aeq = []说真的= [].如果x(我)没有下界,集合磅(i) =负无穷.如果x(我)没有上界,集合乌兰巴托(i) =正无穷

例子

x= patternsearch (有趣的x0一个bAeq说真的乌兰巴托nonlcon将最小化为非线性不等式c (x)或平等量表(x)中定义的nonlconpatternsearch优化有趣的这样c (x)≤0量表(x) = 0.如果不存在边界,则设置磅= []乌兰巴托= [],或两者兼而有之。

例子

x= patternsearch (有趣的x0一个bAeq说真的乌兰巴托nonlcon选项最小化有趣的中的优化选项选项.使用optimoptions设置这些选项。如果没有非线性不等式或等式约束,则集合nonlcon = []

x= patternsearch (问题求最小值问题中所描述的结构问题

例子

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

例子

xfvalexitflag输出) = patternsearch (___此外回报exitflag的退出条件patternsearch,结构输出关于优化过程的信息。

例子

全部折叠

将无约束问题最小化patternsearch解算器。

创建以下两个变量的目标函数。在MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

求最小值,从这个点开始(0,0)

x0 = (0,0);x0, x = patternsearch(有趣)
优化终止:网格尺寸小于选项。网格公差。X = -0.7037 -0.1860

最小化一个受线性不等式约束的函数。

创建以下两个变量的目标函数。在MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

设置两个线性不等式约束。

一个= [3 2;4、7];b = (1; 8);

求最小值,从这个点开始[0.5, -0.5]

x0 = [0.5, -0.5];x = patternsearch(乐趣,x0, A, b)
优化终止:网格尺寸小于选项。网格公差。X = 5.2824 -1.8758

求只有有限约束条件的函数的最小值。

创建以下两个变量的目标函数。在MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

求最小值$0 \le x(1) \le\ inty $$ x(2) $ x(2) $ x(3) $

磅=(0,负);乌兰巴托=[正无穷,3];一个= [];b = [];Aeq = [];说真的= [];

求最小值,从这个点开始(1、5)

x0 =(1、5);x = patternsearch (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托)
优化终止:网格尺寸小于选项。网格公差。X = 0.1880 -3.0000

求受非线性不等式约束的函数的最小值。

创建以下两个变量的目标函数。在MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

创建非线性约束

$ $ \压裂{{xy}}{2} +{\离开({x + 2} \右)^ 2}+ \压裂{{{{\离开({y - 2} & # xA; \右)}^ 2}}}{2}\ le 2。$$

为此,在MATLAB路径上,将以下代码保存到一个名为ellipsetilt.m

函数[c,ceq] = ellipsetilt(x);C = x(1)*x(2)/2 + (x(1)+2)^2 + (x(2)-2;

开始patternsearch从起始点开始(2, 2)

x0 = (2, 2);一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = @ellipsetilt;x = patternsearch (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon)
优化终止:网格尺寸小于选项。MeshTolerance和constraint violation is less than options.ConstraintTolerance. x = -1.5144 0.0874

设置选项来观察进程patternsearch解决方案的过程。

创建以下两个变量的目标函数。在你的MATLAB®路径,将以下代码保存到名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

选项给出迭代显示,并在每次迭代中绘制目标函数。

选择= optimoptions (“patternsearch”“显示”“通路”“PlotFcn”, @psplotbestf);

从该点出发,求目标的无约束最小值(0,0)

x0 = (0,0);一个= [];b = [];Aeq = [];说真的= [];磅= [];乌兰巴托= [];nonlcon = [];x = patternsearch (Aeq有趣,x0, A, b,说真的,磅,乌兰巴托,nonlcon,选项)

Iter f-count f (x) MeshSize方法-5.88607 0 1 1 1 1 4 2成功的调查2 8 -5.88607 - 1完善网3 12 -5.88607 0.5细化网格4 16 -5.88607 - 0.25细化网格(输出修剪)63 218 -7.02545 1.907 e-06细化网格64 221 -7.02545 3.815 e-06成功调查65 225 -7.02545 1.907 e-06细化网格66 229 -7.02545 9.537 e-07细化网格优化终止:网目尺寸小于选项。网目公差。X = -0.7037 -0.1860

查找函数的最小值,并报告最小值的位置和值。

创建以下两个变量的目标函数。在MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

找到目标的无约束最小值,从点开始(0,0).返回最小值的位置,x的价值有趣的(x)

x0 = (0,0);[x, fval] = patternsearch(有趣,x0)
优化终止:网格尺寸小于选项。网格公差。X = -0.7037 -0.1860 fval = -7.0254

检查patternsearch求解过程中,获取所有输出。

创建以下两个变量的目标函数。在MATLAB®路径上,将以下代码保存到一个名为psobj.m

函数y = psobj (x) y = exp (- x (1) ^ 2 x (2) ^ 2) * (1 + 5 * x (1) + 6 * x x (1) (2) + 12 * * cos (x (2)));

设置目标函数为@psobj

有趣= @psobj;

找到目标的无约束最小值,从点开始(0,0).返回的解决方案,x,目标函数在解处的值,有趣的(x)、退出标志和输出结构。

x0 = (0,0);[x, fval exitflag、输出]= patternsearch(有趣,x0)
优化终止:网格尺寸小于选项。网格公差。x = -0.7037 -0.1860 fval = -7.0254 exitflag = 1 output = struct with fields: function: @psobj problemtype: 'unconstrained' pollmethod: ' gppositivebasis2n ' maxconstraint: [] searchmethod: [] iterations: 66 funccount: 229 meshsize: 9.5367e-07 rngstate: [1x1 struct] message: 'Optimization terminated: meshsize less than options. mesholerance .'

exitflag1,表示收敛到局部最小值。

输出结构包含诸如多少次迭代之类的信息patternsearch取了多少函数值。将输出结构与下面的结果进行比较使用非默认选项的模式搜索.在那个示例中,您获得了其中的一些信息,但是没有获得,例如,函数求值的数量。

输入参数

全部折叠

要最小化的函数,指定为函数句柄或函数名。的有趣的函数接受一个向量x并返回一个实标量f,即目标函数的取值为x

您可以指定有趣的作为文件的函数句柄

x = patternsearch (x0 @myfun)

在这里,myfun是MATLAB函数之类的

函数f = myfun(x)%计算函数在x处的值

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

x = patternsearch (@ (x)规范(x) ^ 2, x0, A, b);

例子:有趣= @ (x) sin (x (1)) * cos (x (2))

数据类型:字符|function_handle|字符串

初始点,指定为实向量。patternsearch使用中的元素数x0来确定变量的数量有趣的接受。

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

数据类型:

线性不等式约束,指定为实矩阵。一个是一个——- - - - - -据nvar矩阵,是不等式的个数。

一个编码线性不等式

A * x < =

在哪里x列向量是据nvar变量x (:),b列向量是元素。

例如,指定

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

给这些约束:

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

例子:要指定控制变量的和为1或更小,请给出约束条件一个= 1 (1,N)b = 1

数据类型:

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

b编码线性不等式

A * x < =

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

例如,指定

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

给这些约束:

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

例子:要指定控制变量的和为1或更小,请给出约束条件一个= 1 (1,N)b = 1

数据类型:

线性等式约束,指定为实矩阵。Aeq是一个——- - - - - -据nvar矩阵,是等式的个数。

Aeq编码线性等式

Aeq * x =说真的

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

例如,指定

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

给这些约束:

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

例子:要指定控制变量的和为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);

例子:要指定控制变量的和为1,请给出约束条件Aeq = 1 (1, N)说真的= 1

数据类型:

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

x(我)> =磅(我)

对所有

如果元素个数(磅)<元素个数(x0),然后指定

x(我)> =磅(我)

1 <= I <= numel(lb)

在这种情况下,求解器发出警告。

例子:要指定所有的控制变量都是正的,磅= 0(大小(x0))

数据类型:

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

x (i) < =乌兰巴托(我)

对所有

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

x (i) < =乌兰巴托(我)

1 <= I <= numel(ub)

在这种情况下,求解器发出警告。

例子:要指定所有控制变量都小于1,乌兰巴托= 1(大小(x0))

数据类型:

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

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

    c (x) < = 0

    的所有条目c

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

    量表(x) = 0

    的所有条目量表信

例如,

x = patternsearch (Aeq @myfun x0, A, b,说真的,磅,乌兰巴托,@mycon)

在哪里mycon是MATLAB函数之类的

函数[c,ceq] = mycon(x)%计算非线性不等式在x. ceq =…计算x处的非线性等式。
有关更多信息,请参见非线性约束

数据类型:字符|function_handle|字符串

的返回对象指定为优化选项optimoptions(推荐)或结构。

optimoptions中列出的选项斜体;看到Options隐藏的选项

{}表示默认值。请参阅模式搜索选项

选项patternsearchparetosearch

选项 描述

ConstraintTolerance

公差约束。

对于期权结构,请使用TolCon

积极的标量|{1 e-6}

显示

显示水平。

“关闭”|“通路”|“诊断”|{'最后'}

MaxFunctionEvaluations

目标函数求值的最大次数。

对于期权结构,请使用MaxFunEvals

正整数|{' 2000 * numberOfVariables '}patternsearch{3000 * (numberOfVariables + numberOfObjectives)}paretosearch,在那里numberOfVariables是问题变量的数量,和numberOfObjectives目标函数的个数是多少

MaxIterations

最大迭代次数。

对于期权结构,请使用麦克斯特

正整数|{' 100 * numberOfVariables '}patternsearch{100 * (numberOfVariables + numberOfObjectives)}paretosearch,在那里numberOfVariables是问题变量的数量,和numberOfObjectives目标函数的个数是多少

MaxTime

允许优化的总时间(以秒为单位)。

对于期权结构,请使用期限

积极的标量|{Inf}

MeshTolerance

网目尺寸公差。

对于期权结构,请使用TolMesh

积极的标量|{1 e-6}

OutputFcn

优化函数在每次迭代时调用的函数。指定为函数句柄或函数句柄的单元格数组。

对于期权结构,请使用OutputFcns

函数句柄或函数句柄的单元数组|{[]}

PlotFcn

模式搜索的输出图。指定为内置绘图函数、函数句柄或内置绘图函数或函数句柄名称的单元数组的名称。

对于期权结构,请使用PlotFcns

{[]}|都patternsearchparetosearch“psplotfuncount”|“psplotmaxconstr”|自定义绘制函数

paretosearch只有多个目标:“psplotdistance”|“psplotparetof”|“psplotparetox”|“psplotspread”|“psplotvolume”

patternsearch只或paretosearch只有一个目标:“psplotbestf”|“psplotmeshsize”|“psplotbestx”

PollMethod

在模式搜索中使用的轮询策略。

{' GPSPositiveBasis2N '}|“GPSPositiveBasisNp1”|“GSSPositiveBasis2N”|“GSSPositiveBasisNp1”|“MADSPositiveBasis2N”|“MADSPositiveBasisNp1”

paretosearch只有:{' GSSPositiveBasis2np2 '}

UseParallel

并行计算目标函数和非线性约束函数。看到矢量化和并行选项如何在全局优化工具箱中使用并行处理

请注意

必须设置UseCompletePoll真正的patternsearch使用向量化或并行轮询。类似地,组UseCompleteSearch真正的用于向量化或并行搜索。

从R2019a开始,当你设置UseParallel选项真正的patternsearch内部覆盖UseCompletePoll设置为真正的它是平行轮询的。

真正的|{假}

UseVectorized

指定函数是否向量化。看到矢量化和并行选项向量化目标函数和约束函数

请注意

必须设置UseCompletePoll真正的patternsearch使用向量化或并行轮询。类似地,组UseCompleteSearch真正的用于向量化或并行搜索。

对于期权结构,请使用矢量化“上”“关闭”

真正的|{假}

选项paretosearch只有

选项 描述

InitialPoints

初始点paretosearch.使用以下数据类型之一:

  • 矩阵据nvar列,其中每一行表示一个初始点。

  • 结构,包含以下字段(所有字段都是可选的,除了X0):

    • X0——矩阵据nvar列,其中每一行表示一个初始点。

    • Fvals——矩阵numObjectives列,其中每一行表示在中对应点的目标函数值X0

    • Cineq——矩阵numIneq列,其中每一行表示在中对应点处的非线性不等式约束值X0

paretosearch中任何缺失的值FvalsCineq字段。

矩阵据nvar柱|结构|{[]}

MinPollFraction

要轮询的模式的最小部分。

从0到1|的标量{0}

ParetoSetSize

帕累托集合中的点数。

正整数|{“马克斯(numberOfObjectives 60)”},在那里numberOfObjectives目标函数的个数是多少

ParetoSetChangeTolerance

当一个迭代窗口中停止度量的相对变化小于或等于时,求解器停止ParetoSetChangeTolerance

  • 对于三个或更少的目标,paretosearch使用音量和传播度量。

  • 对于四个或更多的目标,paretosearch使用传播和距离度量。

看到帕累托搜索算法定义

当任何适用措施的相对变化小于时,求解程序停止ParetoSetChangeTolerance,或这些测量的时间序列的傅里叶变换的平方的最大值相对较小。看到paretosearch算法

请注意

设置ParetoSetChangeTolerance<sqrt (eps)~ 1.5e-8不推荐。

积极的标量|{1}的军医

选项patternsearch只有

选项 描述
缓存

缓存设置为“上”patternsearch保留它投票的网格点的历史。在后继的迭代中,patternsearch民调点数与已经民调的点数并不接近。使用此选项patternsearch在计算目标函数时运行缓慢。如果目标函数是随机的,不要使用这个选项。

请注意

缓存当并行运行求解器时,不工作。

“上”|{‘off’}

CacheSize

历史的规模。

积极的标量|{1 e4}

CacheTol

从当前网格点到历史上任何点的最大距离patternsearch以避免轮询当前点。如果使用缓存选项设置为“上”

积极的标量|{eps}

FunctionTolerance

函数的公差。如果函数值的变化小于,迭代将停止FunctionTolerance并且网格尺寸小于StepTolerance.此选项不适用于MADS轮询。

对于期权结构,请使用TolFun

积极的标量|{1 e-6}

InitialMeshSize

算法的初始网格大小。看到模式搜索轮询如何工作

积极的标量|{1.0}

InitialPenalty

惩罚参数的初始值。看到非线性约束求解算法

积极的标量|{10}

MaxMeshSize

在轮询或搜索步骤中使用的最大网格大小。看到模式搜索轮询如何工作

积极的标量|{Inf}

MeshContractionFactor

不成功迭代的网格收缩因子。

对于期权结构,请使用MeshContraction

积极的标量|{0.5}

MeshExpansionFactor

成功迭代的网格扩展因子。

对于期权结构,请使用MeshExpansion

积极的标量|{2.0}

MeshRotate

在声明一个点为最佳点之前,先旋转模式。看到网格选项

“关闭”|{'在'}

PenaltyFactor

点球更新参数。看到非线性约束求解算法

积极的标量|{100}

PlotInterval

指定每隔一段时间调用绘图函数。

正整数|{1}

PollOrderAlgorithm

模式搜索中轮询方向的顺序。

对于期权结构,请使用PollingOrder

“随机”|“成功”|{“连续”}

ScaleMesh

自动缩放变量。

对于期权结构,请使用ScaleMesh“上”“关闭”

{真的}|

SearchFcn

模式搜索中使用的搜索类型。指定为名称或函数句柄。

对于期权结构,请使用SearchMethod

' gppositive basis2n ' | ' gppositive basisnp1 ' | ' gspositive basis2n ' | ' gpositive basisnp1 ' | ' madpositive basis2n ' | ' madpositive basisnp1 ' | 'searchga' | 'searchlhs' | 'searchneldermead' | {[]} |自定义搜索功能

StepTolerance

变量的容忍度。如果位置和网格尺寸的变化都小于,迭代将停止StepTolerance.此选项不适用于MADS轮询。

对于期权结构,请使用TolX

积极的标量|{1 e-6}

TolBind

绑定的宽容。看到约束参数

积极的标量|{1 e - 3}

UseCompletePoll

围绕当前点完成民意测验。看到模式搜索轮询如何工作

对于期权结构,请使用CompletePoll“上”“关闭”

真正的|{假}

UseCompleteSearch

当搜索方法是轮询方法时,围绕当前点完成搜索。看到搜索和轮询

对于期权结构,请使用CompleteSearch“上”“关闭”

真正的|{假}

例子:选择= optimoptions(150年‘patternsearch’,‘MaxIterations’,‘MeshTolerance’,1的军医)

数据类型:结构体

问题结构,指定为具有以下字段的结构:

  • 客观的——目标函数

  • x0——起点

  • Aineq-线性不等式约束的矩阵

  • bineq-线性不等式约束的向量

  • Aeq-线性等式约束的矩阵

  • 说真的-线性等式约束的向量

  • 的下界x

  • 乌兰巴托-的上界x

  • nonlcon-非线性约束函数

  • 解算器- - - - - -“patternsearch”

  • 选项-使用optimoptionspsoptimset

  • rngstate—可选字段,重置随机数生成器的状态

请注意

各个领域中问题是必需的。

数据类型:结构体

输出参数

全部折叠

解,返回实向量。的大小x和尺寸一样吗x0.当exitflag是正的,x通常是问题的局部解决方案。

目标函数在解处的值,以实数返回。一般来说,fval有趣的(x)

原因patternsearch已停止,返回为整数。

出口标志 意义

1

没有非线性约束—网格尺寸的大小小于指定的公差,且约束违背小于ConstraintTolerance

具有非线性约束-的大小互补措施(在该表之后定义)小于√ConstraintTolerance,子问题用比细的网格来求解MeshTolerance,约束违背小于ConstraintTolerance

2

的变化x网格尺寸均小于规定的公差,且约束违背小于ConstraintTolerance

3.

的变化fval网格尺寸均小于规定的公差,且约束违背小于ConstraintTolerance

4

步长的大小小于机器精度,约束违背小于ConstraintTolerance

0

达到函数求值或迭代的最大次数。

-1

由输出函数或绘图函数终止的优化。

-2

没有找到可行点。

在非线性约束求解器中互补措施元素所在的向量的范数是多少cλ,在那里c非线性不等式是否违反约束,和λ为相应的拉格朗日乘子。

关于优化过程的信息,作为带有以下字段的结构返回:

  • 函数——目标函数。

  • problemtype-问题类型,其中之一:

    • 无约束的

    • “boundconstraints”

    • “linearconstraints”

    • “nonlinearconstr”

  • pollmethod——轮询技术。

  • searchmethod-使用搜索技术,如果有。

  • 迭代—总迭代次数。

  • funccount—函数求值的总数。

  • meshsize-网孔尺寸x

  • maxconstraint—最大约束违背(如果有)。

  • rngstate- MATLAB随机数生成器的状态,就在算法开始之前。中的值可以使用rngstate在使用随机搜索方法或随机轮询方法时重新生成输出。看到复制的结果,其中讨论了相同的技术遗传算法

  • 消息—终止算法的原因。

算法

默认情况下,patternsearch在没有线性约束的情况下,根据自适应网格与坐标方向对齐,寻找最小值。看到什么是直接查册?模式搜索轮询如何工作

选择功能

应用程序

优化活动编辑器任务为patternsearch

参考文献

[1] Audet, Charles, and J. E. Dennis Jr. <广义模式搜索的分析>SIAM优化学报.2003年第13卷第3期,第889-903页。

康,A. R., N. i.m. Gould,和博士L. Toint。“具有一般不等式约束和简单边界的全局收敛增广拉格朗日势垒优化算法”。数学的计算.第66卷第217号,1997年,261-288页。

马克·A·艾布拉姆森混合变量一般约束优化问题的模式搜索滤波算法.2002年8月,莱斯大学计算与应用数学系博士论文。

[4] Abramson, Mark A., Charles Audet, J. E. Dennis, Jr.和Sebastien Le Digabel。ORTHOMADS:具有正交方向的确定性MADS实例。SIAM优化学报.第20卷第2期,2009年,948-966页。

科尔达,塔玛拉·G,罗伯特·迈克尔·刘易斯和弗吉尼亚·托尔松。直接搜索优化:对一些经典和现代方法的新视角暹罗审查.2003年第45卷第3期385-482页。

科尔达,塔玛拉·G,罗伯特·迈克尔·刘易斯和弗吉尼亚·托尔松。一种集直接搜索增广拉格朗日算法,用于结合一般约束和线性约束进行优化。SAND2006-5315技术报告,桑迪亚国家实验室,2006年8月。

路易斯,罗伯特·迈克尔,安妮·谢泼德,弗吉尼亚·托尔松。实现线性约束最小化的生成集搜索方法SIAM科学计算杂志.第29卷,第6期,2007年,2507-2530页。

扩展功能

之前介绍过的R2006a