|
Janus 2.0.0
High-performance C++20 dual-mode numerical framework
|
Symbolic automatic differentiation (Jacobian, gradient, Hessian, sensitivity analysis). More...
#include "janus/core/Function.hpp"#include "janus/core/JanusConcepts.hpp"#include "janus/core/JanusTypes.hpp"#include "janus/core/Sparsity.hpp"#include <string>#include <vector>

Go to the source code of this file.
Classes | |
| struct | janus::SensitivitySwitchOptions |
| Heuristics controlling automatic forward-vs-adjoint selection. More... | |
| struct | janus::SensitivityRecommendation |
| Result of Janus sensitivity regime selection. More... | |
Namespaces | |
| namespace | janus |
| namespace | janus::detail |
| Smooth approximation of ReLU function: softplus(x) = (1/beta) * log(1 + exp(beta * x)). | |
Enumerations | |
| enum class | janus::SensitivityRegime { janus::Forward , janus::Adjoint , janus::CheckpointedAdjoint } |
| Sensitivity regime selected for a Jacobian-like derivative workload. More... | |
| enum class | janus::CheckpointInterpolation { janus::None , janus::Hermite , janus::Polynomial } |
| Checkpoint interpolation recommendation for long-horizon adjoints. More... | |
Functions | |
| template<typename Expr, typename... Vars> | |
| auto | janus::jacobian (const Expr &expression, const Vars &...variables) |
| Computes Jacobian of an expression with respect to variables. | |
| int | janus::detail::input_numel (const Function &fn, int input_idx) |
| int | janus::detail::output_numel (const Function &fn, int output_idx) |
| void | janus::detail::validate_scalar_output (const Function &fn, int output_idx, const std::string &context) |
| void | janus::detail::validate_same_shape (const casadi::MX &lhs, const casadi::MX &rhs, const std::string &context, const std::string &rhs_name) |
| std::vector< casadi::MX > | janus::detail::symbolic_inputs_like (const Function &fn) |
| casadi::MX | janus::detail::make_zero_seed (int rows, int cols, int directions) |
| casadi::MX | janus::detail::make_basis_seed (int rows, int cols) |
| casadi::MX | janus::detail::stacked_blocks_to_columns (const casadi::MX &stacked, int block_rows, int block_cols, int n_blocks) |
| std::string | janus::detail::sensitivity_function_name (const Function &fn, const std::string &suffix, int output_idx, int input_idx) |
| std::string | janus::detail::lagrangian_function_name (const Function &fn, const std::string &suffix, int objective_output_idx, int constraint_output_idx, int input_idx) |
| void | janus::detail::validate_scalar_expression (const casadi::MX &expr, const std::string &context, const std::string &name) |
| casadi::MX | janus::detail::lagrangian_scalar (const SymbolicArg &objective, const SymbolicArg &constraints, const SymbolicArg &multipliers, const std::string &context) |
| casadi::MX | janus::detail::forward_block_jacobian (const Function &fn, int output_idx, int input_idx) |
| casadi::MX | janus::detail::reverse_block_jacobian (const Function &fn, int output_idx, int input_idx) |
| SensitivityRecommendation | janus::select_sensitivity_regime (int parameter_count, int output_count, int horizon_length=1, bool stiff=false, const SensitivitySwitchOptions &opts=SensitivitySwitchOptions()) |
| Recommend a sensitivity regime from parameter/output counts. | |
| SensitivityRecommendation | janus::select_sensitivity_regime (const Function &fn, int output_idx=0, int input_idx=0, int horizon_length=1, bool stiff=false, const SensitivitySwitchOptions &opts=SensitivitySwitchOptions()) |
| Recommend a sensitivity regime for a selected janus::Function block. | |
| Function | janus::sensitivity_jacobian (const Function &fn, int output_idx=0, int input_idx=0, int horizon_length=1, bool stiff=false, const SensitivitySwitchOptions &opts=SensitivitySwitchOptions()) |
| Build a Jacobian function for one output/input block using the recommended regime. | |
| auto | janus::jacobian (const std::vector< SymbolicArg > &expressions, const std::vector< SymbolicArg > &variables) |
| Computes Jacobian with vector arguments (expressions and variables). | |
| SymbolicVector | janus::sym_gradient (const SymbolicArg &expr, const SymbolicArg &vars) |
| Symbolic gradient (for scalar-output functions). | |
| SymbolicMatrix | janus::hessian (const SymbolicArg &expr, const SymbolicArg &vars) |
| Hessian matrix (second-order derivatives). | |
| SymbolicMatrix | janus::hessian_lagrangian (const SymbolicArg &objective, const SymbolicArg &constraints, const SymbolicArg &vars, const SymbolicArg &multipliers) |
| Hessian of Lagrangian for constrained optimization. | |
| SymbolicMatrix | janus::hessian_vector_product (const SymbolicArg &expr, const SymbolicArg &vars, const SymbolicArg &direction) |
| Hessian-vector product for a scalar expression without forming the dense Hessian. | |
| SymbolicMatrix | janus::lagrangian_hessian_vector_product (const SymbolicArg &objective, const SymbolicArg &constraints, const SymbolicArg &vars, const SymbolicArg &multipliers, const SymbolicArg &direction) |
| Hessian-vector product of a Lagrangian, i.e. a second-order adjoint action. | |
| Function | janus::hessian_vector_product (const Function &fn, int output_idx=0, int input_idx=0) |
| Build a matrix-free Hessian-vector product function for one scalar output/input block. | |
| Function | janus::lagrangian_hessian_vector_product (const Function &fn, int objective_output_idx, int constraint_output_idx, int input_idx=0) |
| Build a Lagrangian Hessian-vector product function for optimization workflows. | |
| SymbolicVector | janus::sym_gradient (const SymbolicArg &expr, const std::vector< SymbolicArg > &vars) |
| Symbolic gradient with vector of variables. | |
| SymbolicMatrix | janus::hessian (const SymbolicArg &expr, const std::vector< SymbolicArg > &vars) |
| Hessian with vector of variables. | |
| SymbolicMatrix | janus::hessian_lagrangian (const SymbolicArg &objective, const SymbolicArg &constraints, const std::vector< SymbolicArg > &vars, const SymbolicArg &multipliers) |
| Hessian of Lagrangian with vector inputs. | |
| SymbolicMatrix | janus::hessian_vector_product (const SymbolicArg &expr, const std::vector< SymbolicArg > &vars, const SymbolicArg &direction) |
| Hessian-vector product with vector of variables. | |
| SymbolicMatrix | janus::lagrangian_hessian_vector_product (const SymbolicArg &objective, const SymbolicArg &constraints, const std::vector< SymbolicArg > &vars, const SymbolicArg &multipliers, const SymbolicArg &direction) |
| Lagrangian Hessian-vector product with vector of variables. | |
Symbolic automatic differentiation (Jacobian, gradient, Hessian, sensitivity analysis).