[有四个工件等待在同一台机器上加工,若加工的先后次序可以任意,各工件之间的调整时间如下表:
到A 到B 到C 到D
从A - 15 20 5
从B 30 - 30 15
从C 25 25 - 15
从D 20 35 10 -
试确定最佳加工顺序。
到A 到B 到C 到D
从A - 15 20 5
从B 30 - 30 15
从C 25 25 - 15
从D 20 35 10 -
试确定最佳加工顺序。
调试欢乐多
HEAD A_TIME B_TIME C_TIME D_TIME
---- ------ ------ ------ ------
A 15 20 5
B 30 30 15
C 25 25 15
D 20 35 10
SQL>
SQL> select * from test1;
SQL> select * from test;
HEAD A_TIME B_TIME C_TIME D_TIME
---- ------ ------ ------ ------
A 15 20 5
B 30 30 15
C 25 25 15
D 20 35 10
SQL> select * from test1;
FIRST SECOND COST_ALL
----- ------ --------
B A 30
C A 25
D A 20
A B 15
C B 25
D B 35
A C 20
B C 30
D C 10
A D 5
B D 15
C D 15
12 rows selected
SQL>
SQL> SELECT a.first,a.second,b.second third,c.second forth,SUM(a.cost_all+b.cost_all+c.cost_all) FROM test1 a,test1 b,test1 c
2 WHERE a.second=b.first AND b.second=c.first
3 AND a.first<>b.second AND a.first<>c.second
4 AND b.first<>c.second
5 GROUP BY a.first,a.second,b.second ,c.second
6 ORDER BY SUM(a.cost_all+b.cost_all+c.cost_all) ASC;
FIRST SECOND THIRD FORTH SUM(A.COST_ALL+B.COST_ALL+C.CO
----- ------ ----- ----- ------------------------------
A B D C 40
A D C B 40
B A D C 45
B D C A 50
C D A B 50
D C A B 50
B D A C 55
C A B D 55
C B D A 60
A B C D 60
B C A D 60
A C B D 60
C B A D 60
D A B C 65
D A C B 65
B A C D 65
C A D B 65
D C B A 65
B C D A 65
A C D B 70
FIRST SECOND THIRD FORTH SUM(A.COST_ALL+B.COST_ALL+C.CO
----- ------ ----- ----- ------------------------------
A D B C 70
C D B A 80
D B A C 85
D B C A 90
24 rows selected
SQL>
所以最佳加工顺寻是
1 A B D C 40
2 A D C B 40
消耗时间都是40分钟
INSERT INTO test1
SELECT head,'A',A_time FROM test WHERE A_TIME IS NOT NULL
UNION ALL
SELECT head,'B',B_time FROM test WHERE B_TIME IS NOT NULL
UNION ALL
SELECT head,'C',C_time FROM test WHERE C_TIME IS NOT NULL
UNION ALL
SELECT head,'D',D_time FROM test WHERE D_TIME IS NOT NULL;