def scaling_query2(tree, w, L):
    eps = 10
    c = 5
    iter = 0
    query = query_init_naive(L, Params.x_min, Params.y_min, Params.x_max,
                             Params.y_max)

    last_est, last_last_est = sys.maxint, sys.maxint
    while True:
        est = tree.rangeCount(query)
        if math.fabs(est - w) <= c:
            break
        else:
            if est == 0:
                scale = random.random() + 0.5
            else:
                scale = math.sqrt(math.fabs((w + 0.0) / est))
            query = resize(query, scale, Params.x_min, Params.y_min,
                           Params.x_max, Params.y_max)
            iter += 1
        if iter >= 10 or math.fabs(est - last_est) < eps or math.fabs(
                est - last_last_est) < eps:
            break

        last_last_est = last_est
        last_est = est
    return query
Esempio n. 2
0
def scaling_query(tree, L, U):
    iter = 0
    query = query_init_naive(L, Params.x_min, Params.y_min, Params.x_max, Params.y_max)

    while True:
        est = tree.rangeCount(query)
        u, dist = utility_naive(query, est, Params.MTD)
        if u >= U:
            break
        else:
            scale = 1.1
            query = resize(query, scale, Params.x_min, Params.y_min, Params.x_max, Params.y_max)
            iter += 1
            if iter >= 50:
                break
    return query
def scaling_query(tree, L, U):
    iter = 0
    query = query_init_naive(L, Params.x_min, Params.y_min, Params.x_max,
                             Params.y_max)

    while True:
        est = tree.rangeCount(query)
        u, dist = utility_naive(query, est, Params.MTD)
        if u >= U:
            break
        else:
            scale = 1.1
            query = resize(query, scale, Params.x_min, Params.y_min,
                           Params.x_max, Params.y_max)
            iter += 1
            if iter >= 50:
                break
    return query
Esempio n. 4
0
def scaling_query2(tree, w, L):
    eps = 10
    c = 5
    iter = 0
    query = query_init_naive(L, Params.x_min, Params.y_min, Params.x_max, Params.y_max)

    last_est, last_last_est = sys.maxint, sys.maxint
    while True:
        est = tree.rangeCount(query)
        if math.fabs(est - w) <= c:
            break
        else:
            if est == 0:
                scale = random.random() + 0.5
            else:
                scale = math.sqrt(math.fabs(( w + 0.0) / est))
            query = resize(query, scale, Params.x_min, Params.y_min, Params.x_max, Params.y_max)
            iter += 1
        if iter >= 10 or math.fabs(est - last_est) < eps or math.fabs(est - last_last_est) < eps:
            break

        last_last_est = last_est
        last_est = est
    return query