質問編集履歴
1
書式改善
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,14 +2,12 @@
|
|
2
2
|
|
3
3
|
Pythonのpulpを使って1機械重み付き完了時刻和ジョブスケジューリングを実装したいと思っています。
|
4
4
|
それぞれ
|
5
|
-
・
|
5
|
+
・処理時間p
|
6
|
-
・
|
6
|
+
・重要度w
|
7
|
-
・
|
7
|
+
・リリース時刻r
|
8
8
|
・処理開始時刻s
|
9
|
-
・順序を表す
|
9
|
+
・順序を表すx
|
10
10
|
|
11
|
-
を入れています。
|
12
|
-
|
13
11
|
エラーメッセージは出ませんが、以下のコードで実装すると、sがrと同じ数値になってしまいます。
|
14
12
|
|
15
13
|
### 発生している問題・エラーメッセージ
|
@@ -26,7 +24,6 @@
|
|
26
24
|
ジョブ 9 を処理するのは 6 番目で作業開始時刻は 9.0
|
27
25
|
ジョブ 10 を処理するのは 8 番目で作業開始時刻は 6.0
|
28
26
|
Obj.value 2081.0
|
29
|
-
time: 0.10368912199999158
|
30
27
|
```
|
31
28
|
|
32
29
|
### 該当のソースコード
|
@@ -34,12 +31,7 @@
|
|
34
31
|
```Python
|
35
32
|
def main():
|
36
33
|
|
37
|
-
assignment = pulp.LpProblem("minimize_weight_job_cost", pulp.LpMinimize
|
34
|
+
assignment = pulp.LpProblem("minimize_weight_job_cost", pulp.LpMinimize
|
38
|
-
# pulp.LpMinimize : 最小化
|
39
|
-
# pulp.LpMaximize : 最大化
|
40
|
-
|
41
|
-
|
42
|
-
|
43
35
|
# 変数宣言
|
44
36
|
|
45
37
|
#x[j][k]を定義
|
@@ -61,10 +53,6 @@
|
|
61
53
|
|
62
54
|
# 目的関数
|
63
55
|
assignment += sum(w[j] * C[j] for j in range(job_num))
|
64
|
-
|
65
|
-
|
66
|
-
# 制約条件
|
67
|
-
|
68
56
|
# 1本目
|
69
57
|
for j in range(job_num):
|
70
58
|
assignment += C[j] == s[j] + p[j]
|
@@ -93,12 +81,9 @@
|
|
93
81
|
if i != k and j != k:
|
94
82
|
assignment += x[j][k] + x[k][i] + x[i][j] <= 2
|
95
83
|
|
96
|
-
# 時間計測開始
|
97
|
-
time_start = time.perf_counter()
|
98
|
-
status = assignment.solve()
|
99
|
-
# 時間計測終了
|
100
|
-
time_stop = time.perf_counter()
|
101
84
|
|
85
|
+
|
86
|
+
|
102
87
|
#順番
|
103
88
|
job = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
|
104
89
|
for j in range(job_num):
|
@@ -115,22 +100,11 @@
|
|
115
100
|
print("ジョブ",i + 1,"を処理するのは",job[i],"番目で作業開始時刻は",s[i].value())
|
116
101
|
|
117
102
|
print("Obj.value", assignment.objective.value())
|
103
|
+
|
118
104
|
|
119
|
-
print("time:", time_stop-time_start)
|
120
|
-
|
121
105
|
|
122
106
|
|
123
107
|
|
124
108
|
if __name__=="__main__":
|
125
109
|
main()
|
126
|
-
```
|
110
|
+
```
|
127
|
-
|
128
|
-
### 試したこと
|
129
|
-
|
130
|
-
sの定義か、制約成約式の3もしくは5が間違っているのかなと個人的には感じています、、
|
131
|
-
|
132
|
-
### 補足情報(FW/ツールのバージョンなど)
|
133
|
-
|
134
|
-
Python3.7
|
135
|
-
Jupyter Notebook 6.0.3
|
136
|
-
ライブラリは全て最新にしてあります。
|