2022-10-11 15:03:31 +02:00
|
|
|
|
|
|
|
|
from absl import app
|
|
|
|
|
from absl import flags
|
|
|
|
|
from ortools.linear_solver.python import model_builder
|
|
|
|
|
|
|
|
|
|
FLAGS = flags.FLAGS
|
|
|
|
|
|
|
|
|
|
_INPUT = flags.DEFINE_string('input', '', 'Input file to load and solve.')
|
|
|
|
|
_PARAMS = flags.DEFINE_string('params', '', 'Solver parameters in string format.')
|
|
|
|
|
_SOLVER = flags.DEFINE_string('solver', 'sat', 'Solver type to solve the model with.')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def main(_):
|
|
|
|
|
model = model_builder.ModelBuilder()
|
|
|
|
|
|
|
|
|
|
# Load MPS file.
|
|
|
|
|
if not model.import_from_mps_file(_INPUT.value):
|
|
|
|
|
print(f'Cannot import MPS file: \'{_INPUT.value}\'')
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
# Create solver.
|
|
|
|
|
solver = model_builder.ModelSolver(_SOLVER.value)
|
2023-11-16 19:46:56 +01:00
|
|
|
if not solver.solver_is_supported():
|
2022-10-11 15:03:31 +02:00
|
|
|
print(f'Cannot create solver with name \'{_SOLVER.value}\'')
|
|
|
|
|
return
|
|
|
|
|
|
|
|
|
|
# Set parameters.
|
|
|
|
|
if _PARAMS.value:
|
|
|
|
|
solver.set_solver_specific_parameters(_PARAMS.value)
|
|
|
|
|
|
|
|
|
|
# Enable the output of the solver.
|
|
|
|
|
solver.enable_output(True)
|
|
|
|
|
|
|
|
|
|
# And solve.
|
|
|
|
|
solver.solve(model)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__':
|
2023-11-16 19:46:56 +01:00
|
|
|
app.run(main)
|