CP-SAT求解器设置8及以上工作线程时启动求解后立即无响应问题求助
CP-SAT求解器设置8及以上工作线程时启动求解后立即无响应问题求助
最近我碰到了一个棘手的问题:现在所有模型运行时都会出现这个状况,但之前完全没有任何问题。
拿下面的八皇后问题代码举例:
from ortools.sat.python import cp_model from typing import List, Optional from ortools.sat.python import cp_model n = 8 # Board size and number of queens model = cp_model.CpModel() # Create variables - queens[i] represents the column position of queen in row i queens = [model.NewIntVar(0, n - 1, f"queen_{i}") for i in range(n)] # No two queens in same column model.AddAllDifferent(queens) # No two queens in same diagonal for i in range(n): for j in range(i + 1, n): model.Add(queens[i] - queens[j] != i - j) model.Add(queens[i] - queens[j] != j - i) # Solve solver = cp_model.CpSolver() solver.parameters.max_time_in_seconds = 10 solver.parameters.log_search_progress = True solver.parameters.num_search_workers = 8 status = solver.Solve(model)
这段代码在启动求解后就会无限期卡住,输出内容如下:
Starting CP-SAT solver v9.11.4210 Parameters: max_time_in_seconds: 10 log_search_progress: true num_search_workers: 8 Initial satisfaction model '': (model_fingerprint: 0x6856406a4ac1332d) #Variables: 8 - 8 in [0,7] #kAllDiff: 1 #kLinear2: 56 (#complex_domain: 56) Starting presolve at 0.00s 1.10e-05s 0.00e+00d [DetectDominanceRelations] 1.49e-04s 0.00e+00d [PresolveToFixPoint] #num_loops=2 #num_dual_strengthening=1 2.00e-06s 0.00e+00d [ExtractEncodingFromLinear] [Symmetry] Graph for symmetry has 552 nodes and 944 arcs. [Symmetry] Symmetry computation done. time: 0.000165 dtime: 0.00029732 [Symmetry] #generators: 1, average support size: 72 [Symmetry] 36 orbits with sizes: 2,2,2,2,2,2,2,2,2,2,... [Symmetry] Num fixable by intersecting at_most_one with orbits: 4 largest_orbit: 2 [SAT presolve] num removable Booleans: 0 / 64 [SAT presolve] num trivial clauses: 0 [SAT presolve] [0s] clauses:252 literals:504 vars:60 one_side_vars:60 simple_definition:0 singleton_clauses:0 [SAT presolve] [1.3e-05s] clauses:252 literals:504 vars:60 one_side_vars:60 simple_definition:0 singleton_clauses:0 [SAT presolve] [2e-05s] clauses:252 literals:504 vars:60 one_side_vars:60 simple_definition:0 singleton_clauses:0 ... #2 0.00s default_lp (fixed_bools=0/60) #3 0.00s quick_restart (fixed_bools=0/60) #4 0.00s quick_restart_no_lp (fixed_bools=0/60) #Model 0.11s var:59/60 constraints:114/114
但只要我把num_search_workers设置为8以下的任何数值,问题就消失了,代码能正常完成求解。
有没有人遇到过类似的情况呀?
备注:内容来源于stack exchange,提问作者Jonah Adler
相关产品推荐
相关产品推荐

