Nothing
#####
## DO NOT EDIT THIS FILE!! EDIT THE SOURCE INSTEAD: rsrc_tree/reductions/utilities.R
#####
## CVXPY SOURCE: reductions/utilities.py
## Utility functions for constraint lowering and grouping
# -- group_constraints ---------------------------------------------
## CVXPY SOURCE: utilities.py lines 68-84
## Group constraints by class name into a named list.
group_constraints <- function(constraints) {
## Named list of S7 class objects -- filter constraints by type
cone_types <- list(Zero = Zero, NonNeg = NonNeg, SOC = SOC,
PSD = PSD, ExpCone = ExpCone,
PowCone3D = PowCone3D, PowConeND = PowConeND)
result <- lapply(cone_types, function(cls) {
Filter(function(con) S7_inherits(con, cls), constraints)
})
result
}
# -- lower_equality ------------------------------------------------
## CVXPY SOURCE: utilities.py lines 42-45
## Equality(lhs, rhs) -> Zero(lhs - rhs)
## Our Equality stores .expr = lhs - rhs, args = list(lhs, rhs)
lower_equality <- function(equality) {
Zero(equality@args[[1L]] - equality@args[[2L]], constr_id = equality@id)
}
# -- lower_ineq_to_nonneg -----------------------------------------
## CVXPY SOURCE: utilities.py lines 36-39
## Inequality(lhs, rhs) means lhs <= rhs -> NonNeg(rhs - lhs)
## Our Inequality stores args = list(lhs, rhs)
lower_ineq_to_nonneg <- function(inequality) {
NonNeg(inequality@args[[2L]] - inequality@args[[1L]],
constr_id = inequality@id)
}
# -- nonpos2nonneg -------------------------------------------------
## CVXPY SOURCE: utilities.py lines 48-49
## NonPos(expr) -> NonNeg(-expr)
nonpos2nonneg <- function(nonpos) {
NonNeg(-(nonpos@args[[1L]]), constr_id = nonpos@id)
}
# -- are_args_affine -----------------------------------------------
## CVXPY SOURCE: utilities.py lines 63-65
are_args_affine <- function(constraints) {
all(vapply(constraints, function(c) .all_args(c, is_affine), logical(1L)))
}
# -- convex_attributes ---------------------------------------------
## CVXPY SOURCE: cvx_attr2constr.py lines 31-66
## Returns a character vector of the convex attributes present in variables.
CONVEX_ATTRIBUTES <- c("nonneg", "nonpos", "pos", "neg", "symmetric",
"diag", "PSD", "NSD", "bounds", "sparsity")
SYMMETRIC_ATTRIBUTES <- c("symmetric", "PSD", "NSD")
convex_attributes <- function(variables) {
attrs <- character(0)
for (attr_name in CONVEX_ATTRIBUTES) {
for (v in variables) {
val <- v@attributes[[attr_name]]
if (!is.null(val) && !identical(val, FALSE)) {
attrs <- c(attrs, attr_name)
break
}
}
}
attrs
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.