本文整理汇总了Python中cvxpy.Parameter方法的典型用法代码示例。如果您正苦于以下问题:Python cvxpy.Parameter方法的具体用法?Python cvxpy.Parameter怎么用?Python cvxpy.Parameter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类cvxpy
的用法示例。
在下文中一共展示了cvxpy.Parameter方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: set_parameters
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def set_parameters(self, **kwargs):
"""
All parameters have to be filled before calling solve().
Takes the following arguments as keywords:
A_bar
B_bar
C_bar
S_bar
z_bar
X_last
U_last
sigma_last
E
weight_sigma
weight_nu
radius_trust_region
"""
for key in kwargs:
if key in self.par:
self.par[key].value = kwargs[key]
else:
print(f'Parameter \'{key}\' does not exist.')
示例2: ball_con
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def ball_con():
# print(f'--- {sys._getframe().f_code.co_name} ---')
print('ball con')
npr.seed(0)
n = 2
A = cp.Parameter((n, n))
z = cp.Parameter(n)
p = cp.Parameter(n)
x = cp.Variable(n)
t = cp.Variable(n)
obj = cp.Minimize(0.5 * cp.sum_squares(x - p))
# TODO automate introduction of variables.
cons = [0.5 * cp.sum_squares(A * t) <= 1, t == (x - z)]
prob = cp.Problem(obj, cons)
L = npr.randn(n, n)
A.value = L.T
z.value = npr.randn(n)
p.value = npr.randn(n)
prob.solve(solver=cp.SCS)
print(x.value)
示例3: relu
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def relu():
# print(f'--- {sys._getframe().f_code.co_name} ---')
print('relu')
npr.seed(0)
n = 4
_x = cp.Parameter(n)
_y = cp.Variable(n)
obj = cp.Minimize(cp.sum_squares(_y - _x))
cons = [_y >= 0]
prob = cp.Problem(obj, cons)
_x.value = npr.randn(n)
prob.solve(solver=cp.SCS)
print(_y.value)
示例4: running_example
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def running_example():
print("running example")
m = 20
n = 10
x = cp.Variable((n, 1))
F = cp.Parameter((m, n))
g = cp.Parameter((m, 1))
lambd = cp.Parameter((1, 1), nonneg=True)
objective_fn = cp.norm(F @ x - g) + lambd * cp.norm(x)
constraints = [x >= 0]
problem = cp.Problem(cp.Minimize(objective_fn), constraints)
assert problem.is_dcp()
assert problem.is_dpp()
print("is_dpp: ", problem.is_dpp())
F_t = torch.randn(m, n, requires_grad=True)
g_t = torch.randn(m, 1, requires_grad=True)
lambd_t = torch.rand(1, 1, requires_grad=True)
layer = CvxpyLayer(problem, parameters=[F, g, lambd], variables=[x])
x_star, = layer(F_t, g_t, lambd_t)
x_star.sum().backward()
print("F_t grad: ", F_t.grad)
print("g_t grad: ", g_t.grad)
示例5: __call__
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def __call__(self, *parameters, solver_args={}):
"""Solve problem (or a batch of problems) corresponding to `parameters`
Args:
parameters: a sequence of tf.Tensors; the n-th Tensor specifies
the value for the n-th CVXPY Parameter. These Tensors
can be batched: if a Tensor has 3 dimensions, then its
first dimension is interpreted as the batch size.
solver_args: a dict of optional arguments, to send to `diffcp`. Keys
should be the names of keyword arguments.
Returns:
a list of optimal variable values, one for each CVXPY Variable
supplied to the constructor.
"""
if len(parameters) != len(self.params):
raise ValueError('A tensor must be provided for each CVXPY '
'parameter; received %d tensors, expected %d' % (
len(parameters), len(self.params)))
compute = tf.custom_gradient(
lambda *parameters: self._compute(parameters, solver_args))
return compute(*parameters)
示例6: test_lml
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def test_lml(self):
tf.random.set_seed(0)
k = 2
x = cp.Parameter(4)
y = cp.Variable(4)
obj = -x * y - cp.sum(cp.entr(y)) - cp.sum(cp.entr(1. - y))
cons = [cp.sum(y) == k]
problem = cp.Problem(cp.Minimize(obj), cons)
lml = CvxpyLayer(problem, [x], [y])
x_tf = tf.Variable([1., -1., -1., -1.], dtype=tf.float64)
with tf.GradientTape() as tape:
y_opt = lml(x_tf, solver_args={'eps': 1e-10})[0]
loss = -tf.math.log(y_opt[1])
def f():
problem.solve(solver=cp.SCS, eps=1e-10)
return -np.log(y.value[1])
grad = tape.gradient(loss, [x_tf])
numgrad = numerical_grad(f, [x], [x_tf])
np.testing.assert_almost_equal(grad, numgrad, decimal=3)
示例7: test_example
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def test_example(self):
n, m = 2, 3
x = cp.Variable(n)
A = cp.Parameter((m, n))
b = cp.Parameter(m)
constraints = [x >= 0]
objective = cp.Minimize(0.5 * cp.pnorm(A @ x - b, p=1))
problem = cp.Problem(objective, constraints)
assert problem.is_dpp()
cvxpylayer = CvxpyLayer(problem, parameters=[A, b], variables=[x])
A_tch = torch.randn(m, n, requires_grad=True)
b_tch = torch.randn(m, requires_grad=True)
# solve the problem
solution, = cvxpylayer(A_tch, b_tch)
# compute the gradient of the sum of the solution with respect to A, b
solution.sum().backward()
示例8: test_simple_batch_socp
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def test_simple_batch_socp(self):
set_seed(243)
n = 5
m = 1
batch_size = 4
P_sqrt = cp.Parameter((n, n), name='P_sqrt')
q = cp.Parameter((n, 1), name='q')
A = cp.Parameter((m, n), name='A')
b = cp.Parameter((m, 1), name='b')
x = cp.Variable((n, 1), name='x')
objective = 0.5 * cp.sum_squares(P_sqrt @ x) + q.T @ x
constraints = [A@x == b, cp.norm(x) <= 1]
prob = cp.Problem(cp.Minimize(objective), constraints)
prob_tch = CvxpyLayer(prob, [P_sqrt, q, A, b], [x])
P_sqrt_tch = torch.randn(batch_size, n, n, requires_grad=True)
q_tch = torch.randn(batch_size, n, 1, requires_grad=True)
A_tch = torch.randn(batch_size, m, n, requires_grad=True)
b_tch = torch.randn(batch_size, m, 1, requires_grad=True)
torch.autograd.gradcheck(prob_tch, (P_sqrt_tch, q_tch, A_tch, b_tch))
示例9: test_shared_parameter
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def test_shared_parameter(self):
set_seed(243)
m, n = 10, 5
A = cp.Parameter((m, n))
x = cp.Variable(n)
b1 = np.random.randn(m)
b2 = np.random.randn(m)
prob1 = cp.Problem(cp.Minimize(cp.sum_squares(A @ x - b1)))
layer1 = CvxpyLayer(prob1, parameters=[A], variables=[x])
prob2 = cp.Problem(cp.Minimize(cp.sum_squares(A @ x - b2)))
layer2 = CvxpyLayer(prob2, parameters=[A], variables=[x])
A_tch = torch.randn(m, n, requires_grad=True)
solver_args = {
"eps": 1e-10,
"acceleration_lookback": 0,
"max_iters": 10000
}
torch.autograd.gradcheck(lambda A: torch.cat(
[layer1(A, solver_args=solver_args)[0],
layer2(A, solver_args=solver_args)[0]]), (A_tch,))
示例10: __init__
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def __init__(self, m, k, n, complex=False):
if not cvx_available:
raise RuntimeError('Cannot initialize when cvxpy is not available.')
# Initialize parameters and variables
A = cvx.Parameter((m, k), complex=complex)
B = cvx.Parameter((m, n), complex=complex)
l = cvx.Parameter(nonneg=True)
X = cvx.Variable((k, n), complex=complex)
# Create the problem
# CVXPY issue:
# cvx.norm does not work if axis is not 0.
# Workaround:
# use cvx.norm(X.T, 2, axis=0) instead of cvx.norm(X, 2, axis=1)
obj_func = 0.5 * cvx.norm(cvx.matmul(A, X) - B, 'fro')**2 + \
l * cvx.sum(cvx.norm(X.T, 2, axis=0))
self._problem = cvx.Problem(cvx.Minimize(obj_func))
self._A = A
self._B = B
self._l = l
self._X = X
示例11: _generate_cvxpy_problem
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def _generate_cvxpy_problem(self):
'''
Generate QP problem
'''
x = cvxpy.Variable(self.n)
y = cvxpy.Variable(self.m)
t = cvxpy.Variable(self.n)
# Create parameeter and assign value
lambda_cvxpy = cvxpy.Parameter()
lambda_cvxpy.value = self.lambda_param
objective = cvxpy.Minimize(cvxpy.quad_form(y, spa.eye(self.m))
+ self.lambda_param * (np.ones(self.n) * t))
constraints = [y == self.Ad * x - self.bd,
-t <= x, x <= t]
problem = cvxpy.Problem(objective, constraints)
return problem, (x, y, t), lambda_cvxpy
示例12: _generate_cvxpy_problem
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def _generate_cvxpy_problem(self):
'''
Generate QP problem
'''
x = cvxpy.Variable(self.n)
y = cvxpy.Variable(self.k)
# Create parameters m
mu = cvxpy.Parameter(self.n)
mu.value = self.mu
objective = cvxpy.Minimize(cvxpy.quad_form(x, self.D) +
cvxpy.quad_form(y, spa.eye(self.k)) +
- 1 / self.gamma * (mu.T * x))
constraints = [np.ones(self.n) * x == 1,
self.F.T * x == y,
0 <= x, x <= 1]
problem = cvxpy.Problem(objective, constraints)
return problem, mu
示例13: __init__
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def __init__(self, rows, cols, *args, **kwargs):
super(NonCvxVariable, self).__init__((rows, cols,), *args, **kwargs)
self.noncvx = True
self.z = cvxpy.Parameter(self.shape)
self.u = cvxpy.Parameter(self.shape)
self.u.value = np.zeros(self.shape)
示例14: set_parameters
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def set_parameters(self, **kwargs):
"""
All parameters have to be filled before calling solve().
"""
for key in kwargs:
if key in self.par:
self.par[key].value = kwargs[key]
else:
print(f'Parameter \'{key}\' does not exist.')
示例15: print_available_parameters
# 需要导入模块: import cvxpy [as 别名]
# 或者: from cvxpy import Parameter [as 别名]
def print_available_parameters(self):
print('Parameter names:')
for key in self.par:
print(f'\t {key}')
print('\n')