You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:54:27