.. index:: single: constrained_optimization_solver .. _constrained_optimization_solver/0: .. rst-class:: right **category** ``constrained_optimization_solver`` =================================== Shared numeric, objective-direction, and validation predicates for constrained optimization solvers and their internal problem wrappers. | **Availability:** | ``logtalk_load(constrained_optimization(loader))`` | **Author:** Paulo Moura | **Version:** 1:0:0 | **Date:** 2026-09-04 | **Compilation flags:** | ``static`` | **Uses:** | :ref:`list ` | **Remarks:** | (none) | **Inherited public predicates:** | (none) .. contents:: :local: :backlinks: top Public predicates ----------------- (no local declarations; see entity ancestors if any) Protected predicates -------------------- .. index:: abs_max/2 .. _constrained_optimization_solver/0::abs_max/2: ``abs_max/2`` ^^^^^^^^^^^^^ Infinity norm: max_i abs(Vec_i), 0.0 for an empty vector. | **Compilation flags:** | ``static`` | **Template:** | ``abs_max(Vec,Max)`` | **Mode and number of proofs:** | ``abs_max(+list(number),-number)`` - ``one`` ------------ .. index:: positive_max/2 .. _constrained_optimization_solver/0::positive_max/2: ``positive_max/2`` ^^^^^^^^^^^^^^^^^^ Infinity norm of the positive part: max_i max(0, Vec_i), 0.0 for an empty vector. | **Compilation flags:** | ``static`` | **Template:** | ``positive_max(Vec,Max)`` | **Mode and number of proofs:** | ``positive_max(+list(number),-number)`` - ``one`` ------------ .. index:: direction_sign/2 .. _constrained_optimization_solver/0::direction_sign/2: ``direction_sign/2`` ^^^^^^^^^^^^^^^^^^^^ Converts an objective direction into its numeric sign. | **Compilation flags:** | ``static`` | **Template:** | ``direction_sign(Direction,Sign)`` | **Mode and number of proofs:** | ``direction_sign(+atom,-number)`` - ``one`` ------------ .. index:: objective_direction/2 .. _constrained_optimization_solver/0::objective_direction/2: ``objective_direction/2`` ^^^^^^^^^^^^^^^^^^^^^^^^^ Converts an objective numeric sign into its direction. | **Compilation flags:** | ``static`` | **Template:** | ``objective_direction(Sign,Direction)`` | **Mode and number of proofs:** | ``objective_direction(+number,-atom)`` - ``one`` ------------ .. index:: build_inner/3 .. _constrained_optimization_solver/0::build_inner/3: ``build_inner/3`` ^^^^^^^^^^^^^^^^^ Constructs a parametric inner solver object from its class atom and problem object. | **Compilation flags:** | ``static`` | **Template:** | ``build_inner(InnerSolver,Problem,Solver)`` | **Mode and number of proofs:** | ``build_inner(+atom,+nonvar,-nonvar)`` - ``one`` ------------ .. index:: update_penalty/6 .. _constrained_optimization_solver/0::update_penalty/6: ``update_penalty/6`` ^^^^^^^^^^^^^^^^^^^^ Scales a penalty when the constraint violation does not decrease by the required factor. | **Compilation flags:** | ``static`` | **Template:** | ``update_penalty(OldViolation,NewViolation,RequiredDecrease,OldPenalty,Scale,NewPenalty)`` | **Mode and number of proofs:** | ``update_penalty(+number,+number,+number,+number,+number,-number)`` - ``one`` ------------ .. index:: abs_sum/2 .. _constrained_optimization_solver/0::abs_sum/2: ``abs_sum/2`` ^^^^^^^^^^^^^ Computes the sum of the absolute values of a numeric list. | **Compilation flags:** | ``static`` | **Template:** | ``abs_sum(Values,Sum)`` | **Mode and number of proofs:** | ``abs_sum(+list(number),-number)`` - ``one`` ------------ .. index:: validate_numeric_vector/2 .. _constrained_optimization_solver/0::validate_numeric_vector/2: ``validate_numeric_vector/2`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Checks that a vector is a list of numbers. | **Compilation flags:** | ``static`` | **Template:** | ``validate_numeric_vector(Vector,Domain)`` | **Mode and number of proofs:** | ``validate_numeric_vector(+list,+atom)`` - ``one_or_error`` | **Exceptions:** | ``Vector`` is not a numeric vector: | ``domain_error(Domain,Vector)`` ------------ .. index:: validate_constraint_data/4 .. _constrained_optimization_solver/0::validate_constraint_data/4: ``validate_constraint_data/4`` ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Checks that constraint values are numeric and that the Jacobian has one numeric row per constraint and one column per point component. | **Compilation flags:** | ``static`` | **Template:** | ``validate_constraint_data(Point,Values,Jacobian,Domain)`` | **Mode and number of proofs:** | ``validate_constraint_data(+list(number),+list,+list,+atom)`` - ``one_or_error`` | **Exceptions:** | ``Values`` is not a numeric vector: | ``domain_error(Domain,Values)`` | ``Jacobian`` does not have one numeric row per constraint and one column per point component: | ``domain_error(Domain,Jacobian)`` ------------ Private predicates ------------------ (no local declarations; see entity ancestors if any) Operators --------- (none)