nissy-core

The "engine" of nissy, including the H48 optimal solver.
git clone https://git.tronto.net/nissy-core
Download | Log | Files | Refs | README | LICENSE

plot.py (1809B)


      1 import matplotlib.pyplot as plt
      2 
      3 h48 = [
      4 	("H48 h11 k2", 56.1,
      5 		[0.23, 1.15, 5.08, 31.30],
      6 		[0.06, 0.31, 1.31, 7.96],
      7 		[0.02, 0.1, 0.43, 2.48]
      8 	),
      9 	("H48 h10 k2", 28.1,
     10 		[0.34, 1.80, 7.77],
     11 		[0.1, 0.47, 2.00, 13.54],
     12 		[0.03, 0.16, 0.74, 4.43]
     13 	),
     14 	("H48 h9 k2", 14.1,
     15 		[0.42, 2.84, 12.86],
     16 		[0.14, 0.83, 3.82, 25.98],
     17 		[0.04, 0.26, 1.18, 8.31]
     18 	),
     19 	("H48 h8 k2", 7.1,
     20 		[0.86, 6.66, 27.4],
     21 		[0.27, 2.02, 7.94],
     22 		[0.08, 0.6, 2.48]
     23 	),
     24 	("H48 h7 k2", 3.6,
     25 		[1.47, 8.9, 42.46],
     26 		[0.35, 2.59, 12.41],
     27 		[0.11, 0.81, 3.91]
     28 	),
     29 	("H48 h6 k2", 1.8,
     30 		[2.28, 16.89],
     31 		[0.65, 4.79, 23.91],
     32 		[0.21, 1.53, 7.82]
     33 	)
     34 ]
     35 
     36 vcube = [
     37 	("vcube 404", 31.8,
     38 		[0.3, 1.25, 6.87, 57.49],
     39 		[0.1, 0.38, 1.88, 16.98],
     40 		[0.03, 0.16, 0.67, 6.36]
     41 	),
     42 	("vcube 308", 21.2,
     43 		[0.2, 1.11, 6.92],
     44 		[0.06, 0.42, 1.95, 17.73],
     45 		[0.04, 0.26, 1.18, 9.53]
     46 	),
     47 	("vcube 208", 7.3,
     48 		[0.57, 4.41, 20.75],
     49 		[0.17, 1.49, 5.88],
     50 		[0.08, 0.8, 2.38]
     51 	),
     52 	("vcube 112", 2.4,
     53 		[1.01, 9.39],
     54 		[0.29, 3.15, 12.06],
     55 		[0.15, 1.66, 5.18]
     56 	)
     57 ]
     58 
     59 h48_x = [i[1] for i in h48]
     60 vcube_x = [i[1] for i in vcube]
     61 
     62 def getarr(m, t, a):
     63 	return [i[2+t][m-17] for i in a if len(i[2+t]) > m-17]
     64 
     65 def gethv(m, t):
     66 	return getarr(m, t, h48), getarr(m, t, vcube)
     67 
     68 def showplt(plt, title, h48y, vcubey):
     69 	plt.clf()
     70 	plt.title(title)
     71 	plt.xlabel("Table size (GiB)")
     72 	plt.ylabel("Time to solve (s / cube)")
     73 	plt.plot(h48_x[:len(h48y)], h48y, "o--", label = "H48")
     74 	plt.plot(vcube_x[:len(vcubey)], vcubey, "o--", label = "vcube")
     75 	plt.legend(loc = "right")
     76 	filename = title.replace(" ", "").replace(",", "") + ".png"
     77 	plt.savefig("benchmarks/img/" + filename, dpi=300)
     78 	#plt.show()
     79 
     80 for i in range(17, 21):
     81 	for j in range(0, 3):
     82 		title = "{} moves, {} thread{}".format(
     83 			i, 4**j, "s" if j > 0 else "")
     84 		h, v = gethv(i, j)
     85 		showplt(plt, title, h, v)