Он должен работать должным образом. Попробуйте запустить следующий пример.
import pandas as pd
import io
data = """value
"2015-09-25 00:46" 71.925000
"2015-09-25 00:47" 71.625000
"2015-09-25 00:48" 71.333333
"2015-09-25 00:49" 64.571429
"2015-09-25 00:50" 72.285714"""
df = pd.read_table(io.StringIO(data), delim_whitespace=True)
# Converting the index as date
df.index = pd.to_datetime(df.index)
# Extracting hour & minute
df['A'] = df.index.hour
df['B'] = df.index.minute
df
# value A B
# 2015-09-25 00:46:00 71.925000 0 46
# 2015-09-25 00:47:00 71.625000 0 47
# 2015-09-25 00:48:00 71.333333 0 48
# 2015-09-25 00:49:00 64.571429 0 49
# 2015-09-25 00:50:00 72.285714 0 50
Если я правильно понимаю, время начала и окончания каждой смены j
являются известными константами. Позвольте мне назвать их start[j]
и end[j]
. Таким образом, вы должны иметь возможность использовать их для указания, используя конструкцию forall
, пар (j,k)
так, чтобы сдвиги j
и k
не перекрывались.
Примеры использования forall
в примерах, установленных с продуктом, находятся в подкаталогах [InstallDir]/opl/examples/opl
. Более конкретно, модели, которые включают конструкции, которые вы можете посмотреть, это models/Staffing/staffing.mod
, timetabling/timetabling.mod
и teambuilding/teambuilding.mod
.