gydF4y2Ba约束极小化问题是寻找一个向量的问题
使以下一项或多项适用:<年代pan class="inlineequation">c(
最优化工具箱™求解器中使用的许多方法都基于<年代pan class="emphasis">信任区域,年代pan>一个简单但强大的优化概念。
gydF4y2Ba为了理解信任域优化方法,考虑无约束极小化问题,最小化
当前点被更新为
gydF4y2Ba关键问题在于确定具体的信任区域最小化方法
gydF4y2Ba在标准信赖域方法中(
在哪里
这样的算法提供了一个精确的解决方案
这种选择背后的哲学
gydF4y2Ba使用信任区域思想的无约束最小化的草图现在很容易给出:
构建二维信任域子问题。
解决
如果<年代pan class="inlineequation">f(
Δ调整。
这四个步骤重复,直到收敛。信任区域维度Δ根据标准规则进行调整。特别是,如果试验步骤不被接受,它就会减少,即:<年代pan class="inlineequation">f(
gydF4y2Ba最优化工具箱求解器处理一些重要的特殊情况
求解大型、对称、正定线性方程组的一种流行方法<年代pan class="inlineequation">惠普=-
gydF4y2Ba在最小化的情况下,你可以假设Hessian矩阵
线性约束使描述的无约束极小化情况复杂化。然而,前面描述的基本思想可以以一种干净有效的方式进行。最优化工具箱求解器中的信任区域方法生成严格可行的迭代。
gydF4y2Ba给出了一般线性等式约束极小化问题
在哪里
gydF4y2Ba用于解决问题的方法
在哪里<年代pan class="inlineequation">
接近
方框约束问题是这样的
在哪里
gydF4y2Ba缩放的修正牛顿阶跃是通过考察库恩-塔克必要条件得到的
在哪里
和向量
如果<年代pan class="inlineequation">g<年代ub>我年代ub>< 0和<年代pan class="inlineequation">u<年代ub>我年代ub><∞年代pan>然后<年代pan class="inlineequation">v<年代ub>我年代ub>=
如果<年代pan class="inlineequation">g<年代ub>我年代ub>≥0和<年代pan class="inlineequation">l<年代ub>我年代ub>> –∞然后<年代pan class="inlineequation">v<年代ub>我年代ub>=
如果<年代pan class="inlineequation">g<年代ub>我年代ub>< 0和<年代pan class="inlineequation">u<年代ub>我年代ub>=∞年代pan>然后<年代pan class="inlineequation">v<年代ub>我年代ub>= 1
如果<年代pan class="inlineequation">g<年代ub>我年代ub>≥0和<年代pan class="inlineequation">l<年代ub>我年代ub>=-∞年代pan>然后<年代pan class="inlineequation">v<年代ub>我年代ub>= 1
非线性系统
gydF4y2Ba标度修正牛顿步
在
和
在这里
gydF4y2Ba第二,
在约束优化中,一般的目标是将问题转化为一个更容易解决的子问题,然后作为迭代过程的基础。大量早期方法的一个特点是,通过对接近或超出约束边界的约束使用罚函数,将约束问题转化为基本的无约束问题。通过这种方法,使用参数化无约束优化序列来解决约束问题,该序列在序列的极限范围内收敛于约束问题。这些方法现在被认为是相对低效的,已被侧重于解决问题的方法所取代
gydF4y2Ba请参阅全科医生(
除了原有的约束
gydF4y2Ba第一个方程描述了在解点处目标函数和活动约束之间的梯度的抵消。对于要取消的梯度,使用拉格朗日乘数(
KKTgydF4y2Ba方程的解构成了许多非线性规划算法的基础。这些算法试图直接计算拉格朗日乘数。约束拟牛顿方法通过拟牛顿更新过程积累KKT方程的二阶信息来保证超线性收敛。这些方法通常被称为顺序二次规划(SQP)方法,因为QP子问题在每个主要迭代中被解决(也被称为迭代二次规划、递归二次规划和约束变量度量方法)。
gydF4y2Ba的
SQP方法代表了非线性规划方法的最新发展。希特考斯基
gydF4y2Ba根据比格斯的研究
gydF4y2Ba鉴于GP中的问题描述(
给你简化一下
(14)年代trong> |
这个子问题可以用任何QP算法来解决(例如,
x<年代ub>
步长参数
gydF4y2Ba使用SQP,非线性约束问题通常比无约束问题的迭代次数更少。其中一个原因是,由于可行区域的限制,优化器可以对搜索方向和步长做出明智的决定。
gydF4y2Ba考虑
与无约束情况下的140次迭代相比,SQP实现在96次迭代中解决了这个问题。
图5-3,非线性约束Rosenbrock函数的SQP方法年代trong>
SQP的实现包括三个主要阶段,我们将在以下小节简要讨论:
更新Hessian矩阵。年代trong>在每一次主要迭代中,拉格朗日函数的Hessian的正定拟牛顿近似,
在哪里
鲍威尔
在哪里
和增加
gydF4y2Ba的函数fmincon
fminimax,fgoalattain,fseminf所有用SQP。如果显示 被设置为“通路” 在选项 ,然后给出函数值和最大约束违背量等各种信息。当Hessian必须用前一步骤的第一阶段进行修改以保持它的正定时,那么黑森修改 会显示出来。如果Hessian必须再次使用上述方法的第二阶段进行修改,那么黑森修改两次会显示出来。当QP子问题不可行时,则不可行会显示出来。这种显示通常不会引起关注,但表明问题是高度非线性的,收敛时间可能比通常更长。有时候消息没有更新 ,显示“?<年代pan class="inlineequation">
几乎为零。这可能表明问题设置错误,或者您正试图最小化非连续函数。<年代trong id="f26746">二次规划解。年代trong>在SQP方法,解决如下形式的QP问题,其中一个<年代ub>我年代ub> 指的是我 第一行米 - - - - - -- - - - - -------n矩阵一个 .
(18)年代trong>
优化工具箱函数中使用的方法是一种主动集策略(也称为投影方法),类似于Gill等人的方法,如中所述[18] 和[17] . 对线性规划(LP)和二次规划(QP)问题都进行了修改。
gydF4y2Ba求解过程包括两个阶段。第一阶段涉及可行点(如果存在)的计算。第二阶段涉及到生成一个可行点的迭代序列,这些可行点收敛于解。在这种方法中,一个活动集,<年代pan class="inlineequation">
,它是解点上活动约束(即,那些在约束边界上的约束)的估计。几乎所有的QP算法都是主动集合方法。之所以强调这一点,是因为存在许多不同的方法,它们在结构上非常相似,但它们的描述却大相径庭。
<年代pan class="inlineequation">
在每个迭代更新k ,用来形成搜索方向的基础<年代pan class="inlineequation">
。相等约束始终保留在活动集中<年代pan class="inlineequation">
.变量的符号<年代pan class="inlineequation">
在这里用来区分它和d<年代ub>k 在SQP方法的主要迭代中。搜索方向<年代pan class="inlineequation">
,并使目标函数最小化,同时保持在任何主动约束边界上。的可行子空间<年代pan class="inlineequation">
是由基组成的吗Z<年代ub>k 哪些列正交于活动集的估计<年代pan class="inlineequation">
(即:。,<年代pan class="inlineequation">
).的列的任意组合的线性和形成的搜索方向Z<年代ub>k ,保证保持在主动约束的边界上。
gydF4y2Ba矩阵Z<年代ub>k 是最后形成的吗<年代pan class="inlineequation">米------l年代pan>矩阵QR分解的列<年代pan class="inlineequation">
,在那里l 主动约束的数量是多少l < m .也就是说,Z<年代ub>k 是由
(19)年代trong>
在哪里
一次Z<年代ub>k 是发现了,一个新的搜索方向<年代pan class="inlineequation">
寻求最小化问 (d ),
在活动约束的空空间中。就是,<年代pan class="inlineequation">
是列向量的线性组合吗Z<年代ub>k :<年代pan class="inlineequation">
为向量p .
gydF4y2Ba如果你把这个二次函数看成是p ,代以—<年代pan class="inlineequation">
,你有
(20)年代trong>
对它求导p 收益率
(21)年代trong>
∇问 (p )年代pan>被称为二次函数的投影梯度因为它是在子空间中投影的梯度由Z<年代ub>k .这个词<年代pan class="inlineequation">
叫做投影黑森。假设Hessian矩阵H 是正定的(在SQP的这个实现中就是这种情况),然后是函数的最小值问 (p )在由定义的子空间中Z<年代ub>k 发生在<年代pan class="inlineequation">∇问 (p ) = 0,它是线性方程组的解
(22)年代trong>
然后对该形式采取步骤
(23)年代trong>
在每次迭代时,由于目标函数的二次性质,只有两种步长选择α .这是团结前进的一步<年代pan class="inlineequation">
函数的最小值的精确步是否限制在零空间<年代pan class="inlineequation">
.如果可以在不违反约束的情况下采取这样的步骤,那么这就是QP (等式18 ).否则,继续前进<年代pan class="inlineequation">
到最近的约束小于单位,在下一次迭代时一个新的约束被包含在活动集中。任意方向到约束边界的距离<年代pan class="inlineequation">
是由
(24)年代trong>
它是为不在活动集合中的约束定义的,方向在哪里<年代pan class="inlineequation">
为约束边界,即:<年代pan class="inlineequation">
.
gydF4y2Ba当n 在活动集中包含独立约束,没有极小值的位置,拉格朗日乘子,λ<年代ub>k ,满足非奇异线性方程组
(25)年代trong>
如果所有的元素λ<年代ub>k 是积极的,x<年代ub>k 是QP的最优解(等式18 ).但是,如果λ<年代ub>k 为负,且组件不对应相等约束,则从活动集中删除相应的元素,并寻找新的迭代。
<年代trong id="f26916">初始化。年代trong>该算法需要一个可行的起始点。如果从SQP方法中得到的当前点是不可行的,那么可以通过求解线性规划问题找到一个点
(26)年代trong>
符号一个<年代ub>我年代ub> 表示我 矩阵的第一行一个 .您可以找到一个可行点(如果存在)来等式26 通过设置x 转换为满足相等约束的值。您可以通过求解由等式约束集形成的线性方程组的过定或过定来确定这个值。如果这个问题有一个解决方案,那么松弛变量γ 设为该点的最大不等式约束。
通过在每次迭代中将搜索方向设置为最陡下降方向,可以修改前面针对LP问题的QP算法,其中g<年代ub>k 是目标函数的梯度(等于线性目标函数的系数)。
(27)年代trong>
如果使用上述LP方法找到一个可行点,则进入主QP阶段。搜索方向<年代pan class="inlineequation">
使用搜索方向初始化<年代pan class="inlineequation">
从解线性方程组中得到
(28)年代trong>
在哪里g<年代ub>k 目标函数的梯度是否在当前迭代中x<年代ub>k (即:。,<年代pan class="inlineequation">Hx<年代ub>k+c年代pan>).
gydF4y2Ba如果没有找到QP问题的可行解决方案,则搜索主SQP例程的方向<年代pan class="inlineequation">
被认为是最小化的γ .
<年代trong id="f26965">线搜索和价值函数。年代trong>QP子问题的解产生一个向量d<年代ub>k ,用于形成一个新的迭代
(29)年代trong>
步长参数α<年代ub>k 是为了在a价值函数。汉代的价值函数[22] 和鲍威尔[33] 在此实现中使用下列形式。
(30)年代trong>
鲍威尔建议设置惩罚参数
(31)年代trong>
这允许QP解决方案中不活跃但最近活跃的约束作出积极贡献。在这个实现中,惩罚参数r<年代ub>我年代ub> 初始设置为
(32)年代trong>
在哪里<年代pan class="inlineequation">
表示欧几里得范数。
gydF4y2Ba这确保了具有较小梯度的约束对惩罚参数的贡献较大,这对于解点处的活动约束也是如此。
年代ect我on>
fmincon-SQP算法
gydF4y2Ba的sqp 算法(几乎相同)sqp遗产 算法)类似于有效集 算法(有关描述,请参见fmincon活动集算法 ).的基本sqp 算法在Nocedal和Wright的第18章中进行了描述[31] .
gydF4y2Ba的sqp 算法本质上和sqp遗产 算法,但有不同的实现。通常情况下,sqp 比?有更快的执行时间和更少的内存使用sqp遗产 .
gydF4y2Ba最重要的区别是sqp 和有效集 算法包括:
<年代ect我on itemprop="content">
关于界的严格可行性
的sqp 该算法在受边界约束的区域内采取每一个迭代步骤。此外,有限差分步骤也尊重边界。边界并不严格;一个步骤可以精确地在边界上。当目标函数或非线性约束函数未定义或在区域外复杂时,这种严格的可行性是有益的受限制地训练。
年代ect我on>
非双结果的稳健性
在它的迭代过程中sqp 算法可以尝试采取失败的步骤。这意味着您提供的目标函数或非线性约束函数返回值为正 ,南 ,或复数。在这种情况下,算法会尝试进行更小的步长。
年代ect我on>
重构线性代数例程
的sqp 算法使用一组不同的线性代数例程来解决二次规划子问题,等式14 .这些例程在内存使用和速度上都比有效集 例程。
年代ect我on>
新配方可行性的例程
的sqp 算法中有两种新的求解方法等式14 当约束不满足时。
的sqp 该算法将目标函数和约束函数组合成一个价值函数。该算法试图在放松约束条件下最小化价值函数。这个修改后的问题可以得到一个可行的解决方案。然而,这种方法比原始问题有更多的变量,因此问题的大小在等式14 增加。增大的规模会减缓子问题的求解速度。这些例程是基于Spellucci的文章[60] 和语气[61] .的sqp 算法为价值函数设置惩罚参数方程30 根据在[41] .
假设不满足非线性约束,并且尝试的步骤导致约束违背增长。的sqp 算法尝试使用约束的二阶近似来获得可行性。二阶方法可以得到一个可行的解。然而,这种技术会因为需要更多的非线性约束函数的计算而减慢求解速度。
fmincon内点算法<年代pan id="interior_point" class="anchor_target">
屏障功能
约束极小化的内点方法是求解一系列近似极小化问题。最初的问题是
(33)年代trong>
为每一个μ >0,近似问题为
(34)年代trong>
有很多松弛变量年代<年代ub>我年代ub> 因为有不平等的限制g .的年代<年代ub>我年代ub> 限制为正,以使迭代保持在可行域内。作为μ 减小到零,最小值f<年代ub>μ 应接近最低限度f .添加的对数项称为a势垒函数 .这种方法在[40] ,[41] ,[51] .gydF4y2Ba近似的问题方程34 是一系列等式约束问题。这些问题比原来的不等式约束问题更容易解决方程33 .
gydF4y2Ba为了解决近似问题,该算法在每次迭代中使用两种主要步骤之一:
默认情况下,算法首先尝试采取直接步骤。如果不能,它就尝试CG步骤。在一种情况下,它不采取直接步骤是当近似问题不是局部凸附近的当前迭代。
gydF4y2Ba在每次迭代中,算法都会减少优值函数,如
(35)年代trong>
参数<年代pan class="inlineequation">
可以随着迭代次数的增加而增加,以迫使解朝着可行的方向发展。如果一个尝试的步骤没有降低价值函数,算法拒绝尝试的步骤,并尝试新的步骤。gydF4y2Ba如果目标函数或非线性约束函数返回一个复值NaN, Inf或在迭代时返回一个错误x<年代ub>j ,算法拒绝x<年代ub>j .拒绝具有同样的效果,如果价值函数没有充分减少:算法然后尝试一个不同的,更短的步骤。包装任何可能出错的代码尝试 -抓 :
function val = userFcn(x) try val =…%代码可以错误捕获val = NaN;结束
目标和约束必须产生适当的(双 )的值。
年代ect我on>
直接一步
下面的变量用于定义直接步骤:
H表示的拉格朗日的Hessianf<年代ubcl像年代="math">μ年代ub> :
(36)年代trong>
J<年代ub>g表示约束函数的雅可比矩阵g .
J<年代ub>h表示约束函数的雅可比矩阵h .
年代=诊断接头(年代 )年代pan>.
λ为约束相关的拉格朗日乘子向量g
Λ=诊断接头(λ )年代pan>.
y为所关联的拉格朗日乘子向量h .
e表示与相同大小的向量g .
定义直接步骤<年代pan class="inlineequation">(Δx , Δ年代)年代pan>:
(37)年代trong>
这个方程直接来自于试图求解方程2 和方程3 使用线性化的拉格朗日。
gydF4y2Ba你可以通过预乘第二个变量使方程对称Δ年代 通过年代 <年代up>1:
(38)年代trong>
为了解这个方程<年代pan class="inlineequation">(Δx , Δ年代)年代pan>,该算法对矩阵进行LDL分解。(参见例3 - D的结构 在MATLAB<年代up>®低密度脂蛋白函数参考页。)这是计算成本最高的步骤。这种因式分解的一个结果是确定投影的黑森值是否正定;如果不是,则该算法使用共轭梯度步骤,如中所述共轭梯度步 .
年代ect我on>
更新障碍参数
有近似问题方程34 接近原始问题,屏障参数μ 应该随着迭代的进行而减少到0。该算法有两个屏障参数更新选项,您可以使用BarrierParamUpdate 选项:“单调” (默认),“预测-校正” .
gydF4y2Ba的“单调” 选项减少参数μ 当近似问题在上一次迭代中得到足够精确的解决时,以1/100或1/5的系数进行计算。当算法只需一次或两次迭代即可达到足够的精度时,它选择1/100,否则选择1/5。准确度的衡量标准是以下测试,即所有项的尺寸都在右边方程38 还不到μ :
笔记年代trong>
fmincon覆盖你的BarrierParamUpdate 选择“单调” 当以下任一情况保持不变时:
该问题没有不等式约束,包括边界约束。
的SubproblemAlgorithm 选择是“重心” .
本节的其余部分将讨论“预测-校正” 更新屏障参数的算法μ .其机理类似于线性规划预估 算法。
gydF4y2Ba预测校正步长可以通过调整牛顿步长中的线性化误差来加速现有的Fiacco-McCormack(单调)方法。预测校正模式的效果有两个方面:它(经常)改进步进方向,同时用定心参数σ自适应地更新势垒参数,以鼓励迭代遵循“中心路径”。请参阅Nocedal和Wright关于线性程序的Predictor-Corrector Steps的讨论,以理解为什么中心路径允许更大的步长,从而更快地收敛。
gydF4y2Ba预测步长采用线性化的步长μ =0,表示没有屏障功能:
定义ɑ<年代ub>年代年代ub> 和ɑ<年代ub>λ 为不违反非负性约束的最大步长。
现在从预测器步骤计算互补性。
(39)年代trong>
在哪里米 为约束的数量。
gydF4y2Ba第一校正器步长为牛顿寻根线性化中忽略的二次项进行调整
为了纠正二次误差,求解了校正器步进方向的线性系统。
第二校正步骤是定心步骤。定心校正是基于变量的σ 在等式的右边
在这里,σ 被定义为
在哪里μ<年代ub>P 定义在方程中方程39 ,<年代pan class="inlineequation">
.
gydF4y2Ba为了防止势垒参数下降过快,潜在地破坏算法的稳定性,算法保留了定心参数σ 1/100以上。这就产生了势垒参数μ 减少不超过1/100
gydF4y2Ba在算法上,第一次校正和定心步骤彼此独立,因此它们一起计算。此外,左侧的预测器和两个校正步骤的矩阵是相同的。所以,在算法上,矩阵被分解一次,这个分解用于所有这些步骤。
gydF4y2Ba该算法由于步长增大了价值函数的值而拒绝了所提出的预测-校正步长方程35 ,互补性至少是两个因子,或者计算的惯性不正确(问题看起来是非凸的)。在这些情况下,算法尝试采取不同的步骤或共轭梯度步骤。
年代ect我on>
共轭梯度步
用共轭梯度法求解近似问题方程34 与其他共轭梯度计算类似。在这种情况下,算法会同时调整x 和年代 ,把裤子留着年代 积极的。该方法是在受线性化约束的情况下,最小化信赖域内近似问题的二次逼近。
gydF4y2Ba具体来说,让我们R 表示信任区域的半径,并让其他变量定义为直接一步 .该算法通过近似求解KKT方程得到拉格朗日乘子
在最小二乘的意义上,服从于λ 是积极的。然后再走一步<年代pan class="inlineequation">(Δx , Δ年代)年代pan>约解决
(40)年代trong>
受线性化约束
(41)年代trong>
解决方程41 ,算法试图最小化半径为的区域内线性化约束的范数R .然后方程40 是在约束条件匹配的情况下求解的吗方程41 ,呆在半径的信任区域内R ,保持年代 严格正的。具体算法和推导请参见[40] ,[41] ,[51] .关于共轭梯度的另一种描述,请参阅预条件共轭梯度法 .年代ect我on>
内点算法的选择
下面是内部点算法中几个选项的含义和效果。
HonorBounds-当设置为真正的 ,每个迭代都满足您设置的绑定约束。当设置为假 时,算法在中间迭代过程中可能会违反界。
HessianApproximation-当设置为:
“蓄热”,fmincon 用稠密的拟牛顿近似计算Hessian。
“lbfgs”,fmincon 通过有限内存的大规模准牛顿近似计算Hessian。
“fin-diff-grads”,fmincon 通过梯度的有限差分计算hessian -time -vector乘积;其他选项需要适当设置。
HessianFcn- - - - - -fmincon 使用在中指定的函数句柄HessianFcn 要计算Hessian值,请参见包括黑森人 .
HessianMultiplyFcn-给出一个单独的hessian时间向量计算函数。有关详细信息,请参见包括黑森人 和黑森乘法函数 .
SubproblemAlgorithm-决定是否尝试直接牛顿步。默认设置“分解” 允许尝试此类型的步骤。设置“重心” 只允许共轭梯度步骤。
有关选项的完整列表,请参阅<年代trong class="emphasis bold">内点算法年代trong>在fmincon 选项
.
年代ect我on>
fminbnd算法
fminbnd 是一个求解器,可在任何MATLAB安装。它求解一维有界区间内的局部最小值。它不是基于衍生品。相反,它使用黄金分割搜索和抛物线插值。
年代ect我on>
问题的表述和算法<年代pan id="csh_fseminfproblem" class="anchor_target">
FSEMIF问题公式
fseminf用附加类型的约束来解决优化问题fmincon .制定fmincon 是
这样<年代pan class="inlineequation">c(x )≤0,量表信(x ) = 0,·x≤b,Aeq·x =贝基 ,l≤x≤u年代pan>.
fseminf 将下列半无限约束加到已经给出的约束上。为w<年代ub>j 在一或二维有界区间或矩形中我<年代ub>j ,对于连续函数的向量<年代pan class="inlineequation">K(x ,w )年代pan>,约束条件是
K<年代ub>j(x ,w<年代ub>j )≤0w<年代ub>j∈我<年代ub>j.
术语“维数”fseminf 问题是指约束集的最大维数我 :1如果全部我<年代ub>j 是间隔,如果至少有一个间隔,则为2我<年代ub>j 是一个长方形。向量的大小K 不涉及维度的概念。
gydF4y2Ba之所以称之为半无限规划,是因为变量的数量是有限的(x 和w<年代ub>j ),而是无限的约束。这是因为x 是在一组连续的区间或矩形上吗我<年代ub>j ,其中包含无限多的点,因此存在无限多的约束:<年代pan class="inlineequation">K<年代ub>j(x ,w<年代ub>j )≤0对于无限多的点w<年代ub>j .
gydF4y2Ba你可能会认为一个有无限个约束条件的问题是不可能解决的。fseminf 解决这个问题的方法是将问题重新表述成一个等价的问题,这个问题有两个阶段:最大和最小。半无限约束被重新表述为
(42)年代trong>
在|K |是向量的分量数K ;即半无限约束函数的个数。固定x ,这是有界区间或矩形上的普通最大化。
fseminf 通过分段二次或三次逼近进一步简化问题<年代pan class="inlineequation">κ<年代ub>j(x ,w<年代ub>j )年代pan>的功能<年代pan class="inlineequation">K<年代ub>j(x ,w<年代ub>j )年代pan>,每人x 解算者访问的地方。fseminf 只考虑插值函数的最大值<年代pan class="inlineequation">κ<年代ub>j(x ,w<年代ub>j )年代pan>,而不是<年代pan class="inlineequation">K<年代ub>j(x ,w<年代ub>j )年代pan>,在方程42 . 这将原始问题(最小化半无限约束函数)简化为具有有限个约束的问题。
<年代trong id="brpqbpl">采样点。年代trong>半无限约束函数必须提供一组采样点,这些采样点用于进行二次或三次近似。要实现这一点,它应包括:
最初的间距年代 采样点之间w
一种生成抽样点集的方法w 从年代
最初的间距年代 是一个|K |2矩阵。的j th排年代 表示约束函数相邻采样点的间距K<年代ub>j .如果K<年代ub>j 取决于一维w<年代ub>j ,设置年代(j, 2) = 0 .fseminf 更新矩阵年代 在随后的迭代。
fseminf 使用矩阵年代 生成采样点w ,然后用它来创建近似<年代pan class="inlineequation">κ<年代ub>j(x ,w<年代ub>j )年代pan>.用来生成w 从年代 是否应该保持相同的间隔或矩形我<年代ub>j 在优化。
<年代trong id="bro4wg_">创建采样点的示例。年代trong>考虑一个有两个半无限约束的问题,K <年代ub>1和K <年代ub>2.K <年代ub>1有一维w <年代ub>1,K<年代ub>2有二维w <年代ub>2.下面的代码从中生成采样集w <年代ub>1=2至12:
当isnan(s(1,1)) s(1,1) = 0.2时,初始采样间隔为%;(1、2)= 0;end %采样集w1 = 2:s(1,1):12;
fseminf指定年代 像南 当它第一次调用约束函数时。对此进行检查允许您设置初始采样间隔。
gydF4y2Ba下面的代码从中生成采样集w <年代ub>2在一个正方形中,每个分量从1到100,最初第一个分量比第二个分量取样更频繁:
%如果isnan(s(1,1))s(2,1)=0.2,则初始采样间隔;s(2,2)=0.5;结束百分比采样集w2x=1:s(2,1):100;w2y=1:s(2,2):100;[wx,wy]=网格(w2x,w2y);
前面的代码段可以简化如下:
%初始采样间隔如果isnan(s(1,1)) s = [0.2 0;0.2 0.5];end %采样集w1 = 2:s(1,1):12;w2x = 1: s (2,1): 100;w2y = 1: s (2, 2): 100;(天气,王寅)= meshgrid (w2x w2y);
年代ection>
fseminf算法
fseminf从本质上讲,将半无限规划问题简化为fmincon .fseminf 采用以下步骤求解半无限规划问题:
按当前值x ,fseminf 确定所有的w<年代ub>j,我年代ub> 使插值<年代pan class="inlineequation">κ<年代ub>j(x ,w<年代ub>j,我年代ub> )年代pan>为局部最大值。(最大值指的是变化w 固定x .)
fseminf在问题的解决方案中采取一个迭代步骤fmincon 问题:
这样<年代pan class="inlineequation">c(x )≤0,量表信(x ) = 0,·x≤b,Aeq·x =贝基 ,l≤x≤u年代pan>,在那里c (x 的所有极大值增广<年代pan class="inlineequation">κ<年代ub>j(x ,w<年代ub>j )年代pan>接管所有<年代pan class="inlineequation">w<年代ub>j∈我<年代ub>j年代pan>等于最大值除以j 和我 的<年代pan class="inlineequation">κ<年代ub>j(x ,w<年代ub>j,我年代ub> )年代pan>.
fseminf检查在新点是否满足任何停止条件x (停止迭代);如果没有,则继续执行步骤4。
fseminf检查半无限约束离散化是否需要更新,并适当更新采样点。这提供了一个更新的近似<年代pan class="inlineequation">κ<年代ub>j(x ,w<年代ub>j )年代pan>.然后继续到第1步。