Quick‑start Tutorial

Follow these steps to get a local run of the linked CIMS → COPPER → SILVER workflow. Everything happens on your workstation; no cloud account required.

Time to complete: ≈ 10 minutes on a fresh machine (not counting the model runtimes themselves).


1 · Prerequisites

  1. Optimization solver (one of)
    • IBM CPLEX ≥ 22.1 (recommended & default)
    • GLPK ≥ 5.0 (okay for test runs only)
  2. Conda (Anaconda or Miniconda) for environment management.
  3. A CODERS API key if you plan to pull historical generator data. If you dont have an API key please sign up for one using the coders website .

2 · Clone the linkage runner

git clone https://gitlab.com/sesit/M3-linkages.git
cd cims-copper-silver

3 · Create and activate the linkage Conda environment

conda create -n linkage python
conda activate linkage
pip install -r requirements.txt

4 · Copy & tweak the configuration

cp sample_config.toml config.toml

It is recommendd that you follow the Reference Scenario as the cims repo already has a configuration file and policies setup to test that the workflow is setup correctly before building your own scenario. Note you will need to update the file paths in the config.toml file so that the linkingtool can find the relevant model code as well as add your coders api key to access the remote data stored on the coders database.

Open config.toml in your editor and make sure the the config file points to the correct file paths to the model repos on your file system:

[CIMS]
repo_path   = "~/code/cims-models-fork"

[COPPER]
repo_path   = "~/code/copper"

[SILVER]
repo_path   = "~/code/silver"

If you see a error with filepath ... not found you likely need to set the above filepath parameters in the scenario config file


5 · Run the Reference scenario

python linkage.py -sc Reference

That command kicks off the following chain:

  1. CIMS produces annual demand & technology shares.
  2. COPPER converts them into hourly capacity‑expansion decisions.
  3. SILVER checks unit‑commitment feasibility and returns updated electricity prices.
  4. Steps 1‑2 iterate until price convergence (by default, two passes).

For a super‑fast test (one representative day):

python linkage.py -sc reference -t   # or --test

Running steps

Running locally

  1. Run the linkage.py script with the scenario name passed as an argument console python linkage.py -sc <scenario_name>
  2. To run a test scenario (i.e., only run one reprepentative day in COPPER and SILVER), include the test flag (-t or --test) as an argument console python linkage.py -sc <scenario_name> -t

6 · Find your results

After the run finishes, look under:

outputs/
 └─ reference/
     ├─ cims/
     ├─ copper/
     ├─ silver/
     └─ linkage_summary.xlsx

*The exact folder name mirrors -sc <scenario_name>.


Next steps

  • Configure a new scenario
  • create a new folder in the cims-copper-silver/scenarios folde
  • copy config.toml to this folder and change carbon price, demand growth, etc.
  • create a matching scenario folder in the cims repository - see https://github.com/EMRG-SFU/cims-models/tree/staging/scenarios
  • Visualize results – point the IDEA dashboard at the outputs/ folder to generate ready‑made charts.