24、网络模型与项目调度:TSP、VRP、SPP及PERT和CPM详解

网络模型与项目调度:TSP、VRP、SPP及PERT和CPM详解

1. 网络模型III:TSP、VRP和SPP

在网络流模型中,有三种特殊且实用的模型:旅行商问题(TSP)、车辆路径问题(VRP)和最短路径问题(SPP)。以下将详细介绍它们的相关内容。

1.1 解决SPP的步骤

在解决SPP问题时,需要遵循一定的步骤:
- 步骤3:约束条件 :列G表示约束条件。在SPP中,约束条件是每个特定站点只能被访问一次。为此创建了一个公式: =sumif($a$2:$a$28,f2,$d$2:$d$28)-sumif($b$2:$b$28,f2,$d$2:$d$28) ,该公式适用于所有其他节点。
- 步骤4:约束方程右侧值 :列I表示约束方程的右侧值。对于节点S,其值为1,意味着车辆从S出发;对于节点L,其值为 -1,表示只有车辆进入而无车辆驶出;对于所有其他节点,其值为0,表示车辆的进出相互抵消。
- 步骤5:目标函数 :目标函数是求最小值,即找到从Southfield到Lincoln的最短距离路线。在单元格F12中创建的公式为: =SUMPRODUCT(C2:C28,D2:D28)
- 步骤6:求解 :应用求解器来获得解决方案。

1.2 三种网络流模型概述
  • 旅行商问题(TSP) :一个实体从源点出发,访问每个目的地仅一次,然后返回源点,目标是估计总最短距离。随着节点数量的增加,解决该问题的复杂度会显著提高。可以使用分支定界法来解决TSP问题,该方法通过跟踪每个目的地到其他节点的网络并计算活动流的最小值来提供合适的解决方案。TSP在物流领域经常出现。
  • 车辆路径问题(VRP) :是TSP的一种变体,涉及多个具有固定容量的车辆来满足各个目的地的需求。一个VRP可以看作是多个TSP的组合。目标是将车辆分配到各个城市,以实现行驶距离或时间的最大节省。可以使用Clark - Wright节省算法来解决VRP问题。
  • 最短路径问题(SPP) :从多个路径中找到从源点到目的地的最短路径,而无需返回源点。可以使用Dijkstra算法来解决SPP问题,该算法提供了一种定量且精确的方法来找到最短路径。

以下是相关术语的解释:
|术语|解释|
| ---- | ---- |
|旅行商|从源点到目的地再返回源点,访问每个目的地仅一次的实体所行驶的总最短距离问题|
|节点|每个源点或目的地的表示|
|弧|两个节点之间的活动流,如距离、成本或时间|
|子回路|未访问所有目的地就返回源点的回路|
|分支定界法|解决旅行商问题的合适方法,通过跟踪网络和计算最小值|
|车辆路径问题|涉及多个固定容量车辆满足目的地需求的问题,可看作多个TSP组合|
|Clark - Wright节省算法|基于计算通过不同路线访问两个城市的节省量|
|最短路径问题|找到两个节点之间的最短路径,不关注返回源点的路径|
|Dijkstra算法|找到最短路径的定量精确方法|

1.3 案例研究:JTEKT公司

JTEKT公司由于客户需求的不断波动和市场环境的变化,决定对工厂设施布局进行重新设计。公司的车间在生产辅助部件时面临物料移动瓶颈和在制品库存高的问题,导致生产率低下。为了提高生产率,管理层决定安装一个自动化输送系统,该系统从原材料区出发,访问每个工作中心仅一次,然后返回原材料区。

以下是现有布局和替代布局中各工作中心之间的距离数据:
|现有布局距离(英尺)|2|3|4|5|6|7|8|
| ---- | ---- | ---- | ---- | ---- | ---- | ---- | ---- |
|1|50|300|400|300|600|400|200|
|2|60|40|370|250|460|510| - |
|3|500|300|450|530|620| - | - |
|4|50|40|150|320| - | - | - |
|5|70|330|550| - | - | - | - |
|6|400|480| - | - | - | - | - |
|7|420| - | - | - | - | - | - |

替代布局距离(英尺) 2 3 4 5 6 7 8
1 50 180 250 100 400 200 120
2 10 30 200 170 320 350 200
3 150 280 370 410 60 20 -
4 80 190 20 180 390 10 -
5 50 10 - - - - -

决策制定者希望比较两种布局中配送系统的适用性,以最小化行驶距离。

1.4 模型问题

提供了一系列模型问题,涵盖了工作调度、送餐路线规划、旅行成本最小化等方面,要求运用所学的TSP、VRP和SPP知识来解决。例如:
- 四个作业J1、J2、J3和J4在特定机器上加工,给出了作业切换的设置时间,要求确定使总设置时间最小的作业顺序。
- 快餐店需要为五个区域送餐,要求在30分钟内完成配送,估计使行驶时间最小的最优路线。

2. 项目调度:PERT和CPM

项目调度是项目计划的时间表,它指示了所有涉及活动的时间持续。项目规划是项目调度的前提,必须经过深思熟虑,因为后期的项目变更会使活动和活动持续时间发生改变,增加变更的难度。

2.1 PERT和CPM的区别

项目活动的持续时间可以通过两种方式确定:
- 计划评审技术(PERT) :适用于新项目,组织对项目的执行经验较少,难以确定每个活动的时间。PERT是一种概率方法。
- 关键路径法(CPM) :适用于成熟的项目,每个活动的时间持续是已知的。CPM是一种确定性方法。

两种方法都涉及以下计算:
1. 估计每个活动的总耗时。
2. 确定项目的开始和结束时间,考虑活动持续时间。
3. 根据确定的开始时间,计算每个活动的最早开始和结束时间。

此外,还可以利用PERT和CPM来研究减少关键路径上活动的时间对项目成本的影响,这种时间和成本的关系称为“赶工”,是CPM的一个特定应用。最后,资源平衡的概念用于将资源从过度分配的活动重新分配到分配不足的活动,以实现更平滑的网络图和资源的合理利用。

2.2 网络规划

PERT和CPM是两种用于项目规划、调度和控制的网络规划技术,它们使用网络图来直观表示活动的时间持续、顺序和相互关系。甘特图也是一种网络技术,它可以同时展示规划和调度,但不能清晰显示活动之间的相互关系,对于复杂项目来说过于繁琐。网络图则可以清晰地展示活动之间的关系,这种关系称为先后关系,即每个活动都有前置活动和后续活动。

网络图可以通过两种方式绘制:
- 活动 - 箭线法(A - o - A) :箭线表示活动,箭尾表示开始,箭头表示结束。每个活动与两个事件相关联,事件用节点表示。活动意味着资源的消耗,而事件只是表示活动的开始或结束时间点。
- 活动 - 节点法(A - o - N) :节点表示活动,箭线表示事件,箭线显示两个活动之间的联系。

以下是一个A - o - A网络图的示例:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;

    A([1]):::startend -->|A| B(2):::process
    A -->|B| C(3):::process
    B -->|C| D(4):::process
    C -->|D| E(5):::process
    D -->|E| F(6):::process
    E -->|F| F

在这个网络图中,A是C的前置活动,C是E的前置活动;B是D的前置活动,D是F的前置活动。E在节点4处C完成后开始,F在节点5处D完成后开始。A和B从节点1同时开始,是并行活动。

2.3 网络图的绘制规则

绘制网络图需要遵循以下规则:
- 规则1:每个活动仅由一个箭线表示 :每个活动有唯一的两个事件组合,一个是前置事件,另一个是后续事件。如果出现两个活动在相同的两个事件之间的情况,需要使用虚活动来解决。虚活动仅用于显示两个事件之间的逻辑顺序或联系,不消耗任何资源。
例如,错误的网络图:

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;

    A([1]):::startend -->|A,B| B(2):::process

正确的网络图(使用虚活动):

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef dummy fill:#FFFFFF,stroke:#000000,stroke-width:1px,stroke-dasharray:5 5;

    A([1]):::startend -->|A| B(2):::process
    A -->|B| C(3):::process
    C -->|虚活动| B
  • 规则2:满足活动的先后关系 :每个活动的前置、后续和并行活动的先后标准必须得到满足。如果网络图违反了这个规则,可以通过引入虚活动来修正。
    例如,错误的网络图:
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;

    A([1]):::startend -->|A| B(2):::process
    B -->|B,C| C(3):::process
    C -->|D,E| D(4):::process
    D -->|F| E(5):::process

正确的网络图(使用虚活动):

graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef dummy fill:#FFFFFF,stroke:#000000,stroke-width:1px,stroke-dasharray:5 5;

    A([1]):::startend -->|A| B(2):::process
    B -->|B| C(3):::process
    B -->|虚活动| D(4):::process
    C -->|C| D
    C -->|虚活动| E(5):::process
    D -->|D| E
    D -->|虚活动| F(6):::process
    E -->|E| F
    F -->|F| G(7):::process
  • 规则3:不允许活动循环 :活动循环表示所有活动会持续重复,这在网络图中是不允许的。例如,计算机组装的三个活动A、B和C应该按顺序进行,而不是循环进行。
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;

    A([1]):::startend -->|A| B(2):::process
    B -->|B| C(3):::process
    C -->|C| D(4):::process
  • 规则4:处理重复活动 :大多数制造过程涉及重复活动,对于这种情况,可以使用“阶梯法”来解决。在阶梯法中,每个专家完成一个产品的工作后,可以转移到另一个产品上执行相同的过程。
    例如,计算机组装过程重复三次的网络图:
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
    classDef dummy fill:#FFFFFF,stroke:#000000,stroke-width:1px,stroke-dasharray:5 5;

    A1([1]):::startend -->|A1| B1(2):::process
    B1 -->|B1| C1(3):::process
    C1 -->|C1| D1(4):::process
    A1 -->|虚活动| A2(5):::process
    A2 -->|A2| B2(6):::process
    B2 -->|B2| C2(7):::process
    C2 -->|C2| D2(8):::process
    A2 -->|虚活动| A3(9):::process
    A3 -->|A3| B3(10):::process
    B3 -->|B3| C3(11):::process
    C3 -->|C3| D3(12):::process

这些规则是绘制网络图的基础,网络图是项目调度的第一步,正确的网络图对于有效的项目管理至关重要。

2.3 网络图绘制规则(续)

在实际绘制网络图时,严格遵循规则是确保其准确性和有效性的关键。对于规则 1,每个活动只能由一个箭头表示,若出现多个活动在相同事件区间的情况,虚活动就起到了关键作用。它如同一个逻辑桥梁,在不消耗资源的前提下,清晰地界定了各个活动的唯一事件组合。比如在教学场景中,若两个不同教师同时进行定量技术课程教学,就需要用虚活动来准确表示这两个并行活动,避免混淆。

规则 2 强调活动先后关系的满足。在项目中,活动之间的先后顺序是由其内在逻辑决定的。当网络图违反这一规则时,虚活动再次发挥作用,通过合理引入虚活动,可以修正网络图,使其准确反映活动之间的真实关系。例如在一个复杂的建筑项目中,不同施工阶段的活动有着严格的先后顺序,若网络图绘制不当,就可能导致项目执行过程中的混乱,而虚活动的引入可以有效避免这种情况。

规则 3 明确禁止活动循环。活动循环意味着活动会无休止地重复,这与实际项目的执行逻辑不符。在计算机组装过程中,三个活动 A、B、C 应该按顺序依次完成,而不是陷入循环。这种规则的设定有助于确保项目的有序进行,避免资源的浪费和时间的延误。

规则 4 针对重复活动提出了“阶梯法”解决方案。在制造过程中,很多活动是重复进行的,如计算机组装过程可能会多次重复。“阶梯法”允许每个专家在完成一个产品的工作后,转移到另一个产品上继续执行相同过程,从而提高了生产效率。通过合理设置虚活动,可以准确表示活动之间的先后顺序,避免逻辑错误。

以下是对这些规则的总结表格:
|规则|内容|作用|
| ---- | ---- | ---- |
|规则 1|每个活动仅由一个箭头表示,需有唯一的事件组合,用虚活动解决重复事件问题|准确界定活动,避免混淆|
|规则 2|满足活动的先后关系,用虚活动修正违反规则的情况|确保活动顺序符合逻辑|
|规则 3|不允许活动循环|保证项目有序进行,避免资源浪费|
|规则 4|用“阶梯法”处理重复活动,合理设置虚活动|提高生产效率,准确表示活动关系|

2.4 实际应用案例分析

为了更好地理解这些网络模型和项目调度方法在实际中的应用,我们来看几个具体案例。

2.4.1 物流配送案例

假设一家物流公司需要为多个客户配送货物,这就涉及到车辆路径问题(VRP)。每个客户的位置可以看作一个节点,车辆的行驶路线就是弧。物流公司的目标是在满足车辆容量限制的前提下,找到使总行驶距离最短的配送方案。

我们可以使用 Clark - Wright 节省算法来解决这个问题。首先,计算通过不同路线访问两个客户的节省量,然后根据节省量对路线进行排序,逐步构建最优的配送方案。例如,假设有三个客户 A、B、C,车辆从仓库出发,分别计算从仓库直接到 A、B、C 的距离,以及通过不同组合路线的距离,找出节省量最大的组合,逐步扩展路线,直到满足所有客户的需求。

以下是一个简单的距离矩阵示例:
|客户|A|B|C|
| ---- | ---- | ---- | ---- |
|仓库|10|15|20|
|A| - |5|8|
|B| - | - |6|
|C| - | - | - |

通过计算不同路线的节省量,我们可以优化配送方案,减少总行驶距离,提高物流效率。

2.4.2 项目开发案例

在一个软件开发项目中,我们可以使用 PERT 和 CPM 来进行项目调度。假设项目包含需求分析(A)、设计(B)、编码(C)、测试(D)四个主要活动,每个活动的时间估计如下:
|活动|乐观时间|最可能时间|悲观时间|
| ---- | ---- | ---- | ---- |
|A|3|5|7|
|B|4|6|8|
|C|6|8|10|
|D|2|3|4|

使用 PERT 方法,我们可以计算每个活动的期望时间:
[
\begin{align }
t_{eA}&=\frac{3 + 4\times5 + 7}{6}=5\
t_{eB}&=\frac{4 + 4\times6 + 8}{6}=6\
t_{eC}&=\frac{6 + 4\times8 + 10}{6}=8\
t_{eD}&=\frac{2 + 4\times3 + 4}{6}=3
\end{align
}
]

然后绘制网络图,确定关键路径。假设活动之间的先后关系为 A -> B -> C -> D,那么关键路径就是 A - B - C - D,项目的总期望时间为 (5 + 6 + 8 + 3 = 22) 天。

如果项目需要提前完成,我们可以使用 CPM 的“赶工”方法,分析关键路径上活动的时间 - 成本关系,决定是否增加资源来缩短活动时间。例如,在编码活动 C 上增加更多的开发人员,可能会缩短其时间,但同时也会增加成本。通过合理的成本 - 时间分析,可以找到最优的赶工方案。

3. 总结与展望

网络模型中的 TSP、VRP 和 SPP 以及项目调度中的 PERT 和 CPM 方法,在实际应用中都有着重要的价值。TSP、VRP 和 SPP 可以帮助企业优化物流配送路线,降低运输成本,提高运营效率。PERT 和 CPM 则可以用于项目的规划、调度和控制,确保项目按时、按质量要求完成。

在未来,随着科技的不断发展,这些方法也将不断完善和拓展。例如,结合人工智能和大数据技术,可以更准确地预测活动时间和需求,进一步优化网络模型和项目调度方案。同时,对于复杂的多目标优化问题,可能需要开发新的算法和方法来解决。

在实际应用中,我们需要根据具体问题的特点,选择合适的方法,并灵活运用这些方法的规则和技巧。通过不断的实践和总结,我们可以更好地掌握这些方法,为企业的发展和项目的成功提供有力的支持。

总之,网络模型和项目调度方法是现代企业管理和项目执行中不可或缺的工具,它们的合理应用将有助于提高企业的竞争力和项目的成功率。

【EI复现】基于深度强化学习的微能源网能量管理优化策略研究(Python代码实现)内容概要:本文围绕“基于深度强化学习的微能源网能量管理优化策略”展开研究,重点利用深度Q网络(DQN)等深度强化学习算法对微能源网中的能量调度进行建模优化,旨在应对可再生能源出力波动、负荷变化及运行成本等问题。文中结合Python代码实现,构建了包含光伏、储能、负荷等元素的微能源网模型,通过强化学习智能体动态决策能量分配策略,实现经济性、稳定性能效的多重优化目标,并可能其他优化算法进行对比分析以验证有效性。研究属于电力系统人工智能交叉领域,具有较强的工程应用背景学术参考价值。; 适合人群:具备一定Python编程基础机器学习基础知识,从事电力系统、能源互联网、智能优化等相关方向的研究生、科研人员及工程技术人员。; 使用场景及目标:①学习如何将深度强化学习应用于微能源网的能量管理;②掌握DQN等算法在实际能源系统调度中的建模实现方法;③为相关课题研究或项目开发提供代码参考技术思路。; 阅读建议:建议读者结合提供的Python代码进行实践操作,理解环境建模、状态空间、动作空间及奖励函数的设计逻辑,同时可扩展学习其他强化学习算法在能源系统中的应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值