Struct CommodityPrices

Source
pub struct CommodityPrices(BTreeMap<(CommodityID, RegionID, TimeSliceID), MoneyPerFlow>);
Expand description

A map relating commodity ID + region + time slice to current price (endogenous)

Tuple Fields§

§0: BTreeMap<(CommodityID, RegionID, TimeSliceID), MoneyPerFlow>

Implementations§

Source§

impl CommodityPrices

Source

pub fn calculate(model: &Model, solution: &Solution<'_>, year: u32) -> Self

Calculate commodity prices based on the result of the dispatch optimisation and input data.

Note that it is possible that there will still be commodities without specified prices, if they were not included in the dispatch optimisation and no levies were specified by the user.

Source

fn add_from_duals(&mut self, solution: &Solution<'_>)

Add commodity prices using activity and commodity balance duals.

Commodity prices are calculated as the sum of the commodity balance duals and the highest activity dual for each commodity/timeslice.

§Arguments
  • solution - The solution to the dispatch optimisation
Source

fn add_from_levies(&mut self, model: &Model, year: u32)

Add prices based on levies/incentives.

If a commodity already has a price based on the previous dual-based calculation, we choose the higher of the two.

§Arguments
  • model - The model
  • year - The milestone year of interest
Source

pub fn insert( &mut self, commodity_id: &CommodityID, region_id: &RegionID, time_slice: &TimeSliceID, price: MoneyPerFlow, )

Insert a price for the given commodity, region and time slice

Source

pub fn iter( &self, ) -> impl Iterator<Item = (&CommodityID, &RegionID, &TimeSliceID, MoneyPerFlow)>

Iterate over the map.

§Returns

An iterator of tuples containing commodity ID, region ID, time slice and price.

Trait Implementations§

Source§

impl Default for CommodityPrices

Source§

fn default() -> CommodityPrices

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.