cleanup is_run_from_ipython()

This commit is contained in:
Laurent Perron
2017-11-24 13:49:39 +01:00
parent 0f83e0c3d3
commit e79811e9bb
9 changed files with 144 additions and 1443 deletions

View File

@@ -23,6 +23,7 @@ The objective is to minimize the max end time of all jobs.
"""
from ortools.sat.python import cp_model
from ortools.sat.python import visualization
def main():
@@ -115,17 +116,36 @@ def main():
# Output solution.
print('Solution')
print(' - makespan = %i' % solver.ObjectiveValue())
for i in all_jobs:
performed_machine = 1 - solver.Value(performed[i])
start = solver.Value(starts[i])
print(' - Job %i starts at %i on machine %i' %
(i, start, performed_machine))
print('Statistics')
print(' - conflicts : %i' % solver.NumConflicts())
print(' - branches : %i' % solver.NumBranches())
print(' - wall time : %f ms' % solver.WallTime())
if visualization.run_from_ipython():
output = visualization.SvgWrapper(solver.ObjectiveValue(), max_length, 40.0)
output.AddTitle('Makespan = %i' % solver.ObjectiveValue())
color_manager = visualization.ColorManager()
color_manager.SeedRandomColor(0)
for i in all_jobs:
performed_machine = 1 - solver.Value(performed[i])
start = solver.Value(starts[i])
dx = jobs[i][0]
dy = jobs[i][1]
sy = performed_machine * (max_length - dy)
output.AddRectangle(start, sy, dx, dy, color_manager.RandomColor(),
'black', 'j%i' % i)
output.AddXScale()
output.AddYScale()
output.Display()
else:
print('Solution')
print(' - makespan = %i' % solver.ObjectiveValue())
for i in all_jobs:
performed_machine = 1 - solver.Value(performed[i])
start = solver.Value(starts[i])
print(' - Job %i starts at %i on machine %i' %
(i, start, performed_machine))
print('Statistics')
print(' - conflicts : %i' % solver.NumConflicts())
print(' - branches : %i' % solver.NumBranches())
print(' - wall time : %f ms' % solver.WallTime())
if __name__ == '__main__':

View File

@@ -12,6 +12,7 @@
# limitations under the License.
from ortools.sat.python import cp_model
from ortools.sat.python import visualization
def BuildPairs(rows, cols):
@@ -130,12 +131,12 @@ def SolveHidato(puzzle, index):
r = len(puzzle)
c = len(puzzle[0])
print('')
print('----- Solving problem %i -----' % index)
print('')
print(('Initial game (%i x %i)' % (r, c)))
PrintMatrix(puzzle)
if not visualization.run_from_ipython():
print('')
print('----- Solving problem %i -----' % index)
print('')
print(('Initial game (%i x %i)' % (r, c)))
PrintMatrix(puzzle)
#
# declare variables
@@ -170,11 +171,24 @@ def SolveHidato(puzzle, index):
status = solver.Solve(model)
if status == cp_model.MODEL_SAT:
PrintSolution([solver.Value(x) for x in positions], r, c,)
print('Statistics')
print(' - conflicts : %i' % solver.NumConflicts())
print(' - branches : %i' % solver.NumBranches())
print(' - wall time : %f ms' % solver.WallTime())
if visualization.run_from_ipython():
output = visualization.SvgWrapper(10, r, 40.0)
for i in range(len(positions)):
val = solver.Value(positions[i])
x = val % c
y = val // c
color = 'white' if puzzle[y][x] == 0 else 'lightgreen'
value = solver.Value(positions[i])
output.AddRectangle(x, r - y - 1, 1, 1, color, 'black', str(i + 1))
output.AddTitle('Puzzle %i solved in %f s' % (index, solver.WallTime()))
output.Display()
else:
PrintSolution([solver.Value(x) for x in positions], r, c,)
print('Statistics')
print(' - conflicts : %i' % solver.NumConflicts())
print(' - branches : %i' % solver.NumBranches())
print(' - wall time : %f ms' % solver.WallTime())
def main():

View File

@@ -83,8 +83,13 @@ def main():
solver = cp_model.CpSolver()
response = solver.Solve(model)
# Print out makespan.
print('Optimal makespan: %i' % solver.ObjectiveValue())
# Output solution.
if visualization.run_from_ipython():
starts = [[solver.Value(all_tasks[(i, j)][0]) for j in all_machines]
for i in all_jobs]
visualization.DisplayJobshop(starts, durations, machines, 'FT06')
else:
print('Optimal makespan: %i' % solver.ObjectiveValue())
if __name__ == '__main__':