【数学建模笔记】3.非线性规划
1.非线性规划的实例与定义
如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。
例1:(投资决策问题)
某企业拥有n个项目可供选择投资,并且至少要对其中一个项目投资。已知该企业拥有总资金A元,投资于第i(i=1,....n)个项目需花费资金ai元,并预计可收益bi元,试选择最佳投资方案。
2.非线性规划的数学模型
一般形式:
在一组等式或不等式的约束下,求一个函数的最大值(或最小值)问题,其中至少有一个非线性函数,这类问题称之为非线性规划问题。
matlab中非线性规划的数学模型写成以下形式:
其中f(x)是标量函数,A,b,Aeq,beq,lb,ub是相应维数的矩阵和向量,c(x),ceq(x)是非线性向量函数
matlab中的命令是:
[x,fval]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
x的返回值是决策向量x的取值;
fval返回的是目标函数的取值;
fun是用M文件定义的函数;
x0是x的初始值;
A,b,Aeq,beq定义了线性约束Ax<=b,Aeqx=beq,如果没有线性约束,则A=[ ],b=[ ],Aeq=[ ],beq=[ ];
lb和ub是变量x的下界和上界,如果上界和下界没有约束,即x无下界也无上界,则lb=[ ],ub=[ ],也可以写成lb的各分量都为-inf,ub的各分量都为inf;
nonlcon是用M文件定义的非线性向量函数c(x),ceq(x);
options定义了优化参数,可以使用matlab缺省的参数设置。
例2:求下列非线性规划
解:
(1)编写M文件fun1.m定义目标函数
function f=fun1(x);
f=sum(x.^2)+8;
(2)编写M文件fun2.m定义非线性约束条件
function [g,h]=fun2(x);
g=[-x(1)^2+x(2)-x(3)^2x(1)+x(2)^2+x(3)^2-20];
h=[-x(1)-x(2)^2+2x(2)+2*x(3)^2-3];
(3)编写主程序文件example2.m如下:
[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')
3.二次规划
若某非线性规划的目标函数为自变量x的二次函数,约束条件又全是线性的,就称这种规划为二次规划
matlab中二次规划的数学模型可表述如下:
这里H是实对称矩阵,f,b,beq,lb,ub,是列向量,A,Aeq是相应维数的矩阵
matlab中求解二次规划的的命令是:
[x,fval]=quadprog(H,f,A,b,Aeq,beq,lb,ub,x0,options)
返回值x是决策向量x的取值;
返回值fval是目标函数在x处的值;
具体细节可以参考在matlab命令窗口中运行help quadprog的帮助
例3:求解二次规划
解:编写如下程序
h=[4,-4;-4,8];%%二次型矩阵,平方项系数x2填对角,交叉项系数/2
f=[-6;-3];
a=[1,1;4,1];
b=[3,9];
[x,value]=quadprog(h,f,a,b,[],[],zeros(2,1))
例4:
某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系a,b表示,距离单位:千米 )及水泥日用量d(吨)由下表给出。目前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。假设从料场到工地之间均有直线道路相连。 (1)试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小。 (2)为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?
程序:
a = [1.25 8.75 0.5 5.75 4 7.25];
b = [1.25 0.75 4.75 5 6.5 7.25];
d =[3 5 4 7 6 11];
x =[5 2];
y =[1 7];
e =[20 20];for i=1:6for j=1:2aa(i,j)=sqrt((x(j)-a(i))^2+(y(j)-b(i))^2);end
end
CC=[aa(:,1);aa(:,2)];A=[1 1 1 1 1 1 0 0 0 0 0 0;0 0 0 0 0 0 1 1 1 1 1 1];
B=[20;20];
Aeq=[1 0 0 0 0 0 1 0 0 0 0 0 %从第一\二料场运到工地一的料0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 ];
beq=[d(1);d(2);d(3);d(4);d(5);d(6)];
VLB=[0 0 0 0 0 0 0 0 0 0 0 0];
VUB=[];
x0=[1 2 3 0 1 0 0 1 0 1 0 1];%给一个初值,可以不给
[xx,fval]=linprog(CC,A,B,Aeq,beq,VLB,VUB,x0)
改建两个新料场时,原本的A,B坐标变成未知数,令 , , ,
定义目标函数:
function f=liaoch(x)
a=[1.25 8.75 0.5 5.75 3 7.25];
b=[1.25 0.75 4.75 5 6.5 7.25];
d=[3 5 4 7 6 11];
e=[20 20];
f1=0;
for i=1:6s(i)=sqrt((x(13)-a(i))^2+(x(14)-b(i))^2);f1=s(i)*x(i)+f1;
end
f2=0;
for i=7:12s(i)=sqrt((x(15)-a(i-6))^2+(x(16)-b(i-6))^2);f2=s(i)*x(i)+f2;
end
f=f1+f2;
取初值为线性规划的计算结果及临时料场的坐标: x0=[3 5 0 7 0 1 0 0 4 0 6 10 5 1 2 7]';
编写主程序:
clear
x0=[3 5 0 7 0 1 0 0 4 0 6 10 5 1 2 7];
%x0=[ 3.0000 5.0000 0.0707 7.0000 0 0.9293 0 0 3.9293 0 6.0000 10.0707 6.3875 4.3943 5.7511 7.1867];
%x0=[ 3.0000 5.0000 0.3094 7.0000 0.0108 0.6798 0 0 3.6906 0 5.9892 10.3202 5.5369 4.9194 5.8291 7.2852];
%x0=[3 5 4 7 1 0 0 0 0 0 5 11 5.6348 4.8687 7.2479 7.7499];
A=[1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0];
B=[20;20];
Aeq=[1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 00 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 00 0 0 1 0 0 0 0 0 1 0 0 0 0 0 00 0 0 0 1 0 0 0 0 0 1 0 0 0 0 00 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0];
beq=[3 5 4 7 6 11];
vlb=[zeros(12,1);-inf;-inf;-inf;-inf];
vub=[];
[x,fval,exitflag]=fmincon('liaoch',x0,A,B,Aeq,beq,vlb,vub)
【数学建模笔记】3.非线性规划相关推荐
- Python小白的数学建模课-12.非线性规划
非线性规划是指目标函数或约束条件中包含非线性函数的规划问题,实际就是非线性最优化问题. 从线性规划到非线性规划,不仅是数学方法的差异,更是解决问题的思想方法的转变. 非线性规划问题没有统一的通用方法, ...
- 数学建模笔记——插值拟合模型(二)
今天是8月21日,距离上次写文章好像将近一个月了--这段时间经历了建模校内选拔赛,考试周,以及与网络小说的斗智斗勇--好吧,其实也没干什么,除了考试就是荒废-- 我最近有在思考一个问题,就是我所关注的 ...
- 数学建模笔记之一起读论文2019年C题——机场的出租车问题
数学建模笔记之一起读论文--机场的出租车问题 2021-8-28 全国大学生数学建模竞赛 2019年C题 B站链接--国赛C题真题解析 1 赛题阅读与分析 原题再现: 问题C 机场的出租车问题 大多数 ...
- 数学建模笔记-第十四讲-主成分分析
文章目录 主成分分析 数据降维 主成分分析思想 PCA计算过程 主成分分析的应用 例1 主成分的说明 例2 MATLAB 对结果的解释 主成分分析的滥用:主成分得分 主成分分析用于聚类 主成分回归 说 ...
- 数学建模笔记-第五讲-相关系数
文章目录 相关系数 pearson相关系数 相关性可视化 误区 相关系数大小的解释 例题 描述性统计 matlab excel SPSS 矩阵散点图 计算相关系数 热力图美化结果 对相关系数进行假设检 ...
- 数学建模笔记——评价类模型之灰色关联分析
这一篇就简单介绍一下灰色关联分析吧.灰色关联分析主要有两个作用,一是进行系统分析,判断影响系统发展的因素的重要性.第二个作用就是用于综合评价问题,给出研究对象或者方案的优劣排名. 不过这里我只能简单介 ...
- 数学建模笔记-第七讲-回归分析
文章目录 回归分析 线性回归介绍 回归系数 内生性探究 蒙特卡罗代码 弱化无内生性条件 四种模型 回归系数的解释 四种模型回归系数的解释 虚拟变量 多分类的虚拟变量设置 含交互项的自变量 应用题(奶粉 ...
- 清风数学建模笔记——Excel画图保姆级教学
备注:本篇内容是在Office环境下作图,WPS不支持直方图和箱线图好像.免费的Office软件可以在微信搜索中搜"Office"然后挑一个下载即可 本文借鉴了数学建模清风老师的课 ...
- 数学建模笔记(1)——评价类问题
写在前面,以下为几天后的数学建模做准备,鉴于非工科背景出身,决定放弃A类题,以C类题为主,辅以B题开始学习. ( 内容主要参考知乎.CSDN及B站网课,会表明出处,侵删) 首先研究评价类问题 例如,2 ...
- python三次样条插值拟合的树行线_数学建模笔记——插值拟合模型(一)
啊好像距离上次写作又过了七天,啊好像我之前计划的一周两三篇,啊辣鸡小说毁我青春,啊我是一只可怜的鸽子. 不管怎样,我又回来了,并坚定地更新着hhh.再过两三天就是我们学校数学建模选拔,再过八九天就是期 ...
最新文章
- LDAP和Implementation
- Lambda表达式练习1【应用】
- Nginx限流-速率实现
- LeetCode 421. 数组中两个数的最大异或值(Trie树)
- CentOS6.9编译安装LNMP环境
- 用jQuery实现一些导航条切换,显示隐藏
- 个人博客网站文章添加目录导航
- [小功能]禁用模板默认CSS
- 论文笔记_S2D.55_2019_SLAM综述_Huang B. A Survey of Simultaneous Localization and Mapping
- C#获取C# DLL中的指定接口的所有实现实例 - qq_19759475的博客 - CSDN博客
- Google Data Studio:漂亮,免费,易于使用的数据可视化工具
- 原生JS实现图片幻灯片效果
- Vue移动端 手机六位数密码框
- On the Generality of Facial Forgery Detection论文原文翻译以及阅读笔记
- 大青山发生火情!内蒙古发生多起祭祖引发的火灾,数十人被拘...
- Google TV 来了
- 微信公众号与小程序(二十——关于我如何莫名其妙建了一个电影搜索机器人这件事)
- java计算机毕业设计的小区物业管理系统源程序+mysql+系统+lw文档+远程调试java计算机毕业设计的小区物业管理系统源程序+mysql+系统+lw文档+
- MacBook Air响一声白屏故障情况说明及解决
- 2018.8.21 广州科目三展茂东满分飘技巧