From a0d1cafa3084b9aa43dd61a094b768b6f8a02a3b Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Thu, 21 Mar 2024 16:02:28 -0400 Subject: [PATCH 01/15] Renamed DC-OPF folder to 9_IEEE_9_bus_DC_OPF --- .../{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/README.md | 0 example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/Run.jl | 0 .../resources/Thermal.csv | 0 .../settings/cplex_settings.yml | 0 .../settings/genx_settings.yml | 0 .../settings/gurobi_settings.yml | 0 .../settings/highs_settings.yml | 0 .../settings/time_domain_reduction_settings.yml | 0 .../system/Demand_data.csv | 0 .../system/Fuels_data.csv | 0 .../system/Generators_variability.csv | 0 .../{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/system/Network.csv | 0 12 files changed, 0 insertions(+), 0 deletions(-) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/README.md (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/Run.jl (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/resources/Thermal.csv (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/settings/cplex_settings.yml (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/settings/genx_settings.yml (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/settings/gurobi_settings.yml (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/settings/highs_settings.yml (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/settings/time_domain_reduction_settings.yml (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/system/Demand_data.csv (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/system/Fuels_data.csv (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/system/Generators_variability.csv (100%) rename example_systems/{IEEE_9_bus_DC_OPF => 9_IEEE_9_bus_DC_OPF}/system/Network.csv (100%) diff --git a/example_systems/IEEE_9_bus_DC_OPF/README.md b/example_systems/9_IEEE_9_bus_DC_OPF/README.md similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/README.md rename to example_systems/9_IEEE_9_bus_DC_OPF/README.md diff --git a/example_systems/IEEE_9_bus_DC_OPF/Run.jl b/example_systems/9_IEEE_9_bus_DC_OPF/Run.jl similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/Run.jl rename to example_systems/9_IEEE_9_bus_DC_OPF/Run.jl diff --git a/example_systems/IEEE_9_bus_DC_OPF/resources/Thermal.csv b/example_systems/9_IEEE_9_bus_DC_OPF/resources/Thermal.csv similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/resources/Thermal.csv rename to example_systems/9_IEEE_9_bus_DC_OPF/resources/Thermal.csv diff --git a/example_systems/IEEE_9_bus_DC_OPF/settings/cplex_settings.yml b/example_systems/9_IEEE_9_bus_DC_OPF/settings/cplex_settings.yml similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/settings/cplex_settings.yml rename to example_systems/9_IEEE_9_bus_DC_OPF/settings/cplex_settings.yml diff --git a/example_systems/IEEE_9_bus_DC_OPF/settings/genx_settings.yml b/example_systems/9_IEEE_9_bus_DC_OPF/settings/genx_settings.yml similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/settings/genx_settings.yml rename to example_systems/9_IEEE_9_bus_DC_OPF/settings/genx_settings.yml diff --git a/example_systems/IEEE_9_bus_DC_OPF/settings/gurobi_settings.yml b/example_systems/9_IEEE_9_bus_DC_OPF/settings/gurobi_settings.yml similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/settings/gurobi_settings.yml rename to example_systems/9_IEEE_9_bus_DC_OPF/settings/gurobi_settings.yml diff --git a/example_systems/IEEE_9_bus_DC_OPF/settings/highs_settings.yml b/example_systems/9_IEEE_9_bus_DC_OPF/settings/highs_settings.yml similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/settings/highs_settings.yml rename to example_systems/9_IEEE_9_bus_DC_OPF/settings/highs_settings.yml diff --git a/example_systems/IEEE_9_bus_DC_OPF/settings/time_domain_reduction_settings.yml b/example_systems/9_IEEE_9_bus_DC_OPF/settings/time_domain_reduction_settings.yml similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/settings/time_domain_reduction_settings.yml rename to example_systems/9_IEEE_9_bus_DC_OPF/settings/time_domain_reduction_settings.yml diff --git a/example_systems/IEEE_9_bus_DC_OPF/system/Demand_data.csv b/example_systems/9_IEEE_9_bus_DC_OPF/system/Demand_data.csv similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/system/Demand_data.csv rename to example_systems/9_IEEE_9_bus_DC_OPF/system/Demand_data.csv diff --git a/example_systems/IEEE_9_bus_DC_OPF/system/Fuels_data.csv b/example_systems/9_IEEE_9_bus_DC_OPF/system/Fuels_data.csv similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/system/Fuels_data.csv rename to example_systems/9_IEEE_9_bus_DC_OPF/system/Fuels_data.csv diff --git a/example_systems/IEEE_9_bus_DC_OPF/system/Generators_variability.csv b/example_systems/9_IEEE_9_bus_DC_OPF/system/Generators_variability.csv similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/system/Generators_variability.csv rename to example_systems/9_IEEE_9_bus_DC_OPF/system/Generators_variability.csv diff --git a/example_systems/IEEE_9_bus_DC_OPF/system/Network.csv b/example_systems/9_IEEE_9_bus_DC_OPF/system/Network.csv similarity index 100% rename from example_systems/IEEE_9_bus_DC_OPF/system/Network.csv rename to example_systems/9_IEEE_9_bus_DC_OPF/system/Network.csv From cb34958f0f51aa257a065c5da47d2ed0c334fb22 Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Thu, 21 Mar 2024 16:13:40 -0400 Subject: [PATCH 02/15] Renamed c2 capture and retrofit folders to have identical naming convention; Edited CHANGELOG to have better description of changed example folder --- CHANGELOG.md | 3 +++ .../README.md | 0 .../Run.jl | 0 .../policies/CO2_cap.csv | 0 .../policies/Minimum_capacity_requirement.csv | 0 .../resources/Storage.csv | 0 .../resources/Thermal.csv | 0 .../resources/Vre.csv | 0 .../Resource_minimum_capacity_requirement.csv | 0 .../settings/clp_settings.yml | 0 .../settings/cplex_settings.yml | 0 .../settings/genx_settings.yml | 0 .../settings/gurobi_settings.yml | 0 .../settings/highs_settings.yml | 0 .../settings/time_domain_reduction_settings.yml | 0 .../system/Demand_data.csv | 0 .../system/Fuels_data.csv | 0 .../system/Generators_variability.csv | 0 .../system/Network.csv | 0 .../README.md | 0 .../Run.jl | 0 .../policies/CO2_cap.csv | 0 .../policies/Capacity_reserve_margin.csv | 0 .../policies/Energy_share_requirement.csv | 0 .../policies/Minimum_capacity_requirement.csv | 0 .../resources/Storage.csv | 0 .../resources/Thermal.csv | 0 .../resources/Vre.csv | 0 .../Resource_minimum_capacity_requirement.csv | 0 .../settings/clp_settings.yml | 0 .../settings/cplex_settings.yml | 0 .../settings/genx_settings.yml | 0 .../settings/gurobi_settings.yml | 0 .../settings/highs_settings.yml | 0 .../settings/time_domain_reduction_settings.yml | 0 .../system/Demand_data.csv | 0 .../system/Fuels_data.csv | 0 .../system/Generators_variability.csv | 0 .../system/Network.csv | 0 39 files changed, 3 insertions(+) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/README.md (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/Run.jl (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/policies/CO2_cap.csv (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/policies/Minimum_capacity_requirement.csv (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/resources/Storage.csv (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/resources/Thermal.csv (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/resources/Vre.csv (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/resources/policy_assignments/Resource_minimum_capacity_requirement.csv (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/settings/clp_settings.yml (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/settings/cplex_settings.yml (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/settings/genx_settings.yml (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/settings/gurobi_settings.yml (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/settings/highs_settings.yml (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/settings/time_domain_reduction_settings.yml (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/system/Demand_data.csv (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/system/Fuels_data.csv (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/system/Generators_variability.csv (100%) rename example_systems/{3_three_zone_w_co2_capture => 3_three_zones_w_co2_capture}/system/Network.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/README.md (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/Run.jl (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/policies/CO2_cap.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/policies/Capacity_reserve_margin.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/policies/Energy_share_requirement.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/policies/Minimum_capacity_requirement.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/resources/Storage.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/resources/Thermal.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/resources/Vre.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/resources/policy_assignments/Resource_minimum_capacity_requirement.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/settings/clp_settings.yml (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/settings/cplex_settings.yml (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/settings/genx_settings.yml (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/settings/gurobi_settings.yml (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/settings/highs_settings.yml (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/settings/time_domain_reduction_settings.yml (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/system/Demand_data.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/system/Fuels_data.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/system/Generators_variability.csv (100%) rename example_systems/{8_three_zone_w_retrofit => 8_three_zones_w_retrofit}/system/Network.csv (100%) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0fdf495d9..e2387f92dc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,6 +81,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 `operational_reserves` (#641). - New folder structure for a GenX case. The input files are now organized in the following folders: `settings`, `policies`, `resources` and `system`. The examples and tests have been updated to reflect this change. +- New folder structure implemented for `example_system`. This folder now consists of nine separate folders each pertaining to a different case study example, + ranging from the ISONE three zones, with singlestage, multistage, electrolyzers, all the way to the 9 bus IEEE case for running DC-OPF. + ### Deprecated - The above `load` keys, which generally refer to electrical demand, are being deprecated. diff --git a/example_systems/3_three_zone_w_co2_capture/README.md b/example_systems/3_three_zones_w_co2_capture/README.md similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/README.md rename to example_systems/3_three_zones_w_co2_capture/README.md diff --git a/example_systems/3_three_zone_w_co2_capture/Run.jl b/example_systems/3_three_zones_w_co2_capture/Run.jl similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/Run.jl rename to example_systems/3_three_zones_w_co2_capture/Run.jl diff --git a/example_systems/3_three_zone_w_co2_capture/policies/CO2_cap.csv b/example_systems/3_three_zones_w_co2_capture/policies/CO2_cap.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/policies/CO2_cap.csv rename to example_systems/3_three_zones_w_co2_capture/policies/CO2_cap.csv diff --git a/example_systems/3_three_zone_w_co2_capture/policies/Minimum_capacity_requirement.csv b/example_systems/3_three_zones_w_co2_capture/policies/Minimum_capacity_requirement.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/policies/Minimum_capacity_requirement.csv rename to example_systems/3_three_zones_w_co2_capture/policies/Minimum_capacity_requirement.csv diff --git a/example_systems/3_three_zone_w_co2_capture/resources/Storage.csv b/example_systems/3_three_zones_w_co2_capture/resources/Storage.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/resources/Storage.csv rename to example_systems/3_three_zones_w_co2_capture/resources/Storage.csv diff --git a/example_systems/3_three_zone_w_co2_capture/resources/Thermal.csv b/example_systems/3_three_zones_w_co2_capture/resources/Thermal.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/resources/Thermal.csv rename to example_systems/3_three_zones_w_co2_capture/resources/Thermal.csv diff --git a/example_systems/3_three_zone_w_co2_capture/resources/Vre.csv b/example_systems/3_three_zones_w_co2_capture/resources/Vre.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/resources/Vre.csv rename to example_systems/3_three_zones_w_co2_capture/resources/Vre.csv diff --git a/example_systems/3_three_zone_w_co2_capture/resources/policy_assignments/Resource_minimum_capacity_requirement.csv b/example_systems/3_three_zones_w_co2_capture/resources/policy_assignments/Resource_minimum_capacity_requirement.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/resources/policy_assignments/Resource_minimum_capacity_requirement.csv rename to example_systems/3_three_zones_w_co2_capture/resources/policy_assignments/Resource_minimum_capacity_requirement.csv diff --git a/example_systems/3_three_zone_w_co2_capture/settings/clp_settings.yml b/example_systems/3_three_zones_w_co2_capture/settings/clp_settings.yml similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/settings/clp_settings.yml rename to example_systems/3_three_zones_w_co2_capture/settings/clp_settings.yml diff --git a/example_systems/3_three_zone_w_co2_capture/settings/cplex_settings.yml b/example_systems/3_three_zones_w_co2_capture/settings/cplex_settings.yml similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/settings/cplex_settings.yml rename to example_systems/3_three_zones_w_co2_capture/settings/cplex_settings.yml diff --git a/example_systems/3_three_zone_w_co2_capture/settings/genx_settings.yml b/example_systems/3_three_zones_w_co2_capture/settings/genx_settings.yml similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/settings/genx_settings.yml rename to example_systems/3_three_zones_w_co2_capture/settings/genx_settings.yml diff --git a/example_systems/3_three_zone_w_co2_capture/settings/gurobi_settings.yml b/example_systems/3_three_zones_w_co2_capture/settings/gurobi_settings.yml similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/settings/gurobi_settings.yml rename to example_systems/3_three_zones_w_co2_capture/settings/gurobi_settings.yml diff --git a/example_systems/3_three_zone_w_co2_capture/settings/highs_settings.yml b/example_systems/3_three_zones_w_co2_capture/settings/highs_settings.yml similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/settings/highs_settings.yml rename to example_systems/3_three_zones_w_co2_capture/settings/highs_settings.yml diff --git a/example_systems/3_three_zone_w_co2_capture/settings/time_domain_reduction_settings.yml b/example_systems/3_three_zones_w_co2_capture/settings/time_domain_reduction_settings.yml similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/settings/time_domain_reduction_settings.yml rename to example_systems/3_three_zones_w_co2_capture/settings/time_domain_reduction_settings.yml diff --git a/example_systems/3_three_zone_w_co2_capture/system/Demand_data.csv b/example_systems/3_three_zones_w_co2_capture/system/Demand_data.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/system/Demand_data.csv rename to example_systems/3_three_zones_w_co2_capture/system/Demand_data.csv diff --git a/example_systems/3_three_zone_w_co2_capture/system/Fuels_data.csv b/example_systems/3_three_zones_w_co2_capture/system/Fuels_data.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/system/Fuels_data.csv rename to example_systems/3_three_zones_w_co2_capture/system/Fuels_data.csv diff --git a/example_systems/3_three_zone_w_co2_capture/system/Generators_variability.csv b/example_systems/3_three_zones_w_co2_capture/system/Generators_variability.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/system/Generators_variability.csv rename to example_systems/3_three_zones_w_co2_capture/system/Generators_variability.csv diff --git a/example_systems/3_three_zone_w_co2_capture/system/Network.csv b/example_systems/3_three_zones_w_co2_capture/system/Network.csv similarity index 100% rename from example_systems/3_three_zone_w_co2_capture/system/Network.csv rename to example_systems/3_three_zones_w_co2_capture/system/Network.csv diff --git a/example_systems/8_three_zone_w_retrofit/README.md b/example_systems/8_three_zones_w_retrofit/README.md similarity index 100% rename from example_systems/8_three_zone_w_retrofit/README.md rename to example_systems/8_three_zones_w_retrofit/README.md diff --git a/example_systems/8_three_zone_w_retrofit/Run.jl b/example_systems/8_three_zones_w_retrofit/Run.jl similarity index 100% rename from example_systems/8_three_zone_w_retrofit/Run.jl rename to example_systems/8_three_zones_w_retrofit/Run.jl diff --git a/example_systems/8_three_zone_w_retrofit/policies/CO2_cap.csv b/example_systems/8_three_zones_w_retrofit/policies/CO2_cap.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/policies/CO2_cap.csv rename to example_systems/8_three_zones_w_retrofit/policies/CO2_cap.csv diff --git a/example_systems/8_three_zone_w_retrofit/policies/Capacity_reserve_margin.csv b/example_systems/8_three_zones_w_retrofit/policies/Capacity_reserve_margin.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/policies/Capacity_reserve_margin.csv rename to example_systems/8_three_zones_w_retrofit/policies/Capacity_reserve_margin.csv diff --git a/example_systems/8_three_zone_w_retrofit/policies/Energy_share_requirement.csv b/example_systems/8_three_zones_w_retrofit/policies/Energy_share_requirement.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/policies/Energy_share_requirement.csv rename to example_systems/8_three_zones_w_retrofit/policies/Energy_share_requirement.csv diff --git a/example_systems/8_three_zone_w_retrofit/policies/Minimum_capacity_requirement.csv b/example_systems/8_three_zones_w_retrofit/policies/Minimum_capacity_requirement.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/policies/Minimum_capacity_requirement.csv rename to example_systems/8_three_zones_w_retrofit/policies/Minimum_capacity_requirement.csv diff --git a/example_systems/8_three_zone_w_retrofit/resources/Storage.csv b/example_systems/8_three_zones_w_retrofit/resources/Storage.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/resources/Storage.csv rename to example_systems/8_three_zones_w_retrofit/resources/Storage.csv diff --git a/example_systems/8_three_zone_w_retrofit/resources/Thermal.csv b/example_systems/8_three_zones_w_retrofit/resources/Thermal.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/resources/Thermal.csv rename to example_systems/8_three_zones_w_retrofit/resources/Thermal.csv diff --git a/example_systems/8_three_zone_w_retrofit/resources/Vre.csv b/example_systems/8_three_zones_w_retrofit/resources/Vre.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/resources/Vre.csv rename to example_systems/8_three_zones_w_retrofit/resources/Vre.csv diff --git a/example_systems/8_three_zone_w_retrofit/resources/policy_assignments/Resource_minimum_capacity_requirement.csv b/example_systems/8_three_zones_w_retrofit/resources/policy_assignments/Resource_minimum_capacity_requirement.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/resources/policy_assignments/Resource_minimum_capacity_requirement.csv rename to example_systems/8_three_zones_w_retrofit/resources/policy_assignments/Resource_minimum_capacity_requirement.csv diff --git a/example_systems/8_three_zone_w_retrofit/settings/clp_settings.yml b/example_systems/8_three_zones_w_retrofit/settings/clp_settings.yml similarity index 100% rename from example_systems/8_three_zone_w_retrofit/settings/clp_settings.yml rename to example_systems/8_three_zones_w_retrofit/settings/clp_settings.yml diff --git a/example_systems/8_three_zone_w_retrofit/settings/cplex_settings.yml b/example_systems/8_three_zones_w_retrofit/settings/cplex_settings.yml similarity index 100% rename from example_systems/8_three_zone_w_retrofit/settings/cplex_settings.yml rename to example_systems/8_three_zones_w_retrofit/settings/cplex_settings.yml diff --git a/example_systems/8_three_zone_w_retrofit/settings/genx_settings.yml b/example_systems/8_three_zones_w_retrofit/settings/genx_settings.yml similarity index 100% rename from example_systems/8_three_zone_w_retrofit/settings/genx_settings.yml rename to example_systems/8_three_zones_w_retrofit/settings/genx_settings.yml diff --git a/example_systems/8_three_zone_w_retrofit/settings/gurobi_settings.yml b/example_systems/8_three_zones_w_retrofit/settings/gurobi_settings.yml similarity index 100% rename from example_systems/8_three_zone_w_retrofit/settings/gurobi_settings.yml rename to example_systems/8_three_zones_w_retrofit/settings/gurobi_settings.yml diff --git a/example_systems/8_three_zone_w_retrofit/settings/highs_settings.yml b/example_systems/8_three_zones_w_retrofit/settings/highs_settings.yml similarity index 100% rename from example_systems/8_three_zone_w_retrofit/settings/highs_settings.yml rename to example_systems/8_three_zones_w_retrofit/settings/highs_settings.yml diff --git a/example_systems/8_three_zone_w_retrofit/settings/time_domain_reduction_settings.yml b/example_systems/8_three_zones_w_retrofit/settings/time_domain_reduction_settings.yml similarity index 100% rename from example_systems/8_three_zone_w_retrofit/settings/time_domain_reduction_settings.yml rename to example_systems/8_three_zones_w_retrofit/settings/time_domain_reduction_settings.yml diff --git a/example_systems/8_three_zone_w_retrofit/system/Demand_data.csv b/example_systems/8_three_zones_w_retrofit/system/Demand_data.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/system/Demand_data.csv rename to example_systems/8_three_zones_w_retrofit/system/Demand_data.csv diff --git a/example_systems/8_three_zone_w_retrofit/system/Fuels_data.csv b/example_systems/8_three_zones_w_retrofit/system/Fuels_data.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/system/Fuels_data.csv rename to example_systems/8_three_zones_w_retrofit/system/Fuels_data.csv diff --git a/example_systems/8_three_zone_w_retrofit/system/Generators_variability.csv b/example_systems/8_three_zones_w_retrofit/system/Generators_variability.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/system/Generators_variability.csv rename to example_systems/8_three_zones_w_retrofit/system/Generators_variability.csv diff --git a/example_systems/8_three_zone_w_retrofit/system/Network.csv b/example_systems/8_three_zones_w_retrofit/system/Network.csv similarity index 100% rename from example_systems/8_three_zone_w_retrofit/system/Network.csv rename to example_systems/8_three_zones_w_retrofit/system/Network.csv From 44b053e0ed7d4e8c16d3b10420d07dd188440966 Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Mon, 25 Mar 2024 11:22:05 -0400 Subject: [PATCH 03/15] Update investment_transmission.jl doc string rendering fixed for investment_transmission by adding ```math tag --- src/model/core/transmission/investment_transmission.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/model/core/transmission/investment_transmission.jl b/src/model/core/transmission/investment_transmission.jl index 671d7e47cd..685d5d8046 100644 --- a/src/model/core/transmission/investment_transmission.jl +++ b/src/model/core/transmission/investment_transmission.jl @@ -9,15 +9,19 @@ Note that fixed O\&M and replacement capital costs (depreciation) for existing transmission capacity is treated as a sunk cost and not included explicitly in the GenX objective function. **Accounting for Transmission Between Zones** Available transmission capacity between zones is set equal to the existing line's maximum power transfer capacity, $\overline{\varphi^{cap}_{l}}$, plus any transmission capacity added on that line (for lines eligible for expansion in the set $\mathcal{E}$). + ```math \begin{aligned} &\varphi^{cap}_{l} = \overline{\varphi^{cap}_{l}} , &\quad \forall l \in (\mathcal{L} \setminus \mathcal{E} ),\forall t \in \mathcal{T}\\ % trasmission expansion &\varphi^{cap}_{l} = \overline{\varphi^{cap}_{l}} + \bigtriangleup\varphi^{cap}_{l} , &\quad \forall l \in \mathcal{E},\forall t \in \mathcal{T} \end{aligned} + ``` The additional transmission capacity, $\bigtriangleup\varphi^{cap}_{l} $, is constrained by a maximum allowed reinforcement, $\overline{\bigtriangleup\varphi^{cap}_{l}}$, for each line $l \in \mathcal{E}$. + ```math \begin{aligned} & \bigtriangleup\varphi^{cap}_{l} \leq \overline{\bigtriangleup\varphi^{cap}_{l}}, &\quad \forall l \in \mathcal{E} \end{aligned} + ``` """ function investment_transmission!(EP::Model, inputs::Dict, setup::Dict) From ef8374ae0c8fd5fc03391f1cf3b996fd1dfec64d Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Mon, 25 Mar 2024 11:36:54 -0400 Subject: [PATCH 04/15] Update .zenodo.json Updated author list with the name of Justin Zhou from MIT --- .zenodo.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.zenodo.json b/.zenodo.json index 0b4d814792..facc5c3cac 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -87,6 +87,10 @@ "name": "Xu, Qingyu", "affiliation": "Tsinghua University", "orcid": "0000-0003-2692-5135" + }, + { + "name": "Zhou, Justin", + "affiliation": "Massachusetts Institute of Technology" } ] } From 26d9dbdbbdd4a9ce22ae3876df4e3ea660d31813 Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Mon, 25 Mar 2024 11:40:44 -0400 Subject: [PATCH 05/15] Update Project.toml Updated Project.toml with the name of Justin Zhou from MIT --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 9694c26432..6a092d4996 100644 --- a/Project.toml +++ b/Project.toml @@ -1,6 +1,6 @@ name = "GenX" uuid = "5d317b1e-30ec-4ed6-a8ce-8d2d88d7cfac" -authors = ["Bonaldo, Luca", "Chakrabarti, Sambuddha", "Cheng, Fangwei", "Ding, Yifu", "Jenkins, Jesse D.", "Luo, Qian", "Macdonald, Ruaridh", "Mallapragada, Dharik", "Manocha, Aneesha", "Mantegna, Gabe ", "Morris, Jack", "Patankar, Neha", "Pecci, Filippo", "Schwartz, Aaron", "Schwartz, Jacob", "Schivley, Greg", "Sepulveda, Nestor", "Xu, Qingyu"] +authors = ["Bonaldo, Luca", "Chakrabarti, Sambuddha", "Cheng, Fangwei", "Ding, Yifu", "Jenkins, Jesse D.", "Luo, Qian", "Macdonald, Ruaridh", "Mallapragada, Dharik", "Manocha, Aneesha", "Mantegna, Gabe ", "Morris, Jack", "Patankar, Neha", "Pecci, Filippo", "Schwartz, Aaron", "Schwartz, Jacob", "Schivley, Greg", "Sepulveda, Nestor", "Xu, Qingyu", "Zhou, Justin"] version = "0.4.0" [deps] From 0a6c2c698c7ae5a57a22d0a346d910fedd136396 Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Mon, 25 Mar 2024 14:38:07 -0400 Subject: [PATCH 06/15] Changed the doc URL in the README to the current correct one --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b52efc7960..b24402102e 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ There are two ways to run GenX with either type of solver options (open-source f ## Documentation -Detailed documentation for GenX can be found [here](https://genxproject.github.io/GenX/dev). +Detailed documentation for GenX can be found [here](https://genxproject.github.io/GenX.jl/dev). It includes details of each of GenX's methods, required and optional input files, and outputs. Interested users may also want to browse through [prior publications](https://energy.mit.edu/genx/#publications) that have used GenX to understand the various features of the tool. From ef1d0316226c08e3680c3d3a616dbdc0e78e3f4a Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Mon, 25 Mar 2024 15:07:45 -0400 Subject: [PATCH 07/15] HiGHS solver parameter list shortened to most frequently used/modified ones --- src/configure_solver/configure_highs.jl | 337 ------------------------ 1 file changed, 337 deletions(-) diff --git a/src/configure_solver/configure_highs.jl b/src/configure_solver/configure_highs.jl index 3f5e04d811..0c8b7cb712 100644 --- a/src/configure_solver/configure_highs.jl +++ b/src/configure_solver/configure_highs.jl @@ -60,276 +60,6 @@ The HiGHS optimizer instance is configured with the following default parameters # number of threads used by HiGHS (0: automatic) # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 0] threads: 0 - - # Debugging level in HiGHS - # [type: HighsInt, advanced: false, range: {0, 3}, default: 0] - highs_debug_level: 0 - - # Analysis level in HiGHS - # [type: HighsInt, advanced: false, range: {0, 63}, default: 0] - highs_analysis_level: 0 - - # Strategy for simplex solver 0 => Choose; 1 => Dual (serial); 2 => Dual (PAMI); 3 => Dual (SIP); 4 => Primal - # [type: HighsInt, advanced: false, range: {0, 4}, default: 1] - simplex_strategy: 1 - - # Simplex scaling strategy: off / choose / equilibration / forced equilibration / max value 0 / max value 1 (0/1/2/3/4/5) - # [type: HighsInt, advanced: false, range: {0, 5}, default: 1] - simplex_scale_strategy: 1 - - # Strategy for simplex crash: off / LTSSF / Bixby (0/1/2) - # [type: HighsInt, advanced: false, range: {0, 9}, default: 0] - simplex_crash_strategy: 0 - - # Strategy for simplex dual edge weights: Choose / Dantzig / Devex / Steepest Edge (-1/0/1/2) - # [type: HighsInt, advanced: false, range: {-1, 2}, default: -1] - simplex_dual_edge_weight_strategy: -1 - - # Strategy for simplex primal edge weights: Choose / Dantzig / Devex / Steepest Edge (-1/0/1/2) - # [type: HighsInt, advanced: false, range: {-1, 2}, default: -1] - simplex_primal_edge_weight_strategy: -1 - - # Iteration limit for simplex solver - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 2147483647] - simplex_iteration_limit: 2147483647 - - # Limit on the number of simplex UPDATE operations - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 5000] - simplex_update_limit: 5000 - - # Iteration limit for IPM solver - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 2147483647] - ipm_iteration_limit: 2147483647 - - # Minimum level of concurrency in parallel simplex - # [type: HighsInt, advanced: false, range: {1, 8}, default: 1] - simplex_min_concurrency: 1 - - # Maximum level of concurrency in parallel simplex - # [type: HighsInt, advanced: false, range: {1, 8}, default: 8] - simplex_max_concurrency: 8 - - # Enables or disables solver output - # [type: bool, advanced: false, range: {false, true}, default: true] - output_flag: true - - # Enables or disables console logging - # [type: bool, advanced: false, range: {false, true}, default: true] - log_to_console: true - - # Solution file - # [type: string, advanced: false, default: ""] - solution_file: "" - - # Log file - # [type: string, advanced: false, default: ""] - log_file: "" - - # Write the primal and dual solution to a file - # [type: bool, advanced: false, range: {false, true}, default: false] - write_solution_to_file: false - - # Write the solution in style: 0=>Raw (computer-readable); 1=>Pretty (human-readable) - # [type: HighsInt, advanced: false, range: {0, 2}, default: 0] - write_solution_style: 0 - - # Write model file - # [type: string, advanced: false, default: ""] - write_model_file: "" - - # Write the model to a file - # [type: bool, advanced: false, range: {false, true}, default: false] - write_model_to_file: false - - # Whether symmetry should be detected - # [type: bool, advanced: false, range: {false, true}, default: true] - mip_detect_symmetry: true - - # MIP solver max number of nodes - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 2147483647] - mip_max_nodes: 2147483647 - - # MIP solver max number of nodes where estimate is above cutoff bound - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 2147483647] - mip_max_stall_nodes: 2147483647 - - # MIP solver max number of leave nodes - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 2147483647] - mip_max_leaves: 2147483647 - - # limit on the number of improving solutions found to stop the MIP solver prematurely - # [type: HighsInt, advanced: false, range: {1, 2147483647}, default: 2147483647] - mip_max_improving_sols: 2147483647 - - # maximal age of dynamic LP rows before they are removed from the LP relaxation - # [type: HighsInt, advanced: false, range: {0, 32767}, default: 10] - mip_lp_age_limit: 10 - - # maximal age of rows in the cutpool before they are deleted - # [type: HighsInt, advanced: false, range: {0, 1000}, default: 30] - mip_pool_age_limit: 30 - - # soft limit on the number of rows in the cutpool for dynamic age adjustment - # [type: HighsInt, advanced: false, range: {1, 2147483647}, default: 10000] - mip_pool_soft_limit: 10000 - - # minimal number of observations before pseudo costs are considered reliable - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 8] - mip_pscost_minreliable: 8 - - # minimal number of entries in the cliquetable before neighborhood queries of the conflict graph use parallel processing - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 100000] - mip_min_cliquetable_entries_for_parallelism: 100000 - - # MIP solver reporting level - # [type: HighsInt, advanced: false, range: {0, 2}, default: 1] - mip_report_level: 1 - - # MIP feasibility tolerance - # [type: double, advanced: false, range: [1e-10, inf], default: 1e-06] - mip_feasibility_tolerance: 1e-06 - - # effort spent for MIP heuristics - # [type: double, advanced: false, range: [0, 1], default: 0.05] - mip_heuristic_effort: 0.05 - - # tolerance on relative gap, |ub-lb|/|ub|, to determine whether optimality has been reached for a MIP instance - # [type: double, advanced: false, range: [0, inf], default: 0.0001] - mip_rel_gap: 0.0001 - - # tolerance on absolute gap of MIP, |ub-lb|, to determine whether optimality has been reached for a MIP instance - # [type: double, advanced: false, range: [0, inf], default: 1e-06] - mip_abs_gap: 1e-06 - - # Output development messages: 0 => none; 1 => info; 2 => verbose - # [type: HighsInt, advanced: true, range: {0, 3}, default: 0] - log_dev_level: 0 - - # Run the crossover routine for IPX - # [type: string, advanced: "on", range: {"off", "on"}, default: "off"] - run_crossover: "off" - - # Allow ModelStatus::kUnboundedOrInfeasible - # [type: bool, advanced: true, range: {false, true}, default: false] - allow_unbounded_or_infeasible: false - - # Use relaxed implied bounds from presolve - # [type: bool, advanced: true, range: {false, true}, default: false] - use_implied_bounds_from_presolve: false - - # Prevents LP presolve steps for which postsolve cannot maintain a basis - # [type: bool, advanced: true, range: {false, true}, default: true] - lp_presolve_requires_basis_postsolve: true - - # Use the free format MPS file reader - # [type: bool, advanced: true, range: {false, true}, default: true] - mps_parser_type_free: true - - # For multiple N-rows in MPS files: delete rows / delete entries / keep rows (-1/0/1) - # [type: HighsInt, advanced: true, range: {-1, 1}, default: -1] - keep_n_rows: -1 - - # Scaling factor for costs - # [type: HighsInt, advanced: true, range: {-20, 20}, default: 0] - cost_scale_factor: 0 - - # Largest power-of-two factor permitted when scaling the constraint matrix - # [type: HighsInt, advanced: true, range: {0, 30}, default: 20] - allowed_matrix_scale_factor: 20 - - # Largest power-of-two factor permitted when scaling the costs - # [type: HighsInt, advanced: true, range: {0, 20}, default: 0] - allowed_cost_scale_factor: 0 - - # Strategy for permuting before simplex - # [type: HighsInt, advanced: true, range: {-1, 1}, default: -1] - simplex_permute_strategy: -1 - - # Max level of dual simplex cleanup - # [type: HighsInt, advanced: true, range: {0, 2147483647}, default: 1] - max_dual_simplex_cleanup_level: 1 - - # Max level of dual simplex phase 1 cleanup - # [type: HighsInt, advanced: true, range: {0, 2147483647}, default: 2] - max_dual_simplex_phase1_cleanup_level: 2 - - # Strategy for PRICE in simplex - # [type: HighsInt, advanced: true, range: {0, 3}, default: 3] - simplex_price_strategy: 3 - - Strategy for solving unscaled LP in simplex - [type: HighsInt, advanced: true, range: {0, 2}, default: 1] - simplex_unscaled_solution_strategy: 1 - - Perform initial basis condition check in simplex - [type: bool, advanced: true, range: {false, true}, default: true] - simplex_initial_condition_check: true - - No unnecessary refactorization on simplex rebuild - [type: bool, advanced: true, range: {false, true}, default: true] - no_unnecessary_rebuild_refactor: true - - Tolerance on initial basis condition in simplex - [type: double, advanced: true, range: [1, inf], default: 1e+14] - simplex_initial_condition_tolerance: 1e+14 - - Tolerance on solution error when considering refactorization on simplex rebuild - [type: double, advanced: true, range: [-inf, inf], default: 1e-08] - rebuild_refactor_solution_error_tolerance: 1e-08 - - Tolerance on dual steepest edge weight errors - [type: double, advanced: true, range: [0, inf], default: inf] - dual_steepest_edge_weight_error_tolerance: Inf - - Threshold on dual steepest edge weight errors for Devex switch - [type: double, advanced: true, range: [1, inf], default: 10] - dual_steepest_edge_weight_log_error_threshold: 10.0 - - Dual simplex cost perturbation multiplier: 0 => no perturbation - [type: double, advanced: true, range: [0, inf], default: 1] - dual_simplex_cost_perturbation_multiplier: 1.0 - - Primal simplex bound perturbation multiplier: 0 => no perturbation - [type: double, advanced: true, range: [0, inf], default: 1] - primal_simplex_bound_perturbation_multiplier: 1.0 - - Dual simplex pivot growth tolerance - [type: double, advanced: true, range: [1e-12, inf], default: 1e-09] - dual_simplex_pivot_growth_tolerance: 1e-09 - - Matrix factorization pivot threshold for substitutions in presolve - [type: double, advanced: true, range: [0.0008, 0.5], default: 0.01] - presolve_pivot_threshold: 0.01 - - Maximal fillin allowed for substitutions in presolve - [type: HighsInt, advanced: true, range: {0, 2147483647}, default: 10] - presolve_substitution_maxfillin: 10 - - Matrix factorization pivot threshold - [type: double, advanced: true, range: [0.0008, 0.5], default: 0.1] - factor_pivot_threshold: 0.1 - - Matrix factorization pivot tolerance - [type: double, advanced: true, range: [0, 1], default: 1e-10] - factor_pivot_tolerance: 1e-10 - - Tolerance to be satisfied before IPM crossover will start - [type: double, advanced: true, range: [1e-12, inf], default: 1e-08] - start_crossover_tolerance: 1e-08 - - Use original HFactor logic for sparse vs hyper-sparse TRANs - [type: bool, advanced: true, range: {false, true}, default: true] - use_original_HFactor_logic: true - - Check whether LP is candidate for LiDSE - [type: bool, advanced: true, range: {false, true}, default: true] - less_infeasible_DSE_check: true - - Use LiDSE if LP has right properties - [type: bool, advanced: true, range: {false, true}, default: true] - less_infeasible_DSE_choose_row: true - - """ function configure_highs(solver_settings_path::String, optimizer::Any) @@ -353,73 +83,6 @@ function configure_highs(solver_settings_path::String, optimizer::Any) "objective_target" => -Inf, "random_seed" => 0, "threads" => 0, - "highs_debug_level" => 0, - "highs_analysis_level" => 0, - "simplex_strategy" => 1, - "simplex_scale_strategy" => 1, - "simplex_crash_strategy" => 0, - "simplex_dual_edge_weight_strategy" => -1, - "simplex_primal_edge_weight_strategy" => -1, - "simplex_iteration_limit" => 2147483647, - "simplex_update_limit" => 5000, - "ipm_iteration_limit" => 2147483647, - "simplex_min_concurrency" => 1, - "simplex_max_concurrency" => 8, - "output_flag" => true, - "log_to_console" => true, - "solution_file" => "", - "log_file" => "", - "write_solution_to_file" => false, - "write_solution_style" => 0, - "write_model_file" => "", - "write_model_to_file" => false, - "mip_detect_symmetry" => true, - "mip_max_nodes" => 2147483647, - "mip_max_stall_nodes" => 2147483647, - "mip_max_leaves" => 2147483647, - "mip_max_improving_sols" => 2147483647, - "mip_lp_age_limit" => 10, - "mip_pool_age_limit" => 30, - "mip_pool_soft_limit" => 10000, - "mip_pscost_minreliable" => 8, - "mip_min_cliquetable_entries_for_parallelism" => 100000, - "mip_report_level" => 1, - "mip_feasibility_tolerance" => 1e-06, - "mip_heuristic_effort" => 0.05, - "mip_rel_gap" => 0.001, - "mip_abs_gap" => 1e-06, - "log_dev_level" => 0, - "run_crossover" => "off", - "allow_unbounded_or_infeasible" => false, - "use_implied_bounds_from_presolve" => false, - "lp_presolve_requires_basis_postsolve" => true, - "mps_parser_type_free" => true, - "keep_n_rows" => -1, - "cost_scale_factor" => 0, - "allowed_matrix_scale_factor" => 20, - "allowed_cost_scale_factor" => 0, - "simplex_permute_strategy" => -1, - "max_dual_simplex_cleanup_level" => 1, - "max_dual_simplex_phase1_cleanup_level" => 2, - "simplex_price_strategy" => 3, - "simplex_unscaled_solution_strategy" => 1, - "simplex_initial_condition_check" => true, - "no_unnecessary_rebuild_refactor" => true, - "simplex_initial_condition_tolerance" => 1e+14, - "rebuild_refactor_solution_error_tolerance" => 1e-08, - "dual_steepest_edge_weight_error_tolerance" => Inf, - "dual_steepest_edge_weight_log_error_threshold" => 10.0, - "dual_simplex_cost_perturbation_multiplier" => 1.0, - "primal_simplex_bound_perturbation_multiplier" => 1.0, - "dual_simplex_pivot_growth_tolerance" => 1e-09, - "presolve_pivot_threshold" => 0.01, - "presolve_substitution_maxfillin" => 10, - "factor_pivot_threshold" => 0.1, - "factor_pivot_tolerance" => 1e-10, - "start_crossover_tolerance" => 1e-08, - "use_original_HFactor_logic" => true, - "less_infeasible_DSE_check" => true, - "less_infeasible_DSE_choose_row" => true, ) attributes = merge(default_settings, solver_settings) From df2dc9aab4c0518e4b1227478ddd6265bbe88a35 Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Mon, 25 Mar 2024 15:45:45 -0400 Subject: [PATCH 08/15] Update CITATION.cff With revised names and ORCID IDs of authors and significant contributors (in alphabetic order of last names), the DOI of Zenodo GitHub page for GenX, and version number (v0.4.0) --- CITATION.cff | 56 ++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 648457d1ef..752cd4a74e 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -1,30 +1,60 @@ cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: +- family-names: "Bonaldo" + given-names: "Luca" + orcid: "https://orcid.org/0009-0000-0650-0266" +- family-names: "Chakrabarti" + given-names: "Sambuddha" + orcid: "https://orcid.org/0000-0002-8916-5076" +- family-names: "Cheng" + given-names: "Fangwei" + orcid: "https://orcid.org/0000-0001-6589-2749" +- family-names: "Ding" + given-names: "Yifu" + orcid: "https://orcid.org/0000-0001-7128-8847" - family-names: "Jenkins" given-names: "Jesse" -- family-names: "Sepulveda" - given-names: "Nestor" + orcid: "https://orcid.org/0000-0002-9670-7793" +- family-names: "Luo" + given-names: "Qian" + orcid: "https://orcid.org/0000-0003-3894-4093" +- family-names: "Macdonald" + given-names: "Ruaridh" + orcid: "https://orcid.org/0000-0001-9034-6635" - family-names: "Mallapragada" given-names: "Dharik" + orcid: "https://orcid.org/0000-0002-0330-0063" +- family-names: "Manocha" + given-names: "Aneesha" + orcid: "https://orcid.org/0000-0002-7190-4782" +- family-names: "Mantegna" + given-names: "Gabe" + orcid: "https://orcid.org/0000-0002-7707-0221" +- family-names: "Morris" + given-names: "Jack" - family-names: "Patankar" given-names: "Neha" + orcid: "https://orcid.org/0000-0001-7288-0391" +- family-names: "Pecci" + given-names: "Filippo" + orcid: "https://orcid.org/0000-0003-3200-0892" - family-names: "Schwartz" given-names: "Aaron" - family-names: "Schwartz" given-names: "Jacob" orcid: "https://orcid.org/0000-0001-9636-8181" -- family-names: "Chakrabarti" - given-names: "Sambuddha" - orcid: "https://orcid.org/0000-0002-8916-5076" -- family-names: "Xu" - given-names: "Qingyu" -- family-names: "Morris" - given-names: "Jack" +- family-names: "Schivley" + given-names: "Greg" + orcid: "https://orcid.org/0000-0002-8947-694X" - family-names: "Sepulveda" given-names: "Nestor" + orcid: "https://orcid.org/0000-0003-2735-8769" +- family-names: "Xu" + given-names: "Qingyu" + orcid: "https://orcid.org/0000-0003-2692-5135" title: "GenX" -version: 0.3.0 -doi: 10.5281/zenodo.6229425 -date-released: 2022-04-26 -url: "https://github.com/GenXProject/GenX" +version: 0.4.0 +doi: 10.5281/zenodo.10846070 +date-released: 2024-04-26 +url: "https://github.com/GenXProject/GenX.jl" From 5fb1f2c58c7e85b7afc02cdc5470c5cf04a7f135 Mon Sep 17 00:00:00 2001 From: lbonaldo Date: Mon, 1 Apr 2024 12:45:00 -0400 Subject: [PATCH 09/15] Fix initialize_cost_to_go docstring --- src/multi_stage/dual_dynamic_programming.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/multi_stage/dual_dynamic_programming.jl b/src/multi_stage/dual_dynamic_programming.jl index d2ff098952..bb9f14df68 100644 --- a/src/multi_stage/dual_dynamic_programming.jl +++ b/src/multi_stage/dual_dynamic_programming.jl @@ -577,10 +577,10 @@ The updated objective function $OBJ^{*}$ returned by this method takes the form: where $OBJ$ is the original objective function. $OBJ$ is scaled by two terms. The first is a discount factor (applied only in the non-myopic case), which discounts costs associated with the model stage $p$ to year-0 dollars: ```math \begin{aligned} - DF = \frac{1}{(1+WACC)^{L*(p-1)}} + DF = \frac{1}{(1+WACC)^{L_{p}*(p-1)}} \end{aligned} ``` -where $WACC$ is the weighted average cost of capital, and $L$ is the length of each stage in years (both set in multi\_stage\_settings.yml) +where $WACC$ is the weighted average cost of capital, and $L_{p}$ is the length of each stage in years (both set in multi\_stage\_settings.yml) The second term is a discounted sum of annual operational expenses incurred each year of a multi-year model stage: ```math From ed24f3a8a6437656740fab7895d24406362957ea Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Tue, 2 Apr 2024 15:11:23 -0400 Subject: [PATCH 10/15] Update configure_highs.jl Gotten rid of further non-essential parameters --- src/configure_solver/configure_highs.jl | 31 ------------------------- 1 file changed, 31 deletions(-) diff --git a/src/configure_solver/configure_highs.jl b/src/configure_solver/configure_highs.jl index 0c8b7cb712..8796643302 100644 --- a/src/configure_solver/configure_highs.jl +++ b/src/configure_solver/configure_highs.jl @@ -16,15 +16,6 @@ The HiGHS optimizer instance is configured with the following default parameters Pre_Solve: choose # Presolve option: "off", "choose" or "on" # [type: string, advanced: false, default: "choose"] Method: ipm #choose #HiGHS-specific solver settings # Solver option: "simplex", "choose" or "ipm" # [type: string, advanced: false, default: "choose"] In order to run a case when the UCommit is set to 1, i.e. MILP instance, set the Method to choose - #HiGHS-specific solver settings - # Parallel option: "off", "choose" or "on" - # [type: string, advanced: false, default: "choose"] - parallel: choose - - # Compute cost, bound, RHS and basic solution ranging: "off" or "on" - # [type: string, advanced: false, default: "off"] - ranging: off - # Limit on cost coefficient: values larger than this will be treated as infinite # [type: double, advanced: false, range: [1e+15, inf], default: 1e+20] infinite_cost: 1e+20 @@ -33,14 +24,6 @@ The HiGHS optimizer instance is configured with the following default parameters # [type: double, advanced: false, range: [1e+15, inf], default: 1e+20] infinite_bound: 1e+20 - # Lower limit on |matrix entries|: values smaller than this will be treated as zero - # [type: double, advanced: false, range: [1e-12, inf], default: 1e-09] - small_matrix_value: 1e-09 - - # Upper limit on |matrix entries|: values larger than this will be treated as infinite - # [type: double, advanced: false, range: [1, inf], default: 1e+15] - large_matrix_value: 1e+15 - # IPM optimality tolerance # [type: double, advanced: false, range: [1e-12, inf], default: 1e-08] ipm_optimality_tolerance: 1e-08 @@ -52,14 +35,6 @@ The HiGHS optimizer instance is configured with the following default parameters # Objective target for termination # [type: double, advanced: false, range: [-inf, inf], default: -inf] objective_target: -Inf - - # random seed used in HiGHS - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 0] - random_seed: 0 - - # number of threads used by HiGHS (0: automatic) - # [type: HighsInt, advanced: false, range: {0, 2147483647}, default: 0] - threads: 0 """ function configure_highs(solver_settings_path::String, optimizer::Any) @@ -72,17 +47,11 @@ function configure_highs(solver_settings_path::String, optimizer::Any) "Pre_Solve" => "choose", "TimeLimit" => Inf, "Method" => "ipm", - "parallel" => "choose", - "ranging" => "off", "infinite_cost" => 1e+20, "infinite_bound" => 1e+20, - "small_matrix_value" => 1e-09, - "large_matrix_value" => 1e+15, "ipm_optimality_tolerance" => 1e-08, "objective_bound" => Inf, "objective_target" => -Inf, - "random_seed" => 0, - "threads" => 0, ) attributes = merge(default_settings, solver_settings) From e5933dc3c2cb070a26fb0d08f7d2aa8a03d7a557 Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Tue, 2 Apr 2024 15:17:49 -0400 Subject: [PATCH 11/15] Update configure_highs.jl --- src/configure_solver/configure_highs.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/configure_solver/configure_highs.jl b/src/configure_solver/configure_highs.jl index 8796643302..e998e564f4 100644 --- a/src/configure_solver/configure_highs.jl +++ b/src/configure_solver/configure_highs.jl @@ -52,6 +52,7 @@ function configure_highs(solver_settings_path::String, optimizer::Any) "ipm_optimality_tolerance" => 1e-08, "objective_bound" => Inf, "objective_target" => -Inf, + "run_crossover" => "off", ) attributes = merge(default_settings, solver_settings) From b1007457650e09fb891f3ce3de341551fc5dd0fb Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Tue, 2 Apr 2024 15:20:13 -0400 Subject: [PATCH 12/15] Update configure_highs.jl Re-introduced crossover --- src/configure_solver/configure_highs.jl | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/configure_solver/configure_highs.jl b/src/configure_solver/configure_highs.jl index e998e564f4..7e87e25470 100644 --- a/src/configure_solver/configure_highs.jl +++ b/src/configure_solver/configure_highs.jl @@ -35,6 +35,10 @@ The HiGHS optimizer instance is configured with the following default parameters # Objective target for termination # [type: double, advanced: false, range: [-inf, inf], default: -inf] objective_target: -Inf + + # Run the crossover routine for IPX + # [type: string, advanced: "on", range: {"off", "on"}, default: "off"] + run_crossover: "off" """ function configure_highs(solver_settings_path::String, optimizer::Any) From 825107055f3aff1b1d925adb9dbd908de9d4d922 Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Tue, 2 Apr 2024 16:14:33 -0400 Subject: [PATCH 13/15] Update configure_highs.jl Removed infinite bound, infinite cost, objective bound, objective target, small matrix and large matrix values. --- src/configure_solver/configure_highs.jl | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/src/configure_solver/configure_highs.jl b/src/configure_solver/configure_highs.jl index 7e87e25470..8a811fba20 100644 --- a/src/configure_solver/configure_highs.jl +++ b/src/configure_solver/configure_highs.jl @@ -16,25 +16,9 @@ The HiGHS optimizer instance is configured with the following default parameters Pre_Solve: choose # Presolve option: "off", "choose" or "on" # [type: string, advanced: false, default: "choose"] Method: ipm #choose #HiGHS-specific solver settings # Solver option: "simplex", "choose" or "ipm" # [type: string, advanced: false, default: "choose"] In order to run a case when the UCommit is set to 1, i.e. MILP instance, set the Method to choose - # Limit on cost coefficient: values larger than this will be treated as infinite - # [type: double, advanced: false, range: [1e+15, inf], default: 1e+20] - infinite_cost: 1e+20 - - # Limit on |constraint bound|: values larger than this will be treated as infinite - # [type: double, advanced: false, range: [1e+15, inf], default: 1e+20] - infinite_bound: 1e+20 - # IPM optimality tolerance # [type: double, advanced: false, range: [1e-12, inf], default: 1e-08] ipm_optimality_tolerance: 1e-08 - - # Objective bound for termination - # [type: double, advanced: false, range: [-inf, inf], default: inf] - objective_bound: Inf - - # Objective target for termination - # [type: double, advanced: false, range: [-inf, inf], default: -inf] - objective_target: -Inf # Run the crossover routine for IPX # [type: string, advanced: "on", range: {"off", "on"}, default: "off"] @@ -51,11 +35,7 @@ function configure_highs(solver_settings_path::String, optimizer::Any) "Pre_Solve" => "choose", "TimeLimit" => Inf, "Method" => "ipm", - "infinite_cost" => 1e+20, - "infinite_bound" => 1e+20, "ipm_optimality_tolerance" => 1e-08, - "objective_bound" => Inf, - "objective_target" => -Inf, "run_crossover" => "off", ) From f97e9ab2ae8c4148e623dc98db269dc55161e800 Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Tue, 2 Apr 2024 16:15:43 -0400 Subject: [PATCH 14/15] Update configure_highs.jl --- src/configure_solver/configure_highs.jl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/configure_solver/configure_highs.jl b/src/configure_solver/configure_highs.jl index 8a811fba20..232efc83ef 100644 --- a/src/configure_solver/configure_highs.jl +++ b/src/configure_solver/configure_highs.jl @@ -37,6 +37,8 @@ function configure_highs(solver_settings_path::String, optimizer::Any) "Method" => "ipm", "ipm_optimality_tolerance" => 1e-08, "run_crossover" => "off", + "mip_rel_gap" => 0.001, + "mip_abs_gap" => 1e-06, ) attributes = merge(default_settings, solver_settings) From ac1490fb767ce35ca5214d88153009a0c2299e09 Mon Sep 17 00:00:00 2001 From: "Chakrabarti, Sambuddha (Sam)" Date: Tue, 2 Apr 2024 16:17:02 -0400 Subject: [PATCH 15/15] Update configure_highs.jl Re-introduced MIP rel gap and MIP abs gap --- src/configure_solver/configure_highs.jl | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/configure_solver/configure_highs.jl b/src/configure_solver/configure_highs.jl index 232efc83ef..d0bab8e835 100644 --- a/src/configure_solver/configure_highs.jl +++ b/src/configure_solver/configure_highs.jl @@ -23,6 +23,14 @@ The HiGHS optimizer instance is configured with the following default parameters # Run the crossover routine for IPX # [type: string, advanced: "on", range: {"off", "on"}, default: "off"] run_crossover: "off" + + # tolerance on relative gap, |ub-lb|/|ub|, to determine whether optimality has been reached for a MIP instance + # [type: double, advanced: false, range: [0, inf], default: 0.0001] + mip_rel_gap: 0.0001 + + # tolerance on absolute gap of MIP, |ub-lb|, to determine whether optimality has been reached for a MIP instance + # [type: double, advanced: false, range: [0, inf], default: 1e-06] + mip_abs_gap: 1e-06 """ function configure_highs(solver_settings_path::String, optimizer::Any)