teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

書式改善

2020/06/25 02:22

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -2,14 +2,12 @@
2
2
 
3
3
  Pythonのpulpを使って1機械重み付き完了時刻和ジョブスケジューリングを実装したいと思っています。
4
4
  それぞれ
5
- ジョブの処理時間p
5
+ ・処理時間p
6
- ジョブの重要度w
6
+ ・重要度w
7
- ジョブのリリース時刻r
7
+ ・リリース時刻r
8
8
  ・処理開始時刻s
9
- ・順序を表すx_jk(jがkより前の時1、そうでないときは0)
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
- ライブラリは全て最新にしてあります。