第六讲 非线性规划问题的求解方法.

Slides:



Advertisements
Similar presentations
一、 一阶线性微分方程及其解法 二、 一阶线性微分方程的简单应用 三、 小结及作业 §6.2 一阶线性微分方程.
Advertisements

第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
目录 上页 下页 返回 结束 习题课 一、导数和微分的概念及应用 二、导数和微分的求法 导数与微分 第二章.
2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
第八章 第四节 机动 目录 上页 下页 返回 结束 一个方程所确定的隐函数 及其导数 隐函数的微分法.
第七节 函数的微分 一 、微分 概念 二、微分的几何意义 三、 基本初等函数的微分公 式与 微分运算法则 四 、小结.
2.6 隐函数微分法 第二章 第二章 二、高阶导数 一、隐式定义的函数 三、可微函数的有理幂. 一、隐函数的导数 若由方程 可确定 y 是 x 的函数, 由 表示的函数, 称为显函数. 例如, 可确定显函数 可确定 y 是 x 的函数, 但此隐函数不能显化. 函数为隐函数. 则称此 隐函数求导方法.
2.5 函数的微分 一、问题的提出 二、微分的定义 三、可微的条件 四、微分的几何意义 五、微分的求法 六、小结.
第二章 导数与微分 一. 内 容 要 点 二. 重 点 难 点 三. 主 要 内 容 四. 例 题与习题.
全微分 教学目的:全微分的有关概念和意义 教学重点:全微分的计算和应用 教学难点:全微分应用于近似计算.
2.3 函数的微分. 四川财经职业学院 课前复习 高阶导数的定义和计算方法。 作业解析:
第三节 微分 3.1 、微分的概念 3.2 、微分的计算 3.3 、微分的应用. 一、问题的提出 实例 : 正方形金属薄片受热后面积的改变量.
第6章 利用MATLAB语言 求解科学运算问题
第四章无约束优化方法 第一节 概述 从第一章列举的机械设计问题,大多数实际问题是约束优化问题。
6.9二元一次方程组的解法(2) 加减消元法 上虹中学 陶家骏.
汽车优化设计 第二章:优化方法的数学基础 王琥 湖南大学 机械与运载工程学院
数学建模方法及其应用 韩中庚 编著.
例题 教学目的: 微积分基本公式 教学重点: 牛顿----莱布尼兹公式 教学难点: 变上限积分的性质与应用.
高等数学电子教案 第五章 定积分 第三节 微积分基本定理.
第五节 微积分基本公式 、变速直线运动中位置函数与速度 函数的联系 二、积分上限函数及其导数 三、牛顿—莱布尼茨公式.
一、原函数与不定积分 二、不定积分的几何意义 三、基本积分公式及积分法则 四、牛顿—莱布尼兹公式 五、小结
第二节 微积分基本公式 1、问题的提出 2、积分上限函数及其导数 3、牛顿—莱布尼茨公式 4、小结.
第四章 函数的积分学 第六节 微积分的基本公式 一、变上限定积分 二、微积分的基本公式.
定积分习题课.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
常用的无约束搜索方法 王琥 湖南大学 机械与运载工程学院 汽车车身先进设计制造国家重点实验室.
全 微 分 欧阳顺湘 北京师范大学珠海分校
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
第三章 多维随机变量及其分布 §2 边缘分布 边缘分布函数 边缘分布律 边缘概率密度.
四*、非线性规划 第7章 无约束问题 第8章 约束极值问题 清华大学出版社.
全国高校数学微课程教学设计竞赛 知识点名称: 导数的定义.
四*、 非线性规划 第7章 无约束问题 第8章 约束极值问题 清华大学出版社.
第4章 非线性规划 一维搜索方法 2011年11月.
计算机数学基础 主讲老师: 邓辉文.
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
动态规划(Dynamic Programming)
第八模块 复变函数 第二节 复变函数的极限与连续性 一、复变函数的概念 二、复变函数的极限 二、复变函数的连续性.
Matlab 选讲 二 上海交通大学数学系 刘小军
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
四*、 非线性规划 第7章 无约束问题 第8章 约束极值问题.
第二十二章 曲面积分 §1 第一型曲面积分 §2 第二型曲面积分 §3 高斯公式与斯托克斯公式.
线性规 Linear Programming
概 率 统 计 主讲教师 叶宏 山东大学数学院.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
第4章 Excel电子表格制作软件 4.4 函数(一).
数学模型实验(五) 优化模型与线性规划.
第三单元 第2课 实验 一元函数的积分 实验目的:掌握matlab求解有关不定积分和定积分的问题,深入理解定积分的概念和几何意义。
正切函数的图象和性质 周期函数定义: 一般地,对于函数 (x),如果存在一个非零常数T,使得当x取定义域内的每一个值时,都有
iSIGHT 基本培训 使用 Excel的栅栏问题
3.1 变化率与导数   3.1.1 变化率问题 3.1.2 导数的概念.
函 数 连 续 的 概 念 淮南职业技术学院.
第三章 函数的微分学 第二节 导数的四则运算法则 一、导数的四则运算 二、偏导数的求法.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
学习任务三 偏导数 结合一元函数的导数学习二元函数的偏导数是非常有用的. 要求了解二元函数的偏导数的定义, 掌握二元函数偏导数的计算.
第一部分:概率 产生随机样本:对分布采样 均匀分布 其他分布 伪随机数 很多统计软件包中都有此工具 如在Matlab中:rand
1.非线性规划模型 2.非线性规划的Matlab形式
建模常见问题MATLAB求解  .
一元二次不等式解法(1).
第 六 章 约束最优化方法.
第15讲 特征值与特征向量的性质 主要内容:特征值与特征向量的性质.
2019/5/21 实验一 离散傅立叶变换的性质及应用 实验报告上传到“作业提交”。 11:21:44.
高中数学选修 导数的计算.
2019/5/20 第三节 高阶导数 1.
第二节 函数的极限 一、函数极限的定义 二、函数极限的性质 三、小结 思考题.
正弦、余弦函数的性质 华容一中 伍立华 2017年2月24日.
滤波减速器的体积优化 仵凡 Advanced Design Group.
第三章 从概率分布函数的抽样 (Sampling from Probability Distribution Functions)
线性规划 Linear Programming
三角 三角 三角 函数 余弦函数的图象和性质.
一元一次方程的解法(-).
Presentation transcript:

第六讲 非线性规划问题的求解方法

一、非线性规划问题的几种求解方法 1. 罚函数法(外点法) 一、非线性规划问题的几种求解方法 1. 罚函数法(外点法) 基本思想: 利用目标函数和约束函数构造辅助函数:

要求构造的函数 具有这样的性质:当点x位于可行域以外时, 取值很大,而离可行域越远则越大;当点在可行域内时,函数 因此可以将前面的有约束规划问题转换为下列无约束规划模型: 其中称为 罚项, 称为罚因子, 称为罚函数。

的定义一般如下: 函数 一般定义如下:

算法步骤 如何将此算法模块化:

罚项函数: 无约束规划目标函数: 求解非线性规划模型例子

程序1:主程序main2.m global lamada%主程序main2.m,罚函数方法 x0=[1 1]; lamada=2; c=10; e=1e-5; k=1; while lamada*fun2p(x0)>=e x0=fminsearch('fun2min',x0); lamada=c*lamada; k=k+1; end disp(‘最优解’),disp(x0) disp('k='),disp(k)

function r=fun2p(x) %罚项函数 r=((x(1)-1)^3-x(2)*x(2))^2; 程序2:计算 的函数fun2p.m function r=fun2p(x) %罚项函数 r=((x(1)-1)^3-x(2)*x(2))^2;

程序3:辅助函数程序fun2min.m function r=fun2min(x) %辅助函数 global lamada r=x(1)^2+x(2)^2+lamada*fun2p(x);

运行输出: 最优解 1.00012815099165 -0.00000145071779   k= 33

1、用外点法求解下列模型 2、将例子程序改写为一个较为通用的罚函数法程序。(考虑要提供哪些参数) 练习题: 1、用外点法求解下列模型 2、将例子程序改写为一个较为通用的罚函数法程序。(考虑要提供哪些参数)

仅适合于不等式约束的最优化问题 其中 都是连续函数,将模型的定义域记为 2. 内点法(障碍函数法) 仅适合于不等式约束的最优化问题 其中 都是连续函数,将模型的定义域记为

为了保持迭代点含于可行域内部,我们定义障碍函数 构造辅助函数 为了保持迭代点含于可行域内部,我们定义障碍函数

由于 很小,则函数 取值接近于f(x),所以原问题可以归结为如下规划问题的近似解: 3. 问题转化为一个无约束规划 由于 很小,则函数 取值接近于f(x),所以原问题可以归结为如下规划问题的近似解:

练习题: 请用内点法算法求解下列问题:

讲解了两个求解有约束非线性最小化规划 特点: 易于实现,方法简单; 没有用到目标函数的导数 问题的转化技巧(近似为一个无约束规划) 小结 讲解了两个求解有约束非线性最小化规划 特点: 易于实现,方法简单; 没有用到目标函数的导数 问题的转化技巧(近似为一个无约束规划)

直接搜索法 以梯度法为基础的间接法 无约束规划的Matlab求解函数 数学建模案例分析(截断切割,飞机排队) 4、其它求解算法 (1)间接法 (2)直接法 直接搜索法 以梯度法为基础的间接法 无约束规划的Matlab求解函数 数学建模案例分析(截断切割,飞机排队)

(1)间接法 在非线性最优化问题当中,如果目标函数能以解析函数表示,可行域由不等式约束确定,则可以利用目标函数和可行域的已知性质,在理论上推导出目标函数为最优值的必要条件,这种方法就称为间接法(也称为解析法) 。 一般要用到目标函数的导数。

(2)直接法 直接法是一种数值方法 这种方法的基本思想是迭代,通过迭代产生一个点序列{ X(k) },使之逐步接近最优点。 只用到目标函数。 如黄金分割法、Fibonacci、随机搜索法。

注意:数值求解最优化问题的计算效率取决于确定搜索方向P (k)和步长 的效率。 (3)迭代法一般步骤 注意:数值求解最优化问题的计算效率取决于确定搜索方向P (k)和步长 的效率。

最速下降法(steepest descent method) 由法国数学家Cauchy于1847年首先提出。在每次迭代中,沿最速下降方向(负梯度方向)进行搜索,每步沿负梯度方向取最优步长,因此这种方法称为最优梯度法。 特点: 方法简单,只以一阶梯度的信息确定下一步的搜索方向,收敛速度慢; 越是接近极值点,收敛越慢; 它是其它许多无约束、有约束最优化方法的基础。 该法一般用于最优化开始的几步搜索。

以梯度法为基础的最优化方法 求f(x)在En中的极小点 思想: 基础:方向导数、梯度 方向导数是反映函数值沿某一方向的变化率问题 方向导数沿梯度方向取得最大值

通过一系列一维搜索来实现。 本方法的核心问题是选择搜索方向。 搜索方向的不同则形成不同的最优化方法。

最速下降法算法:

算法说明 可通过一维无约束搜索方法求解

例子:用最速下降法解下列问题 初始条件 分析: 1、编写一个梯度函数程序fun1gra.m 2、求 (可以调用函数fminsearch )函数fungetlamada.m 3、最速下降法主程序main1.m

第一步:计算梯度程序 fun1gra.m function r=fun1gra(x) %最速下降法求解示例 %函数f(x)=2*x1^2+x2^2的梯度的计算 % r(1)=4*x(1); r(2)=2*x(2);

第二步:求 最优的目标函数 function r=fungetlamada(lamada) %关于lamada的一元函数,求最优步长 第二步:求 最优的目标函数 function r=fungetlamada(lamada) %关于lamada的一元函数,求最优步长 global x0 d=fun1gra(x0); r=2*(x0(1)-lamada*d(1))^2+(x0(2)-lamada*d(2))^2; %注意负号表示是负梯度

第三步:主程序main1.m %最速下降方法实现一个非线性最优化问题 % min f(x)=2*x1^2+x2^2 global x0 yefi=0.0001; k=1; d=-fun1gra(x0); lamada=1;

主程序main1.m(续) while sqrt(sum(d.^2))>=yefi lamada=fminsearch(‘fungetlamada’,lamada);%求最优步长lamada x0=x0-lamada*fun1gra(x0);%计算x0 d=fun1gra(x0);%计算梯度 k=k+1;%迭代次数 end disp('x='),disp(x0),disp('k='),disp(k),disp('funobj='),disp(2*x0(1)^2+x0(2)^2)

三、Matlab求解有约束非线性规划

1. 用fmincon函数求解形如下面的有约束非线性规划模型 一般形式:

用Matlab求解有约束非线性最小化问题 求解非线性规划问题的Matlab函数为: fmincon 1.约束中可以有等式约束 2.可以含线性、非线性约束均可

输入参数语法: x = fmincon(fun,x0,A,b) x = fmincon(fun,x0,A,b,Aeq,beq) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...)

输入参数的几点说明 模型中如果没有A,b,Aeq,beq,lb,ub的限制,则以空矩阵[ ]作为 参数传入; nonlcon:如果包含非线性等式或不等式约束,则将这些函数 编写为一个Matlab函数, nonlcon就是定义这些函数的程序文件名; 不等式约束 c(x)<=0 等式约束 ceq(x)=0. 如果nonlcon=‘mycon’ ; 则myfun.m定义如下 function [c,ceq] = mycon(x) c = ...     % 计算非线性不等式约束在点x处的函数值 ceq = ...   %计算机非线性等式约束在点x处的函数值

2个不等式约束, 2个等式约束 3个决策变量x1,x2,x3 如果nonlcon以‘mycon1’作为参数值,则程序mycon1.m如下

对照约束条件编写myfun1.m function [c,ceq] = mycon1(x) c(1) = x(1)*x(1)+x(2)*x(2)+x(3)*x(3)-100 c(2) = 60 - x(1)*x(1) + 10*x(3)*x(3) ceq(1) = x(1) + x(2)*x(2) + x(3) - 80 ceq(2) = x(1)^3 + x(2)*x(2) + x(3) - 80

nonlcon的高级用法 允许提供非线性约束条件中函数的梯度 设置方法: options = optimset('GradConstr', 'on') 如果提供非线性约束条件中函数梯度, nonlcon的函数必须如下格式:

参数nonlcon的函数一般格式如下 function [c,ceq,GC,GCeq] = mycon(x) c = ...          % 计算非线性不等式约束在点x处的函数值 ceq = ...     %计算机非线性等式约束在点x处的函数值 if nargout > 2   % nonlcon 如果四个输出参数    GC = ...      % 不等式约束的梯度    GCeq = ...    % 等式约束的梯度 end

输出参数语法: [x,fval] = fmincon(...) [x,fval,exitflag] = fmincon(...) [x,fval,exitflag,output] = fmincon(...) [x,fval,exitflag,output,lambda] = fmincon(...) [x,fval,exitflag,output,lambda,grad] = fmincon(...) [x,fval,exitflag,output,lambda,grad,hessian] = fmincon(...) 运用步骤: 将自己的模型转化为上面的形式 写出对应的参数 调用函数

请问: 1、结合fmincon函数,需要提供哪些参数

第一步:编写一个M文件返回目标函数f在点x处的值函数程序 函数myfun.m function f = myfun(x) f = -x(1) * x(2) * x(3);

第二步:为了调用MATLAB函数,必须将模型中的约束转化为如下形式(<=)。 这是2个线性约束,形如 这里: A=[-1 -2 -2; 1 2 2 ]; b=[0 72]’;

第三步:提供一个搜索起点,然后调用相应函数,程序如下: % 给一个初始搜索点 x0 = [10; 10; 10]; [x,fval] = fmincon('myfun',x0,A,b)

主程序(整体): A=[-1 -2 -2; 1 2 2 ]; b=[0 72]’; % 给一个初始搜索点 x0 = [10; 10; 10]; [x,fval] = fmincon('myfun',x0,A,b)

最后得到如下结果:  x = 24.0000 12.0000   fval = -3.4560e+03

2.非负条件下线性最小二乘 lsqnonneg 适合如下模型: 注意:约束只有非负约束

x =lsqnonneg(c,d) x =lsqnonneg(c,d,x0) x =lsqnonneg(c,d,x0,options) 语法: x =lsqnonneg(c,d) x =lsqnonneg(c,d,x0) x =lsqnonneg(c,d,x0,options)

3.有约束线性最小二乘lsqlin 适合如下模型: 注意:约束有线性等式、不等式约束

语法: x = lsqlin(C,d,A,b) x = lsqlin(C,d,A,b,Aeq,beq) x = lsqlin(C,d,A,b,Aeq,beq,lb,ub) x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0) x = lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options) [x,resnorm] = lsqlin(...) [x,resnorm,residual] = lsqlin(...) [x,resnorm,residual,exitflag] = lsqlin(...) [x,resnorm,residual,exitflag,output] = lsqlin(...) [x,resnorm,residual,exitflag,output,lambda] = lsqlin(...)

4.非线性最小二乘lsqnonlin 适合模型:

语法: x = lsqnonlin(fun,x0) x = lsqnonlin(fun,x0,lb,ub) x = lsqnonlin(fun,x0,lb,ub,options) x = lsqnonlin(fun,x0,options,P1,P2, ... ) [x,resnorm] = lsqnonlin(...) [x,resnorm,residual] = lsqnonlin(...) [x,resnorm,residual,exitflag] = lsqnonlin(...) [x,resnorm,residual,exitflag,output] = lsqnonlin(...) [x,resnorm,residual,exitflag,output,lambda] = lsqnonlin(...) [x,resnorm,residual,exitflag,output,lambda,jacobian] = lsqnonlin(...)

resnorm 等于 norm(C*x-d)^2 residual 等于C*x-d 返回参数说明 resnorm 等于 norm(C*x-d)^2 residual 等于C*x-d 例1:求解x,使得下式最小

第一步:编写M文件myfun.m计算向量F function F = myfun(x) k = 1:10; F = 2 + 2*k-exp(k*x(1))-exp(k*x(2));

第二步:调用优化函数lsqnonlin % 给定搜索起点 x0 = [0.3 0.4] ; % 调用求解函数 [x,resnorm] = lsqnonlin('myfun',x0) x = 0.2578 0.2578 resnorm %residual or sum of squares resnorm = 124.3622

能力培养: 1、建模分析能力 2、应用数学能力 3、算法设计与程序设计 5.学习回顾 能力培养: 1、建模分析能力 2、应用数学能力 3、算法设计与程序设计

谢 谢!