improve logging of cp_is_fun_sat.py

This commit is contained in:
Laurent Perron
2017-11-22 16:17:28 +01:00
parent 3aca895d96
commit 6b9bf72c03

View File

@@ -21,7 +21,6 @@ This problem has 72 different solutions in base 10.
"""
from __future__ import print_function
import time
from ortools.sat.python import cp_model
class VarArraySolutionPrinter(cp_model.CpSolverSolutionCallback):
@@ -30,21 +29,16 @@ class VarArraySolutionPrinter(cp_model.CpSolverSolutionCallback):
def __init__(self, variables):
self.__variables = variables
self.__solution_count = 0
self.__start_time = time.time()
def SolutionCount(self):
return self.__solution_count
def NewSolution(self):
current_time = time.time()
print('Solution %i, time = %f s' %
(self.__solution_count, current_time - self.__start_time), end=': ')
self.__solution_count += 1
for v in self.__variables:
print('%s=%i' % (v, self.Value(v)), end = ' ')
print()
def SolutionCount(self):
return self.__solution_count
def CPIsFun():
@@ -85,6 +79,13 @@ def CPIsFun():
solution_printer = VarArraySolutionPrinter(letters)
status = solver.SearchForAllSolutions(model, solution_printer)
print()
print('Statistics')
print(' - conflicts : %i' % solver.NumConflicts())
print(' - branches : %i' % solver.NumBranches())
print(' - wall time : %f ms' % solver.WallTime())
print(' - solutions found : %i' % solution_printer.SolutionCount())
if __name__ == '__main__':
CPIsFun()