remove OptionalIntVar from the sat Python API

This commit is contained in:
Laurent Perron
2018-08-31 16:56:55 +02:00
parent 93d7d6f566
commit 651e44cf0a
4 changed files with 17 additions and 73 deletions

View File

@@ -60,19 +60,15 @@ def main():
performed.append(performed_on_m0)
# Create an optional copy of interval to be executed on machine 0.
start0 = model.NewOptionalIntVar(0, horizon, performed_on_m0,
'start_%i_on_m0' % i)
end0 = model.NewOptionalIntVar(0, horizon, performed_on_m0,
'end_%i_on_m0' % i)
start0 = model.NewIntVar(0, horizon, 'start_%i_on_m0' % i)
end0 = model.NewIntVar(0, horizon, 'end_%i_on_m0' % i)
interval0 = model.NewOptionalIntervalVar(
start0, duration, end0, performed_on_m0, 'interval_%i_on_m0' % i)
intervals0.append(interval0)
# Create an optional copy of interval to be executed on machine 1.
start1 = model.NewOptionalIntVar(0, horizon, performed_on_m0.Not(),
'start_%i_on_m1' % i)
end1 = model.NewOptionalIntVar(0, horizon, performed_on_m0.Not(),
'end_%i_on_m1' % i)
start1 = model.NewIntVar(0, horizon, 'start_%i_on_m1' % i)
end1 = model.NewIntVar(0, horizon, 'end_%i_on_m1' % i)
interval1 = model.NewOptionalIntervalVar(start1, duration, end1,
performed_on_m0.Not(),
'interval_%i_on_m1' % i)

View File

@@ -136,10 +136,8 @@ def SolveRcpsp(problem, proto_file):
for r in all_recipes:
recipe = task.recipes[r]
is_present = model.NewBoolVar('is_present_%i_r%i' % (t, r))
start = model.NewOptionalIntVar(0, horizon, is_present,
'start_%i_r%i' % (t, r))
end = model.NewOptionalIntVar(0, horizon, is_present,
'end_%i_r%i' % (t, r))
start = model.NewIntVar(0, horizon, 'start_%i_r%i' % (t, r))
end = model.NewIntVar(0, horizon, 'end_%i_r%i' % (t, r))
interval = model.NewOptionalIntervalVar(
start, recipe.duration, end, is_present, 'interval_%i_r%i' % (t, r))

View File

@@ -45,12 +45,10 @@ def SolveRosteringWithTravel():
job_performed.append(performed_on_m)
# Create an optional copy of interval to be executed on a machine
location0 = model.NewOptionalIntVar(
jobs[i][3], jobs[i][3], performed_on_m, 'location_%i_on_m%i' % (i, m))
start0 = model.NewOptionalIntVar(jobs[i][1], horizon, performed_on_m,
'start_%i_on_m%i' % (i, m))
end0 = model.NewOptionalIntVar(0, jobs[i][2], performed_on_m,
'end_%i_on_m%i' % (i, m))
location0 = model.NewIntVar(
jobs[i][3], jobs[i][3], 'location_%i_on_m%i' % (i, m))
start0 = model.NewIntVar(jobs[i][1], horizon, 'start_%i_on_m%i' % (i, m))
end0 = model.NewIntVar(0, jobs[i][2], 'end_%i_on_m%i' % (i, m))
interval0 = model.NewOptionalIntervalVar(
start0, duration, end0, performed_on_m, 'interval_%i_on_m%i' % (i, m))
optional_intervals[m].append(interval0)
@@ -59,10 +57,8 @@ def SolveRosteringWithTravel():
model.Add(start0 == start).OnlyEnforceIf(performed_on_m)
# Adding travel constraint
travel = model.NewBoolVar('is_travel_%i_on_m%i' % (i, m))
startT = model.NewOptionalIntVar(0, horizon, travel,
'start_%i_on_m%i' % (i, m))
endT = model.NewOptionalIntVar(0, horizon, travel,
'end_%i_on_m%i' % (i, m))
startT = model.NewIntVar(0, horizon, 'start_%i_on_m%i' % (i, m))
endT = model.NewIntVar(0, horizon, 'end_%i_on_m%i' % (i, m))
intervalT = model.NewOptionalIntervalVar(
startT, travel_time, endT, travel,
'travel_interval_%i_on_m%i' % (i, m))