高级管理科学基础知识
Posted 雪狐晨光
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了高级管理科学基础知识相关的知识,希望对你有一定的参考价值。
动态规划
动态规划是决策分析中的一种常用方法,是解决多阶段决策过程问题的一种最优化方法。所谓多阶段决策过程,就是将问题分成若干个相互联系的阶段,每个阶段都作出决策,从而使整个过程最优化。动态规划的实质是分治思想和解决冗余。
- 重叠子问题
- 最优子结构
- 状态转移方程
最小生成树
普里姆算法
普里姆(Prim)算法是一某个顶点为起点,逐步找各顶点最小权值的边来构建最小生成树。换一种说法:从任意一顶点 v0 开始选择其最近顶点 v1 构成树 T1,再连接与 T1 最近顶点 v2 构成树 T2, 如此重复直到所有顶点均在所构成树中为止。
克鲁斯卡尔
克鲁斯卡尔算法将连通网中所有的边按照权值大小做升序排序,从权值最小的边开始选择,只要此“边”不和已选择的边一起构成环路,就可以选择它组成最小生成树。对于 N 个顶点的连通网,挑选出 N-1 条符合条件的边,这些边组成的生成树就是最小生成树。
最短路径
迪杰斯特拉 1->N
迪杰斯特拉算法用于查找图中某个顶点到其它所有顶点的最短路径,该算法既适用于无向加权图,也适用于有向加权图。注意,使用迪杰斯特拉算法查找最短路径时,必须保证图中所有边的权值为非负数。
思路:
1. 找出当前最短路径顶点。
2. 从当前最短路径顶点出发,刷新各个顶点的最短路径。
// 迪杰斯特拉算法,v0表示有向网中起始点所在数组中的下标
public static void Dijkstra_minTree(MGraph G, int v0, int[] p, int[] D)
int[] tab = new int[V]; // 为各个顶点配置一个标记值,用于确认该顶点是否已经找到最短路径
// 对各数组进行初始化
for (int v = 0; v < G.vexnum; v++)
tab[v] = 0;
D[v] = G.arcs[v0][v];
p[v] = 0;
// 由于以v0位下标的顶点为起始点,所以不用再判断
D[v0] = 0;
tab[v0] = 1;
int k = 0;
for (int i = 0; i < G.vexnum; i++)
int min = 65535;
// 选择到各顶点权值最小的顶点,即为本次能确定最短路径的顶点
for (int w = 0; w < G.vexnum; w++)
if (tab[w] != 1)
if (D[w] < min)
k = w;
min = D[w];
// 设置该顶点的标志位为1,避免下次重复判断
tab[k] = 1;
// 对v0到各顶点的权值进行更新
for (int w = 0; w < G.vexnum; w++)
if (tab[w] != 1 && (min + G.arcs[k][w] < D[w]))
D[w] = min + G.arcs[k][w];
p[w] = k;// 记录各个最短路径上存在的顶点
弗洛伊德 N->N
在一个加权图中,如果想找到各个顶点之间的最短路径,可以考虑使用弗洛伊德算法。弗洛伊德算法既适用于无向加权图,也适用于有向加权图。使用弗洛伊德算法查找最短路径时,只允许环路的权值为负数,其它路径的权值必须为非负数。
思路: 遍历每个顶点,将其作为其它顶点之间的中间顶点,更新 graph 数组
// 实现弗洛伊德算法,graph[][V] 为有向加权图
public static void floydWarshall(int[][] graph)
int i, j, k;
// 遍历每个顶点,将其作为其它顶点之间的中间顶点,更新 graph 数组
for (k = 0; k < V; k++)
for (i = 0; i < V; i++)
for (j = 0; j < V; j++)
// 如果新的路径比之前记录的更短,则更新 graph 数组
if (graph[i][k] + graph[k][j] < graph[i][j])
graph[i][j] = graph[i][k] + graph[k][j];
// 记录此路径
P[i][j] = k;
// 输出各个顶点之间的最短路径
printMatrix(graph);
网络与最大流量
一个流量网络,是一张边的权重(这里称为容量)为正的加权有向图。一个st-流量网络有两个已知的顶点,即起点s和终点t。
public FordFulkerson(FlowNetwork G, int s, int t)
//找出从s到t的流量网络G的最大流量配置
while(hasAugmentingPath(G, s, t))
//利用所有存在的增广路径
//计算当前的瓶颈容量
double bottle = Double.POSITIVE_INFINITY;
for(int v = t; v != s; v = edgeTo[v].other(v))
bottle = Math.min(bottle, edgeTo[v].residualCapacityTo(v));
//增大流量
for(int v = t; v != s; v = edgeTo[v].other(v))
edgeTo[v].addResidualFlowTo(v, bottle);
value += bottle;
决策论
不确定型决策
乐观主义准则
(冒险法)在决策中的体运用是:首先,确定每一可选方案的最大利润值;然后,在这些方案的最大利润中选出一个最大值,与该最大值相对应的那个可选方案便是决策选择的方案。
悲观主义准则
(保守法)进行决策时,首先要确定每一可选方案的最小收益值,然后从这些方案最小收益值中,选出一个最大值,与该最大值相对应的方案就是决策所选择的方案。
折中主义准则
也称折衰决策法,决策者确定一个乐观系数ε(0.5,1),运用乐观系数计算出各方案的乐观期望值,并选择期望值最大的方案。
等可能准则
拉普拉斯决策准则。采用这种方法,是假定自然状态中任何一种发生的可能性是相同的,通过比较每个方案的损益平均值来进行方案的选择,在利润最大化目标下,选取择平均利润最大的方案,在成本最小化目标下选择平均成本最小的方案。
后悔值准则
运用最小最大后悔值法时,首先要将决策矩阵从利润矩阵转变为机会损失矩阵;然后确定每一可选方案的最大机会损失;再次,在这些方案的最大机会损失中,选出一个最小值,与该最小值对应的可选方案便是决策选择的方案。
灵敏度分析
偏导分析敏感度分析
线性分析
图解法
坐标图上求解,点或者边
单纯形法
单纯形法的一般解题步骤可归纳如下:
(1)把线性规划问题的约束方程组表达成典范型方程组,找出基本可行解作为初始基本可行解 。
(3)若基本可行解存在,以初始基本可行解作为起点,根据最优性条件和可行性条件,引入非基变量取代某一基变量,找出目标函数值更优的另一基本可行解 。
(4)按步骤3进行迭代,直到对应检验数满足最优性条件(这时目标函数值不能再改善),即得到问题的最优解。
(5)若迭代过程中发现问题的目标函数值无界,则终止迭代
以上是关于高级管理科学基础知识的主要内容,如果未能解决你的问题,请参考以下文章
sklearn基于make_scorer函数为Logistic模型构建自定义损失函数并可视化误差图(lambda selection)和系数图(trace plot)+代码实战