移動
次へ 前へ
上へ 最上
参考
工場での作業スケジューリングその1
工場作業スケジューリングその2
農地管理
スミス氏パズル
投資計画
プロジェクト計画
Send More Money
イフコンピュータ > IF/Prolog > 制約処理パッケージ > 例題プログラム > 工場作業スケジューリングその2

工場作業スケジューリングその2

MINERVA superseeded IF/Prolog. Please see http://www.ifcomputer.co.jp/MINERVA for details.

We discontinued to sell IF/Prolog Dec 31. 2003. For current customers, we continue to provide professional support for IF/Prolog until Dec 31, 2008.

           Job | Task | Machine | Duration | Manning
           ----|------|---------|----------|--------
           Ja  | Ta1  |    M1   |    2     |    3
           Ja  | Ta2  |    M2   |    6     |    2
           Jb  | Tb1  |    M2   |    5     |    2
           Jb  | Tb2  |    M1   |    3     |    3
           Jb  | Tb3  |    M2   |    3     |    2
           Jc  | Tc   |    M2   |    4     |    2
           Jd  | Td1  |    M1   |    5     |    4
           Jd  | Td2  |    M2   |    2     |    1
 
その1の例では、外部の資源は考慮に入っていませんでした。外部の資源は、スケジュールがそのままでうまく進むかどうかに関して大きな影響を与えうります。外部の資源として例えば人間の工数が考えられます。以下では、上の8のタスクについて人的工数を加えた場合でのスケジューリングを考えます。

上は、その1の例で計算されたスケジュールに必要な人的工数です。実際には6人の作業者がいます。作業者は2カ所には上回っています。追加として2人の作業者を増やすことはできますが、これを行えば、より無駄はふえます。

ここで、以前の例で示したcummulative/4 の制約に人的資源を加えてプログラムを変更します。人的資源は越えてはならない全体的な制約であるため、この制約はすべての機械・すべてのスケジュールに適用されねばなりません。

program :- Jobs = [Ja,Jb,Jc,Jd],
           M1_Tsk = [Ta1,Tb2,Td1],     
	   M2_Tsk = [Ta2,Tb1,Tb3,Tc,Td2],
           M1_Dur = [Da1,Db2,Dd1],
	   M2_Dur = [Da2,Db1,Db3,Dc,Dd2],
           M1_Dur = [2, 3,  5],     
	   M2_Dur = [  6,  5,  3, 4,  2],
           M1_Man = [  3,  3, 4],     
	   M2_Man = [  2,  2,  2, 2,  1],

append(M1_Tsk,M2_Tsk,Tasks), append(M1_Dur,M2_Dur,Durations), append(M1_Man,M2_Man,Manning),

Tasks in 0..100, Jobs in 0..100, Men = 6, Ta2 ?>= Ta1 + Da1, Tb2 ?>= Tb1 + Db1, Td2 ?>= Td1 + Dd1, Tb3 ?>= Tb2 + Db2,

Ja ?= Ta2 + Da2, Jc ?= Tc + Dc, Jb ?= Tb3 + Db3, Jd ?= Td2 + Dd2,

cumulative(M1_Tsk,M1_Dur,[1,1,1],1),

cumulative(M2_Tsk,M2_Dur,[1,1,1,1,1],2), cumulative(Tasks,Durations,Manning,Men), minimize_maximum(label(Tasks),Jobs), print((Tasks,Durations,Manning,Jobs)).

上記のプログラムを実行すると、以下の結果が得られます。(0.02秒で出ます。)

[user] ?- program.
[0,7,2,5,0,11,10,7],
[2,3,5,6,5,3,4,2], [3,3,4,2,2,2,2,1], [11,14,14,9]
yes
 

結果のリストは、それぞれ最適化されたスタート時間、所要時間、投入される人的資源、作業完了時間を示します。作業者のスケジュールは以下により明確に図示されます。

人的資源は、明らかにこの例でのスケジュールの方がうまく利用されていますが、もう一つ注意して欲しいことは、これによって作業全体のスケジュールがどのように影響を受けているかという点です。

人的資源については上の例と比較して完了時間をひとつ変えただけですが、これにより全体の作業は非常に効率よくなったと見ることができます。

現実には、作業スケジューリングにおいては、より多くのファクターを考慮に入れねばなりません。人的工数は、休日や病気欠席の人を考慮すると、時に応じて変化します。

機械については、定期点検や、あるタスクをした場合にあるクリーニングを行わねばなりません。定期点検は、スケジューリングを行う前に開始時間と必要所要時間を設定して固定的な制約として、固定的なタスクとして間単にスケジューリングすることができます。所定のタスクの前後に行われるべきクリーニングは、そのタスク内に包括する形で、スケジューリングを行います。

続く..
IF/Prolog by Siemens
言語
English
Japanese
German
サーバー
USA
Japan
サイトマップ
索引
目次
全体目次
全体索引
印刷向き
imode
PDA
探索
document: http://www.ifcomputer.co.jp/IFProlog/Constraints/ExamplePrograms/JobShop2/home_jp.html
published 2008/5/12 update 2001/3/21 (c) 1996-2006 IF Computer Japan
IF Computer 〒113-0022 Tel 03-5814-3352 ifcj@ifcomputer.co.jp
Customer Support 東京都文京区千駄木5-28-2   http://www.ifcomputer.co.jp
冒頭へ managed with ubiCMS