目录

基本概念

凸规划

判别定理

二次规划模型

非线性规划的求解

无约束极值问题

有约束极值问题

基于求解器的解法

基于问题的求解

其他


非线性规划:描述目标函数或约束条件条件的数学表达式中,至少有一个是非线性函数。

基本概念

是n维欧式空间中的一个点(n维向量),是定义在上的实值函数。若f,g,h函数中至少有一个是x的非线性函数,则称如下为非线性规划模型的一般形式:

全局最优解:若,并且都有,则称为全局最优解。

局部最优解:x的邻域内(也包含于可行域),x所对应的函数值是最小的,则x为局部最优解。

无约束非线性规划问题可以具体表示为:

凸规划

凸规划是一类特殊的非线性规划问题,可以求得全局最优解。

凸集:

 凸函数:

定义在凸集上的有限个凸函数的非负线性组合仍为凸函数

判别定理

半正定矩阵的行列式非负。

黑塞矩阵:

对于非线性规划模型的一般形式,若f(x)为凸函数,g(x)为凸函数,h(x)为线性函数,则称该非线性规划问题为凸规划。凸规划局部最优解即为全局最优解,最优解的集合形成一个凸集。当目标函数为严格凸函数时,其最优解必定唯一。

例子

f(x)和g2(x)的黑塞矩阵的行列式:

其他约束条件为线性函数,所以是一个凸规划问题

clc,clear
prob = optimproblem;
x = optimvar('x',2,'LowerBound',0);
prob.Objective = sum(x.^2)-4*x(1)+4;
con = [-x(1)+x(2)-2 <= 0x(1)^2-x(2)+1 <= 0];
prob.Constraints.con = con;
x0.x = rand(2,1)%非线性规划必须赋初值,x0名字随便取
[s,f,flag,o] = solve(prob,x0);
s.x

ans =

0.5536
    1.3064

二次规划模型

目标函数是关于决策向量的二次函数,约束条件是线性的,则该模型称为二次规划模型,一般形式:

其中:

当H正定时,目标函数最小化时,模型为凸二次规划,凸二次规划局部最优解就是全局最优解。如果不是凸规划,则建议使用fmincon函数。

例子

目标函数是最小化,但是H为负定矩阵,所以不是凸规划。

clc,clear
x = optimvar('x',2,'LowerBound',0);
h = [-1,-0.15;-0.15,-2];
f = [98;277];
a = [1,1;1,-2];
b = [100;0];
prob = optimproblem('Objective',x'*h*x+f'*x);
prob.Constraints = a*x <= b;
[s,f,flag,o] = solve(prob);
s.x

ans =

1
     1

[1,1]是局部最优解,使用fmincon函数:

fx = @(x)x'*h*x+f'*x;
[x,y] = fmincon(fx,rand(2,1),a,b,[],[],[0;0],[])

x =

1.0e-07 *

0.2533
    0.3400
y =

1.1901e-05

非线性规划的求解

无约束极值问题

MATLAB工具箱中用于求解无约束极小值的函数有:

 例子

clc,clear
f = @(x) x(1)^3-x(2)^3+3*x(1)^2+3*x(2)^2-9*x(1);
g = @(x) -f(x);
[m1,n1] = fminunc(f,[0,0])%求极小值
[m2,n2] = fminsearch(g,[0,0]);%求极大值
m2,-n2

m1 =

1.0000   -0.0000
n1 =

-5
m2 =

-3.0000    2.0000
ans =

31.0000

有约束极值问题

同样有基于求解器的求解方法和基于问题的求解方法

基于求解器的解法

数学模型的标准形式为:

例:

clc,clear
fun1 = @(x) sum(x.^2)+8;
[x,y] = fmincon(fun1,rand(3,1),[],[],[],[],zeros(3,1),[],@fun2)function [c,ceq] = fun2(x)
c = [-x(1)^2+x(2)-x(3)^2x(1)+x(2)^2+x(3)^3-20];
ceq = [-x(1)-x(2)^2+2x(2)+2*x(3)^2-3];
end

基于问题的求解

clc,clear
x = optimvar('x',3,'LowerBound',0);
prob = optimproblem('Objective',sum(x.^2)+8);
con1 = [-x(1)^2+x(2)-x(3)^2 <= 0x(1)+x(2)^2+x(3)^3 <= 20];
con2 = [-x(1)-x(2)^2+2 == 0x(2)+2*x(3)^2 == 3];
prob.Constraints.con1 = con1;
prob.Constraints.con2 = con2;
x0.x = rand(3,1);
[s,f,flag,out] = solve(prob,x0);
s.x,f

其他

匿名函数的返回值只能有一个,可以是向量。

数学建模——非线性规划相关推荐

  1. 数学建模 非线性规划原理的应用与编程实现

    非线性规划模型NP 包含非线性函数:不是直线而是曲线.曲面.或不确定的属性,叫非线性. 如:x^2 线性函数:一次函数,ax+b 列1-投资决策问题 解答: 设置决策变量: 1)投资某个项目达到收益最 ...

  2. 数学建模 非线性规划

    一.非线性规划模型 1.概念: 如果目标函数或约束条件中包含非线性函数,就称该规划问题为非线性规划问题.一般来说,求解非线性规划问题要比求解线性规划问题困难得多,也不像线性规划问题那样有单纯形法这一通 ...

  3. 【数学建模】非线性规划模型与01规划模型(最优化)

    文章目录 一.算法介绍 1. 01规划模型 二.适用问题 三.算法总结 四.应用场景举例 1.非线性规划模型 2.01规划模型 五.LINGO代码 1.非线性规划模型 2.01规划模型 六.实际案例 ...

  4. 数学建模、运筹学之非线性规划

    数学建模.运筹学之非线性规划 一.最优化问题理论体系 二.梯度下降法--无约束非线性规划 三.牛顿法--无约束非线性规划 四.只包含等值约束的拉格朗日乘子法 五.不等值约束非线性规划与KKT条件 一. ...

  5. 【数学建模】(十):Lingo使用:线性规划+非线性规划+整数规划

    [数学建模](十):Lingo使用:线性规划+非线性规划+整数规划 线性规划 运输问题 整数规划 非线性规划 线性规划 设x1x_1x1​桶牛奶生产A1A_1A1​, x2x_2x2​桶牛奶生产A2A ...

  6. 【数学建模】算法模型(一)|线性规划 整数规划 非线性规划 层次分析模型 灰色关联分析

    文章目录 1.线性规划 Linear Programming (LP) 1.1线性规划的matlab标准形式及软件求解 1.2 投资的收益和风险 2. 整数规划 2.1 整数规划和线性规划的关系 2. ...

  7. 数学建模整理-线性规划、整数规划、非线性规划

    数学建模整理 线性规划 整数规划 整数规划特点 求解方法分类 (1)分枝定界法 (2) 割平面法 (3) 隐枚举法("0-1"整数规划) (4) 匈牙利法 (5) 蒙特卡洛法(随机 ...

  8. 数学建模学习笔记(二):非线性规划模型例题与灵敏度分析

    文章目录 前言 一.一个简单的非线性规划模型 二.问题的求解 1.模型的建立与求解 2.得出结论 三.灵敏度分析 总结 参考书目 前言 数学建模解决问题的过程一般分为五个步骤,称为五步方法,五个步骤如 ...

  9. Python小白的数学建模课-12.非线性规划

    非线性规划是指目标函数或约束条件中包含非线性函数的规划问题,实际就是非线性最优化问题. 从线性规划到非线性规划,不仅是数学方法的差异,更是解决问题的思想方法的转变. 非线性规划问题没有统一的通用方法, ...

最新文章

  1. 我的JavaScript学习笔记
  2. mongodb windows安装
  3. C++和操作系统面试问题分类
  4. 部署并使用Docker(Alibaba Cloud Linux 2)
  5. JAVA程序猿面试题汇总
  6. 安装Vuecli新版本正常,但是显示版本是低版本
  7. 视觉位姿测量精度的影响因素分析(Camera Pose Estimation)
  8. 1759: 多少个元素比它大 二分
  9. (https)nginx - tomcat(http)
  10. 头条+腾讯 NLP 面经
  11. JDK8新特性(七)之Stream流的count()、filter()、limit()、skip()方法
  12. aws lam nodejs mysql_NodeJs IF Statement in AWS Lambda using MySQL database
  13. Pronunciation Difference between /ʌ/ and /ɑ/
  14. Go黑魔法之导出私有函数与私有变量
  15. app怎么嵌套vue页面_用vue做app内嵌页遇到的坑
  16. 自动检测技术学习心得体会_关于传感器与检测技术的学习体会
  17. PID参数整定方法介绍
  18. java解析富文本内容_java 解析富文本处理 img 标签
  19. wordpress 数据库_如何一键优化您的WordPress数据库
  20. matlab产生一个稀疏向量,Matlab中的稀疏矩阵向量乘法比Python快吗?

热门文章

  1. java 全局缓存_java本地缓存
  2. 手把手教你设置 IntelliJ IDEA 的彩色代码主题
  3. spring源码框架
  4. easyexcel 合并单元格
  5. 软件定义数据中心(SDDC)的网络安全
  6. c语言malloc,calloc,realloc函数介绍
  7. Linux三行命令快速安装jdk和jre(javac)
  8. http请求报文及响应报文
  9. 分享3个CPU跑分数据库查询,AMD Inter cpu各项分数查询
  10. PStools工具执行本地/远程PC管理任务