印刷厂问题(数学建模)

                                                                                  印刷厂问题
【问题描述】
 
某印刷厂要尽快赶出下表中的42项任务,其中印刷车间和装订车间关于每项任务所需要的时间由表1表示。应如何安排任务的先后加工顺序,才能使完成所有任务的总工期最短?
    1 印刷与装订时间表
任务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
印刷时间
3
10
5
2
9
11
6
4
12
8
8
6
11
7
装订时间
8
12
9
6
5
2
9
7
3
4
10
7
10
9
 
任务
15
16
17
18
19
20
21
22
23
24
25
26
27
28
印刷时间
12
10
5
12
9
6
5
8
12
7
6
13
11
15
装订时间
8
12
7
16
8
11
4
6
8
9
10
10
12
18
 
任务
29
30
31
32
33
34
35
36
37
38
39
40
41
42
印刷时间
7
15
3
8
6
11
8
14
6
4
6
10
22
16
装订时间
6
11
4
9
3
7
11
15
8
5
7
8
16
17
设每项任务必须先完成印刷工序,然后才能进行装订,求
(1)各车间按1, ^,42的自然顺序工作时,每个任务K的完工时间。
(2)完成所有任务总工期最短的加工顺序。
(3)列出(1)和(2)两种不同加工顺序的完工时间对照表,讨论工厂按最优顺序加工时所面临的问题。你认为是否有更合理的加工顺序? 
【编程方法】
(1)       用c编程如下:
(2)       #include"iostream"
(3)       using namespace std;
(4)       #define N 42
(5)       void main()
(6)       {
(7)        int a[N],b[N],sum=0,sum1=0;
(8)        
(9)        for(int i=0;i<N;i++)
(10)    {
(11)            cin>>a[i];
(12)    }
(13)    cout<<endl;
(14)    
(15)    for(int k=0;k<N;k++)
(16)    {
(17)            cin>>b[k];
(18)    }
(19)    
(20)       sum=sum1=a[0];
(21)    cout<<"第"<<1<<"个任务加工时间"<<sum+b[0]<<endl;
(22)    
(23)    for(int j=0;j<N-1;j++)
(24)    {
(25)            if((sum+b[j])>(sum1+a[j+1]))
(26)            {
(27)                   sum=sum+b[j];
(28)                   sum1=sum1+a[j+1];
(29)                   cout<<"第"<<j+2<<"个任务加工时间"<<sum+b[j+1]<<endl;
(30)            }
(31)            else
(32)            {
(33)                   sum=sum1+a[j+1];
(34)                   sum1=sum1+a[j+1];
(35)                   cout<<"第"<<j+2<<"个任务加工时间"<<sum+b[j+1]<<endl;
(36)            }
(37)    }
(38)    cout<<sum+b[N-1]<<endl;
(39)   }
 Johnson算法:
(1)   工件集分成两个不相交字集 j1 j2 ,其中 j1={jk|p1k<p2k},j2={jk|p1k>p2k}, 满足 p1k=p2k 的工件可以分在两个子集中的任何一个。
(2)   先将就中的工件按 p1k 的非降序排列,再将集中的工件按 p2 可得非增序排序。
【计算及结果】
1 各车间按1, ^,42的自然顺序工作时,每个任务K的完工时间为:
任务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
印刷时间
3
10
5
2
9
11
6
4
12
8
8
6
11
7
装订时间
8
12
9
6
5
2
9
7
3
4
10
7
10
9
完工时间K
11
25
34
40
45
47
56
63
66
74
88
95
105
114
 
任务
15
16
17
18
19
20
21
22
23
24
25
26
27
28
印刷时间
12
10
5
12
9
6
5
8
12
7
6
13
11
15
装订时间
8
12
7
16
8
11
4
6
8
9
10
10
12
18
完工时间K
122
136
143
159
167
178
1182
188
196
205
215
225
237
255
 
任务
29
30
31
32
33
34
35
36
37
38
39
40
41
42
印刷时间
7
15
3
8
6
11
8
14
6
4
6
10
22
16
装订时间
6
11
4
9
3
7
11
15
8
5
7
8
16
17
完工时间K
261
272
276
285
288
295
306
321
329
334
341
349
369
386
由上表格可知每个任务K的完工时间。
 
2
完成所有任务总工期最短的加工顺序为:
任务(新)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
任务(原)
4
1
31
8
38
3
17
7
12
20
25
37
39
14
印刷时间
2
3
3
4
4
5
5
6
6
6
6
6
6
7
装订时间
6
8
4
7
5
9
7
9
7
11
10
8
7
9
完工时间K
40
11
276
63
334
34
143
56
95
178
215
329
341
114
 
任务(新)
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
 
任务(原)
24
11
32
35
2
16
27
18
36
28
42
41
30
13
 
 
印刷时间
7
8
8
8
10
10
11
12
14
15
16
22
15
11
 
 
装订时间
9
10
9
11
12
12
12
16
15
18
17
16
11
10
 
 
 
任务(新)
29
30
31
32
33
34
35
36
37
38
39
40
41
42
任务(原)
26
15
19
23
40
34
22
29
5
10
21
9
33
6
印刷时间
13
12
9
12
10
11
8
7
9
8
5
12
6
11
装订时间
10
8
8
8
8
7
6
6
5
4
4
3
3
2
概括可得结果:
 (4,1,31,8,38,3,17,7,12,20,25,37,39,14,
24,11,32,35,2,16,27,18,36,28,42,41,30,13,
26,15,19,23,40,34,22,29,5,10,21,9,33,6)。
 
3
(1)和(2)两种不同加工顺序的完工时间对照表
任务
1
2
3
4
5
6
7
8
9
10
11
12
13
14
T1
11
25
34
40
45
47
56
63
66
74
88
95
105
114
T2
16
160
41
8
353
371
57
27
364
357
128
64
287
109
 
任务
15
16
17
18
19
20
21
22
23
24
25
26
27
28
T1
122
136
143
159
167
178
1182
188
196
205
215
225
237
255
T2
305
172
48
200
313
75
361
342
321
118
85
297
184
233
 
任务
29
30
31
32
33
34
35
36
37
38
39
40
41
42
T1
261
272
276
285
288
295
306
321
329
334
341
349
369
386
T2
348
277
20
137
367
336
148
215
93
32
100
329
266
250
 
由表可知,用最优法得到的时间中,单项任务的完成时间大于顺序法完成时间的数目多。这个是个问题。
优化方案:在johnson算法排序的基础上,将各项按不同的时间段划分作一类,分成n类。每类内部采用最少总时间的算法。
 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值