打字猴:1.700495583e+09
1700495583
1700495584 因此,甚至在开始之前,我们就会遇到单机调度的第一堂课:明确你的目标。我们只有知道如何保持得分时才能宣布哪种安排更好。这是计算机科学中的一个主题:在你有一个计划之前,必须首先选择一个衡量指标。而事实上,我们最终挑选的这个指标将直接影响哪种安排方法的实施效果最好。
1700495585
1700495586 紧随约翰逊的装订理论,第一批单机调度研究应运而生,这些研究提供了几种合理的衡量指标。对于每一种指标,他们都提出了一种简单的、最优的策略。
1700495587
1700495588 这当然是很常见的,比如对有截止日期的任务,我们需要根据延期的程度进行判断。所以我们可以认为,在一批任务中“最大延迟”的任务就是超过截止日期最多的任务——这可能是你的老板在员工绩效评估中会在意的任务。(或者是你的客户在零售或服务过程中可能会关心的任务,其中“最大延迟”的任务对于顾客来说,是跟等待时间直接相关的。)
1700495589
1700495590 如果你要降低最大延迟时间,那么最佳策略就是你先从截止日期最近的任务开始,再以此类推逐渐执行。这一策略被直观地称为最早到期日原则。(例如,在服务行业,每位客户的“到期日”就是他们走进店的那一刻,这就意味着要按照客户进店的顺序进行服务。)但其中也有很多令人惊讶的问题。例如,每个任务要用多长时间完成是完全不相关的:它不会改变整体计划,所以实际上你甚至不需要知道任务时长,重要的是任务何时到期。
1700495591
1700495592 你可能已经使用最早到期日原则来统筹你的工作,在这种情况下,不需要计算机科学来证明这是个明智的策略。但你可能不知道,这就是最优策略。更确切地说,它假设你对一种衡量标准尤其感兴趣,即要减少你的最大延迟。但是,如果这不是你的目标,另一种策略可能就会更适合。
1700495593
1700495594 以冰箱为例。如果你是社区支持农业组织的成员,那么每一周或两周就会有很多新鲜农产品被送到你家。每一件产品生产于不同日期,所以你要根据它们的最早到期日期吃这些食物,根据保质期这个顺序吃它们似乎是一个合理的出发点。然而,事实不完全是这样。最早到期日是为了更好地减少最大延迟,这就意味着,它将最大限度地减少你吃到过期食物的概率,但这也许不是从最可口这个标准来衡量的。
1700495595
1700495596 也许我们要尽量减少腐烂食物的数量,穆尔的BM算法可以帮我们做出最好的计划。穆尔算法认为,我们第一步应该先按照最早过期日,也就是食物的腐烂日期将食物进行排序,最早过期的先吃,一次吃一个。然而,一旦我们意识到,也许不能在过期日之前吃完下一个食物时,我们就会暂停该计划,转过头考虑之前已有的计划,并拿出最大的项目(即一个将吃最长时间的食物)。例如,这可能意味着放弃要吃6顿的西瓜,甚至没有考虑尝试此食物之后很快能吃完的所有食物。然后,我们重复这种模式,按照食物的过期日排序,又在计划好的最大项目上停滞。只要我们能按照过期日的先后顺序将剩下的所有食物在过期之前吃完,那我们就完成了计划。
1700495597
1700495598 穆尔的算法最大限度地减少需要扔掉的项目数量。当然,你也可以用食物堆肥,或捐到当地的食品站,或者送给你的邻居。在工业或官僚资本的背景下,你不能简单地抛弃一个项目,但过期项目的数量而不是重要性仍然是你最大的关注点。穆尔的算法并没有关注如何处理那些过期的任务。任何从你的主体安排中分离出来的任务都可以按照任何顺序完成,这都不要紧,因为它们都已经超过时限了。
1700495599
1700495600
1700495601
1700495602
1700495603 算法之美:指导工作与生活的算法 [:1700494146]
1700495604 算法之美:指导工作与生活的算法 把事情做好
1700495605
1700495606 老子
1700495607
1700495608 千里之行,始于足下。
1700495609
1700495610 有时,最后期限并不是我们主要的考虑因素,我们只是想要把事情都做好:在尽可能少的时间里完成尽可能多的事情。这就使这一看似简单的要求很难转化成具体的统筹指标。
1700495611
1700495612 其中一种方法就是站在旁观者的角度。我们注意到,在单机调度中,我们所做的任何事情都不能改变我们完成所有任务所需要的时间。但如果每个任务都代表一个等待中的客户,那么就有一种方法能尽量少地占用他们的共同时间。想象一下,从星期一早上开始,你的日程表上有一个为期4天的项目和一个为期1天的项目。如果你在星期四下午完成那个大项目(经过4天),然后在星期五下午完成小项目(经过5天),两位客户会等共9(4+5)天。然而,如果将顺序颠倒,你可以先在星期一下午完成小项目,在星期五完成大项目,那两位客户总共等待的时间只有6(1+5)天。你5天的工作日时长不变,但是这样你就可以为你的客户共节约3天时间。调度理论家称这个标准为“完成时间的总和”。
1700495613
1700495614 将完成时间总和最小化可以引申出一个非常简单的优化算法——最短加工时间:总是先做能最快完成的任务。
1700495615
1700495616 即使不是每项工作都有暴躁客户的催促,但用最短加工时间法也可以帮助你把事情做好。(因此,最短加工时间法推荐你先做任何耗时不到两分钟的任务。)当然,这没有办法改变你的工作总量,但最短加工时间法可以尽快减少未完成的任务数,从而抚慰你的心灵。它的完成时间总和这一标准可以用另一种方式来表达:它就像是把重点放在减少待办事项列表的长度。如果每一件未完成的工作就像你身边的一根刺,那么尽快完成简单的任务可能会给你的心情带来一些舒缓。
1700495617
1700495618 当然,所有未完成的项目并不都是平等的。扑灭厨房里的火肯定比用邮件熄灭顾客的怒火更重要,虽然前者可能耗费的时间更长。在时间调度中,这种重要性的区别通常用权值这一变量表示。当你在完成你的待办事项时,这个权值可能就是很明显的负担——每完成一项任务都会让你觉得在减轻这种负担。一个任务的完成时间就是你背负这个负担的时间,所以最小化加权完成时间总和(也就是每个任务的持续时间乘以它的权值)就意味着是去最小化完成整个日程表所承受的全部压力。
1700495619
1700495620 针对这一目标的最优策略是对最短加工时间法的一种完善:将每个任务的权值通过其需要的完成时间进行划分,然后将单位时间重要性(如果你喜欢的话可以称之为“密度”,延续权值的隐喻)结果从高到低排序。虽然可能很难将日常工作的每一个任务都赋予一定的重要性,但这一策略仍然提供了很好的经验法则:只需优先完成那些可能需要双倍完成时间且具有双倍重要性的任务。
1700495621
1700495622 在商业环境中,“权值”很容易被理解为完成每个任务所带来的利益数额。按完成时间的长短划分奖励这一想法,因此可以被理解为每项任务的小时率。(如果你是一名顾问或自由职业者,这个小时率可能就已经为你计算好了:只要简单地按照每个项目的大小来划分其费用多少,并根据你的工作方式,将时薪从高到低排序。)有趣的是,这种加权策略也体现在动物觅食研究中,坚果和浆果就相当于美元和美分。动物为了最大限度地提高从食物中积累能量的速率,应该按照获得和食用该食物所需的时间和其热能比值高低来摄取食物——它们似乎也的确是这么做的。
1700495623
1700495624 当该原理应用于债务而不是收入时,就产生一个处于黑暗中、后来被称为“债务雪崩”的策略。减债战略是指忽略债务整体的数量和大小,只是把钱注入利息最高的那一笔债务。这就相当于按照单位时间重要性的顺序安排工作。这一策略能尽可能快地减轻债务的总负担。
1700495625
1700495626 另一方面,你可能更关心的是减少债务的数量而不是数额,例如,如果无数账单和不停接听催款电话所带来的麻烦对你来说可能比利息更令你烦心,那你就不用考虑权值了,你“只是想把事情解决好”而不是用最短处理时间原则,因此你应该先偿还最小的债务,让这些小债务先被处理掉。在削减债务圈,这种方法被称为“债务雪球”,实际上,无论是在大众媒体还是经济学研究中,人们到底应该优先降低债务的数额还是数量仍然是一个具有争议性的话题。
1700495627
1700495628
1700495629
1700495630
1700495631 算法之美:指导工作与生活的算法 [:1700494147]
1700495632 算法之美:指导工作与生活的算法 找出问题所在
[ 上一页 ]  [ :1.700495583e+09 ]  [ 下一页 ]