optimization_variables#

property BudgetOptimizer.optimization_variables: OptimizationVariables[source]#

The decision vector’s variables: media, plus any optimizable_vars.

Exposed so a custom Constraint can reach a variable’s segment of the flat vector, which is what constraining anything other than the media budgets requires. For example, capping the total of a lever named promo_data:

Constraint(
    key="max_total_discount",
    constraint_type="ineq",
    constraint_fun=lambda budgets, total, opt: (
        1.0 - opt.optimization_variables.variable_slice("promo_data").sum()
    ),
)