gtopt::CostHelper class

Handles cost calculations with time discounting for optimization problems.

Provides methods for:

  • Calculating discounted costs for blocks, stages and scenarios
  • Generating cost scaling factors
  • Applying probability and discount factors

Derived classes

class SystemContext

Constructors, destructors, conversion operators

CostHelper(const PlanningOptionsLP& options, const std::vector<ScenarioLP>& scenarios, const std::vector<StageLP>& stages) explicit

Public functions

auto block_discount_icost_factors() const -> const block_factor_matrix_t&
Returns cached discount-only inverse cost factors for blocks.
auto block_ecost(const ScenarioLP& scenario, const StageLP& stage, const BlockLP& block, const double cost) const -> constexpr double noexcept
Calculates the energy cost coefficient for a block.
auto block_icost_factors() const -> const block_factor_matrix_t&
Returns cached inverse cost factors for blocks (1/cost_factor).
auto cost_factor(const double probability, const double discount, const double duration = 1.0) const -> constexpr double noexcept
auto cost_factor(const ScenarioLP& scenario, const StageLP& stage) const -> constexpr double noexcept
auto cost_factor(const ScenarioLP& scenario, const StageLP& stage, const BlockLP& block) const -> constexpr double noexcept
auto cost_factor(const StageLP& stage, double probability = 1.0) const -> constexpr double noexcept
auto scenario_stage_ecost(const ScenarioLP& scenario, const StageLP& stage, const double cost) const -> constexpr double noexcept
Calculates the energy cost coefficient for a scenario-stage pair.
auto scenario_stage_icost_factors() const -> const scenario_stage_factor_matrix_t&
Returns cached inverse cost factors for scenario-stage pairs.
auto stage_ecost(const StageLP& stage, double cost, double probability = 1.0) const -> constexpr double noexcept
Calculates the energy cost coefficient for a stage.
auto stage_icost_factors() const -> const stage_factor_matrix_t&
Returns cached inverse cost factors for stages (1/cost_factor).

Function documentation

const block_factor_matrix_t& gtopt::CostHelper::block_discount_icost_factors() const

Returns cached discount-only inverse cost factors for blocks.

Returns Const reference to cached matrix of discount-only inverse cost factors

Lazily computed on first call, then cached. Formula: scale_objective / discount[t] (same for all s, b in stage t)

constexpr double gtopt::CostHelper::block_ecost(const ScenarioLP& scenario, const StageLP& stage, const BlockLP& block, const double cost) const noexcept

Calculates the energy cost coefficient for a block.

Returns Total energy cost coefficient for LP formulation

Computes the total energy cost for a power variable over a block duration, applying:

  • Scenario probability weighting
  • Stage discount factor
  • Block duration
  • Objective scaling

Formula: cost * probability * discount * duration / scale_objective

const block_factor_matrix_t& gtopt::CostHelper::block_icost_factors() const

Returns cached inverse cost factors for blocks (1/cost_factor).

Returns Const reference to cached matrix of inverse cost factors

Lazily computed on first call, then cached for subsequent accesses. Formula: 1 / (probability * discount * duration / scale_objective)

constexpr double gtopt::CostHelper::scenario_stage_ecost(const ScenarioLP& scenario, const StageLP& stage, const double cost) const noexcept

Calculates the energy cost coefficient for a scenario-stage pair.

Returns Total energy cost coefficient for LP formulation

Computes the total energy cost for a power variable over a stage duration, applying:

  • Scenario probability weighting
  • Stage discount factor
  • Stage duration
  • Objective scaling

Formula: cost * probability * discount * duration / scale_objective

const scenario_stage_factor_matrix_t& gtopt::CostHelper::scenario_stage_icost_factors() const

Returns cached inverse cost factors for scenario-stage pairs.

Returns Const reference to cached matrix of inverse cost factors

Lazily computed on first call, then cached. Formula: 1 / (probability * discount * duration / scale_objective)

constexpr double gtopt::CostHelper::stage_ecost(const StageLP& stage, double cost, double probability = 1.0) const noexcept

Calculates the energy cost coefficient for a stage.

Returns Total energy cost coefficient for LP formulation

Computes the total energy cost for a power variable over a stage duration, applying:

  • Probability weighting (default 1.0)
  • Stage discount factor
  • Stage duration
  • Objective scaling

Formula: cost * probability * discount * duration / scale_objective

const stage_factor_matrix_t& gtopt::CostHelper::stage_icost_factors() const

Returns cached inverse cost factors for stages (1/cost_factor).

Returns Const reference to cached vector of inverse cost factors

Lazily computed on first call (probability = 1.0), then cached. Formula: 1 / (discount * duration / scale_objective)