中间端优化
这里列出的简化方法并不特定于某种类型的求解器。
无论您希望针对的是二次规划求解器还是锥形求解器,这些方法都可以应用。
请在使用这些代码之前,查看我们的免责声明关于Reductions API的内容。
-
class cvxpy.reductions.complex2real.complex2real.Complex2Real(problem=
None)[source]
基础类: Reduction
将复数提升为实数表示。
-
accepts(problem) → None[source]
判断是否接受问题的减少。
- Parameters:
- problem : Problem
要检查的问题。
- Returns:
如果可以应用减少,则为True,否则为False。
- Return type:
布尔
-
apply(problem)[source]
将归约应用于问题并返回等价问题。
- Parameters:
- problem : Problem
将应用归约的问题。
- Returns:
-
-
invert(solution, inverse_data)[源代码]
返回给定inverse_data的原始问题的解决方案。
- Parameters:
- solution : Solution
生成逆数据的问题的解决方案。
- inverse_data
编码原始问题的数据。
- Returns:
原始问题的解决方案。
- Return type:
Solution
-
class cvxpy.reductions.cvx_attr2constr.CvxAttr2Constr(problem=
None, reduce_bounds: bool = False)[source]
基础类: Reduction
将凸变量属性扩展为约束。
-
accepts(problem) → bool[source]
判断是否接受问题的减少。
- Parameters:
- problem : Problem
要检查的问题。
- Returns:
如果可以应用减少,则为True,否则为False。
- Return type:
布尔
-
apply(problem)[源代码]
将归约应用于问题并返回等价问题。
- Parameters:
- problem : Problem
将应用归约的问题。
- Returns:
-
-
invert(solution, inverse_data) → Solution[source]
返回给定inverse_data的原始问题的解决方案。
- Parameters:
- solution : Solution
生成逆数据的问题的解决方案。
- inverse_data
编码原始问题的数据。
- Returns:
原始问题的解决方案。
- Return type:
Solution
-
reduction_attributes() → list[str][source]
返回将被减少的属性。
-
class cvxpy.reductions.dgp2dcp.dgp2dcp.Dgp2Dcp(problem=
None)[source]
基础:Canonicalization
将DGP问题简化为DCP问题。
这种简化方法以DGP问题作为输入,并返回一个等价的DCP问题。因为每个(广义)几何规划都是DGP问题,所以这种简化方法可以用来将几何规划转换为凸形式。
示例
>>> import cvxpy as cp
>>>
>>> x1 = cp.Variable(pos=True)
>>> x2 = cp.Variable(pos=True)
>>> x3 = cp.Variable(pos=True)
>>>
>>> monomial = 3.0 * x_1**0.4 * x_2 ** 0.2 * x_3 ** -1.4
>>> posynomial = monomial + 2.0 * x_1 * x_2
>>> dgp_problem = cp.Problem(cp.Minimize(posynomial), [monomial == 4.0])
>>>
>>> dcp2cone = cvxpy.reductions.Dcp2Cone()
>>> assert not dcp2cone.accepts(dgp_problem)
>>>
>>> gp2dcp = cvxpy.reductions.Dgp2Dcp(dgp_problem)
>>> dcp_problem = gp2dcp.reduce()
>>>
>>> assert dcp2cone.accepts(dcp_problem)
>>> dcp_problem.solve()
>>>
>>> dgp_problem.unpack(gp2dcp.retrieve(dcp_problem.solution))
>>> print(dgp_problem.value)
>>> print(dgp_problem.variables())
-
accepts(problem)[source]
如果问题是DGP,则被接受。
-
apply(problem)[source]
将DGP问题转换为DCP问题。
-
canonicalize_expr(expr: Expression, args: list, canonicalize_params: bool =
True)[source]
规范化一个表达式,相对于规范化的参数。
- Parameters:
- expr: Expression
要规范化的表达式。
- args: list
表达式的参数。
- canonicalize_params: bool =
True 包含参数的常量子树是否应该被规范化?
- Returns:
规范化的表达式,约束条件
-
invert(solution, inverse_data)[source]
返回给定inverse_data的原始问题的解决方案。
- Parameters:
- solution : Solution
生成逆数据的问题的解决方案。
- inverse_data
编码原始问题的数据。
- Returns:
原始问题的解决方案。
- Return type:
Solution
-
class cvxpy.reductions.eval_params.EvalParams(problem=
None)[source]
基础类: Reduction
用它们的常数值替换符号参数。
-
accepts(problem) → bool[source]
判断是否接受问题的减少。
- Parameters:
- problem : Problem
要检查的问题。
- Returns:
如果可以应用减少,则为True,否则为False。
- Return type:
布尔
-
apply(problem)[源代码]
用常量值替换参数。
- Parameters:
- problem : Problem
需要评估参数的问题。
- Returns:
一个新问题,其中参数已被转换为常量。
- Return type:
Problem
- Raises:
ParameterError – 如果 problem 有未指定的参数(即,一个参数的值为 None)。
-
invert(solution, inverse_data)[source]
返回给定inverse_data的原始问题的解决方案。
-
class cvxpy.reductions.flip_objective.FlipObjective(problem=
None)[source]
基础类: Reduction
将最小化目标转换为最大化目标,反之亦然。
-
accepts(problem) → bool[source]
判断是否接受问题的减少。
- Parameters:
- problem : Problem
要检查的问题。
- Returns:
如果可以应用减少,则为True,否则为False。
- Return type:
布尔
-
apply(problem)[source]
\(\max(f(x)) = -\min(-f(x))\)
- Parameters:
- problem : Problem
目标需要翻转的问题。
- Returns:
问题 – 一个目标翻转的问题。
列表 – 反向数据。
-
invert(solution, inverse_data)[source]
将翻转问题的解决方案映射到原始问题的解决方案。
- Parameters:
- solution : Solution
一个解决方案对象。
- inverse_data : list
调用apply返回的逆数据。
- Returns:
原始问题的解决方案。
- Return type:
Solution