带限期的作业排序

合集下载

生产作业排序

生产作业排序

)
华中科技大学管理学院
一、基本概念
4、排序问题的假设条件
• 一个工件不能同时在几台不同的机器上加工。 • 工件在加工过程中采取平行移动方式。 • 不允许中断。 • 每道工序只在一台机器上完成。 • 每台机器同时只能加工一个工件。 • 工件数、机器数和加工时间已知,加工时间与加工
顺序无关。
)
华中科技大学管理学院
一个实例: D=
2,1,3 2,2,1 2,3,2
241
T= 345
i {Ot} Tk
T’k
T*
M*
Oj
1 1,1,1 0
2
0
M1 1,1,1
2,1,3 0
3
0
M3
2 1,2,3 2
6
2,1,3 0
3
0
M3 2,1,3
3 1,2,3
3
7
3
M3 1,2,3
2,2,1 3
7
3
M1
4 1,3,2 7 2,2,1 3
四、一般n/m/P/ Fmax问题的 启发式算法
2、关键工件法:
• 计算Pi= Pij ,找出Pi最长的工件,将之作为 关键工件C。
• 对其余工件,若Pi1≤Pim ,则按Pi1由小到大排 成序列SA。若Pi1> Pim ,则按Pim由大到小排成 序列SB。
• 顺序(SA,C,SB)即为近优解。
)
四、一般n/m/P/ Fmax问题的 启发式算法
1、Palmer法
m
• 计算工件斜度指标i : i [k (m 1) / 2]pik
m : 机器数
k 1
pik :工件i在机器k上的加工时间。 i=1,2, ,n

作业排序管理(1)

作业排序管理(1)
3) 将已经排定的零件除去,再重复前两步, 直到全部零件排完为止。
例12-2
Ji J1 J2 J3 J4 J5
t(小时)
tiA
6 8 12 3 7
tiB
11 9 5 3 4
加工顺序如下: J4—J1 —J2—J3—J5
或 J1 —J2 —J3—J5—J4
2、确定总流程时间
• 甘特图法 画法与零件移动方式图的画法相同;
(二)三台设备的流水型排序问题
约翰逊—贝尔曼拓展法:
设有A、B、C三台加工设备,在满足: mintiA≥maxtkB 或mintiC≥maxtkB
两条件之一的情况下,可将三台设备转换为 两台假想设备G与H,且:
tiG=tiA+tiB tiH=tiB+tiC
例12-3
Ji J1
J2
J3
J4
t
tiA
设零件Ji(i=1、2、…,n)的加
工顺序是从设备A到设备B, t和iA
tiB 分别是零件Ji在A和B上的加工时间。
约翰逊—贝尔曼规则步骤:
1) 以零件编号为列,零件在机床上的加工 时间为行列表,从中找最小值(如果有 多个最小值,可任取一个);
2) 如果上述最小值属于tiA行,则对应零件 应尽先安排;如果上述最小值属于 tiB 行,则对应零件应尽后安排;
二、影响作业排序的因素
1、生产任务的到达、生产工艺流程方式
三、作业排序的任务和目标
(1) 进行优先权设定; (2)针对具体设备分配任务及人力; (3)为目标分配工作,使工作任务按期完成; (4)不断监督以确保任务的完成; (5)对实施过程中的问题或异常辨识; (6)作业排序进行检查和修改。
12.2 制造业作业排序

【运营管理】第十一章作业排序

【运营管理】第十一章作业排序

11.2.3 n/2排序问题
• 是指n种工件在2台机器设备上进行加工的排 序问题。
• 当两台设备上流水加工工件所用的完工时间 最少时,第二台设备的闲置时间也得到最小 化。
Johnson算法
使用条件: 1、排序的目标是使全部完工时间最小 2、工件在两台设备上的加工顺序完全相同 3、所有工件同时到达第一台设备等待加工 4、每种工件在每台设备上的加工时间均已知
例题
• 假设某银行的一个储蓄所有8名储蓄工作人员,储蓄 所根据历史数据,估计每天顾客对储蓄工作人员的需 求量数据如下表。该所的所长需要为这8名储蓄工作 人员安排工作日,在不影响服务水平的前提下,使这 8名员工每周都能享受2天连续的休息日,并且尽量安 排在周末休息。另外,所长还想了解根据目前的客户 量,储蓄工作人员数是否能够满足需求,是存在人员 不足的问题,还是人员冗余的问题。
1 2 n
Mห้องสมุดไป่ตู้
a11 a21
a12 a22
a1n a2n
1 2
aij表示工件j(j 1,2,, n)在设备i(i 1,2)的加工时间。
假设有六个工件(ABCDEF)需要在机床X和Y上加工, 加工顺序是先X后Y,每个工件所需加工时间(单位:
小时)见表,管理者希望找到一个最优化的排序方 案,使所有工件的加工总时间最少。
顾客到达
排队规则
排队系统
服务机构
顾客离去
排队规则
• 先到先服务 • 后到先服务 • 随机服务 • 有优先权的服务
服务结构
• 是指提供服务的服务人员数或者服务台数量。
2)调整顾客到达率的措施
• 采用预约系统 • 采用预订系统 • 采用差异定价措施
11.3.2服务人员排序

11.作业排序

11.作业排序
5 2 7 4 6 5
在M中寻找到的最小值为2,对应的产品为B,
对应的设备为磨床,因此,应 将产品B排在 最后加工。在M中划去产品B,得余下的工时 矩阵M1 :
A B C D E F A C D E F 车床 磨床
3 7 4 6 8 9
M=
5 2 7 4 6 5
3 4 6 8 9
车床 磨床
M 1=
(3)所有工件同时到达第一台设备等待加工;
(4)每种工件在每台设备上的加工时间均已知。 约翰逊算法的基本思路在于:尽量减少第二台设备上
的等待加工的时间,因此,在第二台设备上加工时 间长的工件先加工,在第二台设备上加工时间短的 工件后加工。
约翰逊算法的步骤如下: (1)先作n个工件在两台设备上的加工时间的
磨工序定额工时h

Ⅱ Ⅲ Ⅳ
6
4 6 2
2
6 4 4
如何具体地组织生产活动、安排作业顺序和
及时反馈信息,对生产活动进行调整与控制, 使各种资源得到合理利用,同时又能按期完 成各项订单任务,是作业排序与控制所需要 研究和解决的问题。
作业排序的主要目标包括:
(1)满足交货日期的需要
(2)降低在制品库存,加快流动资金周转
为C和D,其对应的设备分别为车床和磨床, 因此,应将产品C排在产品A之后加工,而将 产品D排在产品B之前加工。在M2中划去户 品C和D,得余下的工时矩阵M3:
C D E F E 车床 磨床 F
4 6 8 9
8
9
车床 磨床
M 2=
7 4 6 5
M 3=
6 5
在M3中找到的最小值为5,对应的产品为F,
n/m(m≥3)的流水作业排序是一个复杂的问题。

生产作业排序

生产作业排序

生产作业排序生产作业排序是指在进行生产过程中,根据任务的先后顺序对生产作业进行合理的安排与排序。

通过合理的排序,可以提高生产效率,降低生产成本,保证生产过程的顺利进行。

本文将从排序的重要性、排序的方法和工具以及排序的应用场景三个方面,对生产作业排序进行论述。

一、排序的重要性生产作业排序对于提高生产效率和降低生产成本具有重要作用。

合理的排序可以避免生产中的拥堵现象,减少资源的浪费,保证生产线的稳定运行。

此外,排序也可以有助于优化生产计划,确保按时完成生产任务。

因此,生产作业排序是提高企业生产效率和竞争力的关键一环。

二、排序的方法和工具1. 先来先服务(FCFS):即按照任务提交的先后顺序进行排序,先提交的任务先执行。

这种方法简单易行,但容易导致后续任务等待时间过长,不利于提高生产效率。

2. 最短作业优先(SJF):首先按照任务的执行时间进行排序,执行时间短的任务优先执行。

这种方法可以最大程度地减少任务的等待时间,提高生产效率。

3. 优先级调度:根据任务的优先级进行排序,优先级高的任务先执行。

这种方法可以根据任务的重要程度和紧急程度进行排序,确保关键任务优先完成。

4. 轮转法:将任务按照一定的时间间隔进行排序,每次轮到执行的任务执行一定时间后,切换到下一个任务。

轮转法可以使任务得到公平的执行机会,避免某些任务一直占用生产资源。

在实际应用中,可以借助一些排序工具来辅助排序,如项目管理软件、进程调度算法等。

三、排序的应用场景1. 生产车间:生产车间是进行生产作业的核心场所,通过合理的作业排序可以提高生产效率,减少作业冲突,确保生产线的平稳运行。

2. 物流配送:对于需要物流配送的企业来说,通过对订单的排序,可以合理安排配送路线,降低物流成本,提高配送速度和准确性。

3. 项目管理:在项目管理中,通过对任务的排序,可以优化项目计划,避免资源的浪费和延期,提高项目的整体完成质量。

4. 客户服务:对于客户服务部门来说,合理排序可以确保客户的问题得到及时解决,提高客户满意度和忠诚度。

作业排序的要求

作业排序的要求

作业排序的要求作业排序是指根据一定的规则或标准,将作业按照一定的顺序进行排列的过程。

作业排序的目的是为了提高作业执行的效率和优化资源利用。

下面将从作业排序的概念、意义、常见的排序算法以及实际应用等方面进行阐述。

一、作业排序的概念和意义作业排序是指根据一定的规则或标准,将作业按照一定的顺序进行排列的过程。

在计算机系统中,作业是指用户提交给计算机系统执行的任务。

作业排序的主要目的是为了提高作业执行的效率和优化资源利用。

通过合理的作业排序,可以使计算机系统充分利用资源,提高系统的吞吐量和响应速度,减少资源的浪费和闲置。

二、常见的作业排序算法1. 先来先服务(FCFS)算法:按照作业提交的先后顺序进行排序,先提交的作业先执行。

2. 最短作业优先(SJF)算法:按照作业的执行时间进行排序,执行时间最短的作业先执行。

3. 优先级调度算法:根据作业的优先级进行排序,优先级高的作业先执行。

4. 轮转调度算法:按照时间片的大小将作业分为若干个时间段,每个时间段内轮流执行一个作业,直到作业执行完毕。

5. 最高响应比优先(HRRN)算法:根据作业的响应比进行排序,响应比最高的作业先执行。

三、作业排序的实际应用作业排序广泛应用于操作系统、任务调度以及生产制造等领域。

在操作系统中,作业排序是操作系统对作业进行调度和分配资源的重要策略。

在任务调度中,作业排序可以根据任务的优先级和执行时间等进行排序,以提高任务执行的效率。

在生产制造中,作业排序可以根据产品的生产周期、优先级和工艺流程等进行排序,以提高生产效率和资源利用率。

作业排序是提高作业执行效率和资源利用的重要手段。

通过合理选择和应用作业排序算法,可以优化作业的执行顺序,提高系统的性能和响应速度。

作业排序在计算机系统和生产制造等领域都有着广泛的应用,对于提高工作效率和资源利用率具有重要的意义。

作业排序


7
8
10
16
4
14
4
10
24
17
5
29
15
12
41
18
41
120
120/41=2.93 120/6=20
武汉理工大学管理学院 袁付礼
延期天数(如果 为负则赋值0)
0 0 10 7 14 23 54 54/6=9
11


与 运 作
按SPT规则


作业顺序是A-C-E-B-D-F
顺序 加工时间 流程时间 预定交货期



运 作
一、作业排序的概念和类型


1、概念
对一定期间内分配给生产单位的作业任务, 根据产品(零件)的工艺路线和设备负荷可 能性,确定各个生产单位作业任务的先后 顺序。
作业排序问题通常表述为“n项作业任务 在m个生产单位的排序的问题”。
2020/3/26
武汉理工大学管理学院 袁付礼
1



作业
加工时间(天) 预定日期(天)
A
2
7
B
8
16
C
4
4
D
10
17
E
5
15
F
12
18
2020/3/26
武汉理工大学管理学院 袁付礼
10


与 运 作
按FCFS规则排序


排序的结果是A-B-C-D-E-F。
顺序 加工时间 流程时间 预定交货期
A B C D E F 合计 平均
2020/3/26
2
2
二、作业排序的评价尺度

生产作业排序

bi为工件Ji在机器M2上的加工时间,每个 工件按M1—M2的路线加工。
华中科技大学管理学院
三、n/2/F/Fmax问题的算法
Johnson算法的步骤: • 从加工时间矩阵中找出最短的加工时间。 • 若最短时间出现在M1上,则对应的工件尽可能
往前排。
• 若最短时间出现在M2上,则对应的工件尽可能 往后排。
一个实例: D=
2,1,3 2,2,1 2,3,2
241
T= 345
i {Ot} Tk
T’k
T*
M*
Oj
1 1,1,1 0
2
0
M1 1,1,1
2,1,3 0
3
0
M3
2 1,2,3 2
6
2,1,3 0
3
0
M3 2,1,3
3 1,2,3
3
7
3
M3 1,2,3
2,2,1 3
7
3
M1
4 1,3,2 7 2,2,1 3
• 若最短时间有多个,则任选一个。 • 划去已排序的工件。
• 若所有工件都已排序,则停止,否则重复上述 步骤。
华中科技大学管理学院
四、一般n/m/P/ Fmax问题的 启发式算法
对于一般的n/m/P/Fmax问题,可以用分支 定界法求得最优解,但计算量很大。实际 中,可以用启发式算法求近优解。
华中科技大学管理学院
华中科技大学管理学院
五、单件车间排序问题(n/m/G/Fmax)
能动作业计划的构成步骤:
①设t=1,{St}为空,{Ot}为各工件第一道工序的集合。 ②求最小的最早完工时间 T*= min{T’k },并找到出现T*
的机器M*,若有多台,任选一台。 ③从{Ot}中跳出满足以下两条件的工序Oj

作业排序的要求

作业排序的要求作业排序是指在完成多个作业时,合理安排作业的顺序和时间分配,以提高工作效率和质量。

下面将从以下几个方面介绍作业排序的要求。

一、根据紧急程度排序在进行作业排序时,首先需要根据作业的紧急程度来确定其优先级。

紧急的作业需要优先处理,以避免延误或影响其他工作的进行。

例如,如果有一个重要的报告需要在明天上午之前完成,而另一个作业只是一个日常任务,那么应当优先完成重要的报告。

二、根据重要程度排序除了紧急程度外,作业的重要程度也是作业排序的重要考虑因素。

重要的作业可能对项目的整体进展和结果产生较大的影响,因此应优先处理。

例如,如果有一个关键的客户提出了一个紧急请求,而另一个作业只是一个例行性的任务,那么应当优先处理关键客户的请求。

三、根据工作量排序作业的工作量也是作业排序的一个关键指标。

通常情况下,工作量较小的作业可以更快地完成,因此可以优先处理。

例如,如果有一个简单的数据分析任务和一个复杂的软件开发任务,那么可以先完成数据分析任务,以提高整体工作效率。

四、根据依赖关系排序在进行作业排序时,还需要考虑作业之间的依赖关系。

如果一个作业依赖于另一个作业的结果,那么应当先完成被依赖的作业,再进行下一个作业。

例如,如果一个作业需要另一个作业的输入数据才能开始,那么应当先完成提供输入数据的作业,再开始下一个作业。

五、根据时间限制排序有些作业可能有严格的时间限制,需要在规定的时间内完成。

在进行作业排序时,应当优先处理这些有时间限制的作业,以确保按时完成。

例如,如果有一个会议的演讲稿需要在下午2点之前提交,那么应当优先处理演讲稿的撰写和整理工作。

六、根据资源可用性排序作业排序还需要考虑资源的可用性。

如果某个作业需要特定的资源或设备才能完成,那么应当优先处理其他不需要这些资源或设备的作业。

例如,如果一个作业需要使用一台特定的机器进行测试,而这台机器正在被其他人使用,那么可以先处理其他不需要使用这台机器的作业。

作业排序是一项重要的工作管理技巧,可以帮助我们合理安排作业的顺序和时间分配,提高工作效率和质量。

作业排序的规划原则工业工程

作业排序的规划原则工业工程
工业工程是一门研究如何有效地设计、组织、控制和管理工厂的科学。

它的目的是提高生产效率,降低成本,提高质量,改善工作环境,提高安全性,提高客户满意度。

工业工程中的作业排序是一种有效的方法,用于提高生产效率和降低成本。

它的目的是根据工厂的特定要求,按照一定的规则和原则,将工作任务排序,以便有效地完成工作。

作业排序的规划原则包括:
1. 尽可能减少作业时间:尽可能减少作业时间,以提高生产效率。

2. 尽可能减少作业次数:尽可能减少作业次数,以降低成本。

3. 尽可能减少作业距离:尽可能减少作业距离,以提高工作效率。

4. 尽可能减少作业复杂度:尽可能减少作业复杂度,以提高工作效率。

5. 尽可能减少作业变化:尽可能减少作业变化,以提高工作效率。

6. 尽可能减少作业空间:尽可能减少作业空间,以提高工作效率。

7. 尽可能减少作业负荷:尽可能减少作业负荷,以提高工作效率。

8. 尽可能减少作业危险:尽可能减少作业危险,以提高安全性。

以上就是工业工程中作业排序的规划原则。

它们可以帮助工厂有效地完成工作,提高生产效率,降低成本,提高质量,改善工作环境,提高安全性,提高客户满意度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
using namespace std;
struct quene{
int job;
int c;//最少估计成本
int u;//最少成本上界
quene* parent;//这个结点的父结点
quene* next;//这个结点的下一个结点
};
int * p;//罚款数组
int * t;//所需时间数组
int * d;//截止时间数组
int n;//作业的个数
int u;//最小成本上界
int *time;
int timesize;
quene * head;
quene * current;//当前结点的指针
quene * tail;//尾巴指针
quene * ans;

void init()//初始化这个队列
{
int max,sum,i;
freopen("C:\\case.txt","r",stdin);
//cout<<"请输入作业的个数"<cin>>n;
p=new int[n+1];
t=new int[n+1];
d=new int[n+1];
for(i=1;i<=n;i++)
{
//cout<<"请输入第"<cin>>p[i];
}
for(i=1;i<=n;i++)
cin>>t[i];
for(i=1;i<=n;i++)
cin>>d[i];
max=0;
for(i=1;i<=n;i++)
{
if(maxmax=d[i];
}
sum=0;
for(i=1;i<=n;i++)
sum+=t[i];
if(max>sum)
{
time=new int[sum+1];
timesize=sum;
}
else
{
time=new int[max+1];
timesize=max;
}
u=0;
for(i=1;i<=n;i++)
u+=p[i];
head=new quene;
head->job=0;
head->parent=NULL;
head->c=0;
head->next=NULL;
current=head;
ans=head;
tail=head;
}
bool judge(quene * node)
{
int i;
for(i=1;i<=timesize;i++)
time[i]=0;
quene* temp;
temp=node->parent;
while(temp->parent!=NULL)
{
int k=t[temp->job];
for(int i=d[temp->job];i>0;i--)
{
if(k<=0)
break;
if(time[i]==0)
{
time[i]=1;
k--;
}
}
temp=temp->parent;
}
int k=0;
for(i=d[node->job];i>0;i--)
if(time[i]==0)
k++;
if(k>=t[node->job])
return true;
else
return false;
}
quene* newnode(quene *parent,int job )
{
int sum,i;
quene *node=new quene;

node->job=job;
node->next=NULL;
node->parent=parent;
sum=0;
for(i=node->parent->job+1;ijob;i++)
sum+=p[i];
node->c=node->parent->c+sum;
sum=0;
for(i=node->job+1;i<=n;i++)
sum+=p[i];
node->u=node->c+sum;
if(!judge(node))
{
delete node;
return NULL;
}
else
{
if(node->u{
u=node->u;
ans=node;

}
else
{
if(node->c>=u)
{
delete node;
return NULL;
}

}
}
return node;

}
void addtoquene(quene* node)
{
tail->next=node;
tail=node;
}
void print()
{
quene* temp;
temp=head;
while(ans->parent!=NULL)
{
cout<job<<" ";
ans=ans->parent;
}
while(temp!=NULL)
{
head=head->next;
delete temp;
temp=head;
}
}
void fifobb()
{

while(current!=NULL)
{
for(int i=current->job+1;i<=n;i++)
{
quene* temp=newnode(current,i);
if(temp!=NULL)
addtoquene(temp);
}
current=current->next;
}
print();

}

void main()
{

init();
fifobb();
free(p);
free(t);
free(d);
free(time);
}

相关文档
最新文档