Antares Simulator
Power System Simulator
Loading...
Searching...
No Matches
cost_provider.h
1/*
2 * Copyright 2007-2024, RTE (https://www.rte-france.com)
3 * See AUTHORS.txt
4 * SPDX-License-Identifier: MPL-2.0
5 * This file is part of Antares-Simulator,
6 * Adequacy and Performance assessment for interconnected energy networks.
7 *
8 * Antares_Simulator is free software: you can redistribute it and/or modify
9 * it under the terms of the Mozilla Public Licence 2.0 as published by
10 * the Mozilla Foundation, either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * Antares_Simulator is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * Mozilla Public Licence 2.0 for more details.
17 *
18 * You should have received a copy of the Mozilla Public Licence 2.0
19 * along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
20 */
21
22#pragma once
23
24#include <array>
25#include <vector>
26
27namespace Antares::Data
28{
30{
31public:
32 virtual ~CostProvider() = default;
33 virtual double getOperatingCost(uint serieIndex, uint hourInTheYear) const = 0;
34 virtual double getMarginalCost(uint serieIndex, uint hourInTheYear) const = 0;
35 virtual double getMarketBidCost(uint hourInTheYear, uint year) const = 0;
36};
37
38class ThermalCluster;
39
41{
42public:
43 explicit ConstantCostProvider(const ThermalCluster& cluster);
44 virtual ~ConstantCostProvider() = default;
45 double getOperatingCost(uint serieIndex, uint hourInTheYear) const override;
46 double getMarginalCost(uint serieIndex, uint hourInTheYear) const override;
47 double getMarketBidCost(uint hourInTheYear, uint year) const override;
48
49private:
50 const ThermalCluster& cluster;
51};
52
54{
55public:
56 explicit ScenarizedCostProvider(const ThermalCluster& cluster);
57 virtual ~ScenarizedCostProvider() = default;
58 double getOperatingCost(uint serieIndex, uint hourInTheYear) const override;
59 double getMarginalCost(uint serieIndex, uint hourInTheYear) const override;
60 double getMarketBidCost(uint hourInTheYear, uint year) const override;
61
62private:
67 struct CostsTimeSeries
68 {
69 std::array<double, HOURS_PER_YEAR> productionCostTs;
70 std::array<double, HOURS_PER_YEAR> marketBidCostTS;
71 std::array<double, HOURS_PER_YEAR> marginalCostTS;
72 };
73
74 void resizeCostTS();
75 void ComputeMarketBidTS();
76 void MarginalCostEqualsMarketBid();
77 void ComputeProductionCostTS();
78
79 std::vector<CostsTimeSeries> costsTimeSeries;
80 const ThermalCluster& cluster;
81};
82} // namespace Antares::Data
Definition cost_provider.h:41
Definition cost_provider.h:30
Definition cost_provider.h:54
A single thermal cluster.
Definition cluster.h:78