1.线性规划 Linear Programming (LP)
线性规划问题是在一组线性约束条件下求最大最小值的问题。
1.1线性规划的matlab标准形式及软件求解
matlab中求解线性规划的命令为:
(只能求负数和最小值)
[x,fval]=linprog(c,A,b)
[x,fval]=linprog(c,A,b,Aeq,beq)
[x,fval]=linprog(c,A,b,Aeq,beq,lb,ub)
其中x
返回的是决策向量的取值。
fval
返回的是目标函数的最优质
c
为价值向量
A,b
对应的是线性不等式约束
Aeq,beq
对应的是线性等式约束
lb,ub
分别对应的是决策变量的下届向量和上届向量
由于Matlab只能求最小值,所有在求最大值的时候要进行转化
1.2 投资的收益和风险
线性规划例题:
- 符号规定:
对一产品来说,设以 A 1 \Alpha_1 A1, A 2 \Alpha_2 A2完成 A \Alpha A工序对产品分别为 x 1 , x 2 x_1,x_2 x1,x2,转入B工序 B 1 , B 2 , B 3 \Beta_1,\Beta_2,\Beta_3 B1,B2,B3完成 B \Beta B工序对产品分别为 x 3 , x 4 , x 5 x_3,x_4,x_5 x3,x4,x5件.
对二产品来说,设以 A 1 \Alpha_1 A1, A 2 \Alpha_2 A2完成 A \Alpha A工序对产品分别为 x 6 , x 7 x_6,x_7 x6,x7,转入B工序 B 1 \Beta_1 B1完成 B \Beta B工序对产品分别为 x 8 x_8 x8件.
对三产品来说,设以 A 2 \Alpha_2 A2完成 A \Alpha A工序对产品分别为 x 9 x_9 x9,转入B工序 B 2 \Beta_2 B2完成 B \Beta B工序对产品分别为 x 9 x_9 x9件.
由上述条件得:
- 线性规划模型
利润-设备的花费
Matlab求最大值取负
clc;clear;
c = [3/4,7753/10000,-3/8,-3132/7000,-7/20,-1/2,-2889/10000,1.15,19148/10000,-8613/7000];
A = [5,0,0,0,0,10,0,0,0,0;
0,7,0,0,0,0,9,0,12,0;
0,0,6,0,0,0,0,8,0,0;
0,0,0,4,0,0,0,0,0,11;
0,0,0,0,7,0,0,0,0,0];
b = [6000,10000,4000,7000,4000];
aeq = [1,1,-1,-1,-1,0,0,0,0,0;
0,0,0,0,0,1,1,-1,0,0;
0,0,0,0,0,0,0,0,1,-1];
beq = [0,0,0];
[x,y] = linprog(-c,A,b,aeq,beq,zeros(10,1),[]);
fprintf('最大利润为%.5f',-y);
2. 整数规划
数学规划中的变量限制为整数时,称为整数规划。
整数规划最优解不能按实数最优解简单取整而获得。
用于解决运输问题和指派问题。
整数规划的数学模型(一般形式)
xj
整数限制,bi
产量或者资源总量的限制。
纯整数规划:所有决策变量要求取非负整数(这时引进的松弛变量和剩余变量可以不要求取整数)。
全整数规划:除了所有决策变量要求取非负整数外,系数aij和常数bi也要求取整数(这时引进的松弛变量和剩余变量也必须是整数)
混合整数规划:只有一部分的决策变量要求取非负整数,另一部分可以取非负实数。
0-1整数规划:所有决策变量只能取0或1两个整数。(工作安排问题,运动员赛程安排问题,流程性规划问题)
2.1 整数规划和线性规划的关系
- 整数规划可行解时松弛问题可行域中的整数格点。
- 松弛问题无可行解,则整数规划无可行解。
- ILP最优值小于或等于松弛问题的最优值。
- 松弛问题最优解满足整数要求,则该最优解为整数规划最优解。
2.2 整数规划求解方法
松弛问题、伴随问题 :首先不考虑整数约束,得到的线性规划问题。
目前常用的求解整数规划的方法有:分枝定界算法和割平面法;对于特别的0-1规划问题(指派问题)采用隐枚举法和匈牙利法.
intprog()
function [x,fval,status] = intprog(f,A,B,I,Aeq,Beq,lb,ub,e)
其中f
为目标函数向量
A
和B
为不等式约束Aeq
和Beq
为等式约束
I
为整数约束
lb
与ub
分别为变量下界与上界
x
为最优解,fval
为最优值
- 案例
2.2.1 分枝定界算法
若线性规划的最优解不符合整数条件,则任选一个不满足整数条件的变量xi0来构造新的约束条件加到松弛问题中形成两个子问题
逐渐增加约束条件。
依次在缩小的可行域中求解新构造的线性规划的最优解,并重复上述过程,直到子问题无解或有整数最优解(被查清)
对松弛问题的可行解取上界和下界看观察得到的结果是否为整数
2.2.2 割平面算法
核心思想:将能够取得到小数的部分割掉
单纯形法。构造最简行矩阵。
求解割平面算法基本步骤:
- 求解线性规划最优解
- 增加松弛变量,小数部分和整数部分分离
- 得到小数部分小于等于0
2.2.3 匈牙利算法
常用匈牙利算法求解0-1规划问题(互斥约束问题)。
常见的0-1规划问题:固定费用问题、指派问题(BFS)。
指派问题的标准形式:
指派问题的数学模型:
非标准形式的指派问题(增加虚拟变量或新的约束)
- 最大化指派问题
- 人数和工作数不等:
人少工作多:增加虚拟的人,代价为0
人多工作少:添加虚拟的工作,代价都为0 - 一个人可做多件工作
该人可化为几个相同的人 - 某工作一定不能由某人做
该人做该工作的相应代价足够大M
匈牙利算法的一般步骤:
- 变换指派问题的系数(也称效率矩阵cij)为bij,使bij的各行各列中都出现0元素。
(1) 从 (cij) 的每行元素都减去该行的最小元素;
(2) 再从所得新系数矩阵的每列元素中减去该列的最小元素。
- 进行试指派,以寻求最优解
- 作最少的直线覆盖所有0元素
- 变换矩阵bij增加0元素
3. 非线性规划NP
如果目标函数或约束条件中包含非线性函数,就称这种规划问题为非线性规划问题。
一般说来,解非线性规划要比解线性规划问题困难得多。而且,也不像线性规划有单纯形法这一通用方法,非线性规划目前还没有适于各种问题的一般算法,各个方法都有自己特定的适用范围。
3.1 非线性规划的数学模型
其中c(x)<=0 ceq(x)=0
为非线性向量函数。
x
的返回值是决策向量x的取值
fval
返回的是目标函数的取值,其中fun是用M文件定义的函数
x0是x的初始值
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缺省的参数设置。
3.2 二次规划
若某非线性规划的目标函数为自变量 的二次函数,约束条件又全是线性的,就称这种规划为二次规划。
返回值x是决策向量x的值,返回值fval是目标函数在x 处的值。
4. 层次分析法
4.1 基本原理
根据问题的性质和要达到的总目标,将问题分解为不同的组成因素,并按照因素间的相互关联影响以及隶属关系将因素安不同层次聚集集合,形成一个多层次的分析结构,从而最总使问题归结为最底层(供决策的方案、措施等)相对于最高处(总目标)的相对重要权制的确定或相对优劣次序的排定。
典型三大应用:
- 最佳方案选取(选择运动员、选择地址)
- 用于评价类问题(评价水质状况、评价环境)
- 用于指标体系的优选(兼顾科学和效率)
4.2 步骤和方法
大致分为以下四个步骤:
- 建立层次结构模型
- 构造判断(成对比较)矩阵
- 层次单排序及其一致性检验
- 层次总排序及其一致性检验
4.2.1 建立层次结构模型
将决策目标、考虑的因素(决策准则)和决策对象按它们之间的相互关系分为最高层、中间层和最低层,给出层次结构图。
最高层:决策的目的、要解决的问题。
最低层:决策时的备选方案。
中间层:考虑的因为、决策的准则。
对于相邻两层,称高层为目标层,低层为因素层。
4.2.2 构造判断矩阵
判断矩阵是表示本层所有因素针对上一层某一个因素的相对重要性的比较。判断矩阵的元素aij用1-0标度方法给出。
4.2.3 层次单排序及其一致性检验
对应于判断矩阵最大特征根λm a x的特征向量,经归一化(使向量中各元素之和等于1)后记为W。W的元素为同一层次因素对于上一层次因素某因素相对重要性的排序权值,这一过程称为层次单排序。能否确认层次单排序,需要进行一致性检验,所谓一致性检验是
指对A确定不一致的允许范围。
定义一致性指标:
C
I
=
λ
−
n
n
−
1
CI=\frac{\lambda -n}{n-1}
CI=n−1λ−n
CI=0,有完全的一致性
CI 接近于0,有满意的一致性
CI 越大,不一致越严重
随机一致性指标 RI
定义一致性比率:
C
R
=
C
I
R
I
CR=\frac{CI}{RI}
CR=RICI
一致性检验:利用一致性指标和一致性比率<0.1及随机一致性指标的数值表,对A进行检验的过程。
4.2.4 层次总排序及其一致性检验
• 计算某一层次所有因素对于最高层(总目标)相对重要性的权值,称为层次总排序。
• 这一过程是从最高层次到最低层次依次进行的。
4.3 层次分析法的基本步骤
-
建立层次结构模型
该结构图包括目标层,准则层,方案层。
层次分析法的基本步骤归纳如下 -
构造成对比较矩阵
从第二层开始用成对比较矩阵和1-9尺度。 -
计算单排序权向量并做一致性检验
对每个成对比较矩阵计算最大特征值及其对应的特征向量,利用一致性指标、随机一致性指标和一致性比率做一致性检验。若检验通过,特征向量(归一化后)即为权向量;若不通过,需要重新构造成对比较矩阵。 -
计算总排序权向量并做一致性检验
利用总排序一致性比率进行检验。若通过,则可按照总排序权向量表示的结果进行决策,否则需要重新考虑模型或重新构造那些一致性比率CR较大的成对比较矩阵。
4.4 层次分析法的几点说明
层次分析法的优点
(1)系统性.把所研究的问题看成一个系统,按照分解、比较判断、综合分析的思维方式进行决策分析,也是实际中继机理分析方法、统计分析方法之后发展起来的又一个重要的系统分析工具.
(2)实用性.把定性与定量方法结合起来,能处理许多传统的优化方法无法处理的实际问题,应用范围广.而且将决策者和决策分析者联系起来,体现了决策者的主观意见,决策者可以直接应用它进行决策分析,增加了决策的有效性和实用性.
(3)简洁性.具有中等文化程度的人都可以学习掌握层次分析法的基本原理和步骤,计算也比较简便,所得结果简单明确,容易被决策者了解和掌握.
层次分析法的局限性
1.局限性是粗略、主观.首先是它的比较、判断及结果都是粗糙的,
不适于精度要求很高的问题;
2.其次是从建立层次结构图到给出两两比较矩阵,人的主观因素作用很大,使决策结果较大程度地依赖于决策人的主观意志,可能难以为众人所接受.
5. 灰色关联分析与预测模型
常见的预测模型:https://blog.csdn.net/yijiantao/article/details/51142953
5.1 灰色关联度分析
因素分析的基本方法过去只要是采用回归分析等方法,但回归分析的方法有很多缺陷,如要求大量数据、计算量大以及可能出现反常情况。为克服以上弊病,用灰色关联度分析来做系统分析。
灰色关联度一定是分析向量与向量之间以及矩阵矩阵之间的关联度。