質問編集履歴

2

ソースについてそのままでは動作できなかったため、載せ替えさせていただきました。

2019/06/21 03:43

投稿

k-shiokawa
k-shiokawa

スコア11

test CHANGED
File without changes
test CHANGED
@@ -64,10 +64,6 @@
64
64
 
65
65
  ```html
66
66
 
67
- Python
68
-
69
-
70
-
71
67
  import numpy as np
72
68
 
73
69
  import pandas as pd
@@ -84,6 +80,18 @@
84
80
 
85
81
  model = LpProblem()
86
82
 
83
+
84
+
85
+ n_members = 5
86
+
87
+ members = list(string.ascii_uppercase[:n_members])
88
+
89
+ days = range(1, 31)
90
+
91
+ n_days = 30
92
+
93
+
94
+
87
95
  """
88
96
 
89
97
  変数の準備
@@ -96,11 +104,13 @@
96
104
 
97
105
 
98
106
 
99
- base_duty_list = ['日勤', '夜勤', '明け', '休暇']
100
-
101
- num_required_members = {'日勤': 6, '夜勤': 7, '明け': 5, '休暇': 0}
107
+ num_required_members = {'日勤': 6, '夜勤': 7, '明け': 5, '休暇': 0}
102
-
108
+
103
- num_rest_members = {'日勤': 1, '夜勤': 0, '明け': 0, '休暇': 5}
109
+ num_rest_members = {'日勤': 1, '夜勤': 0, '明け': 0, '休暇': 5}
110
+
111
+
112
+
113
+ duty_list = ['明け', '休暇', '日勤', '夜勤', '明け', '休暇', '日勤', '夜勤', '明け', '休暇', '日勤', '夜勤', '明け', '休暇', '日勤', '夜勤', '明け', '休暇', '日勤', '夜勤', '明け', '休暇', '日勤', '夜勤', '明け', '休暇', '日勤', '夜勤', '明け', '休暇']
104
114
 
105
115
 
106
116
 
@@ -124,7 +134,7 @@
124
134
 
125
135
  """
126
136
 
127
- for i, s in enumerate(a.sum(1)):
137
+ for i, s in enumerate(a.sum()):
128
138
 
129
139
  model.addConstraint(s - t <= y)
130
140
 
@@ -156,7 +166,7 @@
156
166
 
157
167
  n_mem = num_required_members[duty_list[i]]
158
168
 
159
- model.addConstraint(a.iloc[:,i].sum() <= n_mem)
169
+ model.addConstraint(a.iloc[:,i].sum() == n_mem)
160
170
 
161
171
 
162
172
 
@@ -182,8 +192,6 @@
182
192
 
183
193
  model.solve()
184
194
 
185
-
186
-
187
195
  ```
188
196
 
189
197
 

1

大変失礼いたしました。マークダウンの記述で訂正いたしました。

2019/06/21 03:42

投稿

k-shiokawa
k-shiokawa

スコア11

test CHANGED
File without changes
test CHANGED
@@ -26,13 +26,19 @@
26
26
 
27
27
  ######0~2の値を取り得る
28
28
 
29
+ ```HTML
30
+
29
31
  for i in range(n_members):
30
32
 
31
33
  for j in range(n_days):
32
34
 
33
- model.addConstraint(a.iloc[i,j] <= 2)
35
+ model.addConstraint(a.iloc[i,j] <= 2)
36
+
37
+ ```
34
38
 
35
39
  ######該当の日における「0:休暇」の人数
40
+
41
+ ```HTML
36
42
 
37
43
  for i in range(n_days):
38
44
 
@@ -52,9 +58,11 @@
52
58
 
53
59
  TypeError: Can only add LpConstraint objects
54
60
 
55
- ```
61
+
56
62
 
57
63
  ### 該当のソースコード
64
+
65
+ ```html
58
66
 
59
67
  Python
60
68
 
@@ -176,6 +184,10 @@
176
184
 
177
185
 
178
186
 
187
+ ```
188
+
189
+
190
+
179
191
  ### 試したこと
180
192
 
181
193
  前述でも記載させていただきましたが、0~2の値を取り得ることと、該当の日における「0:休暇」の人数を制約式として追加することを試みましたが、休暇(0)の数の制御がうまく動作しませんでした。