rcpsp11.py

rcpsp11.py

OptSeq

#rcpsp11.py
from optseq import *
#====データセット
#i:[名前、期間、後続、資源]
data={
 1:["A01",3,[4,6],3],
 2:["A02",4,[5,7],1],
 3:["A03",6,[8]  ,1],
 4:["A04",4,[5,7],4],
 5:["A05",5,[8]  ,4],
 6:["A06",5,[9]  ,4],
 7:["A07",4,[10] ,5],
 8:["A08",2,[10] ,2],
 9:["A09",2,[10] ,5],
10:["A10",5,[0]  ,3],
}
#====アクティビティ
prob=Model()
act={}
for i in data:
    act[i]=prob.addActivity(data[i][0])
#====先行制約
for i in data:
    for j in data[i][2]:
        if j>0: prob.addTemporal(act[i],act[j])  
#====資源制約  
res=prob.addResource("Resource",capacity={(0,"inf"):10}) 
mode={}  
for i in data:
    mode[i]=Mode("M{0:02d}_{1:02d}".format(i,data[i][3]),\
                                    duration=data[i][1])
    mode[i].addResource(res,requirement=data[i][3])
    act[i].addModes(mode[i])
#====求解
prob.Params.Makespan=True
prob.Params.TimeLimit=1
prob.optimize()
prob.write("rcpsp11.txt")
prob.writeExcel("rcpsp11.csv")

rcpsp11.pyはPython言語で記述されています。このファイルを入手するにはrcpsp11をクリックしてください。このWEBサイトの環境では拡張子.pyのファイルを扱うことができないので、一旦zipファイルに変換しています。

このプログラムについては、別途詳しく説明する予定です。

図1.1

図1.1

図1.1は「工程’s」で作成され、ファイル名は「例題1.kzd」です。このファイルを入手するにはreidai1をクリックしてください。このWEBサイトの環境では拡張子.kzdのファイルを扱うことができないので、一旦zipファイルに変換しています。

図1.1の作成手順については、別途詳しく説明する予定です。

CT-ERRATA

頁・式
p.3 おきたい思う おきたい思う
p.31 (a=\theta-\piだから)、\sin\theta\simeq \theta-\pi (a=\piだから)、\sin\theta\simeq -(\theta-\pi)
p.83 -x0) [-L 1]*x0)
(Program 52を修正・更新しています)
(8.4) =ke_v(t) =k_ve_v(t)
p.136 (8.15)が成り立つ (8.17)が成り立つ

●本書では、m行n列の行列のサイズを「m  \times n」と表記しています。たとえば(n-p)行n列の行列のサイズは「n-p\times n」となります。ここで、\timesは掛け算(の演算子)ではなく、行数と列数の区切りであることに注意してください。