Markup#

Markup pricing implementation.

API path: apem.unit_based_model.pricing.algorithms.markup

class Markup[source]#

Bases: PricingAlgorithm

Implementation of Markup Pricing.

This pricing method is currently supported only for the unit-based IEEE_RTS, PJM, and ARPA datasets, since only these have buyers’ valuations.

compute_prices(scenario, configuration, file_prices=None, alpha=0)[source]#

Compute prices and a feasible allocation using a two-stage markup procedure.

Stages:

  • Stage 1 (price computation): scale buyer valuation blocks by 1 / (1 + alpha), solve a relaxed DCOPF, and extract nodal prices from the relaxed run.

  • Stage 2 (feasibility search): try several commitment thresholds on first-stage unit commitment, re-solve the non-relaxed problem for each threshold, and return the best feasible allocation by welfare together with stage-1 prices.

Reference: Solving large-scale electricity market pricing problems in polynomial time (https://www.sciencedirect.com/science/article/pii/S0377221724003576).

Parameters:
  • scenario (Scenario) – scenario for which prices are computed

  • configuration (SolverConfiguration) – configuration object containing model/solver parameters

  • file_prices (str | None) – base output path used to derive intermediate result files

  • alpha (float | None) – valuation markdown parameter used in stage 1

Returns:

tuple (Allocation, Pricing) if a feasible second-stage solution is found, otherwise Error

Return type:

Tuple[Allocation, Pricing] | Error