用外点法求解非线性约束最优化问题
- 格式:doc
- 大小:424.04 KB
- 文档页数:12
一.单纯性法一.单纯性法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$,我们可以得到原始问题的一组等价条件。
二、内点法内点法是解决非线性约束优化问题的一种有效算法。
该方法通过将约束条件转化为惩罚项,将原问题转化为无约束的目标函数最小化问题。
一、引言我们需要明确什么是等式约束最优化问题。
在实际应用中,经常会遇到这样的问题:在满足一定的条件约束下,寻找一个使得某个目标函数达到最优值的解。
而等式约束最优化问题就是在满足一系列等式约束条件的前提下,求解出目标函数的最优值和对应的解向量。
在数学领域,等式约束最优化问题有着重要的理论和实际意义,对于工程、经济、管理等领域都有着广泛的应用。
二、问题描述一个典型的等式约束最优化问题可以用如下的数学形式来描述: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 用外点法求下列问题的最优解方法一:外点牛顿法:clcm=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);% a b为最优点坐标,f0为最优点函数值,f1 f2最优点梯度。
syms x1 x2 e; %e为罚因子。
m(1)=1;c=10;a(1)=0;b(1)=0; %c为递增系数。
赋初值。
f=x1^2+x2^2+e*(1-x1)^2;f0(1)=1;fx1=diff(f,'x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(fx1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');%求偏导、海森元素。
for k=1:100 %外点法e迭代循环.x1=a(k);x2=b(k);e=m(k);for n=1:100 %梯度法求最优值。
f1=subs(fx1); %求解梯度值和海森矩阵f2=subs(fx2);f11=subs(fx1x1);f12=subs(fx1x2);f21=subs(fx2x1);f22=subs(fx2x2);if(double(sqrt(f1^2+f2^2))<=0.001) %最优值收敛条件a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs (f));break;elseX=[x1 x2]'-inv([f11 f12;f21 f22])*[f1 f2]';x1=X(1,1);x2=X(2,1);endendif(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001) %罚因子迭代收敛条件a(k+1) %输出最优点坐标,罚因子迭代次数,最优值b(k+1)kf0(k+1)break;elsem(k+1)=c*m(k);endend方法二:外点梯度法:clcm=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);syms d x1 x2 e;m(1)=1;c=10;a(1)=0;b(1)=0;f=x1^2+x2^2+e*(1-x1)^2; f0(1)=1;fx1=diff(f,'x1');fx2=diff(f,'x2');for k=1:100x1=a(k);x2=b(k);e=m(k);for n=1:100f1=subs(fx1);f2=subs(fx2);if(double(sqrt(f1^2+f2^2))<=0.002)a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs (f));break;elseD=(x1-d*f1)^2+(x2-d*f2)^2+e*(1-(x1-d*f1))^2;Dd=diff(D,'d'); dd=solve(Dd); x1=x1-dd*f1; x2=x2-dd*f2;endendif(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001) a(k+1)b(k+1)kf0(k+1)break;elsem(k+1)=c*m(k);endend2,点法求下列问题的最优解内点牛顿法clcm=zeros(1,50);a=zeros(1,50);b=zeros(1,50);f0=zeros(1,50);syms x1 x2 e;m(1)=1;c=0.2;a(1)=2;b(1)=-3;f=x1^2+x2^2-e*(1/(2*x1+x2-2)+1/(1-x1)); f0(1)=15;fx1=diff(f,'x1');fx2=diff(f,'x2');fx1x1=diff(fx1,'x1');fx1x2=diff(f x1,'x2');fx2x1=diff(fx2,'x1');fx2x2=diff(fx2,'x2');for k=1:100x1=a(k);x2=b(k);e=m(k);for n=1:100f1=subs(fx1);f2=subs(fx2);f11=subs(fx1x1);f12=subs(fx1x2);f21=subs(fx2x1);f22=subs(fx2x2);if(double(sqrt(f1^2+f2^2))<=0.002)a(k+1)=double(x1);b(k+1)=double(x2);f0(k+1)=double(subs (f));break;elseX=[x1 x2]'-inv([f11 f12;f21 f22])*[f1 f2]';x1=X(1,1);x2=X(2,1);endendif(double(sqrt((a(k+1)-a(k))^2+(b(k+1)-b(k))^2))<=0.001)&&(double(abs((f0(k+1)-f0(k))/f0(k)))<=0.001) a(k+1)b(k+1)kf0(k+1)break;elsem(k+1)=c*m(k);endend。
第一、填空题1.组成优化设计的数学模型的三要素是 设计变量 、目标函数 和 约束条件 。
2.可靠性定量要求的制定,即对定量描述产品可靠性的 参数的选择 及其 指标的确定 。
3.多数产品的故障率随时间的变化规律,都要经过浴盆曲线的 早期故障阶段 、 偶然故障阶段 和 耗损故障阶段 。
4.各种产品的可靠度函数曲线随时间的增加都呈 下降趋势 。
5.建立优化设计数学模型的基本原则是在准确反映 工程实际问题 的基础上力求简洁 。
6.系统的可靠性模型主要包括 串联模型 、 并联模型 、 混联模型 、 储备模型 、 复杂系统模型 等可靠性模型。
7. 函数f(x 1,x 2)=2x 12 +3x 22-4x 1x 2+7在X 0=[2 3]T 点处的梯度为 ,Hession矩阵为 。
(2.)函数()22121212,45f x x x x x x =+-+在024X ⎡⎤=⎢⎥⎣⎦点处的梯度为120-⎡⎤⎢⎥⎣⎦,海赛矩阵为2442-⎡⎤⎢⎥-⎣⎦8.传统机械设计是 确定设计 ;机械可靠性设计则为 概率设计 。
9.串联系统的可靠度将因其组成单元数的增加而 降低 ,且其值要比可靠度最低 的那个单元的可靠度还低。
10.与电子产品相比,机械产品的失效主要是 耗损型失效 。
11. 机械可靠性设计 揭示了概率设计的本质。
12. 二元函数在某点处取得极值的充分条件是()00f X ∇=必要条件是该点处的海赛矩阵正定。
13.对数正态分布常用于零件的 寿命疲劳强度 等情况。
14.加工尺寸、各种误差、材料的强度、磨损寿命都近似服从 正态分布 。
15.数学规划法的迭代公式是 1k k k k X X d α+=+ ,其核心是 建立搜索方向, 和 计算最佳步长 。
16. 模型求解 两方面的内容。
17.无约束优化问题的关键是 确定搜索方向 。
18.多目标优化问题只有当求得的解是 非劣解 时才有意义,而绝对最优解存在的可能性很小。
19.可靠性设计中的设计变量应具有统计特征,因而认为设计手册中给出的数据范围涵盖了均值左右 3σ 的区间。
数学规划课程设计题目外点法求约束最优化问题姓名学号成绩摘要罚函数是应用最广泛的一种求解式的数值解法,基本思路是通过目标函数加上惩罚项,将原约束非线性规划问题转化为求解一系列无约束的极值问题。
(这种惩罚体现在求解过程中,对于企图违反约束的那些迭代点,给予很大的目标函数值,迫使这一系列无约束问题的极小值或者无限地向可行解(域)逼近,或者一直保持在可行集(域)内移动,直到收敛于原来约束问题的极小值点。
)本文.......外点法可用于求解不等式约束优化问题,又可用于求解等式约束优化问题,主要特点是惩罚函数定义在可行域的外部,从而在求解系列无约束优化问题的过程中,从可行域外部逐渐逼近原约束优化问题最优解。
关键词:罚函数法、约束最优化问题、外点法一、预备知识(基本理论)看下是否还有定理、定义等等,可以加一些外点惩罚函数法的一般形式考虑不等式约束优化设计时:对),2,1(,0)(..),(min m u X g t s Rx X f u n=≥∈构造一般形式的外点惩罚函数为:[]21})(,0{min )(),(∑=+=mu ukkX grX f r X P其中:(1)当满足所有约束条件时惩罚项为0,即[]{}0)(,0min 21=∑=mu ukX gr(2)当X违反某一约束条件,即0)(<X g u 时[]{}[]0)()(,0min 221>=∑=X g rX gru kmu uk表明X 在可行域外,惩罚项起作用,且若X 离开约束边界越远,惩罚力度越大。
这样用惩 罚的方法迫使迭代点回到可行域。
(3)惩罚因子k r 是一递增的正数数列,即 <<<<<k r r r r 210 且∞=∞→k k r lim 一般1=k r考虑等式约束的优化问题:),,2,1(0)(...),(min p v X h t s RX X f v n==∈构造外点罚函数:[]∑=+=pv vkkX hrX f r X P 12)()(),(同样,若X 满足所有等式约束则惩罚项为0;若不能满足,则[]0)(2>∑=pqv v k X h r 且随着惩罚因子的增大而增大;综合等式约束和不等式约束情况,可以得到一般约束优化问题的外点罚函数公式为:⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧⎥⎦⎤⎢⎣⎡++=∑∑==m u pv v u k k X h X g r X f r X p 1212)())(,0min()(),( 实际计算中,因为惩罚因子k r 不可能达到无穷大,故所得的最优点也不可能收敛到原问题的最优点,而是落在它的外面,显然,这就不能严格满足约束条件。
MATLAB外点法求解约束优化问题1.简介本文档介绍了使用MA T LA B外点法(也称为外部点法、外罚函数法)求解约束优化问题的基本原理和步骤。
外点法是一种常用的数值优化方法,在约束优化问题中广泛应用,能够有效地寻找到约束条件下的最优解。
2.基本原理外点法通过引入罚函数或松弛变量,将原始的约束优化问题转化为一个无约束优化问题。
该方法的基本思想是通过将约束条件转化为一个或多个惩罚项,使得违反约束条件的解对应的目标函数值增大,从而迫使求解算法在搜索过程中避免这些不满足约束条件的解。
3.求解步骤外点法求解约束优化问题的步骤可以分为以下几个主要部分:3.1定义目标函数和约束条件在使用外点法求解约束优化问题时,首先需要明确问题的目标函数和约束条件。
目标函数是需要最小化或最大化的函数,约束条件则是目标函数必须满足的附加条件。
3.2引入罚函数或松弛变量为了将约束优化问题转化为无约束优化问题,需要引入罚函数或松弛变量来约束目标函数的取值范围。
罚函数或松弛变量的引入方式取决于具体的约束条件,可以是线性的、二次的或非线性的形式。
3.3构造增广拉格朗日函数将目标函数和约束条件结合起来,构造增广拉格朗日函数。
增广拉格朗日函数是一个包含目标函数、约束条件和罚函数(或松弛变量)的函数,通过对该函数进行优化,可以求得原始问题的最优解。
3.4外点法迭代求解使用外点法进行迭代求解,通过不断更新目标函数参数和罚函数参数,逐渐逼近最优解。
外点法的迭代过程中,需要根据问题的具体情况选择合适的求解算法,如牛顿法、梯度下降法等。
3.5判断收敛性和输出结果在迭代求解的过程中,需要判断算法是否收敛。
一般可以通过判断目标函数值或迭代变量的变化情况来确定算法是否达到了稳定的解。
当算法达到了稳定解时,即可输出最优解。
4.总结本文档介绍了MA TL AB外点法求解约束优化问题的基本原理和步骤。
外点法是一种有效的约束优化问题求解方法,通过引入罚函数或松弛变量,将约束优化问题转化为无约束优化问题,进而寻找最优解。
外点罚函数法外点罚函数法(Outlier Penalty Function Method)是一种求解优化问题的新方法。
它能够很好地处理多维优化问题,并且可以有效地处理异常点,可以考虑由于特定原因不能完全遵循假定分布的情况。
传统的优化方法,如最小二乘法,有时无法处理多维数据和不符合传统假设的异常数据。
这种复杂的数据结构可能会导致一些传统方法的失败。
此外,这种方法还能够提供更高的估计精度。
Outlier Penalty Function Method是基于罚函数的优化法,不同于传统的优化法,它为每个数据点添加一个罚函数,以便处理异常点。
这里的罚函数表示每个点的离群程度。
对于不同的离群点,我们可以采用不同的罚函数来处理。
比如,下面是一个二元优化问题:最小化函数f (x1, x2) = (x1-3)^2 + (x2-2)^2+ 0.5,其中x1和x2是两个自变量。
使用Outlier Penalty Function Method,我们可以将罚函数添加到优化函数中:最小化函数f (x1, x2) + β* penalty(x1, x2) =(x1-3)^2 + (x2-2)^2+ 0.5 + β * penalty (x1, x2)其中,penalty(x1, x2)是一个罚函数,表示每个点的离群程度,比如多项式罚函数或者指数罚函数。
β是一个正常参数,反映了每个离群点的影响力。
此外,Outlier Penalty Function Method还可以用于非线性优化问题。
其运作原理是将罚函数添加到原始优化函数中。
使用这种方法,即使存在异常点,也可以从优化函数的迭代解中找出最优的解决方案。
总的来说,外点罚函数法是一种新的、有效的、可以应用到非线性优化问题中的优化方法。
它可以有效地处理异常点,并且在计算结果的准确度上有很大的提升。
它还可以很好地应用于多维优化问题,并且可以改善传统方法对数据异常值的处理效果。
因此,希望未来能够有更多的工作来探索和开发Outlier Penalty Function Method。
题目:用外点法求解非线性约束最优化问题学院信息管理学院学生姓名余楠学号 ********专业数量经济学届别 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向可行域接近。