1. 非线性规划模型

1.1 非线性规划的定义

目标函数或约束条件中只要包含非线性函数,就称这种规划问题为非线性规划问题(Nonlinear Program, NLP)。
注:自然语言处理(Nature Language Process)也叫NLP。

1.2 NLP的matlab解法

NLP的一般形式:
min⁡f(x)s.t.{Ax≤BAeq⋅x≤BeqC(x)≤0Ceq(x)=0lb≤x≤ub\min f(x)\\ s.t.\begin{cases} Ax\leq B\\ Aeq·x\leq Beq\\ C(x)\leq 0\\ Ceq(x)=0\\ lb\le x\le ub \end{cases}minf(x)s.t.⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧​Ax≤BAeq⋅x≤BeqC(x)≤0Ceq(x)=0lb≤x≤ub​
其中f(x)f(x)f(x)是标量函数,A,B,Aeq,BeqA, B, Aeq,BeqA,B,Aeq,Beq是相应维数的矩阵和向量,C(x),Ceq(x)C(x),Ceq(x)C(x),Ceq(x)是非线性向量函数。
Matlab 中的命令是:

X=FMINCON(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON,OPTIONS)

它的返回值是向量xxx,其中FUNFUNFUN是用MMM文件定义的函数f(x)f (x)f(x);X0X0X0 是xxx的初始值;A,B,Aeq,BeqA,B,Aeq,BeqA,B,Aeq,Beq定义了线性约束A∗X≤B,Aeq∗X=BeqA* X ≤ B, Aeq*X = BeqA∗X≤B,Aeq∗X=Beq;LB 和 UB 是变量 x 的下界和上界,如果x无下界,则LB的各分量都为-inf,如果 x 无上界,则 UB的各分量都为 inf;NONLCON 是用 M 文件定义的非线性向量函数C(x),Ceq(x) ;OPTIONS定义了优化参数,可以使用Matlab缺省的参数设置。

2. 无约束问题的matlab解法

2.1 无约束极值问题的符号解

对于多元函数求极值的问题,下计算出其Hessian矩阵,如果在驻点处 Hesian阵为正定阵,则在该点取极小值;如果在驻点处Hessian 阵为负定阵,则在该点取极大值;如果在驻点处Hssian阵为不定阵,则该驻点不是极值点。

2.2 无约束极值问题的数值解

matlab中求解无约束极小值问题的函数有fminunc和fminsearch。

[x,fval]=fminunc(fun,x0,options)
[x,fval]=fminsearch(fun,x0,options)

具体使用细节可以在matlab中使用help+函数名的方式查看。

2.3 求函数的零点和方程组的解

对于方程组,可使用syms+符号的形式定义变量,使用solve解方程组。如下例:

3. 约束极值问题

带有约束条件的极值问题称为约束极值问题,也叫规划问题。
求解约束极值问题要比求解无约束极值问题困难得多。为了简化其优化工作,可采用以下方法∶将约束问题化为无约束问题;将非线性规划问题化为线性规划问题,以及能将复杂问题变换为较简单问题的其他方法。
库恩-塔克条件是非线性规划领域中确定某点为最优点的必要条件,但一般它并不是充分条件(对于凸规划,它既是最优点存在的必要条件,同时也是充分条件)。

3.1 二次规划

若某非线性规划的目标函数为自变量x的二次函数,约束条件又全是线性的,就称这种规划为二次规划。
二次规划的数学模型可表述如下:min⁡12xTHx+fTxs.t.{A⋅x≤bAeq⋅x=beqlb≤x≤ub\min \frac{1}{2}x^THx+f^Tx\\s.t.\begin{cases}A\cdot x\le b\\Aeq\cdot x=beq\\lb\le x \le ub\end{cases}min21​xTHx+fTxs.t.⎩⎪⎨⎪⎧​A⋅x≤bAeq⋅x=beqlb≤x≤ub​matlab命令如下:

[x,fval]=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)

3.2 罚函数法

罚函数法,可将非线性规划问题的求解,转化为求解一系列无约束极值问题,因而也称这种方法为序列无约束最小化技术,简记为 SUMT (Sequential Unconstrained Minization Technique)。其思想是,利用问题中的约束函数作出适当的罚函数,由此构造出带参数的增广目标函数,把问题转化为无约束非线性规划问题。主要有两种形式,一种叫外罚函数法,另一种叫内罚函数法,下面介绍外罚函数法。

考虑问题:
min⁡f(x)s.t.{gi(x)≤0,i=1⋅⋅⋅rhj(x)≥0,j=1⋅⋅⋅skm(x)=0,m=1⋅⋅⋅t\min f(x)\\ s.t.\begin{cases} g_i(x)\leq0, i=1\cdot\cdot\cdot r\\ h_j(x)\geq0, j=1\cdot\cdot\cdot s\\ k_m(x)=0, m=1\cdot\cdot\cdot t \end{cases}minf(x)s.t.⎩⎪⎨⎪⎧​gi​(x)≤0,i=1⋅⋅⋅rhj​(x)≥0,j=1⋅⋅⋅skm​(x)=0,m=1⋅⋅⋅t​
取一个充分大的数 M > 0 ,构造函数
P(x,M)=f(x)+M∑i=1rmax⁡(gi(x),0)−M∑i=1smax⁡(hi(x),0)+M∑i=1t∣∣ki(x)∣∣P(x,M)=f(x)+M\sum\limits_{i=1}^{r}\max(g_i(x),0)-M\sum\limits_{i=1}^{s}\max(h_i(x),0)+M\sum\limits_{i=1}^{t}||k_i(x)||P(x,M)=f(x)+Mi=1∑r​max(gi​(x),0)−Mi=1∑s​max(hi​(x),0)+Mi=1∑t​∣∣ki​(x)∣∣。

则以增广目标函数 P(x, M ) 为目标函数的无约束极值问题minP(x,M )的最优解 x 也是原问题的最优解。

3.3 Matlab求约束极值问题

在 Matlab 优化工具箱中,用于求解约束最优化问题的函数有:fminbnd、fmincon、quadprog、fseminf、fminimax,详细使用方法可在matlab中使用help/doc + 函数名的方式查看.。
fminbnd函数
求单变量非线性函数在区间上的极小值

[X,FVAL] = FMINBND(FUN,x1,x2,OPTIONS)

fseminf函数

X=FSEMINF(FUN,X0,NTHETA,SEMINFCON,A,B,Aeq,Beq)

fminimax函数

X=FMINIMAX(FUN,X0,A,B,Aeq,Beq,LB,UB,NONLCON)

3.4 Matlab 优化工具箱的用户图形界面解法

Matlab 优化工具箱中的 optimtool 命令提供了优化问题的用户图形界面解法。optimtool 可应用到所有优化问题的求解,计算结果可以输出到 Matlab 工作空间中。

4. 飞行管理问题

在约10000m高空的某边长160km的正方形区域内,经常有若干架飞机作水平飞行。区域内每架飞机的位置和速度向量均由计算机记录其数据,以便进行飞行管理。当一架欲进入该区域的飞机到达区域边缘时,记录其数据后,要立即计算并判断是否会与区域内的飞机发生碰撞。如果会碰撞,则应计算如何调整各架(包括新进入的)飞机飞行的方向角,以避免磁撞。现假定条件如下∶
(1)不碰撞的标准为任意两架飞机的距离大于8km。
(2)飞机飞行方向角调整的幅度不应超过30°。
(3)所有飞机飞行速度均为800km/h。
(4)进入该区域的飞机在到达区域边缘时,与区域内飞机的距离应在60km以上。(5)最多需考虑6架飞机。
(6)不必考虑飞机离开此区域后的状况。
请对这个避免碰撞的飞行管理问题建立数学模型,列出计算步骤,对以下数据进行计算(方向角误差不超过0.01 度),要求飞机飞行方向角调整的幅度尽量小。设该区域4个顶点的坐标为(0,0),(160,0),(160,160),(0,160)。记录数据见表3.1。



最好再编写合适的matlab或Lingo程序去求解。

参考资料

海森矩阵

原课本习题及代码

点击下载 【课本 + 源码 】 提取码:92h8

《数学建模算法与应用第二版》——chapter3. 非线性规划相关推荐

  1. 《数学建模算法与应用第二版》——chapter13.数字图像处理

    1. 数字图像概述 1.1 图像的基本概念 图像因其表现方式的不同分为连续图像和离散图像两大类. 连续图像∶是指在二维坐标系中连续变化的图像,即图像的像点是无限稠密的,同时具有灰度值(即图像从暗到亮的 ...

  2. 司守奎《数学建模算法与应用》课后习题:线性规划

    系列目录 司守奎<数学建模算法与应用>课后习题:线性规划 模拟退火算法解决旅行商问题详解 遗传算法解决旅行商问题 MATLAB实现 基于模拟退火优化的投影寻踪评价法求解供货能力评价模型 目 ...

  3. c语言埃尔米特插值思路,【数学建模算法】(26)插值和拟合:埃尔米特(Hermite)插值和样条插值...

    1.埃尔米特(Hermite)插值 1.1.Hermite插值多项式 如果对插值函数,不仅要求它在节点处与函数同值,而且要求它与函数有相同的一阶.二阶甚至更高阶的导数值,这就是 Hermite 插值问 ...

  4. 数学建模算法与应用 线性规划(cvxpy包)

    数学建模算法与应用 线性规划(使用cvxpy包) 说明 使用python中cvxpy库完成<数学建模算法与应用>中课后习题 因为本人也是初学者,若代码有错误还请各位指出 cvxpy库的使用 ...

  5. 数学建模算法学习笔记

    数学建模算法学习笔记 作为建模Man学习数学建模时做的笔记 参考文献: <数学建模姜启源第四版> 网上搜罗来的各种资料,侵删 1.线性预测 levinson durbin算法,自相关什么的 ...

  6. 清风:数学建模算法、编程和写作培训

    清风:数学建模算法.编程和写作培训 一.评价模型 1.1 层次分析法 1.2 代码详解 1.3 模型拓展 1.4 课后作业 二.插值与拟合模型 三.相关性模型 四.回归模型 五.图论模型 六.分类问题 ...

  7. 数学建模算法学习笔记 已完结

    这是为了准备国赛突击学习的模型算法,我在原有的基础上加上自己的理解虽然不知道对不对,就是为了记录下自己学的模型他究竟是个什么东西,语言通俗,但是极不准确,只适合做一个大概的了解,建议大家详细的还是要看 ...

  8. 数学建模算法笔记(2)——主成分分析

    数学建模算法笔记(2)–主成分分析 目的:主成分分析的主要目的是希望用较少的变量去解释原来资料中的大部分变异,将我 们手中许多相关性很高的变量转化成彼此相互独立或不相关的变量,实际上是一种降维方法. ...

  9. 2020年高教社杯全国大学生数学建模竞赛C题 第二问详细解答+代码

    2020年高教社杯全国大学生数学建模竞赛C题 第二问详细解答+代码 本文摘自小编自己的参赛论文与经历,小编获得了2020年高教社杯国奖,有问题的同学们可私聊博主哦. 问题2 缺少信誉评级后的 信贷策略 ...

最新文章

  1. TCP网络应用程序的注意点
  2. 传递参数命令——xargs
  3. layui文本框填充值_layui输入框中只允许输入整数的实现方法
  4. 2021数字化就业新职业新岗位研究报告
  5. Redis安装配置(Linux)
  6. 如何获取 WebAssembly 代码
  7. 如何建立数据平台?看上市公司的选择!
  8. 【Alpha】第八次Scrum meeting
  9. Redis(十三)Python客户端redis-py
  10. antd-pro1.0使用jest对react组件进行单元测试
  11. 【Android开发】之Android环境搭建及HelloWorld
  12. [转帖]Android Bitmap内存限制OOM,Out Of Memory
  13. 【使用教程】面向回家编程-12306智能刷票,订票
  14. 关系型数据库的ACID指的是什么?
  15. Building your Deep Neural Network - Step by Step v5 作业 - Neural Networks and Deep Learning
  16. web网页常见特效3——轮播图
  17. TortoiseGit小乌龟安装配置及使用
  18. 什么是嵌入式培养?要不要选嵌入式培养?
  19. 为什么OKR新手要懂得OKRs-E?
  20. 测试用例(功能用例)——登录、首页、个人信息

热门文章

  1. js 跨域下载图片解决方法
  2. 金庸小说数据化中的部分题目答案
  3. 怎么做成html网页,html网页制作的基本步骤?怎么用html做一个网页?
  4. Linux之CentOS7安装(VMware虚拟机安装及系统安装图文教程)
  5. 【毕业设计】基于Stm32的便携体测仪(心率 体温) - 单片机 嵌入式 物联网
  6. 时间格式中,hh小写的是12小时制,大写(HH)是24小时制的。
  7. Java 与 Mysql 时间相差八小时
  8. 服务端向客户端主动发送消息
  9. 微信小程序动画简单入门
  10. IDU-指令译码单元