求解PSM2模型的内环蚁群算法的基本思路是:首先产生工序的进度安排顺序;然后在这个进度安排顺序下利用进度产生方案产生可行的最早进度计划和最迟进度计划;接着通过局部优化程序对所产生的可行最早/最迟进度计划进行优化,以找到该种工序进度安排顺序下的局部最优进度计划;最后利用蚁群算法在这些局部最优进度计划中找到最优解。这个方法由三个相互关联的模块构成:工序进度安排顺序产生模块、局部最优进度计划产生模块和蚁群算法模块。
其中,按照蚁群算法给定的搜索概率和搜索方法,工序进度安排顺序产生模块用于为项目中的每一个工序产生一个进度安排顺序。它分为前向和后向两种情况,分别按照逻辑关系的顺序和逆序产生工序进度安排顺序。对于一个包含J个工序的项目,工序进度安排顺序产生程序分为J个层次确定工序进度安排顺序。在每个层次g,首先确定该层次有资格进行进度安排的工序集合,然后按照蚁群算法给定的搜索概率和搜索方法从该集合中选择当前层次进行进度安排的工序。
局部最优进度计划产生模块分别在前向和后向两种不同的进度安排顺序下进行。前向进度产生方案按照工序进度安排顺序产生模块中的前向进度安排顺序,同时考虑可更新资源的约束,为工序安排开始时间,最终产生可行最早进度计划;后向进度产生方案按照工序进度安排顺序产生模块中的后向进度安排顺序,同时考虑可更新资源的约束,为工序安排开始时间,最终产生可行最迟进度计划。进度产生方案采用资源受限项目进度安排问题中广泛采用的串行进度产生方案。对一个包含J个工序的项目,分为J个层次确定工序的最早/最迟开始时间。在每个层次g,为当前层次所选的工序在考虑可更新资源约束的条件下确定最早/最迟开始时间。对于所产生的可行最早/最迟进度计划,利用前向/后向局部优化程序对其进行局部优化,以得到该种工序进度安排顺序下的局部最优进度。局部优化程序的基本思路是依照支付时间将工序的时间窗口进行分段,通过比较各分段上界对应的可行位置的目标函数值,对工序的进度安排开始时间进行调整,使承包商现金流的净现值得到改进。
蚁群算法模块的主要作用是为工序进度安排顺序产生模块提供搜索概率和搜索方法。搜索概率主要依据信息素信息和启发式信息来确定。其中,信息素信息取决于到目前为止算法已搜索到的最优解的目标函数值;启发式信息取决于问题本身,可以采用一些启发式规则。为了和前向/后向工序进度安排顺序相一致,采用两个蚁群,即前向蚁群和后向蚁群,分别用于为前向工序进度安排顺序和后向工序进度安排顺序提供搜索概率和搜索方法。通过确定搜索概率和搜索方法,蚁群算法将引导工序进度安排顺序模块朝着最优解的方向进行搜索。
为了减少计算量,并与蚁群算法中的“精英策略”相配合,引入了解库(solution pool)的概念。解库用于存放算法搜索过程中搜索到的可行解。它由条件部分和结果部分组成:条件部分存放可行解的工序进度安排顺序,结果部分存放工序进度安排开始时间和目标函数值。算法运行过程中,每当产生了一个工序进度安排顺序后,首先检查解库,如果存在某个解的条件部分与之匹配,则将其结果部分调出,赋予这个新产生的可行解。因此,引入解库概念后,可以减少相当一部分的计算量,从而提高了算法的效率。此外,蚁群算法需要利用到目前为止搜索到的最优解的信息更新信息素信息,解库的另一个作用正是为蚁群算法提供这个最优解。求解PSM2模型的内环蚁群算法流程图如图3.7所示。
图3.7 求解PSM2的内环蚁群算法的流程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。