Skip to content

Commit 5f5b59b

Browse files
committed
implement traits approach to comparing metrics
1 parent 0d9a07a commit 5f5b59b

File tree

5 files changed

+151
-115
lines changed

5 files changed

+151
-115
lines changed

src/finance.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ pub fn annual_capital_cost(
3030

3131
/// Represents the profitability index of an investment
3232
/// in terms of it's annualised components.
33+
#[derive(Debug, Clone, Copy)]
3334
pub struct ProfitabilityIndex {
3435
/// the total annualised surplus of an asset
3536
pub total_annualised_surplus: Money,

src/fixture.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ use crate::process::{
1414
ProcessInvestmentConstraintsMap, ProcessMap, ProcessParameter, ProcessParameterMap,
1515
};
1616
use crate::region::RegionID;
17+
use crate::simulation::investment::appraisal::LCOXMetric;
1718
use crate::simulation::investment::appraisal::{
1819
AppraisalOutput, coefficients::ObjectiveCoefficients,
1920
};
@@ -360,8 +361,7 @@ pub fn appraisal_output(asset: Asset, time_slice: TimeSliceID) -> AppraisalOutpu
360361
activity,
361362
demand,
362363
unmet_demand,
363-
metric_precedence: 0,
364-
metric: 4.14,
364+
metric: Box::new(LCOXMetric::new(4.14)),
365365
}
366366
}
367367

src/output.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ impl DebugDataWriter {
453453
region_id: result.asset.region_id().clone(),
454454
capacity: result.capacity,
455455
capacity_coefficient: result.coefficients.capacity_coefficient,
456-
metric: result.metric,
456+
metric: result.metric.value(),
457457
};
458458
self.appraisal_results_writer.serialize(row)?;
459459
}

src/simulation/investment.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ use crate::model::Model;
88
use crate::output::DataWriter;
99
use crate::region::RegionID;
1010
use crate::simulation::CommodityPrices;
11-
use crate::simulation::investment::appraisal::filter_for_minimum_precedence;
1211
use crate::time_slice::{TimeSliceID, TimeSliceInfo};
1312
use crate::units::{Capacity, Dimensionless, Flow, FlowPerCapacity};
1413
use anyhow::{Context, Result, bail, ensure};
@@ -719,9 +718,6 @@ fn select_best_assets(
719718
outputs_for_opts.push(output);
720719
}
721720

722-
// discard any appraisals with non-minimal metric precedence
723-
outputs_for_opts = filter_for_minimum_precedence(outputs_for_opts);
724-
725721
// Save appraisal results
726722
writer.write_appraisal_debug_info(
727723
year,

0 commit comments

Comments
 (0)