一、二次规划

定义:某非线性规划的目标函数为自变量x的二次函数,约束条件又全是线性的。

1.matlab程序标准格式:

当: m i n 1 2 H x 2 + f x min \quad\frac{1}{2}Hx^2+fx min21​Hx2+fx

注意x的二次项前系数“×1/2”, H实对称矩阵
简单来说,H矩阵中对角线为“2*原二次项系数”,其余为正常的一次项系数且对称

使用的标准格式代码为:

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

2.实例:
m i n 2 x 1 2 − 4 x 1 x 2 + 4 x 2 2 − 6 x 1 − 3 x 2 min\quad2x_1^2 -4x_1x_2+4x_2^2-6x_1-3x_2 min2x12​−4x1​x2​+4x22​−6x1​−3x2​
s.t.
{ x 1 + x 2 ≤ 3 4 x 1 + x 2 ≤ 9 x 1 , x 2 ≥ 0 \begin{cases} x_1+x_2≤3 \\ 4x_1+x_2≤9 \\ x_1,x_2≥0 \end{cases} ⎩ ⎨ ⎧​x1​+x2​≤34x1​+x2​≤9x1​,x2​≥0​

则程序中的矩阵及求解代码为:

h=[4,-4;-4,8];
f=[-6;-3];
a=[1,1;4,1];
b=[3;9];
[x,value]=quadprog(h,f,a,b,[],[],zeros(2,1))

二、非线性规划

1.标准matlab程序代码

[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)

x的返回值:决策向量x的取值
fval的返回值:目标函数的取值

fun:用M文件定义的函数
x0:x的初始值 %通常用rand函数进行随机rand(n,1)
A,b,Aeq,beq:定义线性约束 % 如果没有线性约束,则A=[],b=[],Aeq=[],beq=[]
lb,ub:变量x的下界和上界 %如果上界和下界没有约束,即x无下界也无上界,则lb=[],ub=[],也可以写成 lb的各分量都为-inf,ub的各分量都为inf
nonlcon:用M文件定义的非线性向量函数c(x),ceq(x)
options:定义优化参数,可以使用Matlab缺省的参数设置这里是引用

2.示例
m i n x 1 2 + x 2 2 + x 3 2 + 8 min\quad x_1^2+x_2^2+x_3^2+8 minx12​+x22​+x32​+8
s.t.
{ x 1 2 − x 2 + x 3 2 ≥ 0 x 1 + x 2 2 + x 3 2 ≤ 20 − x 1 − x 2 2 + 2 = 0 x 2 + 2 x 3 2 = 3 x 1 , x 2 , x 3 ≥ 0 \begin{cases}x_1^2-x_2+x_3^2≥0 \\ x_1+x_2^2+x_3^2≤20 \\ -x_1-x_2^2+2=0 \\ x_2+2x_3^2=3 \\ x_1,x_2,x_3≥0\end{cases} ⎩ ⎨ ⎧​x12​−x2​+x32​≥0x1​+x22​+x32​≤20−x1​−x22​+2=0x2​+2x32​=3x1​,x2​,x3​≥0​

主程序代码:

options=optimset('largescale','off');
[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[], 'fun2', options)

新建m文件fun1.m,定义目标函数:

function f=fun1(x)
f=sum(x.^2)+8;

新建m文件fun2.m,定义非线性约束条件:

function [g,h]=fun2(x)
g=[-x(1)^2+x(2)-x(3)^2 ;x(1)+x(2)^2+x(3)^3-20];  %非线性不等式约束
h=[-x(1)-x(2)^2+2  ;x(2)+2*x(3)^2-3]; %非线性等式约束

非线性不等式约束:矩阵中,全部改成“≤0”的形式
非线性等式约束:矩阵中,全部改成“=0”的形式

三、补充说明

当 x i x_i xi​只能取0或1时,可使用限制条件: x i ( 1 − x i ) = 0 , i = 0 , 1 , 2 , 3... x_i(1-x_i)=0,i=0,1,2,3... xi​(1−xi​)=0,i=0,1,2,3...

数学建模算法总结——03二次规划+非线性规划相关推荐

  1. matlab中x从0到5不含0,关于MATLAB的数学建模算法学习笔记

    关于MATLAB的数学建模算法学习笔记 目录 线性规划中应用: (3) 非线性规划: (3) 指派问题;投资问题:(0-1问题) (3) 1)应用fmincon命令语句 (3) 2)应用指令函数:bi ...

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

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

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

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

  4. LL1分析构造法_数学建模算法--最优赋权法(含代码)

    数学建模算法--最优赋权法(含代码) 作者:郑铿城 本次介绍数学建模和科研写作的方法--最优赋权法最优赋权法经常用于分析评价类问题,从该算法的名称就可以看到,该算法首先要体现"最优" ...

  5. python dendrogram_【聚类分析】《数学建模算法与应用》第十章 多元分析 第一节 聚类分析 python实现...

    第十章 多元分析 第一节 聚类分析 介绍 这里是司守奎教授的<数学建模算法与应用>全书案例代码python实现,欢迎加入此项目将其案例代码用python实现 GitHub项目地址:Math ...

  6. 数学建模算法:支持向量机_从零开始的算法:支持向量机

    数学建模算法:支持向量机 从零开始的算法 (Algorithms From Scratch) A popular algorithm that is capable of performing lin ...

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

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

  8. 数学建模算法与应用:预测模型(3)案例: SARS 疫情对经济指标影响

    目录 问题描述: 一.建模思路 二.对模型进行分析预测 2.1.对模型进行假设 三.建立灰色预测模型GM(1,1) 3.1.模型的求解(i)商品零售额 3.2.用MATLAB程序,实现(i)商品零售额 ...

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

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

最新文章

  1. 进程保护 (非Hook;非DKOM)
  2. 窗口位置按钮取消_梦幻西游:五开玩家都是怎样摆放窗口的
  3. 5天不再惧怕多线程——第三天 互斥体
  4. 斐波那契数列的前n项值
  5. OpenGL Cubic Bezier三次贝塞尔曲线修补实例
  6. Web API 速率限制(一)
  7. 微信小程序image组件中aspectFill和widthfix模式应用详解
  8. 额!Java中用户线程和守护线程区别这么大?
  9. mysql+delete删除空行,删除空行 linux
  10. jquery 监听返回事件
  11. MathType requires a newer version of MT Extra等MathType问题的不兼容性解决方案
  12. C语言中忽略scanf的价值,c语言的scanf接收到底是忽略空格还是不忽略呢?
  13. vba里使用python自定义函数(xlwings)
  14. Win7使用之查端口,杀进程
  15. android mvp快速创建,学习MVPArms历程之Android Studio快速创建MVPArms项目
  16. 嵌入式大杂烩周记 | 第 7 期:zlog
  17. 美国恐怖故事第一季/全集American Horror Story 1全迅雷下载
  18. bzoj 1208 宠物收养所 Splay入门
  19. CDH通过parcels安装组件,激活时卡住,取消激活
  20. 春节义务帮人写了一个《求签在线查询》(ASP)

热门文章

  1. AI人工智能外呼机器人测试项目经历
  2. JDK1.8下载与安装完整教程
  3. 《Python机器学习》基础代码
  4. 使用 Vite 插件自动化实现骨架屏
  5. Android TV开发(—)开始电视应用
  6. 防火墙技术之----包过滤(Packet Filter)
  7. 推荐一款离线MarkDown编辑工具Haroopad
  8. Python安装jieba库的具体步骤
  9. HackPwn:TCL智能洗衣机破解细节分析
  10. vmware虚拟机使用详解