CP-SAT: exited with code=3221226505

997 views
Skip to first unread message

Rick Adriaensen

unread,
Aug 29, 2022, 3:10:23 AM8/29/22
to or-tools-discuss
Hi all,

When I run my CP-SAT solver for larger problem instances, my code exites with the following error code: 3221226505. I run my code via Visual Studio Code on Python 3.9 and I am using or tools version 9.3.10497.

Does anybody has any idea what can be the cause of this error?
Screenshot 2022-08-28 164408.png

Laurent Perron

unread,
Aug 29, 2022, 3:31:21 AM8/29/22
to or-tools-discuss
no idea. Can you send the python or the model proto ?

Laurent Perron | Operations Research | lpe...@google.com | (33) 1 42 68 53 00



--
You received this message because you are subscribed to the Google Groups "or-tools-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to or-tools-discu...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/or-tools-discuss/99f02616-2765-41df-8bc9-891df4a69c9an%40googlegroups.com.

Rick Adriaensen

unread,
Aug 30, 2022, 3:09:08 AM8/30/22
to or-tools-discuss
I get the error with an adapted version of the flexible jobshop (https://github.com/google/or-tools/blob/stable/examples/python/flexible_job_shop_sat.py) where I can increase the number of jobs and machines. Each job has a certain due date and the objective is to minimize the total tardiness. Also, I added a routing constraint: When a job is processed by alternative 0 for operation 0, operation 1 and 2 has to be processed by alternative 0 as well. I only get the error for large problem instances (for example 4000 jobs on 9 machines).



import collections
import random

from ortools.sat.python import cp_model


class SolutionPrinter(cp_model.CpSolverSolutionCallback):
    """Print intermediate solutions."""

    def __init__(self):
        cp_model.CpSolverSolutionCallback.__init__(self)
        self.__solution_count = 0

    def on_solution_callback(self):
        """Called at each new solution."""
        print('Solution %i, time = %f s, objective = %i' %
              (self.__solution_count, self.WallTime(), self.ObjectiveValue()))
        self.__solution_count += 1


def flexible_jobshop():
    """Solve a small flexible jobshop problem."""
    # Data part.

    max_processing_time = 24*60
    max_machine_id = 8
    max_due_date_in_days = 10

    jobs=[]
    due_dates = []

    #Define total jobs to test performance
    totaljobs = 4000

    for i in range(0,totaljobs):
        singlejob=[  # task = (processing_time, machine_id)
            [(random.randint(60,max_processing_time), random.randint(0,max_machine_id)), (random.randint(60,max_processing_time), random.randint(0,max_machine_id)), (random.randint(60,max_processing_time), random.randint(0,max_machine_id))],  # task 0 with 3 routings
            [(random.randint(60,max_processing_time), random.randint(0,max_machine_id)), (random.randint(60,max_processing_time), random.randint(0,max_machine_id)), (random.randint(60,max_processing_time), random.randint(0,max_machine_id))],  # task 1 with 3 routings
            [(random.randint(60,max_processing_time), random.randint(0,max_machine_id)), (random.randint(60,max_processing_time), random.randint(0,max_machine_id)), (random.randint(60,max_processing_time), random.randint(0,max_machine_id))],  # task 2 with 3 routings
        ]
        jobs.append(singlejob)

        due_date = random.randint(1,max_due_date_in_days)*24*60
        due_dates.append(due_date)

    num_jobs = len(jobs)
    all_jobs = range(num_jobs)

    num_machines = max_machine_id + 1
    all_machines = range(num_machines)

    # Model the flexible jobshop problem.
    model = cp_model.CpModel()

    horizon = 0
    for job in jobs:
        for task in job:
            max_task_duration = 0
            for alternative in task:
                max_task_duration = max(max_task_duration, alternative[0])
            horizon += max_task_duration

    print('Horizon = %i' % horizon)

    # Global storage of variables.
    intervals_per_resources = collections.defaultdict(list)
    starts = {}  # indexed by (job_id, task_id).
    presences = {}  # indexed by (job_id, task_id, alt_id).
    job_ends = []

    total_tardiness = 0

    # Scan the jobs and create the relevant variables and intervals.
    for job_id in all_jobs:
        job = jobs[job_id]
        num_tasks = len(job)
        previous_end = None

        chosen_routing = model.NewIntVar(0, 2, 'routing')

        for task_id in range(num_tasks):
            task = job[task_id]

            min_duration = task[0][0]
            max_duration = task[0][0]

            num_alternatives = len(task)
            all_alternatives = range(num_alternatives)

            for alt_id in range(1, num_alternatives):
                alt_duration = task[alt_id][0]
                min_duration = min(min_duration, alt_duration)
                max_duration = max(max_duration, alt_duration)

            # Create main interval for the task.
            suffix_name = '_j%i_t%i' % (job_id, task_id)
            start = model.NewIntVar(0, horizon, 'start' + suffix_name)
            duration = model.NewIntVar(min_duration, max_duration,
                                       'duration' + suffix_name)
            end = model.NewIntVar(0, horizon, 'end' + suffix_name)
            interval = model.NewIntervalVar(start, duration, end,
                                            'interval' + suffix_name)

            # Store the start for the solution.
            starts[(job_id, task_id)] = start

            # Add precedence with previous task in the same job.
            if previous_end is not None:
                model.Add(start >= previous_end)
            previous_end = end

            # Create alternative intervals.
            if num_alternatives > 1:
                l_presences = []
                for alt_id in all_alternatives:
                    alt_suffix = '_j%i_t%i_a%i' % (job_id, task_id, alt_id)
                    l_presence = model.NewBoolVar('presence' + alt_suffix)
                    l_start = model.NewIntVar(0, horizon, 'start' + alt_suffix)
                    l_duration = task[alt_id][0]
                    l_end = model.NewIntVar(0, horizon, 'end' + alt_suffix)
                    l_interval = model.NewOptionalIntervalVar(
                        l_start, l_duration, l_end, l_presence,
                        'interval' + alt_suffix)
                    l_presences.append(l_presence)

                    model.Add(chosen_routing == alt_id).OnlyEnforceIf(l_presence)

                    # Link the primary/global variables with the local ones.
                    model.Add(start == l_start).OnlyEnforceIf(l_presence)
                    model.Add(duration == l_duration).OnlyEnforceIf(l_presence)
                    model.Add(end == l_end).OnlyEnforceIf(l_presence)

                    # Add the local interval to the right machine.
                    intervals_per_resources[task[alt_id][1]].append(l_interval)

                    # Store the presences for the solution.
                    presences[(job_id, task_id, alt_id)] = l_presence

                # Select exactly one presence variable.
                model.AddExactlyOne(l_presences)
            else:
                intervals_per_resources[task[0][1]].append(interval)
                presences[(job_id, task_id, 0)] = model.NewConstant(1)


        due_date_job = due_dates[job_id]
        due_date_job_intvar = model.NewIntVar(due_date_job,due_date_job,"lateness")      

        lateness = model.NewIntVar(-10000000,10000000,"lateness")
        model.Add(lateness == previous_end - due_date_job_intvar)

        tardiness = model.NewIntVar(0,10000000,"tardiness")    
        model.AddMaxEquality(tardiness,[0,lateness])

        tardiness_days = model.NewIntVar(0,10000000,"tardiness")
        model.AddDivisionEquality(tardiness_days, tardiness, 1440)
       
        total_tardiness += tardiness_days

        job_ends.append(previous_end)

    # Create machines constraints.
    for machine_id in all_machines:
        intervals = intervals_per_resources[machine_id]
        if len(intervals) > 1:
            model.AddNoOverlap(intervals)

    # Makespan objective
    makespan = model.NewIntVar(0, horizon, 'makespan')
    model.AddMaxEquality(makespan, job_ends)
    # model.Minimize(makespan)
    model.Minimize(total_tardiness)

    # Solve model.
    solver = cp_model.CpSolver()
    solution_printer = SolutionPrinter()
    solver.parameters.log_search_progress = True
    status = solver.Solve(model, solution_printer)

    # Print final solution.
    for job_id in all_jobs:
        print('Job %i:' % job_id)
        for task_id in range(len(jobs[job_id])):
            start_value = solver.Value(starts[(job_id, task_id)])
            machine = -1
            duration = -1
            selected = -1
            for alt_id in range(len(jobs[job_id][task_id])):
                if solver.Value(presences[(job_id, task_id, alt_id)]):
                    duration = jobs[job_id][task_id][alt_id][0]
                    machine = jobs[job_id][task_id][alt_id][1]
                    selected = alt_id
            print(
                '  task_%i_%i starts at %i (alt %i, machine %i, duration %i)' %
                (job_id, task_id, start_value, selected, machine, duration))

    print('Solve status: %s' % solver.StatusName(status))
    print('Optimal objective value: %i' % solver.ObjectiveValue())
    print('Statistics')
    print('  - conflicts : %i' % solver.NumConflicts())
    print('  - branches  : %i' % solver.NumBranches())
    print('  - wall time : %f s' % solver.WallTime())


flexible_jobshop()



[Running] python -u "d:\Work\Internal\Scheduling\Flexible_jobshop.py"
Horizon = 13158758

Starting CP-SAT solver v9.3.10497
Parameters: log_search_progress: true
Setting number of workers to 12

Initial optimization model '':
#Variables: 164001 (#ints:4000 in objective)
  - 11896 different domains in [-10000000,13158758] with a largest complexity of 1.
  - 4000 constants in {1440,2880,4320,5760,7200,8640,10080,11520,12960,14400}
#kExactlyOne: 12000 (#literals: 36000)
#kIntDiv: 4000
#kInterval: 48000 (#enforced: 36000)
#kLinMax: 4001
#kLinear1: 72000 (#enforced: 72000)
#kLinear2: 116000 (#enforced: 108000)
#kLinear3: 16000
#kNoOverlap: 9 (#intervals: 36000, #optional: 36000)

Starting presolve at 0.18s
[ExtractEncodingFromLinear] #potential_supersets=16000 #potential_subsets=0 #at_most_one_encodings=0 #exactly_one_encodings=0 #unique_terms=0 #multiple_terms=0 #literals=0 time=0.00930516s
[Probing] deterministic_time: 0.438205 (limit: 1) wall_time: 180.991 (107891/107891)
[Probing]  - new integer holes: 23927
[Probing]  - new integer bounds: 52149
[Probing]  - new binary clause: 119876
[SAT presolve] num removable Booleans: 53065 / 180794
[SAT presolve] num trivial clauses: 36000
[SAT presolve] [0s] clauses:54 literals:108 vars:72 one_side_vars:54 simple_definition:18 singleton_clauses:0
[SAT presolve] [0.00145894s] clauses:54 literals:108 vars:72 one_side_vars:54 simple_definition:18 singleton_clauses:0
[SAT presolve] [0.00678686s] clauses:54 literals:108 vars:72 one_side_vars:54 simple_definition:18 singleton_clauses:0
[DetectDuplicateConstraints] #duplicates=12000 time=0.124164s
[DetectDominatedLinearConstraints] #relevant_constraints=24000 #work_done=180106 #num_inclusions=0 #num_redundant=0 time=0.0255748s
[DetectOverlappingColumns] #processed_columns=0 #work_done=0 #nz_reduction=0 time=0.0207759s
[ProcessSetPPC] #relevant_constraints=4054 #num_inclusions=0 work=36332 time=0.0147871s

Presolve summary:
  - 45065 affine relations were detected.
  - rule 'affine: new relation' was applied 45065 times.
  - rule 'deductions: 230379 stored' was applied 1 time.
  - rule 'duplicate: removed constraint' was applied 12000 times.
  - rule 'int_div: linearize positive division with a constant divisor' was applied 4000 times.
  - rule 'int_div: updated domain of target in target = X / cte' was applied 4000 times.
  - rule 'lin_max: converted to equality' was applied 272 times.
  - rule 'lin_max: removed exprs' was applied 272 times.
  - rule 'lin_max: target domain reduced' was applied 121 times.
  - rule 'linear1: is boolean implication' was applied 54 times.
  - rule 'linear: divide by GCD' was applied 14379 times.
  - rule 'linear: reduced variable domains' was applied 52000 times.
  - rule 'linear: remapped using affine relations' was applied 48237 times.
  - rule 'linear: simplified rhs' was applied 29295 times.
  - rule 'presolve: 4000 unused variables removed.' was applied 1 time.
  - rule 'presolve: iteration' was applied 1 time.
  - rule 'variables with 2 values: create encoding literal' was applied 18 times.
  - rule 'variables with 2 values: new affine relation' was applied 18 times.
  - rule 'variables: add encoding constraint' was applied 12000 times.
  - rule 'variables: canonicalize affine domain' was applied 4775 times.
  - rule 'variables: detect half reified value encoding' was applied 72000 times.
  - rule 'variables: only used in encoding' was applied 4000 times.

Presolved optimization model '':
#Variables: 127729 (#ints:4000 in objective)
  - 26417 different domains in [-14165,13158758] with a largest complexity of 3.
#kBoolAnd: 54 (#enforced: 54) (#literals: 54)
#kExactlyOne: 4000 (#literals: 12000)
#kInterval: 48000 (#enforced: 36000)
#kLinMax: 3729
#kLinear1: 35946 (#enforced: 35946)
#kLinear2: 120000 (#enforced: 108000)
#kLinear3: 12000
#kNoOverlap: 9 (#intervals: 36000, #optional: 36000)

Preloading model.
#Bound 187.31s best:inf   next:[1,27776000] initial_domain

Starting Search at 187.67s with 12 workers.
10 full subsolvers: [default_lp, fixed, no_lp, max_lp, core, reduced_costs, pseudo_costs, quick_restart, quick_restart_no_lp, lb_tree_search]
Interleaved subsolvers: [feasibility_pump, rnd_var_lns_default, rnd_cst_lns_default, graph_var_lns_default, graph_cst_lns_default, scheduling_time_window_lns_default, scheduling_random_lns_default, rins_lns_default, rens_lns_default]
#Bound 528.87s best:inf   next:[2,27776000] bool_core num_cores:1 [core:2 mw:1 d:0] assumptions:3999 depth:1 fixed_bools:0/51967
#Bound 529.02s best:inf   next:[3,27776000] bool_core num_cores:2 [core:1 mw:1 d:1] assumptions:3999 depth:1 fixed_bools:0/51968
#Bound 529.35s best:inf   next:[4,27776000] bool_core num_cores:3 [core:3 mw:1 d:1] assumptions:3997 depth:2 fixed_bools:1/51974
#Bound 529.76s best:inf   next:[5,27776000] bool_core num_cores:4 [core:2 mw:1 d:2] assumptions:3996 depth:2 fixed_bools:1/51977
#Bound 529.92s best:inf   next:[6,27776000] bool_core num_cores:5 [core:2 mw:1 d:1] assumptions:3995 depth:2 fixed_bools:1/51980
#Bound 530.10s best:inf   next:[7,27776000] bool_core num_cores:6 [core:2 mw:1 d:1] assumptions:3994 depth:2 fixed_bools:1/51983
#Bound 530.41s best:inf   next:[8,27776000] bool_core num_cores:7 [core:2 mw:1 d:1] assumptions:3993 depth:2 fixed_bools:1/51986
#Bound 530.63s best:inf   next:[9,27776000] bool_core num_cores:8 [core:2 mw:1 d:1] assumptions:3992 depth:2 fixed_bools:1/51989
#Bound 531.00s best:inf   next:[10,27776000] bool_core num_cores:9 [core:2 mw:1 d:1] assumptions:3991 depth:2 fixed_bools:1/51992
#Bound 531.25s best:inf   next:[11,27776000] bool_core num_cores:10 [core:2 mw:1 d:1] assumptions:3990 depth:2 fixed_bools:1/51995
#Bound 531.71s best:inf   next:[12,27776000] bool_core num_cores:11 [core:2 mw:1 d:1] assumptions:3989 depth:2 fixed_bools:1/51998
#Bound 532.27s best:inf   next:[13,27776000] bool_core num_cores:12 [core:4 mw:1 d:1] assumptions:3986 depth:3 fixed_bools:1/52009
#Bound 533.24s best:inf   next:[14,27776000] bool_core num_cores:13 [core:4 mw:1 d:3] assumptions:3983 depth:4 fixed_bools:1/52026
#Bound 534.43s best:inf   next:[15,27776000] bool_core num_cores:14 [core:4 mw:1 d:4] assumptions:3980 depth:4 fixed_bools:1/52035
#Bound 535.55s best:inf   next:[16,27776000] bool_core num_cores:15 [core:8 mw:1 d:2] assumptions:3973 depth:4 fixed_bools:1/52062
#Bound 536.33s best:inf   next:[17,27776000] bool_core num_cores:16 [core:3 mw:1 d:4] assumptions:3971 depth:5 fixed_bools:1/52088
#Bound 537.92s best:inf   next:[18,27776000] bool_core num_cores:17 [core:11 mw:1 d:5] assumptions:3961 depth:6 fixed_bools:1/52144
#Bound 538.92s best:inf   next:[19,27776000] bool_core num_cores:18 [core:3 mw:1 d:6] assumptions:3959 depth:6 fixed_bools:1/52150
#Bound 540.14s best:inf   next:[20,27776000] bool_core num_cores:19 [core:13 mw:1 d:2] assumptions:3947 depth:6 fixed_bools:1/52190
#Bound 540.56s best:inf   next:[21,27776000] bool_core num_cores:20 [core:3 mw:1 d:4] assumptions:3945 depth:6 fixed_bools:1/52196
#Bound 540.97s best:inf   next:[22,27776000] bool_core num_cores:21 [core:2 mw:1 d:2] assumptions:3944 depth:6 fixed_bools:1/52199
#Bound 541.43s best:inf   next:[23,27776000] bool_core num_cores:22 [core:3 mw:1 d:1] assumptions:3942 depth:6 fixed_bools:1/52207
#Bound 542.36s best:inf   next:[24,27776000] bool_core num_cores:23 [core:6 mw:1 d:2] assumptions:3937 depth:6 fixed_bools:1/52228
#Bound 543.07s best:inf   next:[25,27776000] bool_core num_cores:24 [core:4 mw:1 d:4] assumptions:3934 depth:6 fixed_bools:1/52237
#Bound 543.60s best:inf   next:[26,27776000] bool_core num_cores:25 [core:3 mw:1 d:2] assumptions:3932 depth:6 fixed_bools:1/52243
#Bound 544.04s best:inf   next:[27,27776000] bool_core num_cores:26 [core:5 mw:1 d:2] assumptions:3928 depth:6 fixed_bools:1/52259
#Bound 545.13s best:inf   next:[28,27776000] bool_core num_cores:27 [core:4 mw:1 d:3] assumptions:3925 depth:6 fixed_bools:1/52280
#Bound 546.08s best:inf   next:[29,27776000] bool_core num_cores:28 [core:7 mw:1 d:4] assumptions:3919 depth:6 fixed_bools:1/52322
#Bound 546.79s best:inf   next:[30,27776000] bool_core num_cores:29 [core:9 mw:1 d:5] assumptions:3911 depth:6 fixed_bools:1/52382
#Bound 549.08s best:inf   next:[31,27776000] bool_core num_cores:30 [core:7 mw:1 d:6] assumptions:3905 depth:6 fixed_bools:1/52400
#Bound 549.93s best:inf   next:[32,27776000] bool_core num_cores:31 [core:4 mw:1 d:3] assumptions:3902 depth:6 fixed_bools:1/52409
#Bound 550.93s best:inf   next:[33,27776000] bool_core num_cores:32 [core:4 mw:1 d:2] assumptions:3899 depth:6 fixed_bools:1/52424
#Bound 551.91s best:inf   next:[34,27776000] bool_core num_cores:33 [core:5 mw:1 d:3] assumptions:3895 depth:6 fixed_bools:1/52448
#Bound 553.00s best:inf   next:[35,27776000] bool_core num_cores:34 [core:5 mw:1 d:4] assumptions:3891 depth:6 fixed_bools:1/52460
#Bound 554.07s best:inf   next:[36,27776000] bool_core num_cores:35 [core:7 mw:1 d:3] assumptions:3885 depth:6 fixed_bools:1/52486
#Bound 555.71s best:inf   next:[37,27776000] bool_core num_cores:36 [core:5 mw:1 d:4] assumptions:3881 depth:6 fixed_bools:1/52498
#Bound 557.48s best:inf   next:[38,27776000] bool_core num_cores:37 [core:17 mw:1 d:3] assumptions:3865 depth:6 fixed_bools:1/52556
#Bound 561.03s best:inf   next:[39,27776000] bool_core num_cores:38 [core:6 mw:1 d:5] assumptions:3860 depth:6 fixed_bools:1/52571
#Bound 562.39s best:inf   next:[40,27776000] bool_core num_cores:39 [core:8 mw:1 d:3] assumptions:3853 depth:6 fixed_bools:1/52602
#Bound 563.99s best:inf   next:[41,27776000] bool_core num_cores:40 [core:6 mw:1 d:4] assumptions:3848 depth:6 fixed_bools:1/52643
#Bound 565.48s best:inf   next:[42,27776000] bool_core num_cores:41 [core:12 mw:1 d:5] assumptions:3837 depth:6 fixed_bools:1/52712
#Bound 567.86s best:inf   next:[43,27776000] bool_core num_cores:42 [core:12 mw:1 d:6] assumptions:3826 depth:7 fixed_bools:1/52803
#Bound 569.98s best:inf   next:[44,27776000] bool_core num_cores:43 [core:7 mw:1 d:7] assumptions:3820 depth:8 fixed_bools:1/52901
#Bound 571.35s best:inf   next:[45,27776000] bool_core num_cores:44 [core:5 mw:1 d:8] assumptions:3816 depth:8 fixed_bools:1/52913
#Bound 572.61s best:inf   next:[46,27776000] bool_core num_cores:45 [core:7 mw:1 d:3] assumptions:3810 depth:8 fixed_bools:1/52939
#Bound 578.53s best:inf   next:[47,27776000] bool_core num_cores:46 [core:44 mw:1 d:4] assumptions:3767 depth:8 fixed_bools:1/53098
#Bound 581.16s best:inf   next:[48,27776000] bool_core num_cores:47 [core:3 mw:1 d:7] assumptions:3765 depth:8 fixed_bools:1/53220
#Bound 583.56s best:inf   next:[49,27776000] bool_core num_cores:48 [core:9 mw:1 d:8] assumptions:3757 depth:8 fixed_bools:1/53244
#Bound 585.99s best:inf   next:[50,27776000] bool_core num_cores:49 [core:22 mw:1 d:4] assumptions:3736 depth:8 fixed_bools:1/53323
#Bound 589.47s best:inf   next:[51,27776000] bool_core num_cores:50 [core:10 mw:1 d:6] assumptions:3727 depth:8 fixed_bools:1/53350
#Bound 592.96s best:inf   next:[52,27776000] bool_core num_cores:51 [core:30 mw:1 d:4] assumptions:3698 depth:8 fixed_bools:1/53455
#Bound 600.23s best:inf   next:[53,27776000] bool_core num_cores:52 [core:32 mw:1 d:6] assumptions:3667 depth:8 fixed_bools:1/53722
#Bound 609.36s best:inf   next:[54,27776000] bool_core num_cores:53 [core:31 mw:1 d:8] assumptions:3637 depth:9 fixed_bools:1/54050
#Bound 618.00s best:inf   next:[55,27776000] bool_core num_cores:54 [core:30 mw:1 d:9] assumptions:3608 depth:10 fixed_bools:1/54479
#Bound 643.78s best:inf   next:[56,27776000] bool_core num_cores:55 [core:75 mw:1 d:10] assumptions:3534 depth:11 fixed_bools:1/55389
#Bound 681.26s best:inf   next:[57,27776000] bool_core num_cores:56 [core:35 mw:1 d:11] assumptions:3500 depth:12 fixed_bools:1/56327
#Bound 705.90s best:inf   next:[58,27776000] bool_core num_cores:57 [core:67 mw:1 d:12] assumptions:3434 depth:13 fixed_bools:1/57525
#Bound 736.67s best:inf   next:[59,27776000] bool_core num_cores:58 [core:74 mw:1 d:13] assumptions:3361 depth:14 fixed_bools:1/58876
#Bound 802.84s best:inf   next:[60,27776000] bool_core num_cores:59 [core:112 mw:1 d:14] assumptions:3250 depth:15 fixed_bools:1/60487
#1     806.46s best:1412848 next:[60,1412847] quick_restart_no_lp fixed_bools:0/59964
Solution 0, time = 808.531031 s, objective = 1412848
#2     814.13s best:1407017 next:[60,1407016] no_lp fixed_bools:0/59964
Solution 1, time = 814.325072 s, objective = 1407017
#Bound 1058.79s best:1407017 next:[61,1407016] bool_core num_cores:60 [core:226 mw:1 d:15] assumptions:3025 depth:16 fixed_bools:1/62662
#3     1153.27s best:1372476 next:[61,1372475] quick_restart fixed_bools:0/59964
Solution 2, time = 1154.871319 s, objective = 1372476
#Bound 1432.91s best:1372476 next:[62,1372475] bool_core num_cores:61 [core:216 mw:1 d:16] assumptions:2810 depth:17 fixed_bools:1/65257

[Done] exited with code=3221226505 in 1890.545 seconds

Laurent Perron

unread,
Aug 30, 2022, 3:49:42 AM8/30/22
to or-tools-discuss
I think you run out of memory.

How much memory do you have on your machine ?
With 16 cores (you are using 12), the process uses ~60GB of memory.

--Laurent 

Laurent Perron | Operations Research | lpe...@google.com | (33) 1 42 68 53 00


Rick Adriaensen

unread,
Aug 30, 2022, 3:57:23 AM8/30/22
to or-tools-discuss
I have 16 GB on my machine, so that could be the issue.

Is there a method to check how much memory a certain model needs?

Thanks.

Laurent Perron

unread,
Aug 30, 2022, 3:59:18 AM8/30/22
to or-tools-discuss
No. This is hard to predict. 
Your problem is quite big.

Laurent Perron | Operations Research | lpe...@google.com | (33) 1 42 68 53 00


Reply all
Reply to author
Forward
0 new messages