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 class="inlineequation">v<年代ub>我年代ub>=
如果<年代pan class="inlineequation">g<年代ub>我年代ub>≥0和<年代pan class="inlineequation">l<年代ub>我年代ub>>-∞年代pan>然后<年代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方法代表了非线性规划方法的发展现状。Schittkowski
gydF4y2Ba根据比格斯的研究
鉴于GP中的问题描述(
在这里你简化了
(14)年代trong> |
这个子问题可以用任何QP算法来解决(例如,
x<年代ub>
步长参数
gydF4y2Ba与使用SQP的无约束问题相比,非线性约束问题的迭代次数通常更少。其中一个原因是,由于可行区域的限制,优化器可以就搜索方向和步长做出明智的决策。
gydF4y2Ba考虑
与无约束情况下的140次迭代相比,SQP实现在96次迭代中解决了这个问题。
图5-3,非线性约束Rosenbrock函数的SQP方法年代trong>
SQP的实现包括三个主要阶段,我们将在以下小节简要讨论:
更新Hessian矩阵。年代trong>在每次主要迭代中,拉格朗日函数的海森函数的正定拟牛顿近似,
在哪里
鲍威尔
在哪里
并增加
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">
这个notation for the variable<年代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 这个ter米<年代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 问P的最佳解决方案是(方程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 是为了在aMerit函数。汉族使用的优点函数[22] 和鲍威尔[33] 在此实现中使用下列形式。
(30)年代trong>
鲍威尔建议设置惩罚参数
(31)年代trong>
这允许QP解决方案中不活跃但最近活跃的约束作出积极贡献。在这个实现中,惩罚参数r<年代ub>我年代ub> 初始设置为
(32)年代trong>
在哪里<年代pan class="inlineequation">
表示欧几里得范数。
gydF4y2Ba这可确保从具有较小渐变的约束的惩罚参数的贡献更大,这将是解决方案点处的活动约束的情况。
年代ect我on>
Fmincon SQP算法
gydF4y2Ba的sqp 算法(几乎相同sqp-legacy 算法)类似于有效集 算法(有关描述,请参见fmincon活动集算法 ).的基本sqp 算法在Nocedal和Wright的第18章中描述[31] .
gydF4y2Ba的sqp 算法本质上与sqp-legacy 算法,但有不同的实现。通常sqp 比?有更快的执行时间和更少的内存使用sqp-legacy .
gydF4y2Ba最重要的区别是sqp 和有效集 算法是:
<年代ect我on itemprop="content">
关于界的严格可行性
的sqp 算法的每一步迭代都在有边界约束的区域内进行。此外,有限差分步也是有界的。界限不严格;一步可以恰好在一个边界上。当你的目标函数或非线性约束函数是未定义的或在受边界约束的区域之外是复杂的时,这种严格的可行性是有益的。
年代ect我on>
非双结果的稳健性
在它的迭代过程中sqp 算法可以尝试采取失败的步骤。这意味着您提供的目标函数或非线性约束函数返回的值为Inf ,南 ,或复数。在这种情况下,算法会尝试进行更小的步长。
年代ect我on>
重构线性代数例程
的sqp 算法使用一组不同的线性代数例程来解决二次规划子问题,方程14 这个年代eroutines are more efficient in both memory usage and speed than the有效集日常工作。
年代ect我on>
新配方可行性的例程
的sqp 算法中有两种新的求解方法方程14 当不满足约束时。
的sqp 该算法将目标函数和约束函数结合成一个价值函数。该算法试图最小化约束条件下的价值函数。这个修改过的问题可以引出一个可行的解决方案。然而,这种方法比原来的问题有更多的变量,所以问题的规模方程14 增加。增大的规模会减缓子问题的求解速度。这些例程是基于Spellucci的文章[60] 和语气[61] 这个sqp 算法为Merit函数设置惩罚参数方程30 根据在[41] .
假设不满足非线性约束,并且尝试的步骤导致约束违背增长。的sqp 算法尝试使用约束的二阶近似来获得可行性。二阶方法可以得到一个可行的解。然而,这种技术会因为需要更多的非线性约束函数的计算而减慢求解速度。
fmincon内点算法<年代pan id="interior_point" class="anchor_target">
屏障功能
约束极小化的内点方法是求解一系列近似极小化问题。最初的问题是
(33)年代trong>
为每一个μ >0,近似问题是
(34)年代trong>
有很多松弛变量年代<年代ub>我年代ub> 因为存在不平等约束g 这个年代<年代ub>我年代ub> 限制为正,以使迭代保持在可行域内。作为μ 减小到零,最小值f<年代ub>μ 应该接近最小值f 这个added logarithmic term is called a屏障功能 .这种方法在[40] ,[41] ,[51] .gydF4y2Ba近似的问题方程34 是一系列等式约束问题。这些问题比原始不等式约束问题更容易解决方程33 .
gydF4y2Ba为了解决近似问题,该算法在每次迭代中使用两种主要步骤中的一种:
默认情况下,算法首先尝试采取直接步骤。如果不能,它就尝试CG步骤。在一种情况下,它不采取直接步骤是当近似问题不是局部凸附近的当前迭代。
gydF4y2Ba在每次迭代时,算法减少了一个优值函数,如
(35)年代trong>
参数<年代pan class="inlineequation">
可以随着迭代次数的增加而增加,以迫使解朝着可行的方向发展。如果一个尝试的步骤没有降低价值函数,算法拒绝尝试的步骤,并尝试新的步骤。gydF4y2Ba如果目标函数或非线性约束函数返回一个复值NaN, Inf或在迭代时返回一个错误x<年代ub>j ,算法拒绝x<年代ub>j 这个reject我on has the same effect as if the merit function did not decrease sufficiently: the algorithm then attempts a different, shorter step. Wrap any code that can error in尝试-抓 :
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你可以通过预乘第二个变量使方程对称Δs 通过年代 <年代up>1:
(38)年代trong>
为了解这个方程<年代pan class="inlineequation">(Δx ,Δ年代)年代pan>,算法对矩阵进行LDL分解。(见例3 - D的结构 在MATLAB中<年代up>®低密度脂蛋白功能参考页。)这是最昂贵的步骤。这种分解的一个结果是确定预计的黑森州是积极的明确情况;如果不是,则算法使用共轭梯度步骤,描述共轭梯度步 .
年代ect我on>
更新障碍参数
对于近似问题方程34 为了解决原来的问题,用势垒参数μ 随着迭代的进行,需要减少到0。该算法有两个barrier参数更新选项,您可以使用巴勒拉明州 选择:“单调” (默认),预估的 .
gydF4y2Ba的“单调” 选项减少参数μ 当在前一次迭代中以足够的精度解决近似问题时,将其提高1/100或1/5。当算法只需要一到两次迭代就可以达到足够的精度时,该选项使用1/100的因数,否则使用1/5。准确性的衡量是下面的测试,它决定是否所有项的大小在右边方程38 小于μ :
请注意年代trong>
fmincon覆盖了巴勒拉明州 设置为“单调” 在上述任一情况下:
该问题没有不等式约束,包括有界约束。
的SubproblemAlgorithm 选项是“重心” .
的预估的 更新屏障参数的算法μ 和线性规划相似吗预估 算法。
gydF4y2Ba预测校正步长可以通过调整牛顿步长中的线性化误差来加速现有的Fiacco-McCormick(单调)方法。预测校正算法的效果是双重的:它经常改进步进方向,同时用定心参数σ自适应地更新势垒参数,以鼓励迭代遵循中心路径。参见Nocedal和Wright的[31] 讨论线性程序的预测-校正步骤,以理解为什么中心路径允许更大的步长,从而更快的收敛。
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 这个n方程40 是在约束条件匹配的情况下求解的吗方程41 ,呆在半径的信任区域内R ,保持年代 严格正的。具体算法和推导请参见[40] ,[41] ,[51] .关于共轭梯度的另一种描述,请参阅预条件共轭梯度法 .年代ect我on>
可行性模式
当enableFeasilyMode. 选项是真正的 当迭代速度不够快时,算法切换到可行性模式。这种切换发生在算法在正常模式下不能降低不可行性后,然后切换到共轭梯度模式后再次失败。因此,为了在没有可行性模式的情况下求解器无法找到可行解时获得最佳性能,设置SubproblemAlgorithm 来“重心” 使用可行性模式时。这样做可以避免在正常模式下进行无结果的搜索。
gydF4y2Ba可行性模式算法基于Nocedal、Öztoprak和Waltz[1] 这个algorithm ignores the objective function and instead tries to minimize the infeasibility, defined as the sum of the positive parts of the inequality constraint functions and the absolute value of the equality constraint functions. In terms of the relaxation variables<年代pan class="inlineequation">
,分别对应于不等式,等式的正部分,和等式的负部分,问题是
受约束
为了解决松弛问题,该软件采用了带有对数势垒函数和松弛函数的内点公式<年代pan class="inlineequation">
最小化
受约束
轻松问题的解决过程开始于μ 初始化为当前屏障参数值。的松弛变量年代<年代ub>我年代ub> 初始化为从主模式继承的当前不等松弛值。的r 变量初始化为
其余的slack被初始化为
从这个初始点开始,可行性模式算法重用普通内点算法的代码。此过程需要特殊的步骤计算,因为r 变量是线性的,因此,它们相关的二阶导数为零。也就是说,可行性问题的目标函数Hessian是缺位的。因此,算法不能走牛顿步。相反,算法采取了最陡下降的方向步骤。该算法从目标相对于变量的梯度开始,将梯度投影到约束雅可比矩阵的零空间上,并对结果向量进行缩放,使其具有适当的步长。这一步可以有效地减少不可行性。
gydF4y2Ba可行性模式算法在将不可行性降低10倍时结束。当可行性模式结束时,算法通过变量x 和年代<年代ub>我年代ub> 到主算法,并丢弃其他松弛变量和松弛变量r .
工具书类
[1] 诺切达尔、豪尔赫、菲根·奥兹托普拉克和理查德·华尔兹。具有非可行性检测能力的非线性规划的内点方法。 优化方法与软件29(4),2014年7月,pp. 837-854。
内点算法的选择
下面是内部点算法中几个选项的含义和效果。
HonorBounds-当设置为真正的 ,每次迭代都满足您所设置的束缚约束。设置到假 时,算法在中间迭代过程中可能会违反界。
HessianApproximation—当设置为:
“蓄热”,fmincon 用稠密的拟牛顿近似计算Hessian。
“lbfgs”,fmincon 通过有限内存的大规模准牛顿近似计算Hessian。
“不同梯度的鳍”,fmincon 通过梯度的有限差分计算hessian -time -vector乘积;其他选项需要适当设置。
HessianFcn- - - - - -fmincon 使用您指定的功能句柄HessianFcn 计算黑森州。看包括麻布 .
HessianMultiplyFcn-给出一个单独的hessian时间向量计算函数。有关详细信息,请参见包括麻布 和黑森乘法函数 .
SubproblemAlgorithm-决定是否尝试直接牛顿步。默认设置“分解” 允许尝试此类型的步骤。设置“重心” 只允许共轭梯度步骤。
有关选项的完整列表,请参见<年代trong class="emphasis bold">内点算法年代trong>在fmincon 选项
.
年代ect我on>
FMINBND算法
fminbnd 是一个求解器,可在任何MATLAB安装。它求解一维有界区间内的局部最小值。它不是基于衍生品。相反,它使用黄金分割搜索和抛物线插值。
年代ect我on>
问题的表述和算法<年代pan id="csh_fseminfproblem" class="anchor_target">
fseminf问题配方
fseminf用附加类型的约束来解决优化问题fmincon 这个为米ul在我on offmincon是
这样<年代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 是间隔,如果至少一个我<年代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这个following code generates a sampling set fromw <年代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;end %采样集w2x = 1:s(2,1):100;w2y = 1: s (2, 2): 100;(天气,王寅)= meshgrid (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继续。