def Build_InitialGuessTable(): conn = sqlite3.connect('InitialGuessTable.db') cursor = conn.cursor() key_queue = [(0,i,0,0,0) for i in range(17)] # 数据库中当前已有数据,可以从数据库中读取已有数据 # print(key_queue) items = 17 while len(key_queue)>0: key = key_queue.pop(0) # print(key) init_val = db_query(cursor, key) # print(init_val) nears = neighbors(cursor, key) # 与key的曼哈顿距离为1的点 # print(nears) for (i,j,k,l,m) in nears: bd_con = (i/40, 1+3.0625*j, 6.25*k, l*np.pi/16, m/40) val = TG.optimize(bd_con, init_val) key_val = (i,j,k,l,m, val[0], val[1], val[2]) items += 1 print('Progress: {0:%}, Content: {1}'.format(items/1419857, key_val)) cursor.execute('insert or ignore into InitialGuessTable values (?,?,?,?,?,?,?,?)', key_val) key_queue.append((i,j,k,l,m)) # 数据库操作要注意,插入数据之后要提交才能生效,游标处理要注意 conn.commit() cursor.close() conn.close()
def Build_InitialGuessTable(): conn = sqlite3.connect('InitialGuessTable.db') cursor = conn.cursor() key_queue = [(0,i,0,0,0) for i in range(17)] # current daten in database. can also direct select from database # print(key_queue) items = 17 while len(key_queue)>0: key = key_queue.pop(0) # print(key) init_val = db_query(cursor, key) # print(init_val) nears = neighbors(cursor, key) # select keys whose Manhattan Distance to key equals to 1. # print(nears) for (i,j,k,l,m) in nears: bd_con = (i/40, 1+3.0625*j, 6.25*k, l*np.pi/16, m/40) val = TG.optimize(bd_con, init_val) key_val = (i,j,k,l,m, val[0], val[1], val[2]) items += 1 print('Progress: {0:%}, Content: {1}'.format(items/1419857, key_val)) cursor.execute('insert or ignore into InitialGuessTable values (?,?,?,?,?,?,?,?)', key_val) key_queue.append((i,j,k,l,m)) # conn.commit() cursor.close() conn.close()
def test_select(): bd_con = (3.9/40, 7.1*3.0625+1, 2.1*6.25, 3.9*3.141592654/16, 4.1/40) conn = sqlite3.connect('InitialGuessTable.db') cursor = conn.cursor() initial_guess = TG.select_init_val(cursor, bd_con) print(initial_guess) initial_guess2 = (0.0145, 0.0037, 23.5967) pp = TG.optimize(bd_con, initial_guess2) print(pp)
def test_different_initval(): # conn = sqlite3.connect('InitialGuessTable.db') # cursor = conn.cursor() q0 = (0.,0.,0.,0.07) q1 = (43.21, 10.53, 0.47, -0.03) # init_val = (-0.011680200827827, 0.027105283154636, 45.369339753738281) init_val = (-0.010248903904925, 0.000396612698255, 45.158514552345096) bd_con = (0.07, 43.21, 10.53, 0.47, -0.03) pp = TG.optimize(bd_con, init_val=init_val) print(pp)
def test_optimize(): conn = sqlite3.connect('InitialGuessTable.db') cursor = conn.cursor() bd_con = (-0.01, 70., 30., np.pi/6, 0.01) init_val = (0., 0., 100) # init_val = (-0.0033333333333333335, 0.0033333333333333335, 78.775724936630581) pp1 = TG.optimize(bd_con, init_val=init_val) p1 = (bd_con[0], pp1[0], pp1[1], bd_con[4], pp1[2]) r1 = (TG.__a(p1), TG.__b(p1), TG.__c(p1), TG.__d(p1)) print('p1 = {0}'.format(p1)) # q0 = (0., 0., 0., -0.01) # q1 = (70., 30., np.pi/6., 0.01) # p2, r2 = TG.calc_path(cursor, q0, q1) # print('p2 = {0}'.format(p2)) line1 = TG.spiral3_calc(p1, r=r1, q=(0.,0.,0.)) # line2 = TG.spiral3_calc(p2, r=r2, q=q0) plt.plot(line1[:,1], line1[:,2], color='black', linewidth=4) # plt.plot(line2[:,1], line2[:,2], color='green', linewidth=4) plt.axis('equal') # figManager = plt.get_current_fig_manager() # figManager.window.showMaximized() # plt.savefig('img/coordinate_transform.png',dpi=600) plt.show() cursor.close() conn.close()