示例#1
0
def represent(id):
    data = prefutils.data_from_id(id)
    bin_array = prefutils.data_to_bin_array(data, dim)


    #print(bin_array)

    constraints = []

    for i in range(2**dim - 1):
        constraints.append([y-x for x,y in zip(bin_array[i],bin_array[i+1])])
        #constraints.append(data[i]- data[i+1])

    #print(constraints)

    b = [-1] * (2**dim -1)

    c = [1] * dim


    res = linprog(c, constraints, b) #, options={"disp": True})

    #print(res)

    if res['success']:
        return res['x']
    else:
        return []
示例#2
0
def get_csp_bin_from_top(top_tuple, dim):
    #top = [t for t in top_tuple]

    if top_tuple in csp_bin_dict:
        bin_data = csp_bin_dict[top_tuple]
    else:
        data = prefutils.data_from_top_half(top_tuple)
        bin_data = prefutils.data_to_bin_array(data, dim - 1)

        csp_bin_dict[top_tuple] = bin_data

    return bin_data
示例#3
0
def generate_address(data, dim):

    parent_list = []

    data_bin = prefutils.data_to_bin_array(data, dim)

    for idx in range(0, dim):
        # print('\t handling idx', idx)

        mask_row_idx_list = []
        for i, d in enumerate(data_bin):
            if d[idx] == 0:
                mask_row_idx_list.append(i)

        data_array = np.array(data_bin)

        m = np.zeros_like(data_array)
        m[mask_row_idx_list, 0] = 1

        masked_array1 = np.ma.masked_array(data_array, m)
        c_array1 = np.ma.compress_rows(masked_array1)

        m2 = np.zeros_like(c_array1)
        m2[0, idx] = 1

        ma2 = np.ma.masked_array(c_array1, m2)
        ca2 = np.ma.compress_cols(ma2)

        parent_data = [prefutils.bin_array_to_decimal(x) for x in ca2]

        parent_list.append((parent_data))

    # print(parent_list)

    address = [
        idnum_for_tuple(prefutils.tuple_from_data(p), dim - 1)
        for p in parent_list
    ]

    if data[2**(dim - 1) - 1] < 2**(dim - 1):
        address.append(0)
    else:
        address.append(1)

    return tuple(address)
示例#4
0
import prefutils

### some simple code to investigate Kristin's ideas about
### going directly from words to CSPs

dim = 5

id = '31-30-29-28-27-23-26-22-25-15-21-24-14-20-19-13'

name = '(BBBB-BBBB-BBBB-BBBB-BBBB-)-'

data = prefutils.data_from_id(id)
bin_array = prefutils.data_to_bin_array(data, dim)

print(data)
print(name)

for i, a in enumerate(bin_array):
    aa = [str(x) for x in a]
    print(i, '\t', ','.join(aa))