一、优化问题基本概念
1.1 优化问题
优化问题:在一系列客观或主观限制条件下,寻求使所关注的某个或多个指标达到最大(或最小)的决策
- 结构设计、资源分配、生产计划、运输方案中经常可见
通常的解决手段:
- 经验积累、主观判断
- 做试验、比优劣
- 建立数学模型,求解最优策略
解决优化问题的数学方法:
- 数学规划
- 图论
解决优化问题的数学软件:
- matlab
- lingo
当决策变量约束条件比较少是可以使用matlab
软件,当涉及的决策变量约束条件比较多时可以考虑更为专业的lingo
软件
1.2 优化模型的简单分类
优化模型可以根据目标、参数、变量、约束等划分成不同的类别
比较常用的一种划分依据按照决策变量是否连续划分为连续优化
与离散优化
连续优化
:
1. 线性规划(LP) :目标和约束均为线性函数
2. 非线性规划(NLP) :目标或约束中存在非线性函数
3. 二次规划(QP) :目标为二次函数、约束为线性(NLP特例)
离散优化
:
整数规划(IP) : 决策变量(全部或部分)为整数
1. 整数线性规划(ILP)
2. 整数非线性规划(INLP)
3. 纯整数规划(PIP),
4. 混合整数规划(MIP)
5. 一般整数规划,0-1(整数)规划
说明
:
由于不同类型的优化问题的求解难度和求解方法是有很大差异的,因此在解决我们所面临的问题时,弄清问题的类型是很有必要的。
例如,只能对于连续线性规划或某些特定的二次规划(如凸二次规划)问题,可以比较容易地求到整体最优解,或判断原问题无解;而对于一般的非线性规划和整数规划,当问题的规模比较大时,在可以接受的计算时间内找到整体最优解是非常困难的,因此通常只能求局部最优解。
一般来说,离散优化
问题比连续优化
问题难以求解,非线性规划
问题比线性规划
问题难以求解,非光滑优化
比光滑优化
难以求解。
1.3 国赛中的优化问题
2000-2021 |
---|
• 2000B 钢管订购和运输问题 |
• 2001B 公交车优化调度 |
• 2001C 基金使用的最优策略 |
• 2002B 彩票中的数学 |
• 2003B 露天矿生产的车辆安排问题 |
• 2004B 奥运会临时超市网点设计问题 |
• 2004D 公务员招聘工作中录用方案 |
• 2005B DVD在线租赁 |
• 2006B 出版社的资源配置问题 |
• 2007B 乘公交,看奥运 |
• 2008B 高等教育学费探讨 |
• 2009B 眼科病床的合理安排 |
• 2011B 交巡警服务平台设置与调度 |
• 2012B 太阳能小屋设计 |
• 2013B 碎纸片的拼接 |
• 2014B 创意折叠桌设计 |
• 2015B “互联网+”时代的出租车资源配置 |
• 2016B 小区开放对道路通行的影响 |
• 2017B “拍照赚钱”任务定价 |
• 2018B 智能RGV的动态调度策略 |
• 2019B “同心协力”策略研究 |
• 2020B 穿越沙漠 |
• 2021C 生产企业原材料的订购与运输 |
二、数学规划
求解各种优化问题的关键就是找优化问题的三要素的过程即:
- 决策变量
- 目标函数
- 约束条件
2.1 线性规划(LP)
2.1.1 LP问题
例1
解
最后的模型
matlab求解
% 化成matlab求线性规划的标准形式
f = [-7 -12]'; % 目标函数的系数向量
A=[9 4;4 5;3 10]; % 不等式约束
b=[360 200 300]';
lb=[0 0]';
[x,val]=linprog(f,A,b,[],[],lb)
val=-val
运行结果:
此处也可以使用lindo
求解
max 7x1+12x2
st
9x1+4x2<=360
4x1+5x2<=200
3x1+10x2<=300
x1>=0
x2>=0
结果
对于这样的数学模型,我们一般有如下的名称。特别是价格系数、技术系数
2.1.2 LP模型的表示形式
(1)一般形式
(2)矩阵形式
主要用于在matlab中求解,用matlab求解时需要将涉及到的矩阵全部列出。策变量、约束条件比较少的时候完全可以使用。而当决策变量、约束条件成百上千时,写出其矩阵变得不太现实,这就需要用lingo求解
例如在上个例题中就需要列出以下矩阵
(3)和式形式
这种形式主要适用于lingo中,可以根据和式形式比较容易的编写出相应的程序
2.1.3 求解通用算法
- 单纯形算法
二维空间线性规划的最优解必然在凸多边形的顶点
三维空间线性规划的最优解必然在凸多边体的顶点
2.1.4 灵敏性分析
意义:
现实问题中价格、技术、资源系数可能会变化(发生微小变动),生产方案也会受到影响
给定一个波动范围使得结果还是最优解不变
2.2 整数规划(IP)
整数规划求解整数规划一般为分支定界法或割平面法
线性规划求解一般为单纯形法
非线性规划一般求迭代解梯度下降
整数规划与线性规划建模区别在变量变为整数,其余步骤一样
2.3 0-1规划规划
2.3.1 选址问题
题目:
解决:
代码:
文章来源:https://www.toymoban.com/news/detail-456382.html
sets:
site/1..7/:x,b,c;
endsets
data:
q=?;
enddata
max=@sum(site(i):c(i)*x(i));
@sum(site(i):b(i)*x(i))<q;
x(1)+x(2)+x(3)<=2;
x(4)+x(5)>=1;
x(6)+x(7)>=1;
!@sum(site(i)|i#le#3:x(i))<=2;
!@sum(site(i)|i#ge#6:x(i))>=1;
@for(site(i):@bin(x(i)));
2.3.2 指派问题
题目:
解决:
代码:
sets:
set1/1..4/:y;
set2/1..4/:z;
set3(set1,set2):c,x;
endsets
min=@sum(set3(i,j):c*x);
@for(set1(i):@sum(set2(j):x(i,j))=1);
@for(set2(j):@sum(set1(i):x(i,j))=1);
@for(set3(i,j):@bin(x(i,j)));
2.3.3 固定费用问题
题目:
解决:
代码:
sets:
way/1..3/:x,y;
endsets
min=13*x(1)+12*x(2)+10*x(3)+120*y(1)+150*y(2)+180*y(3);
@sum(way(i):x)=500;
1.5*x(1)+1.7*x(2)+1.8*x(3)<=1500;
1.3*x(1)+1.5*x(2)+1.6*x(3)<=1000;
4*x(1)+4.5*x(2)+1.5*x(3)<=3500;
2.8*x(1)+3.8*x(2)+4.2*x(3)<=2800;
@for(way:0.01*y<=x);
@for(way:x<=1000*y);
@for(way:@bin(y));
2.3.4 0-1变量的其他用处
- 把相互约束的排斥条件转化为普通的约束条件
- 表示分段函数
2.4 多目标规划
多目标无法直接求解,需要转化为单目标规划文章来源地址https://www.toymoban.com/news/detail-456382.html
2.4.1解决方法
- 主要目标法:只保留一个主要目标,将其他的转化为约束条件
- 线性加权法(前提要保证两者的量纲一致) 将所有目标转 化为同时求最大或是同时求最小 若量纲不一致需消除量纲的影响(映射到01区间)
到了这里,关于数学建模 优化问题——数学规划的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!