Algorithm1
动态规划
第一小题
题目:
某工厂调查了解市场情况,估计在今后四个月内,市场对其产品的需求量如下表所示。
| 时期(月) | 需要量(产品单位) |
|---|---|
| 1 | 2 |
| 2 | 3 |
| 3 | 2 |
| 4 | 4 |
已知:对每个月来讲,生产一批产品的固定成本费为 3 (千元),若不生产,则为零。每
生产单位产品的成本费为 1 (千元)。同时,在任何一个月内,生产能力所允许的最大生产
批量为不超过 6 个单位。
又知每单位产品的库存费用为每月 0.5 (千元),同时要求在第一个月开始之初, 及
在第四个月末,均无产品库存。
问:在满足上述条件下,该厂应如何安排各个时期的生产与库存,使所花的总成本费用
最低?
要求:写出各种变量、状态转移方程、递推关系式、和详细计算步骤。
解:
如下图:


1 |
第二小题
题目:
某推销员要从城市 v1 出发,访问其它城市 v2,v3,…,v6 各一次且仅一次,
最后返回 v1。D为各城市间的距离矩阵。问:该推销员应如何选择路线,才能使总的行程最短?
节点v1,v2,…,v6之间的距离矩阵D如下
$$
D= \left[
\begin{matrix}
0 & 10 & 20 & 30 & 40 & 50 \
12 & 0 & 18 & 30 & 25 & 21 \
23 & 19 & 0 & 5 & 10 & 15 \
34& 32 & 4 & 0 & 8 & 16 \
45 & 27 & 11 & 10 & 0 & 18 \
56 & 22 & 16 & 20 & 12 & 0 \
\end{matrix}
\right] \tag{1}
$$
解:
令L(v,U) 表示从v出发遍历U中所有点一次仅一次后返回到原点v_1的最短路径长度,则有如下的递推公式
$$
L(v_i,U_i) =\min_{v_{i+1} \in U_i } { L(v_{i+1},U_i -{v_{i+1}}) +D[v_i] [v_{i+1}] } \tag{2}
$$
特别的
$$
L(v_i, \emptyset) = D[v_i][0] \tag{3}
$$
令函数
$$
min_len( v_i,U_i )
$$
实现 L的功能
min_len ()函数输入起始城市和要遍历城市的集合,返回最小长度,下一跳节点组成的元组(最小长度,下一跳节点)流程图如下:
答案输出:
最小路径长度: 80
路径为: V1 ->V2 ->V6 ->V5 ->V4 ->V3 ->V1
1 | #!/usr/bin/env python |
分支定界
问题描述

直接上代码
1 | //ZY1806220 魏翔 |

