当前课程知识点:运筹学 >  6. 图与⽹络分析 >  6.7 指派问题 >  课程主要内容2

返回《运筹学》慕课在线视频课程列表

课程主要内容2在线视频

返回《运筹学》慕课在线视频列表

课程主要内容2课程教案、知识点、字幕

第二个

就进入到优化方法的简述

这里面我们看一看

在咱们课程里所学的

运筹学问题

实际是一个什么样的问题

拿一个例子来看

包括它一些特性是什么样子的

我们举一个比较简单的例子

这个例子

它的决策变量

我们后面会在

具体的线性规划里面会把

每一个概念的定义

非常明晰地给大家

我们这里提出这个概念

是求一个目标函数

只有一个决策变量

这个一维的问题

它可以在图形表示上比较清晰一点

这里的 x 是它的决策变量

问题整个的取值空间

是在 a 和 b 之间

那么

对于这个一般性的函数

我们用 f(x) 来表示

它具体的形状

变化的可能就比较多了

我们也不知道是什么样子

这里就是示意图

给大家画了这么一个

对应的样子

但实际来做这个优化问题的时候

是不可能看到

这个函数的整体面貌的

要是能看到的话

就不用去做这个优化问题了

假设是求这个问题的一个最大值

那么从这个图形上的话

大家事实上是可以看到的

也是很容易就可以知道

这个问题的最大值

实际上是在

对应的这个b点上取到的

一个最大值

但是

我们在解决这个问题的时候

刚才也说到了是不可能

开始的时候让

整个函数的所有形态展现在我面前

让我们在这里选出最大值

我们当然不可能去遍历所有的点

然后通过比大小的方式来取最大值

大家知道因为 x 是连续的

它在整个在数轴 [a,b] 之间是连续的

整个取值是有无穷多的

而且是不可列的

所以这也是不可能的事情

那么对这样的问题我们怎么解决呢

我们解决这个问题的思路就是

当然

有的同学可能这个时候也会

产生自己的想法

我学过高等数学

包括数学分析里面提到过的

可以求导数

导数等于 0 的地方

这个也是在实际应用中是不可实现的

因为求完导数之后

对于复杂的问题

需要求非线性方程组的解

这个求解的困难度

比这个优化问题可能也不简单

所以真正求解这个问题的一些办法

是怎么做呢

我们的办法是这样的

实际上就是我们看啊这里面

当然刚才提到了 c 和 d 都是

导数等于 0 的点

你是不太期望说把它找到的

那么我们解决办法是这样

我们在任意一点出发

比如说我们选定任意一点 x1

这个点就是咱们如图所示

选到了这个点

在 [c,d] 这个区间内的这么一个点

那么有这个点 x1 之后

现在我们要朝着能够改进

目标函数的方向进行搜索

什么叫改进目标函数的方向

就是 对这个问题来说

我们求的是目标函数的最大值

有点像爬山

那显而易见

大家都有爬山的经验

我们肯定要

往更高的地方爬

所以 在这个这个问题里面显而易见

在 x1 点出发的时候

沿着 x1 减小的方向

在这个里面发现另外一个点

x1-Δ 这么一个点

往这个方向去走的时候

这目标函数值肯定会越来越大

那么对于更一般的情况

你可能是可以通过求导数

可以把这个

使目标函数值改进的方向

可以求出来

即使说这个导数很难求

这个我们也可以

考虑用试探的办法

还是可以找到局部的

可以改进的方向的

然后

我们就走到一个新的点

在这个图里面就是 x1-Δ 这个点

那么走到这个点之后呢

我们还当然还有一些判断的准则

可以考虑说它在邻域里面

在附近里面找一找

是不是还有比这个点更小更好的点

如果有更好还可进一步走

那么实际上大家可以看到

这种方式

在这里我写了个公式

就是 x_k+1=x_k+λ_k*D_k

那么这个公式

是贯穿咱们课程始终的

解决优化问题的一个基本思路

那么这个我后面会讲

这是一个迭代的思路去解决问题

那么每一步都是从一个点出发

然后

找到一个搜索方向

再后 会沿着这个方向走到一定的步长

从而得到一个新的点

从这个新的点

我们再进一步再去找方向再去走

直到不能改进为止

这个应该跟我们

生活中

实际的很多例子是一样的

就是阶段性目标

那么我们在考大学之前

我们都瞄准了考清华

考上之后

进入到清华校门之后

我们再考虑下一步的努力的方向是什么

进一步去走

这个是很朴素的一个解决问题的思路

那么直到不能改进为止

我们就结束

但是

对这个问题的话可能会遇到点小麻烦

我们从这个图里就可以看到

如果是这么走的话

从 x1 点出发

最终这个按照这个方法结束之后

我们这个问题一定会停留到这个

c 点所对应的目标函数值

那么实际上

这个目标函数值

它只是在局域之内是

对应的一个最大值

它并不是这个真正的这个问题本身的

全局的最大值

因为这个问题的最大值

刚才我们说过了

是在最优点 b点所对应的目标函数

所以对应的问题是什么呢

这种方法是肯定能够

收敛到一个局部最优解

但是

是不能保证这个全局最优的

这个是这种方法

所遇到的最主要的一个问题

就是说

这种 找方向 沿着方向进行

搜索的 这种确定性的方法

什么叫确定性

我们每次的方向的选择都是

沿着能改进目标函数值的方向

进行搜索的

那么这个问题

显然有解决问题的方法了

但是

我们也看到

这个也会给解决的问题

这个带来的一些新问题

那么怎么来克服这个问题呢

沿着这个确定性的方向进行搜索

只能收敛到局部最优解

不能保证全局最优

怎么来解决这个问题

要解决它的话

需要走出局部最优解

当然有同学可能想到

我不选择这个点

选择别的点行不行

但是你不管怎么选

对一个完全未知的这么一个

非线性函数来说

或者一般性的函数

你总是不知道

如果停到的这个

按照确定性搜索的这个方向

停到这个点是不是就一定是

这个问题的全局最优解

所以这个问题

换点也不是一个好办法

能确保能走出局部最优解的

唯一的一个途径呢是什么呢

就是在搜索的过程中

允许前进到

目标函数值变得更差的点

也就说刚才咱们说的这个

对应的搜索方向

不能始终沿着

改变目标函数值

去让它变得更优的方向走

比如说这个问题来说

如果我允许

x 从往对应 x 值增加的方向走的话

也就向 d 点靠近的时候

那么显而易见 这个方向里对应

这个目标函数值是在减小的

它并不是改进目标函数值的

但是大家可以看到

一旦通过了 d 点我就有可能

在这个原来确定的规则下

它就会收敛到 b 点去

那么这里面的才有可能找到全局最优解

但是讲解过程中

大家也会意识到一个问题

这个问题是什么呢

也就说看着是好

但是

怎么保证这个算法能收敛啊

什么叫算法收敛

也就说最后我能不能停到一个点

就像这里面

我一会儿又可以往

目标函数值增加的方向走

我又可以往目标函数值减小的方向走

那我到底怎么做呀

开玩笑的话就是

人家给你指点方向的时候说

一件事情怎么做

这么做也行

那么做也行

这就跟没有指点一样了

所以

这里面就存在了

这个算法到底是怎么收敛的问题

也就是说

像这个我们只给了一个

允许目标函数值往变差走

没有任何意义

因为它不能保证

具体的算法收敛

怎么解决这个算法收敛性呢

一个具体的办法就是

为了使得这个算法收敛

我们只能来引入不确定性

什么叫引入不确定性

也就说我是允许

往目标函数实变差的方向走

但是呢

要把这个

向变差方向

移动的概率

和我对应的目标函数值

具体的改善

它们两个之间能建立起关系

也就像刚才的问题

因为我们求的是

目标函数的最大值

所以 我们使得这个移动的概率

尽可能地和这个目标函数值正相关

那我们就可以得到这个

按图中这个例子

也就是我们以这种概率

去改变的时候

是可以保证咱们这个问题里面

它是这个引入了这个不确定性

这个引入不确定性的好处在哪呢

按照这个方式引入的话

那么它不能保证

每次的时候都能收敛到这个 c 点

也不能保证说每次都收敛到 b 点

这个 c 点和 b 点

在这个问题里面

大家可以知道

一个代表了局部最优解

一个代表了全局最优

也不能保证说

你做的结果和我做的结果都是一样的

但是呢在概率层面上

就跟我们掷骰子一样

我们不能说

某次我掷的就一定是一点

一个就一定掷的是个五点

或者跟扔硬币一样

但是从这个整体概率上来说

它一定会那个收敛到一个

最后的稳定的状态

那这个也是一样

从概率上是可以保证

这种方法

只要以这个规则去做的时候

是可以收敛到最后的

全局最优解 b 点的

所以呢

引入这个不确定性之后

产生的算法

它的结果是不确定的一个算法

就是我们说具有随机性的算法

但是 能保证在概率上面

它具有收敛性

所以

在前面的例子里

我们就介绍了这个

优化方法的一个最基本的一个类型

那么 可以看到

它带来了

确定性的搜索与

不确定的搜索两种类型

那么简而言之

前者确定性搜索

我们再回顾一下

就是对一个问题来说

从一个点出发

然后按着迭代的思路

这个从这个点

选择一个使目标函数值

可以进一步优化的方向

然后

按这个方向 走一定步长之后

然后我们得到一个新的点

沿着新的点

我再去选方向

再去往前走啊

这叫确定性搜索

每一步的对应的

优化的方向的都是

使得目标函数值进行改善的方向

这是确定性的

那么后者

就是我们可以引入这个不确定性

引入随机性

不确定性的搜索方法

那么就变成这个另外的一种类型

前者是我们刚才说过了

这是我们课程介绍的主要内容

这后者就包括各种各样

包括模拟退火

遗传算法

免疫算法

蚂蚁算法

等等

这个就是这个不一一列举了

这个统一称为智能算法

还有蜂群算法

各种各样的

你可以看到各种各样的名字

但是不管它是怎么去做

包括像这个禁忌搜索

也是搜索方向

到了一定的时候

我们就可以把这个方向禁用掉

再也不去选择

这样的方向

这个类型从本质来说

都是在这个确定型搜索里面引入了

一定的随机性和不确定性之后来做的

只不过你是怎么设计这个

像刚才说这个概率

往这个更差的概率

要和这个函数值之间的关系

使这个算法变得更加的有效一点

所以

这个就是我们

关注的一些方法

那么我们课程主要的

就是基于确定性搜索的

优化方法

这是我们课程主要讨论内容

另外

还是要特别地叮嘱一下

就是那咱们课程的内容

相对来说的话还是比较严谨和保守的

为什么这么说呢

就是我们可以看出

实际上运筹学

是在解决怎么样去优化系统效率

所以它本质来说是一个

解决最优化的问题

但是

谈到“优化”二字

在咱们运筹学课程里面

给大家介绍的还是非常严谨

和非常“狭窄”

这个“狭窄”打引号

一个部分

我个人的一个感受是

所有的科学

它一定是很严谨和很保守的

你不能上就说

我这个东西放之四海皆准

什么都能解决

不是这个样子的

我们所介绍内容里面是

它解决问题的方面是很受限的

后面会看到很严格的一类问题

那么我们在日常生活中看到其他的很多

比如说

大家经常谈到的一些优化的问题

跟我们这个后面讲的还是有一些区别的

它的范围可能更广一点

我们包括说

把这个稍微改善一点啊

这个甚至说有一些

都不是通过咱们

讲过的用数学工具

数学模型的进行精确的

去进行分析和刻画的

那它也就叫优化

但是我们这个方法相对是

比较严谨的那个部分

运筹学课程列表:

1. 绪论

-课程主要内容1

-课程主要内容2

-课程学习方法1

-课程学习方法2

-课程学习方法3

-作业-绪论

2. 线性规划

-2.1 ⼀般模型和标准模型

--2.1.1 线性规划模型

--2.1.2 线性规划的标准模型

--作业-线性规划模型

-2.2 低维问题图解法及其向⾼维的推⼴

--2.2.1 低维问题的图解法1

--2.2.2 低维问题的图解法2

--2.2.3 从低维问题分析线性规划问题的最优解特点1

--2.2.4 从低维问题分析线性规划问题的最优解特点2

--作业-低维问题的图解法

--2.2.5 凸集

--2.2.6 凸集的顶点

--2.2.7高维问题顶点的等价表述1

--2.2.8高维问题顶点的等价表述2

--2.2.9推广到高维的重要概念与性质

--作业-高维问题及其性质

-2.3 单纯形算法

--2.3.1在顶点中搜索最优解的算法

--2.3.2计算选定进基变量的基本可行解

--2.3.3保可行性的最小非负比值原理

--2.3.4无非负比值的情况

--作业-单纯形算法1

--2.3.5选择进基变量改进目标函数1

--2.3.6选择进基变量改进目标函数2

--2.3.7单纯形表

--2.3.8最优性判据

--2.3.9单纯形算法的基本步骤

--作业-单纯形算法2

--2.3.10单纯形算法的收敛性

--2.3.11退化情况1

--2.3.12退化情况2

--2.3.13初始基本可行解的确定方法

--2.3.14基于逆矩阵迭代的单纯形算法

--作业-单纯形算法3

-2.4 对偶性与对偶算法

--2.4.1线性规划对偶问题概述

--2.4.2标准线性规划的对偶问题

--2.4.3一般形式线性规划的对偶问题

--2.4.4原问题与对偶问题的互补松弛性1

--2.4.5原问题与对偶问题的互补松弛性2

--作业-对偶性与对偶算法1

--2.4.6影子价格1

--2.4.7影子价格2

--2.4.8对偶单纯形法1

--2.4.9对偶单纯形法2

--2.4.10对偶单纯形法3

--2.4.11对偶单纯形法4

--作业-对偶性与对偶算法2

-2.5 灵敏度分析

--2.5.1灵敏度分析

--2.5.2参数线性规划

3. 整数线性规划

-3.1 整数线性规划的数学模型

--整数线性规划概述

--作业-整数规划概述

-3.2 割平⾯法

--3.2.1割平面法的基本原理

--3.2.2割平面的构造方法1

--3.2.3割平面的构造方法2

--3.2.4割平面方法例题1

--3.2.5割平面方法例题2

--作业-割平面法

-3.3 分枝定界法

--3.3.1分枝定界法1

--3.3.2分枝定界法2

--作业-分枝定界法

-3.4 0-1变量的作⽤

--3.4.1 0-1变量的作用1

--3.4.2 0-1变量的作用2

--作业-0-1变量的作用

4. 动态规划

-4.1 动态规划基本概念

--4.1.1动态规划基本概念

--4.1.2动态规划的无后效性

-4.2 最优性原理

--动态规划的最优性原理及计算量

-4.3 建模与求解

--4.3.1动态规划解非线性规划问题1

--4.3.2动态规划解非线性规划问题2

--4.3.3连续变量离散化求解

--4.3.4动态规划解整数规划问题

-4.4 典型应⽤问题

--如何满足动态规划的无后效性

-4.5 不定期动态规划问题

--4.5.1不定期问题

--4.5.2值迭代法

--4.5.3策略迭代法1

--4.5.4策略迭代法2

-作业-动态规划

5. ⾮线性规划

-5.1 基础知识

--5.1.1 非线性规划概述

--5.1.2 局部最优解与全局最优解

--5.1.3 梯度与海塞矩阵

--5.1.4 泰勒展开

--5.1.5 凸函数和凹函数

--5.1.6 多元凸函数的判别

--5.1.7 多元凸函数与一元凸函数的关系

--5.1.8 凸函数的一阶条件

--5.1.9 凸函数的二阶条件

--5.1.10 凸规划问题

--5.1.11求解非线性规划的基本方法

--作业-非线性规划基础知识

-5.2 ⼀维搜索

--5.2.1 一维精确搜索的性质

--5.2.2 精确搜索的基本途径

--5.2.3 0.618法

--5.2.4 Fibonacci法

--5.2.5 利用导数的精确搜索法

--5.2.6 非精确搜索

--作业-一维搜索

-5.3 ⽆约束优化

--5.3.1 无约束优化的最优性条件

--5.3.2 负梯度方法及其缺陷

--5.3.3 广义牛顿法

--5.3.4 牛顿法的缺陷

--5.3.5 最速下降方向

--5.3.6 共轭梯度方向1

--5.3.7 共轭梯度方向2

--5.3.8 共轭梯度方向3

--5.3.9 共轭梯度法计算示例

--5.3.10 共轭方向的线性无关性

--5.3.11 共轭方向与一维最优解的梯度的正交性1

--5.3.12 共轭方向与一维最优解的梯度的正交性2

--5.3.13 共轭方向二次函数有限终止性

--5.3.14 共轭方向的生成

--5.3.15 三种共轭梯度法

--5.3.16 几种算法的性能比较

--作业-无约束优化

-5.4 约束优化

--5.4.1 有约束优化问题最优性条件概述

--5.4.2 不等式约束的分类

--5.4.3 线性不等式约束下的KT条件

--5.4.4 线性等式约束处理方式1

--5.4.5 线性等式约束处理方式2

--5.4.6 线性等式约束处理方式3

--5.4.7 KKT定理

--5.4.8 转化为无约束问题的方法

--5.4.9 KKT定理的构造性证明1

--5.4.10 KKT定理的构造性证明2

--5.4.11 求KT解的一般性方法

--5.4.12 凸优化问题KT解的性质

--作业-约束优化

-5.5 简约梯度法

--简约梯度法

-5.6 拉格朗⽇对偶

--拉格朗日对偶

6. 图与⽹络分析

-6.1 基础知识

--6.1.1 图与网络分析的应用

--6.1.2 图与网络的基本概念1

--6.1.3 图与网络的基本概念2

--6.1.4 图与网络的矩阵描述

--作业-图与网络基础知识

-6.2 最⼩⽀撑树问题

--6.2.1 树的概念与特性

--6.2.2 支撑树与最小支撑树

--6.2.3 求最小支撑树的避圈算法

--6.2.4 求最小支撑树的Dijkstra算法1

--6.2.5 求最小支撑树的Dijkstra算法2

--作业-最小支撑树问题

-6.3 最短路问题

--不定期最短路问题的Dijkstra算法

--作业-最短路问题

-6.4 最⼤流问题

--6.4.1 最大流问题描述

--6.4.2 最大流问题的矩阵表示、割集容量定义

--6.4.3 可增广链求最大流

--6.4.4 最大流最小割定理

--6.4.5 求最大流的标号算法

--作业-最大流问题

-6.5 最⼩费⽤流问题

--6.5.1 最小费用流问题描述

--6.5.2 求最小费用流的启发式算法

--6.5.3 最小费用流问题的KKT条件1

--6.5.4 最小费用流问题的KKT条件2

--6.5.5 基于互补松弛定理求解最小费用流的一种途径

--6.5.6 满足互补松弛条件的可增广链

--6.5.7 保持互补松弛条件的增广方法

--6.5.8 示例寻求可用边和可增广链

--6.5.9 沿可增广链改进最小费用流

--6.5.10 寻求可增广链的最短路等效

--6.5.11 等价的最小费用流求解算法

--6.5.12 再看最小费用流启发式算法

--作业-最小费用流问题

-6.6 运输问题

--6.6.1 运输问题的特点

--6.6.2 用单纯形法求运输问题

--6.6.3 运输问题的基本可行解

--6.6.4 如何在图上确定基本可行解

--6.6.5 图的支撑树与基本可行解的关系

--6.6.6 产生基本可行解的最小元素法

--6.6.7 通过对偶变量计算检验数

--6.6.8 计算检验数的位势法

--6.6.9 更新支撑树改进基本可行解

--6.6.10 运输问题特殊情况处理办法

--作业-运输问题

-6.7 指派问题

--6.7.1 指派问题的特点

--6.7.2 运输问题算法求指派问题的缺点

--6.7.3 指派问题系数矩阵的性质

--6.7.4 指派问题求解算法设想

--6.7.5 在图上搜索最大独立零元素组

--6.7.6 二分图对集的相关性质

--6.7.7 求最大对集的标号法

--6.7.8 最大对集最小覆盖

--6.7.9 特殊指派问题处理方法

--作业-指派问题

课程主要内容2笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。