use std::collections::{HashMap, HashSet};
use crate::demand::{assign_demand, Volumes};
use crate::hyperpath::{find_optimal_strategy, Strategy};
use crate::transit_network::Link;
pub struct SFResult<'a> {
pub strategy: Strategy<'a>,
pub volumes: Volumes,
}
pub fn compute_sf<'a>(
all_links: &'a [Link],
all_stops: &HashSet<String>,
destination: &str,
od_matrix: &HashMap<String, HashMap<String, f64>>,
) -> SFResult<'a> {
let ops = find_optimal_strategy(all_links, all_stops, destination);
let volumes = assign_demand(all_links, all_stops, &ops, od_matrix, destination);
SFResult {
strategy: ops,
volumes,
}
}