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 []
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
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)
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))