运筹学排序中的时间在线排序,其中的在线LPT算法,是在任何时刻当有机器出现空闲,就从当前已经就绪的还没有加工工件中选择加工时间最大的工件安排在这台机器上加工,工件按时间在线到达,即一个工件只有被释放之后才能知道它的一切信息,请标出每一步步骤的含义,并举例说明
3条回答 默认 最新
- Kwan的解忧杂货铺@新空间代码工作室 2024-04-25 21:42关注
晚上好🌙🌙🌙
本答案参考ChatGPT-3.5对于在线LPT算法,可以按照以下步骤进行实现:
- 创建一个空的待加工工件集合ready,其中工件按照自身需要的时间从大到小排序。
- 初始化一组空闲机器集合idle,每当有机器处于空闲状态时将其加入idle中。
- 当一个工件到达时,将其加入ready中,并按照需要的时间从大到小排序。
- 当一个机器变为空闲时,从ready中选择加工时间最长的工件,将其分配给这台机器加工,直到所有工件都被分配完毕。
举个例子,假设有三台机器和五个工件,其所需时间为:
工件1:4 工件2:2 工件3:6 工件4:3 工件5:5
按照在线LPT算法进行排序的过程如下:
- ready集合为空,idle集合包含三台机器。
- 工件1到达,加入ready集合,ready集合为{工件1},idle集合为{1, 2, 3}。
- 工件2到达,加入ready集合,按照所需时间排序,ready集合为{工件1, 工件2}。
- 空闲机器1选中工件1进行加工,此时ready集合为{工件2},idle集合为{2, 3}。
- 工件3到达,加入ready集合,按照所需时间排序,ready集合为{工件3, 工件2}。
- 空闲机器2选中工件3进行加工,此时ready集合为{工件2},idle集合为{2, 1}。
- 工件4到达,加入ready集合,按照所需时间排序,ready集合为{工件2, 工件4}。
- 空闲机器1选中工件2进行加工,此时ready集合为{工件4},idle集合为{1, 2}。
- 工件5到达,加入ready集合,按照所需时间排序,ready集合为{工件3, 工件4, 工件5}。
- 空闲机器3选中工件5进行加工,此时ready集合为{工件3, 工件4},idle集合为{1, 2, 3}。
- 机器1完成工件2的加工,从ready集合中选取加工时间最大的工件4进行加工,此时ready集合为{工件4}。
- 机器2完成工件3的加工,从ready集合中选取加工时间最大的工件4进行加工,此时ready集合为空。
最终的加工顺序为工件1、工件3、工件2、工件5、工件4。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 悬赏Python-playwright部署在centos7上
- ¥15 psoc creator软件有没有人能远程安装啊
- ¥15 快速扫描算法求解Eikonal方程咨询
- ¥20 我的是道格手机,重置后屏幕右上角出现红色字的未写入tee key 和未写入google key请问怎么去掉啊
- ¥30 关于R语言运行分区生存模型中的问题!
- ¥15 校内二手商品转让网站
- ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
- ¥100 求Web版SPC控制图程序包调式
- ¥20 指导如何跑通以下两个Github代码
- ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀