流水线调度问题

1.调换流水线无需时间: 

 加工一件物品,有n条流水线,每条流水线都有m个工序,不同流水线的相同工序处理功能相同,但处理时间可能不同,为t[i][j]。若工序的进出站时间不计,流水线的调换时间也不计。

求加工一件物品最少需要多少时间。

  状态:F[j]表示加工到第j个工序所需的最少时间

  状态转换:F[j]=F[j-1]+min{t[1][j],t[2][j]...t[n][j]};

2.调换流水线需时间:

  加工一件物品,有n条流水线,每条流水线都有m个工序,第i条流水线的j到工序处理时间为t[i][j],第i条流水线调换到第j条流水线所需时间为p[i][j]。

求加工一件物品所需的最少时间:

分析:

  如果我们按上题一样,用F[j]来表示加工到第j到工序所需时间,那么在状态转移时我们发现,F[j]与F[j-1]并没有直接的关系。假设F[j-1]出现在第i条流水线,它可能由于调换流水线的时间太长,导致F[j]选择了从时间稍微长一点的的K条流水线的第j-1出发。所以我们发现,此时的最值与第几条流水线也相关,由此想到用一个二维数组来记录最值。

  状态:F[i][j]表示加工到第i条流水线的第j道工序所需的最少时间

  状态转移:F[i][j]=min{F[1][j-1]+p[1][i],F[2][j-1]+p[2][i],...,F[n][j-1]+p[n][i]}

  最后处理:F[1][m],F[2][m],...,F[n][m]记录着到最后一步工序不同流水线所需时间。在比较一轮选出最短时间的则为最终结果。

3.每一道工序调换流水线需不同时间:

  加工一件物品,有n条流水线,每条流水线都有m个工序,第i条流水线的j到工序处理时间为t[i][j],第k(k<=m-1)道工序中第i条流水线调换到第j条流水线所需时间为p[k][i][j]。

求加工一件物品所需的最少时间:

分析:

  与上一种情况类似,不过是用3维数组来记录

    状态:F[i][j]表示加工到第i条流水线的第j道工序所需的最少时间

  状态转移:F[i][j]=min{F[1][j-1]+p[j-1][1][i],F[2][j-1]+p[j-1][2][i],...,F[n][j-1]+p[j-1][n][i]}

4.有的题意很明显是流水线调度问题,有些需要稍稍转换一下,只是包装不一样而已,其实换汤不换药。

比如这题: 

  题目描述

  打地鼠是个很简单的游戏,不过你知道怎么打地鼠才能最省力吗?

  每时刻,都有N只地鼠在pi(xi,yi)位置出现,打掉一只,该时刻其他地鼠会消失。

  打掉第一只地鼠不消耗能量,之后每只地鼠消耗的能量约与鼠标移动距离成正比,即cost = dis(pi,pi+1)(平面上两点距离怎么求不多说了)

  现在认为打第一只地鼠不消耗能量,那么打完所有地鼠消耗的最小能量是多少?

时间: 2024-11-05 02:22:30

流水线调度问题的相关文章

题解:2018级算法第二次上机 Zexal的流水线问题

题目描述: 样例: 实现解释: 最基础的流水线调度问题,甚至没有开始和结束的值 知识点:动态规划,流水线调度 实现方法即得出状态转移方程后完善即可,设a[][i]存储着第一二条线上各家的时间花费,t[][i]存储着i处进行线路切换的花费,f[][i]存储着各线在i处的最小花费. 则对每一个f[][i]应有如下的转移方程: f[0][1] = a[0][1]; f[1][1] = a[1][1]; f[0][i] = min(f[0][i-1]+a[0][i],f[1][i-1]+t[1][i-1

算法导论学习-动态规划之记忆化搜索

一. 动态规划 动态规划(dynamic programming),与“分治思想”有些相似,都是利用将问题分 为子问题,并通过合并子问题的解来获得整个问题的解.于“分治”的不同之处在 于,对于一个相同的子问题动态规划算法不会计算第二次,其实现原理是将每一个计算过的子问题的值保存在一个表中. 二. 记忆化搜索 我们常见的动态规划问题,比如流水线调度问题,矩阵链乘问题等等都是“一步接着一步解决的”,即规模为 i 的问题需要基于规模 i-1 的问题进行最优解选择,通常的递归模式为DP(i)=optim

动态规划相关问题学习笔记

转载自:http://blog.csdn.net/speedme/article/details/24231197 1. 什么是动态规划 ------------------------------------------- dynamic programming is a method for solving complex problems by breaking them down into simpler subproblems. (通过把原问题分解为相对简单的子问题的方式求解复杂问题的

《逆袭大学》文摘——9.5 用算法和数学奠定专业基础

有不少读者给我来信,咨询的是关于数学和算法对学习计算机的意义.这样的话题,在我的专栏中很多文章里都提到过.在拙作<逆袭大学--传给IT学子正能量>中,在这方面写了不少文字,现将其中的9.5节全文摘录在此文中,以供参考. 更多话题,见<逆袭大学--传给IT学子正能量>全书目录. 9.5 用算法和数学奠定专业基础 一个程序设计的初学者,在刚刚开始学习时,会认为编程中语言是最重要的.没有语言,没有掌握好编程语言,写不出程序来.而后又知道熟练运用语言仅仅是学会了一种表达的方式而已,如同一个

【动态规划】流水作业调度问题与Johnson法则

1.问题描述:     n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工.每个作业加工的顺序都是先在M1上加工,然后在M2上加工.M1和M2加工作业i所需的时间分别为ai和bi.流水作业调度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少.     2.问题分析 直观上,一个最优调度应使机器M1没有空闲时间,且机器M2的空闲时间最少.在一般情况下,机器M2上会有机器空闲和作业积压2种情况.设全部作

流水作业调度问题与Johnson法则

1.问题描述:     n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工.每个作业加工的顺序都是先在M1上加工,然后在M2上加工.M1和M2加工作业i所需的时间分别为ai和bi.流水作业调度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少.     2.问题分析 直观上,一个最优调度应使机器M1没有空闲时间,且机器M2的空闲时间最少.在一般情况下,机器M2上会有机器空闲和作业积压2种情况.设全部作

流水作业调度问题

<span style="font-weight: bold; font-family: Arial; line-height: 26px; font-size: 12px; background-color: rgb(255, 255, 255); margin: 0px; padding: 0px;"><span style="font-size: 24px;"><span style="margin:0px; paddi

区间调度问题

1. 相关定义 在数学里,区间通常是指这样的一类实数集合:如果x和y是两个在集合里的数,那么,任何x和y之间的数也属于该集合.区间有开闭之分,例如(1,2)和[1,2]的表示范围不同,后者包含整数1和2. 在程序世界,区间的概念和数学里没有区别,但是往往有具体的含义,例如时间区间,工资区间或者音乐中音符的开始结束区间等,图一给出了一个时间区间的例子.区间有了具体的含义之后,开闭的概念就显得非常重要,例如时间区间[8:30,9:30]和[9:30,10:30]两个区间是有重叠的,但是[8:30,9

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成]

持续集成+自动化部署[代码流水线管理及Jenkins和gitlab集成] 标签(空格分隔): Jenkins 一.代码流水线管理 Pipeline名词顾名思义就是流水线的意思,因为公司可能会有很多项目.如果使用jenkins构建完成后,开发构建项目需要一项一项点击,比较麻烦.所以出现pipeline名词. 代码质量检查完毕之后,我们需要将代码部署到测试环境上去,进行自动化测试 新建部署代码项目 点击新建 这里只需要写一下描述 执行Shell脚本 温馨提示:执行命令主要涉及的是权限问题,我们要搞明