基于JavaScript实现流水作业调度问题

本文介绍了如何使用JavaScript解决流水作业调度问题,旨在确定作业加工顺序以使总完成时间最短。文章首先阐述了问题背景,接着详细描述了算法思路,将任务分为先执行和后执行两组,并对每组按特定顺序排列。最后,提供了代码实现的框架,并提到后续会补充计算总时间的代码。
摘要由CSDN通过智能技术生成

题记:

今天来给大家讲解一下关于流水作业的调度问题,如何用JavaScript来实现。

正文:

问题描述:

n个作业{0,1,2,…,n}在2台机器上M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,后在M2上加工。在两台机器上加工的时间分别为ai和bi。
目标:确定这n个作业的加工顺序,使得从第一台作业开始加工,到最后一个作业完成加工所需要的时间最少。

算法描述:

  1. 令N1={t|t[t,1]< t[i,2]},N2={t[i,1]>=t[i,2]};
  2. 将N1 中作业依t[i,1]的非减序排列;将N2中作业依t[i,2]的非增序排列;

解释:

其实,我们仔细看看,可以把任务简单的划分一下。
首先,我们将这些作业分为2组:
一组是先执行的:在m1上执行的时间<在m2上执行的时间,有利于我们保证m2机器上没有等待
一组是后执行的:在m2上执行时间>在m1上执行的时间,这些不利于m2机器没有等待,所有后执行
然后,我们再对这两组任务进行划分:
先执行的一组任务中的任务,按照在m1上执行时间非减序来排列,也就是哪个时间短先执行哪个
再将后执行的一组任务中的任务,按照在m2上执行时间非增序来排列,也是哪个时间长先执行哪个

这样来看,我们的任务就十分简单了,然后我们用代码来实现。

代码实现:

1.首先我们构造两个机器上执行作业的时间数组,和最基本的函数,分别如下:

var m1 = [2,7,6,4,6,8], // 表示在机器1上所用的时间
    m2 = [5,3,2,7,9,2]; // 表示在机器2上所用的时间
function assemblyLine
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值