优化-规划问题(数学建模)
目录
一.线性规划
1.求最小值
2.最大值
二.二次规划
1.概念:目标函数是决策向量的二次函数,约束条件都是线性的。
2.最小值
3.最大值.
三.整数规划
1.整数线性规划(决策变量中部分或者全部取整数,对结果值不要求)
2.0-1整数线性规划
3.非线性整数规划-模特卡罗法
四.非线性规划
1.有约束极值问题
2.无约束极值问题
一.线性规划
1.求最小值
clc,clear
prob=optimproblem;%默认目标函数最小化
x=optimvar('x',3,1,'LowerBound',0);%决策变量3*1
prob.Objective = -5*x(1)-4*x(2)-6*x(3);%目标函数
%约束条件
prob.Constraints.cons1 = x(1)-x(2)+x(3)<=20;
prob.Constraints.cons2 = 3*x(1)+2*x(2)+4*x(3)<=42;
prob.Constraints.cons3 = 3*x(1)+2*x(2)<=30;
[sol,fval,flag,out]=solve(prob)
sol.x
结果:
ans =
0
15.0000
3.0000fval =
-78
out =
包含以下字段的 struct:
iterations: 3
constrviolation: 0
message: 'Optimal solution found.'
algorithm: 'dual-simplex'
firstorderopt: 1.7764e-15
solver: 'linprog'
2.最大值
clc,clear
prob=optimproblem('ObjectiveSense','max');
x=optimvar('x',3,1,'LowerBound',0);
prob.Objective = 2*x(1)+3*x(2)-5*x(3);
prob.Constraints.cons1 = x(1)+x(2)+x(3)==7;
prob.Constraints.cons2 = 2*x(1)-5*x(2)+x(3)>=10;
prob.Constraints.cons3 = x(1)+3*x(2)+x(3)<=12;
[sol,fval,flag,out]=solve(prob)
sol.x
结果:
fval =
14.5714
ans =6.4286
0.5714
0
二.二次规划
1.概念:目标函数是决策向量的二次函数,约束条件都是线性的。
2.最小值
clc,clear
prob=optimproblem;%默认目标函数最小化
x=optimvar('x',2,1,'LowerBound',0);%决策变量3*1
prob.Objective = 2*x(1)^2-4*x(1)*x(2)+4*x(2)^2-6*x(1)-3*x(2);%目标函数
%约束条件
prob.Constraints.cons1 = x(1)+x(2)<=3;
prob.Constraints.cons2 = 4*x(1)+x(2)<=9;
[sol,fval,flag,out]=solve(prob)
sol.x
结果:
ans =
1.9500
1.0500fval =
-11.0250
3.最大值.
max f=-x(1)^2-0.3*x(1)*x(2)-2*x(2)^2+98*x(1)+277*x(2)
x(1)+x(2)<=100;
x(1)-2*x(2)<=0;
x(1),x(2)>=0
clc,clear,format long g
prob=optimproblem('ObjectiveSense','max');
x=optimvar('x',2,1,'LowerBound',0);
prob.Objective = -x(1)^2-0.3*x(1)*x(2)-2*x(2)^2+98*x(1)+277*x(2);
prob.Constraints.cons1 = x(1)+x(2)<=100;
prob.Constraints.cons2 = x(1)-2*x(2)<=0;
[sol,fval,flag,out]=solve(prob)
sol.x
format short %恢复到短小数的显示格式
结果:
ans =
35.3703703701727
64.6296296287408fval =
11077.8703703618
三.整数规划
1.整数线性规划(决策变量中部分或者全部取整数,对结果值不要求)
clc, clear,
prob = optimproblem;
x = optimvar('x',6,'Type','integer','LowerBound',0);
prob.Objective = sum(x);
prob.Constraints.cons1 = x(1)+x(6)>=35;
prob.Constraints.cons2 = x(1)+x(2)>=40;
prob.Constraints.cons3 = x(2)+x(3)>=50;
prob.Constraints.cons4 = x(3)+x(4)>=45;
prob.Constraints.cons5 = x(4)+x(5)>=55;
prob.Constraints.cons6 = x(5)+x(6)>=30;
[sol,fval,flag,out]=solve(prob)
sol.x
结果:
ans =
35
5
45
0
55
0fval =
140
2.0-1整数线性规划
clc, clear,
c = [15 13.8 12.5 11 14.3
14.5 14 13.2 10.5 15
13.8 13 12.8 11.3 14.6
14.7 13.6 13 11.6 14];
prob = optimproblem;
x = optimvar('x',4,5,'Type','integer','LowerBound',0,'UpperBound',1);
prob.Objective = sum(sum(c.*x));
prob.Constraints.con1 = sum(x,1)==1;
prob.Constraints.con2 = sum(x,2)<=2;
[sol, fval, flag] = solve(prob)
sol.x
结果:
ans =
0 0 1 0 0
0 0 0 1 0
1 1 0 0 0
0 0 0 0 1fval =
63.8000
3.非线性整数规划-模特卡罗法
clc, clear
%rng('shuffle') %根据当前时间为随机数生成器提供种子
rng(0) %进行一致性比较,每次产生的随机数是一样的
p0=0; n=10^6; tic %计时开始
for i=1:n
x=randi([0,99],1,5); %产生一行五列的区间[0,99]上的随机整数
[f,g]=mengte(x);
if all(g<=0)
if p0<f
x0=x; p0=f; %记录下当前较好的解
end
end
end
x0, p0, toc %计时结束
function [f,g]=mengte(x) %定义目标函数和约束条件
f=x(1)^2+x(2)^2+3*x(3)^2+4*x(4)^2+2*x(5)-8*x(1)-2*x(2)-3*x(3)-...
x(4)-2*x(5);
g=[sum(x)-400
x(1)+2*x(2)+2*x(3)+x(4)+6*x(5)-800
2*x(1)+x(2)+6*x(3)-200
x(3)+x(4)+5*x(5)-200];
end
结果:
x0 =
46 98 1 99 3
p0 =
50261
历时 1.391515 秒。
四.非线性规划
1.有约束极值问题
clc, clear, prob = optimproblem;
x = optimvar('x',3,'LowerBound',0);
prob.Objective = sum(x.^2)+8;
prob.Constraints.con1 = -x(1)^2+x(2)-x(3)^2 <= 0;
prob.Constraints.con2 = x(1)+x(2)^2+x(3)^3 <= 20;
prob.Constraints.con3 = -x(1)-x(2)^2+2 == 0;
prob.Constraints.con4 = x(2)+2*x(3)^2 == 3;
x0.x=rand(3,1); %非线性规划必须赋初值
[sol,fval,flag,out]= solve(prob,x0), sol.x
结果:
ans =
0.5522
1.2033
0.9478fval =
10.6511
2.无约束极值问题
clc, clear, prob=optimproblem; %最小值问题
x=optimvar('x',2);
prob.Objective = 100*(x(2)-x(1)^2)^2+(1-x(1))^2;
x0.x=rand(2,1) %初始值
[sol,fval,flag,out]=solve(prob,x0), sol.x
结果:
ans =
1.0000
1.0000fval =
1.2326e-30
clc, clear, prob1=optimproblem; %最小值问题
x=optimvar('x','LowerBound',-3,'UpperBound',3);
y=optimvar('y','LowerBound',-4,'UpperBound',4);
prob1.Objective=x^3-y^3+3*x^2+3*y^2-9*x;
x0.x=1; x0.y=1;
[sol1,fval1,flag1,out1]=solve(prob1,x0)
prob2=optimproblem('ObjectiveSense','max')
prob2.Objective=x^3-y^3+3*x^2+3*y^2-9*x;
op=optimoptions(@fmincon,'Algorithm','active-set')
[sol2,fval2,flag2,out2]=solve(prob2,x0,'Options',op)
结果:
最小值:
x: 1.0000
y: 1.7072e-10fval1 =
-5
最大值:
x: 1
y: 2.0000
fval2 =-1.0000
优化-规划问题(数学建模)相关推荐
- 2023年第三届长三角高校数学建模竞赛】A 题 快递包裹装箱优化问题 详细数学建模过程
相关链接 [2023年第三届长三角高校数学建模竞赛]A 题 快递包裹装箱优化问题 20页完整论文及代码 1 题目 2022 年,中国一年的包裹已经超过 1000 亿件,占据了全球快递事务量的一半以上. ...
- 数学建模优化模型简单例题_离散型优化问题Ⅱ_数学建模_每日一题(未附代码)附求解规划类问题的建议...
题Ⅱ Background Information: 某饲料加工厂有9个加工窖.现有一批加工任务,要将16种加工原料按照某种混合方案 一次性放入加工窖中 进行加工.质量>=500kg的加工原料可 ...
- Lingo:软件简介与优化问题【数学建模工具】
Lingo主菜单命令 LINDO 软件的菜单条上有 6 个主菜单: File(文件) Edit(编辑) Solve(求解) Reports(报告) Window(窗口) Help(帮助) File(文 ...
- 数学建模专栏 | 第五篇:MATLAB优化模型求解方法(上):标准模型
最优化赛题是数学建模大赛中最常见的问题类型之一.一般说来,凡是寻求最大.最小.最远.最近.最经济.最丰富.最高效.最耗时的目标,都可以划入优化问题的范畴.MATLAB 优化工具箱和全局优化工具箱对多个 ...
- 数学建模优化模型简单例题_数学建模之优化模型:存储模型
点击上方「蓝字」关注我们 最近,为申报市级精品课程,我为我校"数学建模与科学计算"课程录制了讲课视频,下面是3.1节优化模型的第一个例子:存储模型.敬请大家批评指正! 优化模型是数 ...
- 【2023年第三届长三角高校数学建模竞赛】A 题 快递包裹装箱优化问题 20页完整论文及代码
相关链接 [2023年第三届长三角高校数学建模竞赛]A 题 快递包裹装箱优化问题 详细数学建模过程 1 题目 2022 年,中国一年的包裹已经超过 1000 亿件,占据了全球快递事务量的一半以上.近几 ...
- 数学建模 导航(持续更新ing)
数学建模 导航 一.数学建模方法 1.综合评价类 2.分类与判别类 3.关联.因果与比较类 4.预测与预报类(1)单序列预测 5.预测与预报类(2)回归分析预测 6.优化与控制类 二.数学建模工具 1 ...
- 数学建模让人收益终身——2022美国大学生数学建模竞赛F奖
数学建模与我的故事 2022-5-6上午美赛的结果揭晓了,我们小组很开心和庆幸自己在今年的竞赛C题中获得了Finalist!!这次也算是本科生涯最后一次建模了,小编从本科一年级开始数学建模,先后获得了 ...
- 数学建模workflow
本人原创,转载请注明出处:https://blog.csdn.net/tyhj_sf/article/details/85227117 0. 引言 数学建模过程是一个创造性地将数学知识直接运用于生产实 ...
- 数学建模中常用的十大算法
数学建模中常用的十大算法 这里,我们将对数学建模中常用的十大算法做一个简单的梳理,并给出一些可以继续学习的参考Blogs 文章目录 数学建模中常用的十大算法 1.蒙特卡罗算法 2.数据拟合.参数估计. ...
最新文章
- 真学霸不愁钱,传递社会正能量 - 我看华为百万年薪招聘天才少年
- 看看10万程序员怎么评论:零基础的前端开发该如何系统地学习?
- mysql 创建师徒_mysql基础整理
- python 之 collections
- 生物化学与分子生物学分析技术 Analytical Techniques in Biochemistry and Molecular Biology 英文原版
- 去掉字符串后面所有的0 去掉字符串前面或后面的0;
- 命令行的形式运行php
- 为了和互联网公司抢程序员,这家世界 500 强也是蛮拼的
- nginx配置二级域名
- atitit.导出excel的设计----查询结果 导出为excel的实现java .net php 总结
- 多视点视频编码快速模式选择算法综述
- 第2节---小任务,爬取百度LOGO链接并下载图片
- 网格布局---grid
- 音乐转换成16进制写进单片机的方法(音符频率和音符的播放长度时间计算)
- Silverlight游戏设计(Game Design):(六)场景编辑器之开源畅想
- P1867 【Mc生存】经验值 java题解
- 自己动手开发安卓版按键精灵
- Unsupervised Degradation Representation Learning for Blind Super-Resolution(基于无监督退化表示学习的盲超分辨率处理)
- Mysql数据库 | SQL语句解析『下篇』
- 【技术干货】详解BGP4+的负载分担
热门文章
- Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 10
- 关键字 surper 和 this
- Python 3 《array》入门练习
- python文章抄袭检测_CSDN文章被洗稿、抄袭严重!用Python做一个“基于搜索引擎的文章查重工具”,解决!...
- 夏天宝宝晚上睡觉不踏实怎么办?
- .nsh 怎么样运行_如何在Ubuntu 18.04上使用nsh运行安全的远程命令
- Visual C++游戏编程基础之透明半透明效果
- 制作openstack离线 yum 源
- 【小程序】小程序多次扫描不同二维码参数不生效问题
- 在iOS设备上安装Windows、Linux等操作系统!