General Remarks

The following sections provide a detailed account of the validation procedures. Two types of tests are carried out, the first one being fully scoped model tests, while the second tests specific functionalities.

The test cases contain 28 data sets with explanations regarding the desired solution. Every test has specific testing criteria that ensure the model works as desired with respect to specific functionalities. With some abuse of economic syntax, the calculations underlying each case use the notion of marginalized costs. Here, marginalized costs refer to the inclusion of investment costs into marginal costs. While this step is rarely ever plausible and hence likely counterintuitive to many economists, the specific design of test cases allows for this measure and makes for an easier illustration.

An Example

Consider the following simple example: A good is to be provided in a certain period. Ex-ante, there do not exist any production capacities, and all investments have a lifetime such that they remain active only for a single period. It is only rational to invest as much capacity as is needed in the next time period. Hence, investment costs may also be viewed as a special type of operational cost in this case. Considering unit cost, an investment of 5 units of money to provide 5 units of commodity comes down to operational costs of 1 unit of money per 1 unit of commodity. This aggregate of operational and marginalized investment costs is henceforth termed marginalized costs.

Every test case can be run for both, the optimization model formulation and as a complementarity problem. However, tests for the complementarity formulation are only run for variable values (such as quantities or prices). Tests for e.g. the objective value are not run due to a lack of the underlying function. The latter category of functional tests asserts other specific functionalities such as plotting or reporting of results works as desired.

Please see below for a short overview.

Test Case Overview

Test CaseExplanation
Test Case 1Tests inverse demand and cost data.
Test Case 2Tests multiple years with weights and includes conversion costs.
Test Case 3Tests exertion of market power with time step weights.
Test Case 4Tests discounting.
Test Case 5Tests storage and multiple time steps with more low demand weight.
Test Case 6Tests storage and multiple time steps with more high demand weight.
Test Case 7Tests same commodity from different origins.
Test Case 8Tests multiple demand commodities from same flow commodity.
Test Case 9Tests transport mechanisms including losses on arcs with time step weights.
Test Case 10Tests storage losses including multiple time steps.
Test Case 11Tests production capacity expansion, scaling of investment costs and asset lifetimes.
Test Case 12Tests conversion capacity expansion, scaling of investment costs and asset lifetimes.
Test Case 13Tests arc capacity expansion, scaling of investment costs and asset lifetimes.
Test Case 14Tests storage capacity expansion, scaling of investment costs and asset lifetimes.
Test Case 15Tests production capacity expansion limits.
Test Case 16Tests storage capacity expansion limits.
Test Case 17Tests trader sanctions.
Test Case 18Tests market power exertion in foreign markets including arc capacity expansion.
Test Case 19Tests restrictions by origin.
Test Case 20Tests repurposing of conversion facilities, including repurposing factors.
Test Case 21Tests repurposing of transportation arcs, including repurposing factors.
Test Case 22Tests repurposing of storage facilities, including repurposing factors.
Test Case 23Tests piece-wise linear operational cost for input procurement.
Test Case 24Tests demand from multiple blocks.
Test Case 25Tests input investment costs, availabilities and expansion limits.
Test Case 26Tests commodity adjacency structures for both pipeline and shipping.
Test Case 27Tests adjacency structures for arc capacity expansion.
Test Case 28Tests adjacency structures for arc capacity repurposing.

Functionality Tests Overview

Test CaseExplanation
Functionality Test 1Tests correct scaling of operational and investment costs.
Functionality Test 2Tests input parameter exports.
Functionality Test 3Tests that model outputs for the convex optimization problem implementation are stored correctly.
Functionality Test 4Tests that model outputs for the complementarity problem implementation are stored correctly.
Functionality Test 5Tests that map plotting functionality works as expected.