powers-rs 0.2.0

An implementation of the Stochastic Dual Dynamic Programming (SDDP) algorithm in pure Rust, for the hydrothermal dispatch problem.
Documentation
{
    "nodes": [
        {
            "id": 0,
            "stage_id": 0,
            "season_id": 0,
            "start_date": "2024-01-01T00:00:00Z",
            "end_date": "2024-02-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 1,
            "stage_id": 1,
            "season_id": 1,
            "start_date": "2024-02-01T00:00:00Z",
            "end_date": "2024-03-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 2,
            "stage_id": 2,
            "season_id": 2,
            "start_date": "2024-02-01T00:00:00Z",
            "end_date": "2024-03-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 3,
            "stage_id": 3,
            "season_id": 3,
            "start_date": "2024-03-01T00:00:00Z",
            "end_date": "2024-04-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 4,
            "stage_id": 4,
            "season_id": 4,
            "start_date": "2024-04-01T00:00:00Z",
            "end_date": "2024-05-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 5,
            "stage_id": 5,
            "season_id": 5,
            "start_date": "2024-05-01T00:00:00Z",
            "end_date": "2024-06-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 6,
            "stage_id": 6,
            "season_id": 6,
            "start_date": "2024-06-01T00:00:00Z",
            "end_date": "2024-07-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 7,
            "stage_id": 7,
            "season_id": 7,
            "start_date": "2024-07-01T00:00:00Z",
            "end_date": "2024-08-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 8,
            "stage_id": 8,
            "season_id": 8,
            "start_date": "2024-08-01T00:00:00Z",
            "end_date": "2024-09-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 9,
            "stage_id": 9,
            "season_id": 9,
            "start_date": "2024-09-01T00:00:00Z",
            "end_date": "2024-10-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 10,
            "stage_id": 10,
            "season_id": 10,
            "start_date": "2024-10-01T00:00:00Z",
            "end_date": "2024-11-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        },
        {
            "id": 11,
            "stage_id": 11,
            "season_id": 11,
            "start_date": "2024-11-01T00:00:00Z",
            "end_date": "2024-12-01T00:00:00Z",
            "risk_measure": "expectation",
            "load_stochastic_process": "naive",
            "inflow_stochastic_process": "naive",
            "state_variables": "storage"
        }
    ],
    "edges": [
        {
            "source_id": 0,
            "target_id": 1,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 1,
            "target_id": 2,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 2,
            "target_id": 3,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 3,
            "target_id": 4,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 4,
            "target_id": 5,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 5,
            "target_id": 6,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 6,
            "target_id": 7,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 7,
            "target_id": 8,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 8,
            "target_id": 9,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 9,
            "target_id": 10,
            "probability": 1.0,
            "discount_rate": 0.0
        },
        {
            "source_id": 10,
            "target_id": 11,
            "probability": 1.0,
            "discount_rate": 0.0
        }
    ]
}