Skip to content

"Full cost" method cannot use shadow prices as input #1128

@ahawkes

Description

@ahawkes

Describe the bug

When commodities are "full cost" priced, at present we calculate prices as described here https://energysystemsmodellinglab.github.io/MUSE2/api/muse2/simulation/prices/fn.calculate_full_cost_prices.html

The calculation relies on the input commodities' shadow price. This can result in a "full cost" commodity down stream of another "full cost" commodity having a lower price. This is because shadow prices can be zero or other odd values according to capacities etc (which I'll make another issue out of).

To Reproduce

See attached model. Look at price results for commodity GASPRD and GASNAT. Even in the base year 2020 for the peak.peak time slice, GASNAT is cheaper than GASPRD. This should be impossible because GASPRD is input to a process that produces GASNAT with efficiency <1 and some operating cost and emissions.

Expected behavior

I think we need to calculate the price of each commodity sequentially from top to bottom of the model. In the simple model this would start with GASPRD, then GASNAT etc, (opposite order to the investment appraisal order?) and we would not use shadow prices at all in the "full cost" calculation. I imagine this method will encounter problems when there is a circularity. I don't have a solution to hand for that - thoughts appreciated.

simple.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    📋 Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions