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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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()