用外点法求解非线性约束最优化问题

合集下载

运筹学与最优化方法习题集

运筹学与最优化方法习题集

一.单纯性法一.单纯性法1.用单纯形法求解下列线性规划问题(共用单纯形法求解下列线性规划问题(共 15 分)分) 122121212max 25156224..5,0z x x x x x s t x x x x =+£ìï+£ïí+£ïï³î 2.用单纯形法求解下列线性规划问题(共用单纯形法求解下列线性规划问题(共 15 分)分) 12121212max 2322..2210,0z x x x x s t x x x x =+-³-ìï+£íï³î 3.用单纯形法求解下列线性规划问题(共用单纯形法求解下列线性规划问题(共 15 分)分) 1234123412341234max 24564282..2341,,,z x x x x x x x x s t x x x x x x x x =-+-+-+£ìï-+++£íï³î4.用单纯形法求解下列线性规划问题(共用单纯形法求解下列线性规划问题(共 15 分)分) 123123123123123max 2360210..20,,0z x x x x x x x x x s t x x x x x x =-+++£ìï-+£ïí+-£ïï³î 5.用单纯形法求解下列线性规划问题(共用单纯形法求解下列线性规划问题(共 15 分)分) 12312312123max 224..26,,0z x x x x x x s t x x x x x =-++++£ìï+£íï³î6.用单纯形法求解下列线性规划问题(共用单纯形法求解下列线性规划问题(共 15 分)分) 12121212max 105349..528,0z x x x x s t x x x x =++£ìï+£íï³î7.用单纯形法求解下列线性规划问题(共用单纯形法求解下列线性规划问题(共 16 分)分) 12121212max 254212..3218,0z x x x x s t x x x x =+£ìï£ïí+£ïï³î二.对偶单纯性法二.对偶单纯性法1.灵活运用单纯形法和对偶单纯形法解下列问题(共灵活运用单纯形法和对偶单纯形法解下列问题(共 15 分)分)12121212max 62..33,0z x x x x s t x x x x =++³ìï+£íï³î 2.灵活利用单纯形法和对偶单纯形法求解下列线性规划问题(共灵活利用单纯形法和对偶单纯形法求解下列线性规划问题(共 15 分)分) 121212212max 3510501..4,0z x x x x x x s t x x x =++£ìï+³ïí£ïï³î 3.用对偶单纯形法求解下列线性规划问题(共用对偶单纯形法求解下列线性规划问题(共 15 分)分) 1212121212min 232330210..050z x x x x x x s t x x x x =++£ìï+³ïï-³íï³ïï³î4.灵活运用单纯形法和对偶单纯形法求解下列线性规划问题(共灵活运用单纯形法和对偶单纯形法求解下列线性规划问题(共 15 分)分) 124123412341234min 262335,,,0z x x x x x x x s t x x x x x x x x =+-+++£ìï-+-³íï³î5.运用对偶单纯形法解下列问题(共运用对偶单纯形法解下列问题(共 16 分)分) 12121212max 24..77,0z x x x x s t x x x x =++³ìï+³íï³î6.灵活运用单纯形法和对偶单纯形法解下列问题(共灵活运用单纯形法和对偶单纯形法解下列问题(共 15 分)分) 12121212max 62..33,0z x x x x s t x x x x =++³ìï+£íï³î三.0-1整数规划整数规划1.用隐枚举法解下列0-1型整数规划问题(共型整数规划问题(共10 分) 12345123451234512345123345max 567893223220..32,,,,,01z x x x x x x x x x x x x x x x s t x x x x x x x x x x x or =++++-++-³ìï+--+³ïí--+++³ï=î 2.用隐枚举法解下列0-1型整数规划问题(共型整数规划问题(共 10 分) 12312312323123min 4322534433..1,,01z x x x x x x x x x s t x x x x x or =++-+£ì++³ïí+³ïï=î 3.用隐枚举法解下列0-1型整数规划问题(共型整数规划问题(共 10 分) 1234512345123451234512345max 20402015305437825794625..81021025,,,,01z x x x x x x x x x x x x x x x s t x x x x x x x x x x =++++++++£ìï++++£ïí++++£ïï=î或 4.用隐枚举法解下列0-1型整数规划问题(共型整数规划问题(共10 分) 12345123451234512345max 2534327546..2420,,,,01z x x x x x x x x x x s t x x x x x x x x x x =-+-+-+-+£ìï-+-+£íï=î或 5.用隐枚举法解下列0-1型整数规划问题(共型整数规划问题(共10 分) 12341234123412341234min 25344024244..1,,,01z x x x x x x x x x x x x s t x x x x x x x x =+++-+++³ì-+++³ïí+-+³ïï=î或6.7.用隐枚举法解下列0-1型整数规划问题(共型整数规划问题(共10 分) 123451234513451245max 325232473438..116333z x x x x x x x x x x x x x x s t x x x x =+--+++++£ìï+-+£ïí-+-³ï 1231231231223max 3252244..346z x x x x x x x x x s t x x x x =-++-£ìï++£ïï+£íï+£ïï=四.K-T 条件条件1.利用库恩-塔克(K-T )条件求解以下问题(共)条件求解以下问题(共 15 分)分)22121122121212max ()104446..418,0f X x x x x x x x x s t x x x x =+-+-+£ìï+£íï³î2.利用库恩-塔克(K-T )条件求解以下非线性规划问题。

非线性约束优化问题的数值解法

非线性约束优化问题的数值解法

非线性约束优化问题的数值解法在实际问题中,我们经常会遇到一类非线性约束优化问题,即在一定约束条件下,最小化或最大化一个非线性目标函数。

这类问题的数学模型可以表示为:$$\begin{aligned}\min_{x} \quad & f(x) \\\text{s.t.} \quad & g_i(x) \leq 0, \quad i=1,2,\ldots,m \\& h_j(x) = 0, \quad j=1,2,\ldots,n\end{aligned}$$其中,$x$是决策变量,$f(x)$是目标函数,$g_i(x)$和$h_j(x)$是约束函数。

有时候,这类问题的解析解并不容易求得,因此需要借助数值方法来找到近似解。

本文将介绍几种常用的非线性约束优化问题的数值解法。

一、拉格朗日乘子法拉格朗日乘子法是最基础的非线性约束优化问题求解方法之一。

它将原始问题转化为等价的无约束问题,并通过引入拉格朗日乘子来建立求解函数。

具体而言,我们将原始问题改写成拉格朗日函数的形式:$$L(x,\lambda,\mu) = f(x) + \sum_{i=1}^{m}\lambda_ig_i(x) +\sum_{j=1}^{n}\mu_jh_j(x)$$其中,$\lambda_i$和$\mu_j$是拉格朗日乘子。

然后,我们对拉格朗日函数求取对$x$的梯度,并令其等于零,得到一组等式约束:$$\nabla_x L(x,\lambda,\mu) = \nabla f(x) +\sum_{i=1}^{m}\lambda_i\nabla g_i(x) + \sum_{j=1}^{n}\mu_j\nablah_j(x) = 0$$再加上约束条件 $g_i(x) \leq 0$ 和 $h_j(x) = 0$,我们可以得到原始问题的一组等价条件。

二、内点法内点法是解决非线性约束优化问题的一种有效算法。

该方法通过将约束条件转化为惩罚项,将原问题转化为无约束的目标函数最小化问题。

matlab用外点罚函数法求解等式约束最优化问题

matlab用外点罚函数法求解等式约束最优化问题

一、引言我们需要明确什么是等式约束最优化问题。

在实际应用中,经常会遇到这样的问题:在满足一定的条件约束下,寻找一个使得某个目标函数达到最优值的解。

而等式约束最优化问题就是在满足一系列等式约束条件的前提下,求解出目标函数的最优值和对应的解向量。

在数学领域,等式约束最优化问题有着重要的理论和实际意义,对于工程、经济、管理等领域都有着广泛的应用。

二、问题描述一个典型的等式约束最优化问题可以用如下的数学形式来描述:minimize f(x)subject to:g(x) = 0其中,f(x)是目标函数,x是自变量向量,g(x)是等式约束条件函数。

三、外点罚函数法外点罚函数法是一种常用的方法,用于求解等式约束最优化问题。

它的基本思想是通过对目标函数和约束条件进行适当的变换,将等式约束问题转化为无约束问题。

具体地,外点罚函数法通过引入罚函数,将约束条件融入到目标函数中,构造出一个新的优化问题。

然后将这个新问题求解为原问题的近似解。

在优化的过程中,罚函数的惩罚项会惩罚那些违反约束条件的解,从而使得优化过程能够逼近满足约束条件的最优解。

四、matlab中的外点罚函数法求解在matlab中,可以利用现成的优化工具箱来求解等式约束最优化问题。

其中,fmincon函数是用来求解带有等式约束的最优化问题的。

它允许用户自定义目标函数和约束条件函数,并指定优化的初始点和其他参数。

通过在fmincon函数中调用外点罚函数法求解等式约束最优化问题,可以得到目标函数的最优值和对应的解向量。

五、实例分析为了更加直观地理解matlab中外点罚函数法的应用,我们来举一个简单的实例。

假设我们要求解如下的等式约束最优化问题:minimize f(x) = x1^2 + x2^2subject to:g(x) = x1 + x2 - 1 = 0我们需要将目标函数和约束条件转化成matlab可以识别的形式。

我们可以利用fmincon函数来求解这个最优化问题。

非线性优化与约束优化问题的求解方法

非线性优化与约束优化问题的求解方法

非线性优化与约束优化问题的求解方法非线性优化问题是在目标函数和约束条件中包含非线性项的优化问题。

约束优化问题是在目标函数中加入了一些约束条件的优化问题。

解决这些问题在实际应用中具有重要意义,因此研究非线性优化和约束优化问题的求解方法具有重要的理论和实际意义。

一、非线性优化问题的求解方法非线性优化问题的求解方法有很多,下面介绍几种常见的方法:1. 黄金分割法:黄金分割法是一种简单但有效的搜索方法,它通过不断缩小搜索范围来逼近最优解。

该方法适用于目标函数单峰且连续的情况。

2. 牛顿法:牛顿法利用目标函数的一阶和二阶导数信息来逼近最优解。

该方法收敛速度较快,但在计算高阶导数或者初始点选取不当时可能产生不稳定的结果。

3. 拟牛顿法:拟牛顿法是对牛顿法的改进,它通过逼近目标函数的Hessian矩阵来加快收敛速度。

拟牛顿法可以通过不同的更新策略来选择Broyden-Fletcher-Goldfarb-Shanno(BFGS)方法或者DFP方法。

4. 全局优化方法:全局优化方法适用于非凸优化问题,它通过遍历搜索空间来寻找全局最优解。

全局优化方法包括遗传算法、粒子群优化等。

二、约束优化问题的求解方法约束优化问题的求解方法也有很多,下面介绍几种常见的方法:1. 等式约束问题的拉格朗日乘子法:等式约束问题可以通过引入拉格朗日乘子来转化为无约束优化问题。

通过求解无约束优化问题的驻点,求得原始约束优化问题的解。

2. 不等式约束问题的罚函数法:不等式约束问题可以通过引入罚函数来转化为无约束优化问题。

罚函数法通过将违反约束条件的点处添加罚项,将约束优化问题转化为无约束问题。

3. 逐次二次规划法:逐次二次规划法是一种常用的求解约束优化问题的方法。

该方法通过依次处理逐个约束来逼近最优解,每次处理都会得到一个更小的问题,直至满足所有约束条件。

4. 内点法:内点法是一种有效的求解约束优化问题的方法。

该方法通过向可行域内部逼近,在整个迭代过程中都保持在可行域内部,从而避免了外点法需要不断向可行域逼近的过程。

外点法求约束最优化问题-推荐下载

外点法求约束最优化问题-推荐下载
数学规划课程设计
题目 外点法求约束最优化问题 姓名 学号 成绩
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术通关,1系电过,力管根保线据护敷生高设产中技工资术艺料0不高试仅中卷可资配以料置解试技决卷术吊要是顶求指层,机配对组置电在不气进规设行范备继高进电中行保资空护料载高试与中卷带资问负料题荷试2下卷2,高总而中体且资配可料置保试时障卷,各调需类控要管试在路验最习;大题对限到设度位备内。进来在行确管调保路整机敷使组设其高过在中程正资1常料中工试,况卷要下安加与全强过,看度并22工且22作尽22下可22都能22可地护以缩1关正小于常故管工障路作高高;中中对资资于料料继试试电卷卷保破连护坏接进范管行围口整,处核或理对者高定对中值某资,些料审异试核常卷与高弯校中扁对资度图料固纸试定,卷盒编工位写况置复进.杂行保设自护备动层与处防装理腐置,跨高尤接中其地资要线料避弯试免曲卷错半调误径试高标方中高案资等,料,编试要5写、卷求重电保技要气护术设设装交备备置底4高调、动。中试电作管资高气,线料中课并敷3试资件且、设卷料中拒管技试试调绝路术验卷试动敷中方技作设包案术,技含以来术线及避槽系免、统不管启必架动要等方高多案中项;资方对料式整试,套卷为启突解动然决过停高程机中中。语高因文中此电资,气料电课试力件卷高中电中管气资壁设料薄备试、进卷接行保口调护不试装严工置等作调问并试题且技,进术合行,理过要利关求用运电管行力线高保敷中护设资装技料置术试做。卷到线技准缆术确敷指灵设导活原。。则对对:于于在调差分试动线过保盒程护处中装,高置当中高不资中同料资电试料压卷试回技卷路术调交问试叉题技时,术,作是应为指采调发用试电金人机属员一隔,变板需压进要器行在组隔事在开前发处掌生理握内;图部同纸故一资障线料时槽、,内设需,备要强制进电造行回厂外路家部须出电同具源时高高切中中断资资习料料题试试电卷卷源试切,验除线报从缆告而敷与采设相用完关高毕技中,术资要资料进料试行,卷检并主查且要和了保检解护测现装处场置理设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

约束问题的最优化方法

约束问题的最优化方法

m
⑤ .Φ ( x, r ) = f ( x) − r ∑ ln[− g u ( x)]
(k )
其中:惩罚(加权)因子 降低系数 c:
r ( 0 ) > r (1) > ....r ( k )
0< c <1
r ( k −1) ⋅ c = r ( k )
xk * → x *
当lim r ( k ) → 0
x ∈ D ⊂ Rn s.t. g u ( x ) ≥ 0, u = 1,2,..., p hv ( x ) = 0, v = 1,2,..., q min F ( x )
一. 约束优化问题解法分类: 约束优化方法按求解原理的不同可以分为直接法和间接法两类。
直接解法:随机方向搜索法、复合形法、可行方向法
其中:g u ( x) ≥ 0, u = 1,2,...m
③ .Φ ( x, r ) = f ( x) − ∑ ru ( k )
(k ) u =1
m
1 g u ( x)
④ .Φ ( x, r ) = f ( x) + r
(k )
(k )
(k )
1 ∑ 2 u =1 [ g u ( x )]
m u =1
k →∞
则Φ ( x, r ( k ) ) → f ( x) ,
) x12 + x22 例: 用内点法求 min f ( x=
s.t. g ( x ) = 1 − x1 ≤ 0
的约束最优解。
2 解: 首先构造内点惩罚函数:φ ( x , r ) = x12 + x2 − r k ln( x1 − 1)
(k ) u =1 m
lim r2 H [hv ( x ( k ) )] = 0

外点法求解优化问题

外点法求解优化问题

运行结果: 运行结果 及分析 最优解为: x1=0.499751 , x2=0.499751 min f(x)=0.499503 请按任意键继续. . . 分析: 通过数学方法求得最优解为(0.5,0.5),所以由程序运
行出来的结果是较为准确的。
ห้องสมุดไป่ตู้
备注
代码
语言选择:Microsoft Visual Studio2010(C++)
(在此处填入代码) 外点法: //用外点法求解一下约束优化问题 //min x1^2+x2^2 s.t #include <math.h> #include <stdio.h> #include <time.h> #include <stdlib.h>
f ( X k ) ),结束;否则,转(4)
M k +1 = CM k , k = k + 1 ,转(2)
第一次编出程序运行的时候,发现结果输不出来。起初以 为是自己程序编写的思路不对,可是仔细检查之后还是不知道 原因在哪里。经高人指点才知道,原来是自己一开始给最速下 降法中的 0.618 法的精度ε设置的太小了,以至于程序进入后 体会 无法跳出,进而出现循环不停的问题。这次的编程实现过程也 算给我了一个很宝贵的经验,编程过程中也要注意每个参数类 型的大小,例如 float、double 类型,从而防止数据溢出的现 象。
while(1) { if(mr*alpha(x)<=e) { printf("最优解为: x1=%lf , x2=%lf \n",x[0],x[1]); printf("min f(x)=%lf",x[0]*x[0]+x[1]*x[1]); return 0; } while(1) { vgrand(p,x,mr); if ( norm( p ) <= e ) break; else { t=gold(-5,5,1.18,p, x,e,mr); for (int i=0; i!=2; ++i) x[i]=x[i]+t*p[i]; } } mr=mr*10; } }

外点法求解约束优化问题

外点法求解约束优化问题

1 x1 xσ = = σ x2 1 + σ
显然, σ 越大, xσ 越接近问题的最优解,当 σ → +∞ 时,
1 xσ → x → 。 1
1 x = 所以问题的最优解为 1 。
min
x + σ P( x)
由于问题本身很简单, 我们利用无约束优化问题的最优性条件得到以 上问题的解。即利用解析的方法,得到
,x ≥ 2 dF ( x, σ ) 1 = dx 1 + 2σ ( x − 2) , x < 2

dF ( x, σ ) =0 dx
得到
xσ = 2 −
1 2σ
σ 越大,xσ 越接近问题的最优解, 显然, 当 σ → +∞ 时,xσ → x → 2 。
所以问题的最优解为 x = 2 。
例 8.2:考虑下列问题,利用外点法求解。
min
2 f ( x) = ( x1 − 1) 2 + x2
s.t. g ( x) = x2 − 1 ≥ 0
解:令
பைடு நூலகம்P( x) = max {0, − g ( x)}
2
x2 ≥ 1 0, = 2 ( x2 − 1) , x2 < 1
定义罚函数
2 F ( x, σ ) = ( x1 − 1) 2 + x2 +σ max {0, −( x2 − 1)} 2 2 x2 ≥ 1 ( x1 − 1) + x2 , = 2 2 2 ( x1 − 1) + x2 + σ ( x2 − 1) , x2 < 1 2
可通过求解下列无约束优化问题,求得该问题的近似解:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

题目:用外点法求解非线性约束最优化问题学院信息管理学院学生姓名余楠学号 ********专业数量经济学届别 2013指导教师易伟明职称教授二O一三年十二月用外点法求解非线性约束最优化问题摘要约束最优化问题是一类重要的数学规划问题。

本文主要研究了用外点罚函数法对约束非线性规划问题进行求解。

对于一个约束非线性规划用罚函数求解的基本思路是通过目标函数加上惩罚项,将原约束非线性规划问题转化为求解一系列无约束的极值问题。

本文最后利用c语言编程得到满足允许误差内的最优解。

本文主要对一个约束非线性规划问题的实例,首先利用上述迭代的方法,计算出各迭代点的无约束极值问题的最优解。

然后应用c语言编程,得到精确地最优解,需迭代四次次才使得ε≤0.001,得到的最优解为*X=(333.0)T。

.0,666关键词:外点罚函数法非线性规划约束最优化迭代最优解一、背景描述线性规划的目标函数和约束条件都是决策变量的线性函数,但如果目标函数或约束条件中含有决策变量的非线性函数,就称为非线性规划。

非线性规划与线性规划一样,也是运筹学的一个极为重要的分支,它在经济、管理、计划、统计以及军事、系统控制等方面得到越来越广泛的应用。

非线性规划模型的建立与线性规划模型的建立类似,但是非线性规划问题的求解却是至今为止的一个研究难题。

虽然开发了很多求解非线性规划的算法,但是目前还没有适用于求解所有非线性规划问题的一般算法,每个方法都有自己特定的适用范围。

罚函数法是应用最广泛的一种求解非线性规划问题的数值解法,它的基本思路是通过目标函数加上惩罚项,将原约束非线性规划问题转化为求解一系列无约束的极值问题。

这种惩罚体现在求解过程中,对于企图违反约束的那些迭代点,给予很大的目标函数值,迫使这一系列无约束问题的极小值点无限的向可行集(域)逼近,或者一直保持在可行集(域)内移动,直到收敛于原来约束问题的极小值点。

外点法的经济学解释如下:若把目标函数看成“价格”,约束条件看成某种“规定”,采购人员在规定的范围内采购时价格最便宜,但若违反了规定,就要按规定加收罚款。

采购人员付出的总代价应是价格和罚款的综合。

采购人员的目标是使总代价最小,当罚款规定的很苛刻时,违反规定支付的罚款很高。

这就迫使采购人员在规定的范围内采购。

数学上表现为罚因子足够大时,无约束极值问题的最优解应满足约束条件,而成为约束问题的最优解。

二、基础知识2.1 约束非线性优化问题的最优条件该问题是一个约束非线性优化问题,利用外点罚函数法求解该问题,约束非线性优化问题的最优解所要满足的必要条件和充分条件是我们设计算法的依据,为此有以下几个定理。

设具有不等式约束的极值问题:min ()X f s.t.i g (X)≥0 (*) 定理1(Kuhn-Tucker 条件)在(*)中假设:①*X 是局部最小值;②f (X),)(X g i i =1,2,…,m 在点*X 连续可微;③i g ∇(*X ),i {()}m i X g i E i ,2,1,0* ===∈线性无关,则存在一组参数,,2,1,0*m i u i=≥使得广义Lagrange 函数()()X g X f X L i m i i ∑=-=1)(,μμ满足:()()()⎪⎪⎪⎩⎪⎪⎪⎨⎧===≥=∇-∇∑=m i X g m i X g X f i i i mi i i ,2,1,0,2,1,00***1*** μμμ 对以上定理做几点说明: (1)()()∑==∇-∇mi iiX g Xf 1***μ本应是:()()0***=∇-∇∑∈X g X f Ei i i μ或()()∑∈∇=∇Ei i i X g X f ***μ,即()*X f ∇是紧约束函数()X g i 在*X 处的梯度的非负线性组合,但若规定:当E i ∉时,0*=iμ则等式可写成:()()0***=∇-∇∑=mii iiX g Xf μ(2)()0**=X g i iμ等价于()()()⎪⎩⎪⎨⎧=∉==∈=000******ii i i i i E i X g X g E i X g μμμ有时当有时当(3)如果对所有()*,X g E i i ∇∈线性无关,则*X 称为约束的一个正则点,即如果在*X 处起作用的约束函数的梯度是线性无关的,则*X 是一个正则点。

如果*X 不是正则点,则K-T 条件可能不成立。

定理2 设*X 是问题(*)的可行解,()X f ,()m i X g i ,2,1, =-是凸函数,且在*X 可微,又有*X 满足K-T 条件,则*X 是全局最优解。

根据以上两个定理可见,对凸规划来说,K-T 条件也是借的充分必要条件。

然而从具体例子可以看出利用极值的必要条件和充分条件去求非线性规划问题的最优解不都是很容易的,下面介绍应用广泛的外点罚函数法的基本算法。

2.2外点罚函数法的基本思想它的基本思路是通过目标函数加上惩罚项,这种惩罚体现在求解过程中,对于企图违反约束的那些迭代点,给与很大的目标函数值,迫使这一系列无约束问题的极小值点或者无限的向可行集逼近,或者一直保持在可行集内移动,直到收敛于原来约束问题的极小值点。

先考虑不含等式约束的非线性规划问题:()X f RX ∈min (){}m i X g X R i ,2,1,0 =≥= (1)构造一个函数:()⎩⎨⎧<∞≥=时当时当000t t t p现把()t X g i 视为,则当R x ∈时,()()m i X g P i ,,2,1,0 ==,当R X ∉时,()()m i X g P i ,,2,1, =∞=,即有:()()⎩⎨⎧∉∞∈=时当时当R X R X X g P i 0(2)再构造函数:()()()()∑=+=mi i X g P X f X 1ϕ 求解无约束极值问题:()X ϕmin(3)若(3)有极小值*X ,则由(2)可看出,这时应有()()m i X g P i ,,2,1,0* ==,即点R X ∈*,因而*X 不仅是问题(3)的最优解,同时也是原问题(1)的最优解。

从而把约束极值问题(1)的求解变为无约束极值问题(3)的求解。

但是,用上述方法构造的函数()t p 在0=t 处不连续,更没有导数。

为了求解方便,将该函数修改为:()⎩⎨⎧<≥=0002t tt t P 当当修改后的函数()t P 在0=t 处的导数等于0,而且()t P ,()t P '对任意的t 都连续。

当R X ∈时仍有()()01=∑=m i i X g P ,当R X ∉时有:()()∑=∞<<mi i X g P 10,而()X ϕ可改为:()()()()∑=+=mi i X g P M X f M X 1,ϕ或等价地:()()()[]∑=+=mi i X g M X f M X 12)(,0min ,ϕ问题(3)就变为:()M X ,m in ϕ (4) 如果原规划问题(1)有最优解,则式(4)的最优解为原问题(1)的最优解或近似最优解。

若()M M X ∈*,则()M X *是原问题的最优解,这是因为对任意的R X ∈有:()()()()()()()()M ,,**1X f M M X M X X g P M X f mi i =≥=+∑=ϕϕ即当R ∈X 时有:()()()M X f X f *≥。

即使()R M X ∉*,它也会相当接近于式(1)的约束条件的边界。

这是因为:若()M X *为式(4)的最优解,则在M 相当大的情况下,只可能使()()[]∑=mi i X g 12,0min 相当小,即()M X *相当靠近约束域R 的边界。

函数()M X ,ϕ称为罚函数,其中第二项()()∑=mi i X g P M 1称为惩罚项,M 称为罚因子。

实际计算时,总是先给定一个初始点()0X 和初始罚因子01>M ,求解无约束极值问题(4):()1,m in M X ϕ,若其最优解()R M X ∈1*,则它已是(1)的最优解;否则,以()1*M X 为新的起始点,加大罚因子,取21M M >,重新求解(4)。

如此循环,或者存在某个k M ,使得()k M X ,m in ϕ的最优解()R M X k ∈*,即是式(1)的最优解;或者存在k M 的一个无穷大序列: <<<<<k M M M 210,随着M 值的增大,罚函数中的惩罚项所起的作用增大,()M X ,m in ϕ的最优解()M X *与约束域R 的距离越来越近。

当k M 趋于无穷大时,最优点序列(){}k M X *就从R 的外部趋于R 的边界点。

即趋于原问题(1)最优解*X 。

2.3约束非线性优化问题的外点罚函数法迭代步骤 外点法的迭代步骤:第1步 选取初始点0x ,取01>M (可取11=M ),给定 ε>0,令k=1; 第2步 求无约束极值问题的最优解()k X :()()()k k k M X M X ,,min ϕϕ=,其中()()()()()()()[]∑=+=mi kikk k k X g M Xf M X12,0min ,ϕ;第3步 若对某一个()m i i ≤≤1有()()ε≥-k i X g ,则取k k CM M =+1,其中5=C ~10,置k=k+1,转(2);否则,迭代终止,取()k X X =*。

由以上计算步骤可知,外点罚函数法迭代终止时,求得的是目标函数驻点的一个近似点。

三、题目举例用外点罚函数法求解约束非线性规划问题:2212min(2)x x +,s.t.1x +2x 1≥设初始取为()0X =(1,1)T ,迭代到满足允许误差ε=0.001为止的解。

四、问题求解3.1对原无约束非线性规划迭代构造罚函数()()()()[]∑=+=mi i k k X g M X f M X 12,0min ,ϕ所以()()[]22122211,0min 2,-+++=x x M x x M X k k ϕ()1,0min 222111-++=∂∂x x M x x k ϕ()1,0min 242122-++=∂∂x x M x x k ϕ对于不满足约束条件的点()Tx x X 21,=,有:0121<-+x x令:021=∂∂=∂∂x x ϕϕ,得:()()01221,0m in 22211211=-++=-++x x M x x x M x k k ()()01241,0m in 24212212=-++=-++x x M x x x M x k k得()k M X ,min ϕ的解为:()Tk k k k k M M M M M X ⎪⎪⎭⎫⎝⎛++=23,232 即 2321+=k k M M x ,232+=k k M M x (**)首先进行第一次迭代给定初始点()()TX 1,10=,同时取11=M 代入公式(**)得521=x ,512=x ()()()001.052151521211=>=+--=-+-=-εx x X g i进行第二次迭代取C=10,得1012==CM M 代入公式(**) 得851=x ,1652=x ()()001.01611165852=>=+--=-εX g i进行第三次迭代1003=M 代入公式(**)得3022001=x ,3021002=x ()()001.0302213021003022003=>=+--=-εX g i进行第四次迭代10004=M 代入公式(**)得300220001=x ,300210002=x ()()001.030022130021000300220004=<=+--=-εX g i至此满足了精度要求,迭代终止,所得原问题的最优近似解为:667.0300220001≈=x 333.0300210002≈=x3.2对原约束非线性规划进行c 语言编程求解就这样无限的迭代下去,直到()()ε<-k i X g 为止,为此,我们可以用c 语言编程得到,其算法设计如下图所示:C 语言源程序代码: #include "stdio.h"void fun(double a[],double b[],double w) { double re[2]; re[0]=re[1]=0.0;if((a[0]==0.0&&a[1]==0.0)||(a[0]==0.0&&b[0]==0.0)||(b[0]==0.0&&b[1]==0.0)||(a[1]==0.0&&b[1]==0.0)){printf("无解");return;}if(a[0]!=0.0){if(a[0]*b[1]-a[1]*b[0]==0.0){printf("无解");}re[1]=(a[0]*b[2]-b[0]*a[2])/(a[0]*b[1]-a[1]*b[0]);re[0]=(a[2]-re[1]*a[1])/a[0];}else{ re[1]=a[2]/a[1];re[0]=(a[2]-a[1]*re[1])/b[0];}if(1-re[0]-re[1]<w);printf("x1=%f ",re[0]);printf("x2=%f\n",re[1]);}void main(){ double a1[3],b1[3],w;int m,c=1;printf("请输入初始罚因子:m=");scanf("%f",&m);printf("请输入所要到的精度:w=");scanf("%f",&c);a1[0]=2*m;a1[1]=4+2*m;a1[2]=2*m;b1[0]=2+2*m;b1[1]=2*m;b1[2]=2*m;fun(a1,b1,w);}所得结果截屏如图所示:五、结论与展望从求解的过程中可以看出,随着罚因子的增大,在求解无约束最优化问题的过程中,将迫使()kMX向可行域接近。

相关文档
最新文档