{"id":158866,"name":"EV-EcoSim","description":"A grid-aware co-simulation platform for the design and optimization of EV Charging Infrastructure.","url":"https://github.com/ebalogun01/ev-ecosim","last_synced_at":"2026-04-07T14:30:36.050Z","repository":{"id":213585351,"uuid":"329403355","full_name":"ebalogun01/EV-EcoSim","owner":"ebalogun01","description":"EV-EcoSim: A grid-aware co-simulation platform for the design and optimization of EV Charging Infrastructure. Link to publication: https://doi.org/10.1109/TSG.2023.3339374 ","archived":false,"fork":false,"pushed_at":"2024-04-19T05:40:52.000Z","size":275467,"stargazers_count":26,"open_issues_count":9,"forks_count":5,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-08T21:11:34.627Z","etag":null,"topics":["battery","controls","electric-vehicles","energy-transition","optimization","powerflow","solar"],"latest_commit_sha":null,"homepage":"https://ebalogun01.github.io/EV-EcoSim/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ebalogun01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2021-01-13T18:55:38.000Z","updated_at":"2025-08-06T03:38:35.000Z","dependencies_parsed_at":null,"dependency_job_id":"72845dc8-0ee3-407f-a64e-4949fb6e66d9","html_url":"https://github.com/ebalogun01/EV-EcoSim","commit_stats":{"total_commits":455,"total_committers":11,"mean_commits":41.36363636363637,"dds":"0.21098901098901102","last_synced_commit":"ccc78ddb69bdbce8b6a855d664b3140f9a8e45c7"},"previous_names":["ebalogun01/ev-ecosim"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ebalogun01/EV-EcoSim","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebalogun01%2FEV-EcoSim","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebalogun01%2FEV-EcoSim/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebalogun01%2FEV-EcoSim/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebalogun01%2FEV-EcoSim/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebalogun01","download_url":"https://codeload.github.com/ebalogun01/EV-EcoSim/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebalogun01%2FEV-EcoSim/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30912653,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-25T01:19:28.689Z","status":"online","status_checked_at":"2026-03-25T02:00:07.751Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"ebalogun01","name":"Emmanuel Balogun","uuid":"42688418","kind":"user","description":"Stanford MechE PhD. Machine Learning expert with a focus on data-driven control, simulation, and generative AI. I enjoy teaching and had the privilege to teach.","email":"","website":"https://www.linkedin.com/in/ebalo/","location":"California","twitter":"emarl_bee","company":"Stanford","icon_url":"https://avatars.githubusercontent.com/u/42688418?u=860af1f5b2f92b2aa3752322e47537df5e9b101b\u0026v=4","repositories_count":1,"last_synced_at":"2023-03-12T04:23:20.433Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/ebalogun01","funding_links":[],"total_stars":null,"followers":null,"following":null,"created_at":"2023-03-12T04:23:20.435Z","updated_at":"2023-03-12T04:23:20.435Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebalogun01","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ebalogun01/repositories"},"packages":[],"commits":{"id":1459026,"full_name":"ebalogun01/ev-ecosim","default_branch":"main","total_commits":455,"total_committers":9,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":50.55555555555556,"dds":0.15824175824175823,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2025-12-31T00:15:32.799Z","last_synced_commit":"ccc78ddb69bdbce8b6a855d664b3140f9a8e45c7","created_at":"2023-12-24T00:14:47.932Z","updated_at":"2025-12-31T00:14:01.464Z","committers":[{"name":"ebalogun01","email":"42688418+ebalogun01","login":"ebalogun01","count":383},{"name":"unknown","email":"ldbuec@gmail.com","login":"ebuech","count":30},{"name":"EC2 Default User","email":"ec2-user@ip-172-31-20-251.us-west-1.compute.internal","login":null,"count":15},{"name":"EC2 Default User","email":"ec2-user@ip-172-31-29-68.us-west-1.compute.internal","login":null,"count":13},{"name":"ebalogun01","email":"ebalogun@DESKTOP-OJ9Q7V8.localdomain","login":null,"count":4},{"name":"EC2 Default User","email":"ec2-user@ip-172-31-31-234.us-west-1.compute.internal","login":null,"count":4},{"name":"EC2 Default User","email":"ec2-user@ip-172-31-0-252.us-west-1.compute.internal","login":null,"count":4},{"name":"Lily Buechler","email":"lilybuechler@Lilys-MacBook-Air.local","login":null,"count":1},{"name":"EC2 Default User","email":"ec2-user@ip-172-31-8-167.us-west-1.compute.internal","login":null,"count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebalogun01%2Fev-ecosim/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-12-31T00:00:56.974Z","repositories_count":6146605,"commits_count":931092363,"contributors_count":36236558,"owners_count":1130999,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"ebalogun01/ev-ecosim","html_url":"https://github.com/ebalogun01/ev-ecosim","last_synced_at":"2025-09-01T03:05:51.547Z","status":"error","issues_count":72,"pull_requests_count":33,"avg_time_to_close_issue":1138900.9841269841,"avg_time_to_close_pull_request":325652.63636363635,"issues_closed_count":63,"pull_requests_closed_count":33,"pull_request_authors_count":3,"issue_authors_count":2,"avg_comments_per_issue":0.5555555555555556,"avg_comments_per_pull_request":0.21212121212121213,"merged_pull_requests_count":31,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-12-24T00:14:48.597Z","updated_at":"2025-09-01T03:54:08.628Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebalogun01%2Fev-ecosim","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/ebalogun01%2Fev-ecosim/issues","issue_labels_count":{"enhancement":19,"documentation":4,"nice-to-have":4,"bug":3,"help wanted":1},"pull_request_labels_count":{},"issue_author_associations_count":{"COLLABORATOR":53,"OWNER":10},"pull_request_author_associations_count":{"OWNER":26,"COLLABORATOR":5},"issue_authors":{"Plavit":53,"ebalogun01":10},"pull_request_authors":{"ebalogun01":26,"Plavit":4,"ebuech":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2025-12-31T00:00:36.777Z","repositories_count":12502245,"issues_count":35675631,"pull_requests_count":117146314,"authors_count":11079196,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"Plavit","count":57,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/Plavit"},{"login":"ebalogun01","count":36,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ebalogun01"},{"login":"ebuech","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ebuech"}],"active_maintainers":[]},"events":{"total":{"WatchEvent":4,"ForkEvent":2},"last_year":{"WatchEvent":3,"ForkEvent":1}},"keywords":["battery","controls","electric-vehicles","energy-transition","optimization","powerflow","solar"],"dependencies":[],"score":5.752572638825633,"created_at":"2023-12-24T00:12:02.429Z","updated_at":"2026-04-07T14:30:36.052Z","avatar_url":"https://github.com/ebalogun01.png","language":"Python","category":"Consumption","sub_category":"Mobility and Transportation","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"![EV-EcoSimLogo.png](doc_images%2FEV-EcoSimLogoCropped.png)\n\n[![Basic Module Tests](https://github.com/ebalogun01/EV-EcoSim/actions/workflows/module-tests.yml/badge.svg)](https://github.com/ebalogun01/EV-EcoSim/actions/workflows/module-tests.yml)\n\nA grid-aware co-simulation platform for the design and optimization of electric vehicle charging infrastructure. \nPaper: https://doi.org/10.1109/TSG.2023.3339374 \n\n## Quickstart\nJump to [requirements](#requirements).\\\nJump to [how to run](#how-to-run).\n\n[//]: # (![sim_frame.png]\u0026#40;doc_images%2Fsim_frame.png\u0026#41;)\n\n## Authors\nEmmanuel Balogun (Project lead): ebalogun@stanford.edu, Lily Buechler: ebuech@stanford.edu\n\n## Contribution\nWe welcome all contributions to the project, including documentation and feature improvements, etc. \nPlease see the [CONTRIBUTING.md](CONTRIBUTING.md) file for more details.\n\n## Correspondence\nFor more detailed questions, potential collaborations, suggestions and discussions, or assistance that cannot be done directly on github, please reach out to our email.\n\n## Requirements\n1. See `requirements.txt` or `environment.yml` for **required** packages. The `environment.yml` file can be used to create a new conda environment with the required packages. To create a new environment using `conda env create --name \u003cyour env name\u003e -f environment.yml` OR if using pip, use `pip install -r requirements.txt`. If both do not work, then install packages listed in the environment manually.\n\n2. Arras-energy (SLAC) GridLAB-D installation (master branch). See repository [here](https://github.com/arras-energy/gridlabd) for details. This is required for the power grid co-simulation functionality. \n   This is not necessary if one does not consider the power system voltage impacts.\n\n3. Gurobi License [recommended]. Free (educational) or commercial Gurobi Licenses can be obtained [here](https://www.gurobi.com/)\n\n4. MOSEK License [optional if Gurobi is installed]. Free (educational) or commercial MOSEK License can be obtained [here](https://www.mosek.com/products/academic-licenses/)\n\n\n## Folder descriptions\n\n### data/ambient_data\nHosts ambient temperature data for capturing the effects of environmental conditions on subsystems, such as battery, \ntransformers, charging stations.\n\n\n### data/base_load_data\nIncludes existing base case building/home load (usually uncontrollable) within the distribution grid. This work uses \nproprietary Pecan Street Data. Below is an exmaple data prototype for the base load data. Note that column fields are\ncase-sensitive. The data used in the original paper has a minute resolution, as is the power system simulation. A csv \nfile with the data prototype is also provided in `base_load_data/data_use.csv`. The fields: month, day, and \nhour are indexed from 1. For example 1 - January, 12 - December. The fields: minute and second are indexed from 0. For\nexample 0 - 59. The rest of the columns represented by numbers are anonymized building loads in kilo-watts (kW).\nFor the paper, the `base_load_data/data_use.csv` contained the actual data from Pecan Street, \nbut unfortunately cannot be shared due to proprietary data rights. However, there are free versions of Pecan Street data\nthat can be used within the plaform by simply replacing the csv file with the appropriate load data file.\n\n\u003cimg src=\"doc_images/baseload_data_proto.png\" width=\"800\" alt=\"Base load data prototype.\"\u003e\n\n### data/elec_rates\nIncludes .csv files for electricity Time-of-use (TOU) rates. The input data prototype for electricity rates\nis shown below. User must upload a normal full-year sized data (for 365 days) to avoid\nany errors.\n\n\u003cimg src=\"doc_images/elecrates_data_proto.png\" width=\"100\"\u003e\n\nThe data required must be in the format shown above. If you upload your own electricity rate data, navigate to `charging_sim/configs/prices.json` and modify the *data_path* field\nto ensure that the *data_path* field matches the uploaded custom price data. The `electricityPrices.py` module will read \nthe time-of-use (TOU) price data and sample prices during optimization and simulation. The data should be one full year of TOU rate prices at 15 minute resolution.\nThe `electricityPrices.py` module can also help with downscaling the data to 15 minute resolution if the data is at a\nmuch coarser resolution. The module will save the downscaled data in the `elec_rates` folder.\n\n### data/solar_data\n`solar_data` folder includes solar irradiance data for capturing the effects of environmental conditions on overall system cost. Default\ndata for solar irradiance is from the National Solar Radiation Database (NSRDB) for the San Francisco Bay Area.\nThe data prototype is from the National Renewable Energy Laboratory (NREL) and is shown below. Note that column fields\nare case-sensitive. If you upload your own solar irradiance data, navigate to `charging_sim/configs/solar.json` and modify \nthe *data_path* field to ensure that the *data_path* field matches the uploaded custom solar data.\n\n![solar_data_proto.png](doc_images%2Fsolar_data_proto.png)\n\nMonth labels are indexed from 1 to 12, inclusive; 1 - January, 12 - December. The original data is in hourly resolution.\nThe *EV-EcoSim* data prototype is in 15 minute intervals by default, with irradiance oversampled 4 times from hourly \ndataset. The GHI represents the \"Global Horizontal Irradiance\" in W/m^2, which is the total amount of shortwave radiation\nreceived from above by a surface horizontal to the ground. \n\n\n\n### batt_sys_identification\nBattery system identification module. Hosts the class for generating battery system identification parameters\nfrom experimental data. This module leverages a genetic algorithm to optimize the battery model parameters. \nThe battery model is a 2nd order RC Equivalent circuit model (ECM). One can use this module to generate custom NMC\nbattery parameters by uploading experimental data to the `batt_sys_identification/data` folder and running the module.\nThe module will generate a `.csv` file with the battery parameters in the `batt_sys_identification` folder.\nThe data prototype is shown below. Note that column fields are case-sensitive.\n\n![batt_sys_data_proto.png](doc_images%2Fbatt_sys_data_proto.png)\n\n[//]: # (\u003cbr /\u003e)\n\n[//]: # (\u003cdiv style=\"text-align: center\"\u003e)\n\n[//]: # (  \u003cimg src=\"doc_images/ECM.png\" width=\"500\" alt=\"Battery ECM\"\u003e)\n\n[//]: # (  \u003cfigcaption\u003eEquivalent circuit model \u0026#40;ECM\u0026#41; for battery system identification\u003c/figcaption\u003e)\n\n[//]: # (\u003c/div\u003e)\n\n[//]: # (\u003cbr /\u003e)\n\nThe module will save a new `.csv` file with an additional field for the corrected open circuit voltage (OCV) values;\nthis field (column) will be labelled `ocv_corr` within the new battery data csv, including the existing columns as shown\nin the data prototype above.\n\nOnce the battery parameters are generated, they can be used in the `data/battery_data` folder and `charging_sim/configs/battery.json` can \nbe modified so the model runs using the new custom parameters.\n\nThe image below shows the battery model error (MAPE) for the NMC battery model parameters generated from the module for \n3 different sample cells over 10 different trials. The model is trained for only 40 generations (or iterations) of the \ngenetic algorithm with a population of 10. \n\n[//]: # (![battery_model_error_mape.png]\u0026#40;doc_images%2Fbattery_model_error_mape.png\u0026#41;)\n\u003cimg src=\"doc_images/battery_model_error_mape.png\" width=\"500\"\u003e\n\n### charging_sim\nThis folder encompasses the implementation of the physical modules, including:\n\n * `battery.py` - Battery cell module.\n * `batteryAgingSim.py` - Battery aging module.\n * `batterypack.py` - Battery pack module.\n * `chargingStation.py` - Charging station module.\n * `clock.py` - Clock module.\n * `controller.py` - Controller module.\n * `electricityPrices.py` - Electricity prices module\n * `node.py` - Node module (for centralized DER control and optimization).\n * `optimization.py` - Optimization module.\n * `orchestrator.py` - Simulation orchestrator module.\n * `simulate.py` - Offline DER control optimization for cost minimization (this is run for offline mode (no state feedback)).\n * `solar.py` - Solar PV module.\n * `transformer.py` - Transformer module.\n * `utils.py` - Hosts utility functions used by some modules.\n\nThere also contains the `configs` folder under the `charging_sim` folder. The `configs` folder which includes the \nconfiguration files for all the relevant modules, such as battery, transformer, solar, clock modules, etc. \n\n### DLMODELS\nThis includes legacy load forecasts models developed (not needed).\n\n\n\n### feeders\nLibrary of IEEE test feeders and PNNL taxonomy feeders for distribution systems in the GridLAB-D `.glm` format.\nIEEE feeders have spot loads specified at primary distribution level. PNNL taxonomy feeders have spot loads specified at\nprimary or secondary distribution level.\n\n### feeder_population\nScripts for populating base feeder models with time-varying loads and resources using the load data in base_load_data. \n`feeder_population.py` generates the necessary files for a co-simulation run based on the parameters specified in \n`test_cases/{CASE_NAME}/feeder_population/config.txt`. Feeder population requires residential load data not included in repo (limited access) due to proprietary data rights. However, there are \nfree versions of Pecan Street data that may be replaced in the `base_load_data` folder; file should be named `data_use.csv`.\n\n\n### test_cases\n\n#### Co-simulation cases.\n `base_case`- Reads voltage from GridLAB-D and writes power injections at each timestep (no EV charging or DER).\n`battery` - base_case plus transformer thermal model plus DER integration (included battery and solar).\n\n### analysis\nScripts for plotting and analysis of co-simulation results. Includes post optimization and simulation cost \ncalculation modules and voltage impacts on the distribution grid.\n\n`plot_results.py` - This module is used post-simulation to parse the voltages from the power-simulation to calculate the percentage\nvoltage violations per ANSI C84.1. The file also generates voltage distribution plots. A user can modify the\nSIMULATION_FOLDER variable which is the string of the path where the powerflow simulation output voltages at each node\nexist.\n\n`load_post_opt_costs.py` - This module calculates the levelized cost of energy and populates into tables/cost matrices, which are saved in the\nrespective files and folders. The module also generates plots for the cost analysis.  \n\n`cost_analysis.py` - This module contains the `CostEstimator` class, which estimates the cost of the different grid and DER components\nfrom the simulation.\n\n## How to run\n\nFor quick-run, it is recommended to use WSL2 (Linux) or MacOS All Native Windows from windows 11 come with WSL2 and you can install your preferred distro (Ubuntu recommended). Older windows \nusers can install WSL2. See [here](https://docs.microsoft.com/en-us/windows/wsl/install-win10) for more details. Read [requirements](#requirements) for how to setup the environment and skip to item #3.\n\n1. If you do not have conda installed and want to use conda, please follow the instructions [here](https://docs.conda.io/projects/conda/en/latest/user-guide/install/index.html) to install conda.\n\n2. Create a new environment using `conda env create --name \u003cyour env name\u003e -f environment.yml`OR \ninstall packages listed in the environment manually. You can also use the `requirements.txt` file and [pip](https://packaging.python.org/en/latest/guides/installing-using-pip-and-virtual-environments/) to install the required packages using the command `pip install -r requirements.txt`.\n\n3. Ensure gridlabd is installed by following recommended installation method if using the online (MPC) power system co-simulation functionality.\n\n4. Open the `user_inputs.json` file in the root folder and change the `opt_solver` field to your either `GUROBI` or `MOSEK`, depending on the solver\n     you have installed and have a license for.\n\n5. For offline (One-shot) optimization simulation (Does not require GridLAB-D install):\n   * **If using Unix based system or Windows Subsystem for Linux (WSL)**: Modify the fields in the `user_inputs.json` file as needed.\n     To open WSL, you can open the command line interface or terminal and type `wsl` Once the \n     fields are modified as desired, run `python3 evecosim.py --mode=oneshot` or `python3 evecosim.py --mode oneshot` or \n     `python3 evecosim.py` in the root directory. This will run the simulation and generate the results in the `results` \n     folder under the `analysis` directory. After which the platform will generate the cost analysis plots and tables in \n     the `analysis` folder.\n   * **If using Native Windows**: TODO\n \n6. For online MPC battery test case (Requires GridLAB-D install):\n   * **If using Unix based system or Windows Subsystem for Linux (WSL) [RECOMMENDED]**: Open the `user_inputs.json` file in the root folder and modify the parameters as needed. The prepopulated\n     fields can be modified. To open WSL, you can open the command line interface or terminal and type `wsl`. Once the \n     fields are modified as desired, and you are in the project root directory, in the terminal, \n     type: `python3 evecosim.py --mode=mpc-grid` or `python3 evecosim.py --mode mpc-grid` and let the simulation run.\n   \n   * **If using Native Windows**: Navigate to `test_cases/battery/feeder_population` and run `feeder_population_collocated.py` for collocated (DEFAULT) case or `feeder_population_centralized.py`. This uses the \n     `test_cases/battery/feeder_population/config.txt` settings to prepare the power system and populate the secondary\n     distribution network with time-varying base loads, EV charging stations, Distributed Energy Resources (DERs - Solar, Storage), and required transformers.\n      * Once confirmed that `feeder_population_\u003cCASE_TYPE\u003e.py` (CASE_TYPE is either collocated or centralized but only collocated is supported at this time) has run successfully and generates the required `IEEE123_secondary.glm` and\n        `IEEE123_populated.glm` files, you are done with the initial pre-simulation run preparation.\n      * Now navigate one level of out `/feeder_population` and run scenarios.py using `python3 scenarios.py` or `gridlabd python scenarios.py` (recommended).\n\n7. For base case (Requires GridLAB-D install):\n   * **If using Unix based system or Windows Subsystem for Linux (WSL) [RECOMMENDED]**: Make sure you are in the project root directory and run `python3 evecosim.py --mode base-case-grid` or `python3 evecosim.py --mode=base-case-grid`. The base-case simulation without any EV Charging nor Distrbuted Energy Resources will run. Results will be in the `test_cases/base_case` folder.\n\n   * **If using Native Windows**\n      * Navigate to `./test_cases/base_case/feeder_population` and run `feeder_population.py`. This uses the \n        `./test_cases/base_case/feeder_population/config.txt` settings to prepare the power system and populate the secondary distribution network \\\n        with time-varying base loads\n      * Navigate back one directory to `./test_cases/base_case` and run master_sim.py using `python3 master_sim.py`\n\n## Post-simulation analysis\n * This is done with the modules in the `analysis` folder. Please see the `analysis` folder section  for more details.\n\n## Acknowledgements\nThis work was supported in part by Stanford Bits and Watts, Portland General Electric, Chevron Energy Fellowship, and Siemens Technology.\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.1109/TSG.2023.3339374"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":[],"project_url":"https://ost.ecosyste.ms/api/v1/projects/158866","html_url":"https://ost.ecosyste.ms/projects/158866"}