def create(m, n, d): Xp = problem_util.normalized_data_matrix(m, d, 1) Xn = problem_util.normalized_data_matrix(n, d, 1) lam = 1 theta = cp.Variable(d) f = ep.infinite_push(theta, Xp, Xn) + lam * cp.sum_squares(theta) f_eval = lambda: f.value return cp.Problem(cp.Minimize(f)), f_eval
def create(m, n, d): Xp = problem_util.normalized_data_matrix(m, d, 1) Xn = problem_util.normalized_data_matrix(n, d, 1) lam = 1 theta = cp.Variable(d) f = ep.infinite_push(theta, Xp, Xn) + lam*cp.sum_squares(theta) f_eval = lambda: f.value return cp.Problem(cp.Minimize(f)), f_eval
def create(**kwargs): # m>k k = kwargs['k'] #class m = kwargs['m'] #instance n = kwargs['n'] #dim p = 5 #p-largest q = 10 X = problem_util.normalized_data_matrix(m,n,1) Y = np.random.randint(0, k-1, (q,m)) Theta = cp.Variable(n,k) t = cp.Variable(q) texp = cp.Variable(m) f = cp.sum_largest(t, p)+cp.sum_entries(texp) + cp.sum_squares(Theta) C = [] C.append(cp.log_sum_exp(X*Theta, axis=1) <= texp) for i in range(q): Yi = one_hot(Y[i], k) C.append(-cp.sum_entries(cp.mul_elemwise(X.T.dot(Yi), Theta)) == t[i]) t_eval = lambda: np.array([ -cp.sum_entries(cp.mul_elemwise(X.T.dot(one_hot(Y[i], k)), Theta)).value for i in range(q)]) f_eval = lambda: cp.sum_largest(t_eval(), p).value \ + cp.sum_entries(cp.log_sum_exp(X*Theta, axis=1)).value \ + cp.sum_squares(Theta).value return cp.Problem(cp.Minimize(f), C), f_val
def create(m, n): mu = 1 rho = 1 sigma = 0.1 A = problem_util.normalized_data_matrix(m, n, mu) x0 = sp.rand(n, 1, rho) x0.data = np.random.randn(x0.nnz) x0 = x0.toarray().ravel() b = np.sign(A.dot(x0) + sigma * np.random.randn(m)) A[b > 0, :] += 0.7 * np.tile([x0], (np.sum(b > 0), 1)) A[b < 0, :] -= 0.7 * np.tile([x0], (np.sum(b < 0), 1)) P = la.block_diag(np.random.randn(n - 1, n - 1), 0) lam = 1 x = cp.Variable(A.shape[1]) # Straightforward formulation w/ no constraints # TODO(mwytock): Fix compiler so this works z0 = 1 - sp.diags([b], [0]) * A * x + cp.norm1(P.T * x) f_eval = lambda: (lam * cp.sum_squares(x) + cp.sum_entries( cp.max_elemwise(z0, 0))).value # Explicit epigraph constraint t = cp.Variable(1) z = 1 - sp.diags([b], [0]) * A * x + t f = lam * cp.sum_squares(x) + cp.sum_entries(cp.max_elemwise(z, 0)) C = [cp.norm1(P.T * x) <= t] return cp.Problem(cp.Minimize(f), C), f_eval
def create(m, n): mu = 1 rho = 1 sigma = 0.1 A = problem_util.normalized_data_matrix(m, n, mu) x0 = sp.rand(n, 1, rho) x0.data = np.random.randn(x0.nnz) x0 = x0.toarray().ravel() b = np.sign(A.dot(x0) + sigma*np.random.randn(m)) A[b>0,:] += 0.7*np.tile([x0], (np.sum(b>0),1)) A[b<0,:] -= 0.7*np.tile([x0], (np.sum(b<0),1)) P = la.block_diag(np.random.randn(n-1,n-1), 0) lam = 1 x = cp.Variable(A.shape[1]) # Straightforward formulation w/ no constraints # TODO(mwytock): Fix compiler so this works z0 = 1 - sp.diags([b],[0])*A*x + cp.norm1(P.T*x) f_eval = lambda: (lam*cp.sum_squares(x) + cp.sum_entries(cp.max_elemwise(z0, 0))).value # Explicit epigraph constraint t = cp.Variable(1) z = 1 - sp.diags([b],[0])*A*x + t f = lam*cp.sum_squares(x) + cp.sum_entries(cp.max_elemwise(z, 0)) C = [cp.norm1(P.T*x) <= t] return cp.Problem(cp.Minimize(f), C), f_eval
def create(**kwargs): # m>k k = kwargs['k'] #class m = kwargs['m'] #instance n = kwargs['n'] #dim p = 5 #p-largest X = problem_util.normalized_data_matrix(m, n, 1) Y = np.random.randint(0, k, m) Theta = cp.Variable(n, k) t = cp.Variable(1) texp = cp.Variable(m) f = t + cp.sum_largest(texp, p) + cp.sum_squares(Theta) C = [] C.append(cp.log_sum_exp(X * Theta, axis=1) <= texp) Yi = one_hot(Y, k) C.append(-cp.sum_entries(cp.mul_elemwise(X.T.dot(Yi), Theta)) == t) t_eval = lambda: \ -cp.sum_entries(cp.mul_elemwise(X.T.dot(one_hot(Y, k)), Theta)).value f_eval = lambda: t_eval() \ + cp.sum_largest(cp.log_sum_exp(X*Theta, axis=1), p).value \ + cp.sum_squares(Theta).value return cp.Problem(cp.Minimize(f), C), f_eval
def create(**kwargs): m = kwargs["m"] n = kwargs["n"] k = 10 A = [problem_util.normalized_data_matrix(m,n,1) for i in range(k)] B = problem_util.normalized_data_matrix(k,n,1) c = np.random.rand(k) x = cp.Variable(n) t = cp.Variable(k) f = cp.max_entries(t+cp.abs(B*x-c)) C = [] for i in range(k): C.append(cp.pnorm(A[i]*x, 2) <= t[i]) t_eval = lambda: np.array([cp.pnorm(A[i]*x, 2).value for i in range(k)]) f_eval = lambda: cp.max_entries(t_eval() + cp.abs(B*x-c)).value return cp.Problem(cp.Minimize(f), C), f_eval
def create(m, ni, K): np.random.seed(0) part = np.random.randint(1, ni, K) n = np.sum(part) p = 0.2 # Each part is pa[i]:pb[i] pb = np.cumsum(part) pa = np.hstack((0, pb[:-1])) x0 = np.zeros(n) for i in xrange(K): if np.random.rand() < p: x0[pa[i]:pb[i]] = np.random.randn(part[i]) A = problem_util.normalized_data_matrix(m, n, 1) b = A.dot(x0) + np.sqrt(0.001) * np.random.randn(m) lam = 0.1 * max(LA.norm(A[:, pa[i]:pb[i]].T.dot(b)) for i in xrange(K)) x = cp.Variable(n) f = (0.5 * cp.sum_squares(A * x - b) + lam * sum(cp.norm2(x[pa[i]:pb[i]]) for i in xrange(K))) return cp.Problem(cp.Minimize(f))
def create(m, ni, K): np.random.seed(0) part = np.random.randint(1, ni, K) n = np.sum(part) p = 0.2 # Each part is pa[i]:pb[i] pb = np.cumsum(part) pa = np.hstack((0, pb[:-1])) x0 = np.zeros(n) for i in xrange(K): if np.random.rand() < p: x0[pa[i]:pb[i]] = np.random.randn(part[i]) A = problem_util.normalized_data_matrix(m, n, 1) b = A.dot(x0) + np.sqrt(0.001)*np.random.randn(m) lam = 0.1*max(LA.norm(A[:,pa[i]:pb[i]].T.dot(b)) for i in xrange(K)) x = cp.Variable(n) f = (0.5*cp.sum_squares(A*x - b) + lam*sum(cp.norm2(x[pa[i]:pb[i]]) for i in xrange(K))) return cp.Problem(cp.Minimize(f))