質問編集履歴
2
ソースについてそのままでは動作できなかったため、載せ替えさせていただきました。
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,
|
107
|
+
num_required_members = {'日勤': 6, '夜勤': 7, '明け': 5, '休暇': 0}
|
102
|
-
|
108
|
+
|
103
|
-
num_rest_members = {'日勤': 1,
|
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(
|
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()
|
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
大変失礼いたしました。マークダウンの記述で訂正いたしました。
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)の数の制御がうまく動作しませんでした。
|