├── .github └── workflows │ ├── citation.yaml │ └── python.yaml ├── .gitignore ├── .travis.yml ├── .zenodo.json ├── CITATION.cff ├── LICENSE ├── README.md ├── docs ├── changelog.md └── index.md ├── makefile ├── pre-release.sh ├── requirements.txt ├── scripts ├── KTH_HPC_Linux_OSeMOSYS_GNU-MathProg_cplex_batchRun.sh ├── README.md ├── RunHPCNodes.py ├── compare_results.sh ├── convert_cplex_to_cbc.py ├── cplex_batchrun.bat ├── kth_hpc_cplex_batchrun.sh ├── preprocess_data.py └── tstranslate.py ├── src ├── README.md ├── osemosys.txt ├── osemosys_fast.txt └── osemosys_short.txt └── tests ├── Data_check_statements ├── data_simp_Min_annual_Act_check.txt ├── data_simp_Modelperiod_activity_check.txt ├── data_simp_Timeslice_check.txt ├── data_simp_annual_act_check.txt ├── data_simp_capacity_1_check.txt ├── data_simp_capacity_2_check.txt └── data_simp_capacity_inv_check.txt ├── README.md ├── simplicity.txt ├── super_simple_model.txt ├── test_gnu_mathprog.py └── utopia.txt /.github/workflows/citation.yaml: -------------------------------------------------------------------------------- 1 | name: cffconvert 2 | 3 | on: 4 | push: 5 | paths: 6 | - citation.cff 7 | 8 | jobs: 9 | validate: 10 | name: "validate" 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Check out a copy of the repository 14 | uses: actions/checkout@v2 15 | 16 | - name: Check whether the citation metadata from CITATION.cff is valid 17 | uses: citation-file-format/cffconvert-github-action@2.0.0 18 | with: 19 | args: "--validate" 20 | -------------------------------------------------------------------------------- /.github/workflows/python.yaml: -------------------------------------------------------------------------------- 1 | name: Python package 2 | 3 | on: [push, pull_request] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | strategy: 10 | matrix: 11 | python-version: ["3.8", "3.9", "3.10", "3.11"] 12 | 13 | steps: 14 | - uses: actions/checkout@v3 15 | - name: Set up Python ${{ matrix.python-version }} 16 | uses: actions/setup-python@v4 17 | with: 18 | python-version: ${{ matrix.python-version }} 19 | - name: Install dependencies 20 | run: | 21 | sudo apt-get install glpk-utils libglpk-dev glpk-doc 22 | python -m pip install --upgrade pip 23 | if [ -f requirements.txt ]; then pip install -r requirements.txt; fi 24 | - name: Test with pytest 25 | run: | 26 | pytest 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OSeMOSYS files 2 | *.sol 3 | *.lp 4 | results/* 5 | SelectedResults.csv 6 | *.csv 7 | 8 | # Otoole 9 | *.xlsx 10 | *.graphml 11 | *.pdf 12 | 13 | # Python and development files 14 | .pytest_cache 15 | .vscode 16 | *.diff 17 | */__pycache__ 18 | 19 | # System files 20 | .DS* 21 | 22 | # Build folder 23 | osemosys_gnu_mathprog_* 24 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | dist: xenial 3 | os: linux 4 | python: 5 | - 3.7 6 | before_install: 7 | - sudo apt-get install -y glpk-utils libglpk-dev coinor-cbc pandoc 8 | install: 9 | - pip install pytest pandas 10 | script: 11 | - pytest tests 12 | before_deploy: 13 | - make release 14 | # - . pre-release.sh $TRAVIS_TAG 15 | deploy: 16 | provider: releases 17 | tag_name: $TRAVIS_TAG 18 | name: $TRAVIS_TAG 19 | # prerelease: $prerelease 20 | edge: true 21 | cleanup: false 22 | release_notes_file: "docs/changelog.md" 23 | api_key: 24 | secure: aZ/HJr7KB0z7s4PPjfy5et7i9cwIAoNNxnmZ7wFfr6etauId92UANaB1khH8+Yhd5WQaDBtzp9Zb/307CmwAy1X/T+Q9cv8jNmUfXhR6yhAfUbuExa02ApTSpqsyceyYVn5kdzUHldY3Hwr5bNIvmqXHlI1TrKi7Z7XJYTcZgNQMtZxd7NF7NOWzdsufoXhBSgbAA1wEBgfjCW3ljzOxZz98M8sIYgHfG8Zi1LjvsTG0cV/AlUtDTTIen9GaBI8KbMYYGQtzytVqFwob78jlkatKho34N0GdWkgHqDKJhhoWPwGKbU77kyfZggbccNHtJJPou3H56cO+1No7kIxgiY/j0JYjnUy7wUqxhmLpZvwJZY+IfV8fA/2y6wwH2P4EZEfHP1CFXjUAkN/WoGGybna/fXSRAD+YDBlTjXBrO627ig4svvE6Iea4ZqWNtUUM0alVdQ4J24If5wBZcebbl8hfBrhsLSGqhTxOmTAaK7Z0eAXW3kopQ6XUx4C6142qcixNGpLEJCSOx451UwI1M9Rw8wkt0Srv+6yjg7+rGHEq2jgPldK0PZuLEjPMLojc8tqaQ0oVcjK6LG1hRX5h/n7zS/h6KsCZ3+PycDEvipfkFuVNpDM0SwwA951LOxHoH2kmpqdjwaxPMw4vO1f6A7utSzH+OFn/SJFgyID95TU= 25 | file: 26 | - "osemosys_gnu_mathprog_$TRAVIS_TAG.zip" 27 | on: 28 | repo: OSeMOSYS/OSeMOSYS_GNU_MathProg 29 | tags: true 30 | notifications: 31 | email: false -------------------------------------------------------------------------------- /.zenodo.json: -------------------------------------------------------------------------------- 1 | { 2 | "license": "MIT", 3 | "upload_type": "software", 4 | "creators": [ 5 | { 6 | "name": "Mark Howells", 7 | "orcid": "0000-0001-6419-4957", 8 | "affiliation": "Imperial College London; Loughborough University Department of Social Sciences" 9 | }, 10 | { 11 | "name": "Manuel Welsch", 12 | "affiliation": "International Atomic Energy Agency" 13 | }, 14 | { 15 | "name": "Constantinos Taliotis", 16 | "orcid": "0000-0003-4022-5506", 17 | "affiliation": "The Cyprus Institute" 18 | }, 19 | { 20 | "name": "Adrian Lefvert", 21 | "orcid": "0000-0001-8587-4054", 22 | "affiliation": "KTH Royal Institute of Technology" 23 | }, 24 | { 25 | "name": "Igor Tatarewicz", 26 | "affiliation": "Institute of Environmental Protection - National Research Institute / National Centre for Emissions Management (KOBiZE)" 27 | }, 28 | { 29 | "name": "Tom Alfstad", 30 | "affiliation": "United Nations Department of Economic and Social Affairs" 31 | }, 32 | { 33 | "name": "Nawfal Saadi", 34 | "orcid": "0000-0001-8923-7431", 35 | "affiliation": "Enel Green Power" 36 | }, 37 | { 38 | "name": "Francesco Gardumi", 39 | "affiliation": "KTH Royal Institute of Technology", 40 | "orcid": "0000-0001-8371-9325" 41 | }, 42 | { 43 | "name": "Vignesh Sridharan", 44 | "affiliation": "KTH Royal Institute of Technology", 45 | "orcid": "0000-0003-0764-2615" 46 | }, 47 | { 48 | "name": "Agnese Beltramo", 49 | "affiliation": "KTH Royal Institute of Technology", 50 | "orcid": "0000-0001-6591-3028" 51 | }, 52 | { 53 | "name": "Nandi Moksnes", 54 | "affiliation": "KTH Royal Institute of Technology", 55 | "orcid": "0000-0002-8641-564X" 56 | }, 57 | { 58 | "name": "Taco Niet", 59 | "affiliation": "Simon Fraser University", 60 | "orcid": "0000-0003-0266-2705" 61 | }, 62 | { 63 | "name": "Abhishek Shivakumar", 64 | "affiliation": "United Nations Department of Economic and Social Affairs", 65 | "orcid": "0000-0002-2535-4134" 66 | }, 67 | { 68 | "name": "Roberto Heredia Fonseca", 69 | "affiliation": "KTH Royal Institute of Technology", 70 | "orcid": "0000-0003-3947-8725" 71 | }, 72 | { 73 | "name": "Will Usher", 74 | "affiliation": "KTH Royal Institute of Technology", 75 | "orcid": "0000-0001-9367-1791" 76 | }, 77 | { 78 | "name": "Christoph Muschner", 79 | "affiliation": "KTH Royal Institute of Technology", 80 | "orcid": "0000-0001-8144-5260" 81 | } 82 | ], 83 | "access_right": "open" 84 | } 85 | -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | cff-version: 1.2.0 2 | title: OSeMOSYS GNU MathProg 3 | message: >- 4 | If you use this software, please cite it using the 5 | metadata from this file. 6 | type: software 7 | authors: 8 | - given-names: Mark 9 | family-names: Howells 10 | orcid: 'https://orcid.org/0000-0001-6419-4957' 11 | affiliation: Loughborough University Department of Social Sciences 12 | - family-names: Welsch 13 | given-names: Manuel 14 | affiliation: International Atomic Energy Agency 15 | - family-names: Lefvert 16 | given-names: Adrian 17 | orcid: 'https://orcid.org/0000-0001-8587-4054' 18 | - given-names: Constantinos 19 | family-names: Taliotis 20 | orcid: 'https://orcid.org/0000-0003-4022-5506' 21 | affiliation: The Cyprus Institute 22 | - given-names: Igor 23 | family-names: Tatarewicz 24 | affiliation: >- 25 | Institute of Environmental Protection - National 26 | Research Institute / National Centre for Emissions 27 | Management (KOBiZE) 28 | - given-names: Tom 29 | family-names: Alfstad 30 | affiliation: >- 31 | United Nations Department of Economic and Social 32 | Affairs 33 | - given-names: Nawfal 34 | family-names: Saadi 35 | orcid: 'https://orcid.org/0000-0001-8923-7431' 36 | - given-names: Francesco 37 | family-names: Gardumi 38 | orcid: 'https://orcid.org/0000-0001-8371-9325' 39 | affiliation: KTH Royal Institute of Technology 40 | - given-names: Vignesh 41 | family-names: Sridharan 42 | affiliation: KTH Royal Institute of Technology, 43 | orcid: 'https://orcid.org/0000-0003-0764-2615' 44 | - given-names: Agnese 45 | family-names: Beltramo 46 | affiliation: KTH Royal Institute of Technology, 47 | orcid: 'https://orcid.org/0000-0001-6591-3028' 48 | - given-names: Nandi 49 | family-names: Moksnes 50 | affiliation: KTH Royal Institute of Technology, 51 | orcid: 'https://orcid.org/0000-0002-8641-564X' 52 | - given-names: Taco 53 | family-names: Niet 54 | affiliation: Simon Fraser University, 55 | orcid: 'https://orcid.org/0000-0003-0266-2705' 56 | - given-names: Abhishek 57 | family-names: Shivakumar 58 | affiliation: United Nations Department of Economic and Social Affairs, 59 | orcid: 'https://orcid.org/0000-0002-2535-4134' 60 | - given-names: Roberto 61 | family-names: Heredia Fonseca, 62 | affiliation: KTH Royal Institute of Technology, 63 | orcid: 'https://orcid.org/0000-0003-3947-8725' 64 | - given-names: Will 65 | family-names: Usher 66 | affiliation: KTH Royal Institute of Technology, 67 | orcid: 'https://orcid.org/0000-0001-9367-1791' 68 | - given-names: Christoph 69 | family-names: Muschner 70 | affiliation: KTH Royal Institute of Technology, 71 | orcid: 'https://orcid.org/0000-0001-8144-5260' 72 | identifiers: 73 | - type: doi 74 | value: 10.5281/zenodo.5255505 75 | description: "This is the archived snapshot of version 0.8 of OSeMOSYS GNU MathProg" 76 | - type: doi 77 | value: 10.5281/zenodo.5255610 78 | description: "This is the archived snapshot of version 0.8.1 of OSeMOSYS GNU MathProg" 79 | - type: doi 80 | value: 10.5281/zenodo.4778833 81 | description: "This is the archived snapshot of version 1.0.1 of OSeMOSYS GNU MathProg" 82 | - type: doi 83 | value: 10.5281/zenodo.4778832 84 | description: "This is the archived collections of all versions of OSeMOSYS GNU MathProg" 85 | repository-code: 'https://github.com/OSeMOSYS/OSeMOSYS_GNU_MathProg' 86 | url: 'http://www.osemosys.org/' 87 | repository: 'https://github.com/OSeMOSYS/OSeMOSYS' 88 | repository-artifact: 'https://zenodo.org/record/5255610' 89 | abstract: >- 90 | OSeMOSYS - the Open Source energy MOdelling SYStem. This 91 | source code repository contains the Apache-2.0 licensed 92 | source code for the GNU MathProg implementation of the 93 | model formulation. 94 | keywords: 95 | - OSeMOSYS 96 | - energy system model 97 | - energy system optimisation model 98 | - ESOM 99 | - ESM 100 | - energy system modelling 101 | license: Apache-2.0 102 | version: v1.0.1 103 | date-released: '2021-05-21' 104 | references: 105 | - type: article 106 | authors: 107 | - given-names: Mark 108 | family-names: Howells 109 | orcid: 'https://orcid.org/0000-0001-6419-4957' 110 | affiliation: Loughborough University Department of Social Sciences 111 | - given-names: Holger 112 | family-names: Rogner 113 | affiliation: International Atomic Energy Agency 114 | - given-names: Neil 115 | family-names: Strachan 116 | affiliation: University College London 117 | - given-names: Charlie 118 | family-names: Heaps 119 | affiliation: Stockholm Environment Institute 120 | - given-names: Hillard 121 | family-names: Huntington 122 | affiliation: Stanford University 123 | - given-names: Socrates 124 | family-names: Kypreos 125 | affiliation: Paul Scherrer Institute 126 | - given-names: Alison 127 | family-names: Hughes 128 | affiliation: University of Cape Town 129 | - given-names: S. 130 | family-names: Silveira 131 | - given-names: Joe 132 | family-names: Decarolis 133 | - given-names: Morgan 134 | family-names: Bazilian 135 | - given-names: A. 136 | family-names: Roehrl 137 | doi: "10.1016/j.enpol.2011.06.033" 138 | journal: "Energy Policy" 139 | start: 5850 # First page number 140 | end: 5870 # Last page number 141 | title: "OSeMOSYS: The Open Source Energy Modeling System: An introduction to its ethos, structure and development" 142 | volume: 39 # Volume number 143 | issue: 10 # Issue number 144 | year: 2011 145 | keywords: 146 | - Energy systems analysis 147 | - Energy modeling 148 | - Open source 149 | abstract: "This paper discusses the design and development of the Open Source Energy Modeling System (OSeMOSYS). It describes the model’s formulation in terms of a ‘plain English’ description, algebraic formulation, implementation—in terms of its full source code, as well as a detailed description of the model inputs, parameters, and outputs. A key feature of the OSeMOSYS implementation is that it is contained in less than five pages of documented, easily accessible code. Other existing energy system models that do not have this emphasis on compactness and openness makes the barrier to entry by new users much higher, as well as making the addition of innovative new functionality very difficult. The paper begins by describing the rationale for the development of OSeMOSYS and its structure. The current preliminary implementation of the model is then demonstrated for a discrete example. Next, we explain how new development efforts will build on the existing OSeMOSYS codebase. The paper closes with thoughts regarding the organization of the OSeMOSYS community, associated capacity development efforts, and linkages to other open source efforts including adding functionality to the LEAP model." 150 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OSeMOSYS GNU MathProg 2 | 3 | Thanks for using OSeMOSYS and welcome to the OSeMOSYS community. 4 | 5 | To run OSeMOSYS, enter the following line into your command prompt and 6 | data file name: 7 | 8 | glpsol -m osemosys.txt -d ../Training_Case_Studies/utopia.txt -o results.csv 9 | 10 | Alternatively, install GUSEK (http://gusek.sourceforge.net/gusek.html) 11 | and run the model within this integrated development environment (IDE). 12 | To do so, open the datafile (e.g. `utopia.txt`) and 13 | select "Use External .dat file" from the Options menu. 14 | Then change to the model file and select the "Go" icon or press F5. 15 | 16 | ## Developers - Testing 17 | 18 | This repository uses Travis CI to run regression tests and 19 | harmonisation tests across each of the OSeMOSYS GNU MathProg normal and short 20 | implementations. 21 | 22 | Each push to a branch on the repository, or submission of a pull 23 | request triggers a build on Travis CI, with the corresponding status reported 24 | back in the pull request comments. 25 | 26 | The tests must pass before a pull request may be merged into the main 27 | repository. 28 | 29 | Tests are defined using the Python package ``pytest`` and the runs are 30 | configured within the Travis CI configuration file ``.travis.yml``. 31 | 32 | The tests are stored in the ``tests`` folder. 33 | 34 | ### Running the tests 35 | 36 | To run the tests on your local computer, you need a Python 3.7 installation. 37 | The easiest way to install this is using 38 | [miniconda](https://docs.conda.io/en/latest/miniconda.html). 39 | 40 | Then you need to install pytest `conda install pytest pandas` and can then run the tests 41 | using the command `pytest`. 42 | 43 | Each of the tests in the `tests` folder runs an OSeMOSYS model file and checks that 44 | the output matches a given value. 45 | 46 | ## Developers - Creating a new release and deploying to Github Releases 47 | 48 | Creating a new release for OSeMOSYS GNU MathProg is as simple as creating a new semver 49 | compliant tag and pushing the tag to a branch. Travis CI will then run the tests, and 50 | if they pass, create the package using the `makefile` found in the root of the repository. 51 | The makefile includes the contents of the `src` and `scripts` folders, an html render of 52 | `src/README.md` and then zips them up deploying them to Github Releases and providing 53 | the contents of `docs/changelog.md` as a release description. 54 | 55 | ### 1. Update the changelog 56 | 57 | Add a new heading with the version number you will use and include a description 58 | of the changes since the last release. 59 | 60 | It can be useful to view the log of git commits since the previous release using the 61 | following command: 62 | 63 | git log ..HEAD 64 | 65 | ### 2. Run the tests locally 66 | 67 | Follow the instructions provided to run the tests. 68 | 69 | ### 3. Create a new tag and push to Github 70 | 71 | Create a new annotated tag: 72 | 73 | git tag -a v1.0.0 -m "A descriptive message for the release" 74 | 75 | Please follow the Semantic Versioning [guidelines](https://semver.org/). 76 | To create an alpha or beta release (pre-release) you would do the following: 77 | 78 | git tag -a v1.0.0-alpha.1 -m "An alpha release" 79 | git tag -a v1.0.0-beta.1 -m "An beta release" 80 | git tag -a v1.0.0 -m "First stable official release!" 81 | 82 | ### 4. Check that the package is deployed successfully 83 | 84 | You can follow the release process at the 85 | [Travis CI service](https://travis-ci.com/github/OSeMOSYS/OSeMOSYS_GNU_MathProg/branches). 86 | 87 | Finally, check that the release appears on the [Github Releases page](https://github.com/OSeMOSYS/OSeMOSYS_GNU_MathProg/releases). 88 | -------------------------------------------------------------------------------- /docs/index.md: -------------------------------------------------------------------------------- 1 | # Example OSeMOSYS Implementation 2 | 3 | This folder demonstrates the required structure for implementations of the 4 | OSeMOSYS formulation. 5 | 6 | -------------------------------------------------------------------------------- /makefile: -------------------------------------------------------------------------------- 1 | VERSION := $(shell git describe) 2 | BUILDDIR := osemosys_gnu_mathprog_$(VERSION) 3 | 4 | release: $(BUILDDIR).zip 5 | 6 | $(BUILDDIR).zip: model_files data_files scripts $(BUILDDIR)/README.html $(BUILDDIR)/LICENSE 7 | zip -r $(BUILDDIR).zip $(BUILDDIR) 8 | 9 | model_files: $(BUILDDIR)/osemosys.txt $(BUILDDIR)/osemosys_short.txt $(BUILDDIR)/osemosys_fast.txt 10 | 11 | data_files: $(BUILDDIR)/simplicity.txt 12 | 13 | scripts: $(BUILDDIR)/scripts 14 | 15 | $(BUILDDIR)/scripts: $(BUILDDIR) 16 | cp -R scripts $(BUILDDIR)/scripts 17 | 18 | $(BUILDDIR)/simplicity.txt: $(BUILDDIR) 19 | cp tests/simplicity.txt $(BUILDDIR)/simplicity.txt 20 | 21 | $(BUILDDIR)/osemosys.txt: $(BUILDDIR) 22 | cp src/osemosys.txt $(BUILDDIR)/osemosys.txt 23 | 24 | $(BUILDDIR)/osemosys_short.txt: $(BUILDDIR) 25 | cp src/osemosys_short.txt $(BUILDDIR)/osemosys_short.txt 26 | 27 | $(BUILDDIR)/osemosys_fast.txt: $(BUILDDIR) 28 | cp src/osemosys_fast.txt $(BUILDDIR)/osemosys_fast.txt 29 | 30 | $(BUILDDIR)/README.html: $(BUILDDIR) 31 | pandoc -f markdown -t html src/README.md -o $(BUILDDIR)/README.html 32 | 33 | $(BUILDDIR)/LICENSE: $(BUILDDIR) 34 | cp LICENSE $(BUILDDIR)/LICENSE 35 | 36 | $(BUILDDIR): 37 | mkdir -p "$(BUILDDIR)" 38 | 39 | .PHONY: clean release all 40 | all: release 41 | clean: 42 | rm -f $(BUILDDIR).zip 43 | rm -rf $(BUILDDIR) -------------------------------------------------------------------------------- /pre-release.sh: -------------------------------------------------------------------------------- 1 | string=$1 2 | export prerelease='false' 3 | if [[ $string == *"alpha"* ]]; then 4 | prerelease='true' 5 | elif [[ $string == *"beta"* ]]; then 6 | prerelease='true' 7 | else 8 | prerelease='false' 9 | fi -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | pytest 2 | pandas -------------------------------------------------------------------------------- /scripts/KTH_HPC_Linux_OSeMOSYS_GNU-MathProg_cplex_batchRun.sh: -------------------------------------------------------------------------------- 1 | ######### High Performance Computer (HPC) specific commands (SLURM) ######## 2 | 3 | #!/bin/bash 4 | 5 | # Set the allocation to be charged for this job 6 | #SBATCH -A 7 | 8 | # The name of the script is myjob 9 | #SBATCH -J myjob 10 | 11 | # 10 hour wall-clock time will be given to this job 12 | #SBATCH -t 10:00:00 13 | 14 | # Number of nodes 15 | #SBATCH --nodes=1 16 | # Number of MPI processes per node 17 | #SBATCH --ntasks-per-node=24 18 | 19 | #SBATCH --mail-type=ALL 20 | 21 | #SBATCH -e error_file.e 22 | #SBATCH -o output_file.o 23 | 24 | ############### Here finished the SLURM commands ############# 25 | 26 | # Load the glpk mode which includes glpsol, please check version this command is specific for Tegner 27 | # Set the path to glpk (need to change) if not on Tegner 28 | module add glpk/4.65 29 | 30 | # Set the path to cplex here 31 | 32 | # this command starts glpsol (GNU Mathprog) 33 | # Only generate the .lp file using flag --check 34 | 35 | glpsol -m OSeMOSYS.txt -d data.txt --wlp matrix.lp --check 36 | 37 | # break mean make a new empty file for mycplexcommands 38 | rm -f mycplexcommands 39 | touch mycplexcommands 40 | 41 | # echo writes each line to mycplexcommands that I want to execute in CPLEX 42 | 43 | echo "read matrix.lp" > mycplexcommands 44 | echo "optimize" >> mycplexcommands 45 | echo "write" >> mycplexcommands 46 | echo "matrix.sol" >> mycplexcommands 47 | echo "quit" >> mycplexcommands 48 | 49 | 50 | # xecutes the cplex script written above 51 | # Should set the path to CPLEX 52 | cplex < mycplexcommands 53 | 54 | # the sol file is input to transform python script 55 | # 56 | python transform_31072013.py matrix.sol matrix.txt 57 | 58 | 59 | -------------------------------------------------------------------------------- /scripts/README.md: -------------------------------------------------------------------------------- 1 | # Scripts 2 | 3 | A collection of useful scripts for running the GNU MathProg implementation of 4 | OSeMOSYS 5 | 6 | ## cplex_batchRun.bat 7 | 8 | This batch script is for running multiple runs in Windows using GNU MathProg 9 | and CPLEX. Place all files together with the batch file, and make sure to change 10 | the naming to your text files and OSeMOSyS version. 11 | 12 | To run: just double click the batch file and it will execute. 13 | 14 | ## kth_hpc_cplex_batchrun.sh 15 | 16 | Acknowledgment to Jing Gong at PDC center @ KTH for rewriting the script for Tegner. 17 | This batch script is for running one run for GNU MathProg and CPLEX on High Performance Comupter using SLURM commands 18 | and Linux operating system (such as Tegner @ KTH). 19 | Place all files together with the batch file, and make sure to change the naming 20 | to your text files and OSeMOSyS version. 21 | To run on HPC Tegner @ KTH write: `sbatch kth_hpc_cplex_batchrun.sh` 22 | and it will queue the file and run it. 23 | 24 | ## convert_cplex_to_cbc.py 25 | 26 | This script converts the solution file output of a OSeMOSYS run with the CPLEX 27 | solver into the same format of that produced by CBC. 28 | 29 | This removes the zeros, and moves closer to a tidy format that is generally 30 | preferable (sparser and more transferable). 31 | 32 | To run use the command `python convert_cplex_to_cbc.py cplex_file output_file` 33 | 34 | Use the `-h` or `--help` flag to get the full set of options: 35 | 36 | ```python 37 | $ python convert_cplex_to_cbc.py --help 38 | usage: convert_cplex_to_cbc.py [-h] [-s START_YEAR] [-e END_YEAR] 39 | [--csv | --cbc] 40 | cplex_file output_file 41 | 42 | Convert OSeMOSYS CPLEX files into different formats 43 | 44 | positional arguments: 45 | cplex_file The filepath of the OSeMOSYS cplex output file 46 | output_file The filepath of the converted file that will be 47 | written 48 | 49 | optional arguments: 50 | -h, --help show this help message and exit 51 | -s START_YEAR, --start_year START_YEAR 52 | Output only the results from this year onwards 53 | -e END_YEAR, --end_year END_YEAR 54 | Output only the results upto and including this year 55 | --csv Output file in comma-separated-values format 56 | --cbc Output file in CBC format, (default option) 57 | ``` 58 | 59 | ## preprocess_data.py 60 | 61 | This script pre-processes an OSeMOSYS input data file by adding lines that list commodity-technology-mode combinations that data is provided for. Pre-processing a data file before starting a model run significantly reduces the time taken for matrix generation. 62 | 63 | Pre-processing consists of the following steps: 64 | 1. Reading the `InputActivityRatio` and `OutputActivityRatio` sections of the data file to identify commodity-technology-mode combinations that data has been explicitly provided for. 65 | 2. Adding a set entry for each commodity that lists all technology-mode combinations that are associated with it. 66 | 3. Values from the `InputActivityRatios` and `OutputActivityRatios` sections are added to the sets `MODExTECHNOLOGYperFUELin` and `MODExTECHNOLOGYperFUELout` respectively. 67 | 4. Values from the `TechnologyToStorage` and `TechnologyFromStorage` sections are added to the sets `MODExTECHNOLOGYperSTORAGEto` and `MODExTECHNOLOGYperSTORAGEfrom` respectively. 68 | 5. All values for technology-mode combinations are added to the sets `MODEperTECHNOLOGY`. 69 | 70 | This pre-processing can be run on a terminal window with the following command: 71 | ``` 72 | python preprocess_data.py 73 | ``` 74 | 75 | In order to start a model run with a pre-processed data file, the following sets need to be included in the associated OSeMOSYS model file: 76 | ``` 77 | set MODEperTECHNOLOGY{TECHNOLOGY} within MODE_OF_OPERATION; 78 | set MODExTECHNOLOGYperFUELout{COMMODITY} within MODE_OF_OPERATION cross TECHNOLOGY; 79 | set MODExTECHNOLOGYperFUELin{COMMODITY} within MODE_OF_OPERATION cross TECHNOLOGY; 80 | set MODExTECHNOLOGYperSTORAGEto{STORAGE} within MODE_OF_OPERATION cross TECHNOLOGY; 81 | set MODExTECHNOLOGYperSTORAGEfrom{STORAGE} within MODE_OF_OPERATION cross TECHNOLOGY; 82 | ``` 83 | ## RunHPCNodes.py 84 | 85 | This script was written by Taco Niet to run a large number of scenarios on a HPC system managed by the SLURM scheduler. The script creates the data files for a large number of scenarios using pre-set scenario parameter lists and then submits the list of jobs to full nodes of the HPC system using the parallel command to utilize the full node. This script works best when there are a large number of scenarios that each take a very short amount of time to run. 86 | 87 | First edit the python script for the parameters and scenario combinations you want to investigate. Then place the 'params_base.dat' file in the directory along with the 'RunHPCNodes.py' script and the OSeMOSYS.mod file. Log into the login node of the HPC cluster and run the python file. 88 | 89 | Note: The number of scenarios can quickly become quite large with this script so managing the number of runs and how long of a wall time they need is important to consider. Choose the walltime, number of runs to group and other parameters carefully. 90 | -------------------------------------------------------------------------------- /scripts/RunHPCNodes.py: -------------------------------------------------------------------------------- 1 | # Taco Niet 2 | # Date: September 26, 2016 - 2018 3 | # Script to run OSeMOSYS with various parameters using full nodes on a SLURM scheduler managed HPC system. 4 | 5 | #!/usr/bin/python 6 | import subprocess # for running glpsol 7 | from shutil import copy2 # Allow us to make the needed copies of the parameter file 8 | from math import sqrt 9 | import zipfile, os, time, io 10 | 11 | if __name__ == '__main__': 12 | modelruns = [] 13 | tailcommands = [] 14 | 15 | # Setup task list here. This can be created by a series of nested for loops. 16 | param3List = ['10.6', '15.9', '21.2'] 17 | param2List = ['0000', '0050', '0100'] 18 | param1List = ['35', '65', '100'] 19 | 20 | NumRunsTotal = len(param1List)*len(param2List)*len(param3List) 21 | 22 | NumRunstoGroup = 600 # Number of runs to group for each qsub command 23 | NumberofCores = 32 24 | WallTime = '06:00:00' # Walltime in hh:mm:ss format 25 | ZipWallTime = '08:00:00' # Walltime in hh:mm:ss format for zipping files 26 | 27 | for param1 in param1List: 28 | for param2 in param2List: 29 | for param3 in param3List: 30 | print('Setting up '+param1+' '+ param2+' '+param3+'.') 31 | copy2('params_base.dat', param3 +'_'+ param1 +'_'+ param2 + 'params.dat') 32 | f = open(param3 +'_'+ param1 +'_'+ param2 + 'params.dat', 'a') # Open file for appending... 33 | f.write('\n') 34 | 35 | # Write Parameter 1 into data file... 36 | f.write('param Parameter1 default 0 [REG,*,2020] :=\n') 37 | f.write('tparam3 '+str(float(param1)/1000)+'\n') 38 | f.write('tEXAMPLE 1.000 ;\n\n') 39 | 40 | # Set the param2 size: 41 | f.write('param TechnologyMaxCapacity default 99999999999 := REG DAM 2020 '+param2+';\n\n') 42 | 43 | # Set the param3 residual capacity: 44 | f.write('param ResidualCapacity default 0 :=[REG,*,*] : 2020 :=\n') 45 | f.write('tEXAMPLE 0.24 tparam3 '+param3+';\n\n') 46 | 47 | # Specify output files 48 | # NOTE: This needs to be adjusted based on which version of OSeMOSYS you are using... See OutputFileAsParameter branch for one example. 49 | f.write('param SelectedResults := \''+ param3 +'_'+ param1 +'_'+ param2 + 'SelectedResults.csv\';\n') 50 | 51 | # End the file and close it. 52 | f.write('end;\n') 53 | f.close() 54 | 55 | # append file name to list of files to process 56 | 57 | modelruns.append('glpsol -m OSeMOSYS.mod -d ' + param3 +'_'+ param1 +'_'+ param2 + '_'+ 'params.dat --log ' + param3 +'_'+ param1 +'_'+ param2 + 'GLPScreen.txt -o ' + param3 +'_'+ param1 +'_'+ param2 + 'GLPOutput.txt') 58 | 59 | # Setup qsub batch job scripts 60 | # First open the files, overwritting previous versions, and write the header material 61 | 62 | NumJobs = int(len(modelruns)/(NumRunstoGroup*NumberofCores))+1 63 | 64 | print('NumJobs = '+str(NumJobs)) 65 | 66 | # Setup job files to request full nodes: 67 | for count in range(1, NumJobs+1): 68 | with open("RunGroup"+str(int(count)) + ".sh", "w") as fpbs: 69 | fpbs.write("#!/bin/bash\n") 70 | fpbs.write("#SBATCH --time="+WallTime+"\n") 71 | 72 | fpbs.write("#SBATCH --job-name=RunGroup"+str(int(count))+"\n") 73 | fpbs.write("#SBATCH --output=%x-%j.out\n") 74 | fpbs.write("#SBATCH --mail-user=tniet@bcit.ca\n") 75 | fpbs.write("#SBATCH --mail-type=ALL\n") 76 | 77 | fpbs.write("#SBATCH --nodes=1\n") 78 | fpbs.write("#SBATCH --ntasks-per-node="+str(NumberofCores)+"\n") 79 | 80 | fpbs.write("# Script to run job group "+str(int(count))+".\n") 81 | 82 | fpbs.write("\n") 83 | fpbs.write("module load python/3.6.3\n") 84 | 85 | fpbs.write("\n") 86 | 87 | fpbs.write("echo \"Current working directory is `pwd`\"\n") 88 | fpbs.write("echo \"Running on hostname `hostname`\"\n") 89 | # Create the command file for the run... 90 | with open("RunCommands"+str(int(count)) + ".sh", "w") as fpbs: 91 | for countjobs in range(((count-1)*NumRunstoGroup*NumberofCores + 1), min(((count)*NumRunstoGroup*NumberofCores)+1, len(modelruns))): 92 | fpbs.write ("echo \"Starting run at: `date`\"") 93 | fpbs.write (" && $HOME/project/glpk-4.61/examples/"+modelruns[countjobs]) 94 | fpbs.write (" && " + tailcommands[countjobs]+'\n') 95 | 96 | # And finally print the footer material into the file 97 | for count in range(1, NumJobs+1): 98 | with open("RunGroup"+str(int(count)) + ".sh", "a") as fpbs: 99 | fpbs.write("parallel < RunCommands"+str(int(count)) + ".sh\n") 100 | fpbs.write ("echo \"Runs for group "+str(int(count))+"finished with exit code $? at: `date`\"\n") 101 | fpbs.write("#End of file\n") 102 | 103 | # Submit jobs to job queue with sbatch 104 | for count in range(1, NumJobs+1): 105 | filetosubmit = "RunGroup"+str(int(count)) + ".sh" 106 | cmd = ["sbatch"] 107 | cmd.append(filetosubmit) 108 | print ("Submitting Job "+ str(count) +" with command: "+str(cmd)) 109 | status = subprocess.check_output(cmd) 110 | print (status.decode('UTF-8')) 111 | #print(status.decode('UTF-8').split(" ")[3]) 112 | jobnum = int(status.decode('UTF-8').split(" ")[3]) 113 | 114 | # And we're done... 115 | print("RunCedar completed.") -------------------------------------------------------------------------------- /scripts/compare_results.sh: -------------------------------------------------------------------------------- 1 | # TEST_CASE=tests/ti16.txt 2 | # TEST_CASE=tests/utopia.txt 3 | TEST_CASE=tests/Simplicity_Test_Case.txt 4 | 5 | mkdir fast 6 | glpsol -m src/osemosys_fast.txt -d $TEST_CASE -o fast.sol --xcheck 7 | rm results/SelectedResults.csv 8 | cp -f results/*.csv fast 9 | 10 | mkdir short 11 | glpsol -m src/osemosys_short.txt -d $TEST_CASE -o short.sol --xcheck 12 | rm results/SelectedResults.csv 13 | cp -f results/*.csv short 14 | 15 | mkdir long 16 | glpsol -m src/osemosys.txt -d $TEST_CASE -o long.sol --xcheck 17 | rm results/SelectedResults.csv 18 | cp -f results/*.csv long 19 | 20 | diff fast long -wy > fast_long.diff 21 | diff short long -wy > short_long.diff 22 | diff fast short -wy > fast_short.diff 23 | -------------------------------------------------------------------------------- /scripts/convert_cplex_to_cbc.py: -------------------------------------------------------------------------------- 1 | """Converts a CPLEX solution file into the same format produced by CBC 2 | 3 | """ 4 | import sys 5 | from typing import List, Union, Tuple 6 | from pytest import mark 7 | from pytest import fixture 8 | import argparse 9 | 10 | class ConvertLine(object): 11 | """Abstract class which defines the interface to the family of convertors 12 | 13 | Inherit this class and implement the ``_do_it()`` method to produce the 14 | data to be written out into a new format 15 | 16 | Example 17 | ------- 18 | >>> cplex_line = "AnnualCost REGION CDBACKSTOP 1.0 0.0 137958.8400384134" 19 | >>> convertor = RegionTechnology() 20 | >>> convertor.convert() 21 | VariableName(REGION,TECHCODE01,2015) 42.69 0\n 22 | VariableName(REGION,TECHCODE01,2017) 137958.84 0\n 23 | """ 24 | 25 | def __init__(self, data: List, start_year: int, end_year: int, output_format='cbc'): 26 | self.data = data 27 | self.start_year = start_year 28 | self.end_year = end_year 29 | self.output_format = output_format 30 | 31 | def _do_it(self) -> Tuple: 32 | raise NotImplementedError() 33 | 34 | def convert(self) -> List[str]: 35 | if self.output_format == 'cbc': 36 | convert = self.convert_cbc() 37 | elif self.output_format == 'csv': 38 | convert = self.convert_csv() 39 | return convert 40 | 41 | def convert_csv(self) -> List[str]: 42 | """Format the data for writing to a csv file 43 | """ 44 | data = [] 45 | variable, dimensions, values = self._do_it() 46 | 47 | for index, value in enumerate(values): 48 | 49 | year = self.start_year + index 50 | if (value not in ["0.0", "0", ""]) and (year <= self.end_year): 51 | 52 | try: 53 | value = float(value) 54 | except ValueError: 55 | value = 0 56 | 57 | full_dims = ",".join(dimensions + (str(year),)) 58 | 59 | formatted_data = '{0},"{1}",{2}\n'.format( 60 | variable, 61 | full_dims, 62 | value 63 | ) 64 | 65 | data.append(formatted_data) 66 | 67 | return data 68 | 69 | def convert_cbc(self) -> List[str]: 70 | """Format the data for writing to a CBC file 71 | """ 72 | cbc_data = [] 73 | variable, dimensions, values = self._do_it() 74 | 75 | for index, value in enumerate(values): 76 | 77 | year = self.start_year + index 78 | if (value not in ["0.0", "0", ""]) and (year <= self.end_year): 79 | 80 | try: 81 | value = float(value) 82 | except ValueError: 83 | value = 0 84 | 85 | full_dims = ",".join(dimensions + (str(year),)) 86 | 87 | formatted_data = "0 {0}({1}) {2} 0\n".format( 88 | variable, 89 | full_dims, 90 | value 91 | ) 92 | 93 | cbc_data.append(formatted_data) 94 | 95 | return cbc_data 96 | 97 | 98 | class RegionTimeSliceTechnologyMode(ConvertLine): 99 | 100 | def _do_it(self) -> Tuple: 101 | """Produces output indexed by Region, Timeslice, Tech and Mode 102 | 103 | ``0 VariableName(REGION,SD1D,TECHCODE01,2,2015) 42.69 0\n`` 104 | 105 | """ 106 | variable = self.data[0] 107 | region = self.data[1] 108 | timeslice = self.data[2] 109 | technology = self.data[3] 110 | mode = self.data[4] 111 | values = self.data[5:] 112 | 113 | dimensions = (region, timeslice, technology, mode) 114 | 115 | return (variable, dimensions, values) 116 | 117 | 118 | class RegionTechnology(ConvertLine): 119 | 120 | def _do_it(self) -> Tuple: 121 | """Produces output indexed by dimensions Region and Technology 122 | 123 | ``0 VariableName(REGION,TECHCODE01,2015) 42.69 0\n`` 124 | 125 | """ 126 | variable = self.data[0] 127 | region = self.data[1] 128 | technology = self.data[2] 129 | 130 | dimensions = (region, technology) 131 | 132 | values = self.data[3:] 133 | 134 | return (variable, dimensions, values) 135 | 136 | 137 | def process_line(line: str, 138 | start_year: int, 139 | end_year: int, 140 | output_format: str) -> List[str]: 141 | """Processes an individual line in a CPLEX file 142 | 143 | A different ConvertLine implementation is chosen depending upon the 144 | variable name 145 | 146 | Arguments 147 | --------- 148 | line: str 149 | start_year: int 150 | end_year: int 151 | output_format: str 152 | The file format required - either ``csv`` or ``cbc`` 153 | """ 154 | row_as_list = line.split('\t') 155 | variable = row_as_list[0] 156 | if variable in ['NewCapacity', 157 | 'TotalCapacityAnnual', 158 | 'CapitalInvestment', 159 | 'AnnualFixedOperatingCost', 160 | 'AnnualVariableOperatingCost']: 161 | convertor = RegionTechnology(row_as_list, start_year, end_year, output_format).convert() 162 | elif variable in ['RateOfActivity']: 163 | convertor = RegionTimeSliceTechnologyMode(row_as_list, start_year, end_year, output_format).convert() 164 | else: 165 | convertor = [] 166 | 167 | return convertor 168 | 169 | 170 | def convert_cplex_file(cplex_filename: str, output_filename: str, 171 | start_year=2015, end_year=2070, 172 | output_format='cbc'): 173 | """Converts a CPLEX solution file into that of the CBC solution file 174 | 175 | Arguments 176 | --------- 177 | cplex_filename : str 178 | Path to the transformed CPLEX solution file 179 | output_filename : str 180 | Path for the processed data to be written to 181 | """ 182 | 183 | with open(output_filename, 'w') as cbc_file: 184 | with open(cplex_filename, 'r') as cplex_file: 185 | for linenum, line in enumerate(cplex_file): 186 | try: 187 | convertor = process_line(line, start_year, end_year, output_format) 188 | if convertor: 189 | cbc_file.writelines(convertor) 190 | except ValueError: 191 | msg = "Error caused at line {}: {}" 192 | raise ValueError(msg.format(linenum, line)) 193 | 194 | 195 | class TestCplexToCsv: 196 | 197 | test_data = [ 198 | ( 199 | "AnnualFixedOperatingCost REGION AOBACKSTOP 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ", 200 | []), 201 | ( 202 | "AnnualFixedOperatingCost REGION CDBACKSTOP 0.0 0.0 137958.8400384134 305945.38410619126 626159.9611543404 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0", 203 | [ 204 | 'AnnualFixedOperatingCost,"REGION,CDBACKSTOP,2017",137958.8400384134\n', 205 | 'AnnualFixedOperatingCost,"REGION,CDBACKSTOP,2018",305945.3841061913\n', 206 | 'AnnualFixedOperatingCost,"REGION,CDBACKSTOP,2019",626159.9611543404\n']), 207 | ( 208 | """RateOfActivity REGION S1D1 CGLFRCFURX 1 0.0 0.0 0.0 0.0 0.0 0.3284446367303371 0.3451714779880536 0.3366163200621617 0.3394945166233896 0.3137488154250392 0.28605725055560716 0.2572505015401749 0.06757558148965725 0.0558936625751148 0.04330608461292407 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0""", 209 | ['RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2020",0.3284446367303371\n', 210 | 'RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2021",0.3451714779880536\n', 211 | 'RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2022",0.3366163200621617\n', 212 | 'RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2023",0.3394945166233896\n', 213 | 'RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2024",0.3137488154250392\n', 214 | 'RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2025",0.28605725055560716\n', 215 | 'RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2026",0.2572505015401749\n', 216 | 'RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2027",0.06757558148965725\n', 217 | 'RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2028",0.0558936625751148\n', 218 | 'RateOfActivity,"REGION,S1D1,CGLFRCFURX,1,2029",0.04330608461292407\n'] 219 | ) 220 | ] 221 | 222 | @mark.parametrize("cplex_input,expected", test_data) 223 | def test_convert_from_cplex_to_cbc(self, cplex_input, expected): 224 | 225 | actual = process_line(cplex_input, 2015, 2070, 'csv') 226 | assert actual == expected 227 | 228 | class TestCplexToCbc: 229 | 230 | test_data = [ 231 | ( 232 | "AnnualFixedOperatingCost REGION AOBACKSTOP 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ", 233 | []), 234 | ( 235 | "AnnualFixedOperatingCost REGION CDBACKSTOP 0.0 0.0 137958.8400384134 305945.38410619126 626159.9611543404 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0", 236 | [ 237 | "0 AnnualFixedOperatingCost(REGION,CDBACKSTOP,2017) 137958.8400384134 0\n", 238 | "0 AnnualFixedOperatingCost(REGION,CDBACKSTOP,2018) 305945.3841061913 0\n", 239 | "0 AnnualFixedOperatingCost(REGION,CDBACKSTOP,2019) 626159.9611543404 0\n"]), 240 | ( 241 | """RateOfActivity REGION S1D1 CGLFRCFURX 1 0.0 0.0 0.0 0.0 0.0 0.3284446367303371 0.3451714779880536 0.3366163200621617 0.3394945166233896 0.3137488154250392 0.28605725055560716 0.2572505015401749 0.06757558148965725 0.0558936625751148 0.04330608461292407 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0""", 242 | ["0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2020) 0.3284446367303371 0\n", 243 | "0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2021) 0.3451714779880536 0\n", 244 | "0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2022) 0.3366163200621617 0\n", 245 | "0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2023) 0.3394945166233896 0\n", 246 | "0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2024) 0.3137488154250392 0\n", 247 | "0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2025) 0.28605725055560716 0\n", 248 | "0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2026) 0.2572505015401749 0\n", 249 | "0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2027) 0.06757558148965725 0\n", 250 | "0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2028) 0.0558936625751148 0\n", 251 | "0 RateOfActivity(REGION,S1D1,CGLFRCFURX,1,2029) 0.04330608461292407 0\n"] 252 | ) 253 | ] 254 | 255 | @mark.parametrize("cplex_input,expected", test_data) 256 | def test_convert_from_cplex_to_cbc(self, cplex_input, expected): 257 | 258 | actual = process_line(cplex_input, 2015, 2070, 'cbc') 259 | assert actual == expected 260 | 261 | 262 | if __name__ == '__main__': 263 | parser = argparse.ArgumentParser( 264 | description="Convert OSeMOSYS CPLEX files into different formats") 265 | parser.add_argument("cplex_file", 266 | help="The filepath of the OSeMOSYS cplex output file") 267 | parser.add_argument("output_file", 268 | help="The filepath of the converted file that will be written") 269 | parser.add_argument("-s", "--start_year", type=int, default=2015, 270 | help="Output only the results from this year onwards") 271 | parser.add_argument("-e", "--end_year", type=int, default=2070, 272 | help="Output only the results upto and including this year") 273 | group = parser.add_mutually_exclusive_group() 274 | group.add_argument("--csv", action="store_true", 275 | help="Output file in comma-separated-values format") 276 | group.add_argument("--cbc", action="store_true", 277 | help="Output file in CBC format, (default option)") 278 | 279 | args = parser.parse_args() 280 | 281 | if args.csv: 282 | output_format = 'csv' 283 | else: 284 | output_format = 'cbc' 285 | 286 | convert_cplex_file(args.cplex_file, args.output_file, 287 | args.start_year, args.end_year, 288 | output_format) 289 | -------------------------------------------------------------------------------- /scripts/cplex_batchrun.bat: -------------------------------------------------------------------------------- 1 | 2 | @echo off 3 | setlocal EnableDelayedExpansion 4 | 5 | REM the for-loop is for (1 start position, 1 how many steps to jump each time, until which number) 6 | for /L %%i in (1,1,3) do ( 7 | 8 | REM lpName is the name of the output from glpsol and solName is the output from CPLEX 9 | SET lpName=matrix_%%i.lp 10 | SET solName=solution_%%i.sol 11 | REM this command starts glpsol, updpate the OSeMOSYS_model and data to your corresponding files. 12 | 13 | START /B CMD /C CALL glpsol -m OSeMOSYS_model.txt -d data_%%i.txt --wlp matrix_%%i.lp --check 14 | 15 | REM checks if the lp file is in the folder 16 | call :waitfile "!lpName!" 17 | REM lp file is found, but wait 180 sek to make sure the file is built before starting CPLEX 18 | ECHO Found file !lpName! 19 | TIMEOUT /T 180 >nul 20 | 21 | REM make a new empty file for mycplexcommands 22 | break>mycplexcommands 23 | REM echo writes each line to mycplexcommands that I want to execute in CPLEX 24 | ( 25 | echo read matrix_%%i.lp 26 | echo optimize 27 | echo write 28 | echo solution_%%i.sol 29 | echo quit 30 | ) > mycplexcommands 31 | 32 | REM executes the cplex script written above 33 | cplex < mycplexcommands 34 | 35 | REM checks if the sol file is in the folder otherwise it waits 36 | call :waitfilesol "!solName!" 37 | REM sol file is found, wait 180 sek to make sure the file is built before starting python 38 | ECHO Found file !solName! 39 | TIMEOUT /T 180 >nul 40 | 41 | REM the .sol file is input to transform python script 42 | python transform_31072013.py solution_%%i.sol solution_%%i.txt 43 | REM the text file is sorted to alphabetical sort 44 | sort/+1solution_%%i_sorted.txt 45 | 46 | REM These commands delete lp and sol file which are large. Comment out is you don't want to delete them. 47 | del matrix_%%i.lp 48 | del solution_%%i.sol 49 | del solution_%%i.txt 50 | 51 | ) 52 | 53 | ECHO All done! 54 | pause 55 | exit /b 0 56 | 57 | REM this command is active as long as glpsol is building the lp file (will be printed every 120 sek) 58 | :waitfile 59 | ECHO waitforlpfile: %~1 60 | :waitfile2 61 | ECHO Waiting... 62 | TIMEOUT /T 120 >nul 63 | IF not EXIST "%~1" goto waitfile2 64 | exit /b 0 65 | 66 | REM this command is active as long as glpsol is building the sol file (will be printed every 120 sek) 67 | :waitfilesol 68 | ECHO waitforsolfile: %~1 69 | :waitfilesol2 70 | ECHO Waiting... 71 | TIMEOUT /T 120 >nul 72 | IF not EXIST "%~1" goto waitfilesol2 73 | exit /b 0 74 | 75 | -------------------------------------------------------------------------------- /scripts/kth_hpc_cplex_batchrun.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Set the allocation to be charged for this job 4 | #SBATCH -A 2019-1 5 | 6 | # The name of the script is myjob 7 | #SBATCH -J myjob 8 | 9 | # The partition can be on small nodes shared or main. Main means that all of the nodes available is booked and charged 10 | # to your project 11 | #SBATCH -p shared 12 | 13 | # 30 min wall-clock time will be given to this job 14 | #SBATCH -t 00:30:00 15 | 16 | # Number of nodes 17 | #SBATCH --nodes=1 18 | # Number of MPI processes per node 19 | #SBATCH --ntasks-per-node=100 20 | 21 | #SBATCH --mail-type=ALL 22 | 23 | #SBATCH -e error_file.e 24 | #SBATCH -o output_file.o 25 | 26 | # Here finished the SLURM commands ######### 27 | 28 | # Load the glpk mode which includes glpsol, please check version this command is specific for Dardel 29 | # Set the path to glpk (need to change) if not on Tegner 30 | module add glpk/4.65 31 | 32 | # Set the path to cplex below here: 33 | 34 | # this command starts glpsol (GNU Mathprog) 35 | # Only generate the .lp file using flag --check 36 | 37 | glpsol -m OSeMOSYS.txt -d data.txt --wlp matrix.lp --check 38 | 39 | # break mean make a new empty file for mycplexcommands 40 | rm -f mycplexcommands 41 | touch mycplexcommands 42 | 43 | # echo writes each line to mycplexcommands that I want to execute in CPLEX 44 | 45 | echo "read matrix.lp" > mycplexcommands 46 | echo "optimize" >> mycplexcommands 47 | echo "write" >> mycplexcommands 48 | echo "matrix.sol" >> mycplexcommands 49 | echo "quit" >> mycplexcommands 50 | 51 | 52 | # xecutes the cplex script written above 53 | # Should set the path to CPLEX 54 | cplex < mycplexcommands 55 | 56 | # the sol file is input to transform python script 57 | # 58 | python transform_31072013.py matrix.sol matrix.txt 59 | 60 | 61 | -------------------------------------------------------------------------------- /scripts/preprocess_data.py: -------------------------------------------------------------------------------- 1 | """Pre-process OSeMOSYS data file to reduce matrix generation time 2 | 3 | This script pre-processes an OSeMOSYS input data file by adding lines that list 4 | commodity-technology-mode combinations that data is provided for. Pre-processing 5 | a data file before starting a model run significantly reduces the time taken 6 | for matrix generation. 7 | 8 | Pre-processing consists of the following steps: 9 | 10 | 1. Reading the ``InputActivityRatio`` and ``OutputActivityRatio`` sections of the 11 | data file to identify commodity-technology-mode combinations that data has been 12 | explicitly provided for. 13 | 2. Adding a set entry for each commodity that lists all technology-mode combinations 14 | that are associated with it. 15 | 3. Values from the ``InputActivityRatios`` and ``OutputActivityRatios`` sections are 16 | added to the sets ``MODExTECHNOLOGYperFUELin`` and ``MODExTECHNOLOGYperFUELout`` respectively. 17 | 4. Values from the ``TechnologyToStorage`` and ``TechnologyFromStorage`` sections 18 | are added to the sets ``MODExTECHNOLOGYperSTORAGEto`` and ``MODExTECHNOLOGYperSTORAGEfrom`` respectively. 19 | 5. All values for technology-mode combinations are added to the sets 20 | ``MODEperTECHNOLOGY``. 21 | 22 | In order to start a model run with a pre-processed data file, the following sets 23 | need to be introduced to its associated OSeMOSYS model file:: 24 | 25 | set MODEperTECHNOLOGY{TECHNOLOGY} within MODE_OF_OPERATION; 26 | set MODExTECHNOLOGYperFUELout{COMMODITY} within MODE_OF_OPERATION cross TECHNOLOGY; 27 | set MODExTECHNOLOGYperFUELin{COMMODITY} within MODE_OF_OPERATION cross TECHNOLOGY; 28 | set MODExTECHNOLOGYperSTORAGEto{STORAGE} within MODE_OF_OPERATION cross TECHNOLOGY; 29 | set MODExTECHNOLOGYperSTORAGEfrom{STORAGE} within MODE_OF_OPERATION cross TECHNOLOGY; 30 | 31 | """ 32 | 33 | import pandas as pd 34 | import os, sys 35 | from collections import defaultdict 36 | 37 | 38 | def main(data_format, data_infile, data_outfile): 39 | 40 | lines = [] 41 | 42 | with open(data_infile, 'r') as f1: 43 | for line in f1: 44 | if not line.startswith(('set MODEper','set MODEx', 'end;')): 45 | lines.append(line) 46 | 47 | with open(data_outfile, 'w') as f2: 48 | f2.writelines(lines) 49 | 50 | parsing = False 51 | parsing_year = False 52 | parsing_tech = False 53 | parsing_fuel = False 54 | parsing_mode = False 55 | parsing_storage = False 56 | parsing_emission = False 57 | 58 | year_list = [] 59 | fuel_list = [] 60 | tech_list = [] 61 | storage_list = [] 62 | mode_list = [] 63 | emission_list = [] 64 | 65 | data_all = [] 66 | data_out = [] 67 | data_inp = [] 68 | output_table = [] 69 | storage_to = [] 70 | storage_from = [] 71 | emission_table = [] 72 | 73 | params_to_check = ['OutputActivityRatio', 'InputActivityRatio', 'TechnologyToStorage', 'TechnologyFromStorage', 'EmissionActivityRatio'] 74 | 75 | with open(data_infile, 'r') as f: 76 | for line in f: 77 | if parsing_year: 78 | year_list += [line.strip()] if line.strip() not in ['', ';'] else [] 79 | if parsing_fuel: 80 | fuel_list += [line.strip()] if line.strip() not in ['', ';'] else [] 81 | if parsing_tech: 82 | tech_list += [line.strip()] if line.strip() not in ['', ';'] else [] 83 | if parsing_storage: 84 | storage_list += [line.strip()] if line.strip() not in ['', ';'] else [] 85 | if parsing_mode: 86 | mode_list += [line.strip()] if line.strip() not in ['', ';'] else [] 87 | if parsing_emission: 88 | emission_list += [line.strip()] if line.strip() not in ['', ';'] else [] 89 | 90 | if line.startswith('set YEAR'): 91 | if len(line.split('=')[1]) > 1: 92 | year_list = line.split(' ')[3:-1] 93 | else: 94 | parsing_year = True 95 | if line.startswith('set COMMODITY'): # Extracts list of COMMODITIES from data file. Some models use FUEL instead. 96 | if len(line.split('=')[1]) > 1: 97 | fuel_list = line.split(' ')[3:-1] 98 | else: 99 | parsing_fuel = True 100 | if line.startswith('set FUEL'): # Extracts list of FUELS from data file. Some models use COMMODITIES instead. 101 | if len(line.split('=')[1]) > 1: 102 | fuel_list = line.split(' ')[3:-1] 103 | else: 104 | parsing_fuel = True 105 | if line.startswith('set TECHNOLOGY'): 106 | if len(line.split('=')[1]) > 1: 107 | tech_list = line.split(' ')[3:-1] 108 | else: 109 | parsing_tech = True 110 | if line.startswith('set STORAGE'): 111 | if len(line.split('=')[1]) > 1: 112 | storage_list = line.split(' ')[3:-1] 113 | else: 114 | parsing_storage = True 115 | if line.startswith('set MODE_OF_OPERATION'): 116 | if len(line.split('=')[1]) > 1: 117 | mode_list = line.split(' ')[3:-1] 118 | else: 119 | parsing_mode = True 120 | if line.startswith('set EMISSION'): 121 | if len(line.split('=')[1]) > 1: 122 | emission_list = line.split(' ')[3:-1] 123 | else: 124 | parsing_emission = True 125 | 126 | if line.startswith(";"): 127 | parsing_year = False 128 | parsing_tech = False 129 | parsing_fuel = False 130 | parsing_mode = False 131 | parsing_storage = False 132 | parsing_emission = False 133 | 134 | start_year = year_list[0] 135 | 136 | if data_format == 'momani': 137 | with open(data_infile, 'r') as f: 138 | for line in f: 139 | if line.startswith(";"): 140 | parsing = False 141 | if parsing: 142 | if line.startswith('['): 143 | fuel = line.split(',')[2] 144 | tech = line.split(',')[1] 145 | emission = line.split(',')[2] 146 | elif line.startswith(start_year): 147 | years = line.rstrip(':= ;\n').split(' ')[0:] 148 | years = [i.strip(':=') for i in years] 149 | else: 150 | values = line.rstrip().split(' ')[1:] 151 | mode = line.split(' ')[0] 152 | 153 | if param_current == 'OutputActivityRatio': 154 | data_out.append(tuple([fuel, tech, mode])) 155 | for i in range(0, len(years)): 156 | output_table.append(tuple([tech, fuel, mode, years[i], values[i]])) 157 | 158 | if param_current == 'InputActivityRatio': 159 | data_inp.append(tuple([fuel, tech, mode])) 160 | 161 | data_all.append(tuple([tech, mode])) 162 | 163 | if param_current == 'TechnologyToStorage': 164 | if not line.startswith(mode_list[0]): 165 | storage = line.split(' ')[0] 166 | values = line.rstrip().split(' ')[1:] 167 | for i in range(0, len(mode_list)): 168 | if values[i] != '0': 169 | storage_to.append(tuple([storage, tech, mode_list[i]])) 170 | 171 | if param_current == 'TechnologyFromStorage': 172 | if not line.startswith(mode_list[0]): 173 | storage = line.split(' ')[0] 174 | values = line.rstrip().split(' ')[1:] 175 | for i in range(0, len(mode_list)): 176 | if values[i] != '0': 177 | storage_from.append(tuple([storage, tech, mode_list[i]])) 178 | 179 | if param_current == 'EmissionActivityRatio': 180 | emission_table.append(tuple([emission, tech, mode])) 181 | 182 | if line.startswith(('param OutputActivityRatio', 'param InputActivityRatio', 'param TechnologyToStorage', 'param TechnologyFromStorage', 'param EmissionActivityRatio')): 183 | param_current = line.split(' ')[1] 184 | parsing = True 185 | 186 | if data_format == 'otoole': 187 | with open(data_infile, 'r') as f: 188 | for line in f: 189 | details = line.split(' ') 190 | if line.startswith(";"): 191 | parsing = False 192 | if parsing: 193 | if len(details) > 1: 194 | if param_current == 'OutputActivityRatio': 195 | tech = details[1].strip() 196 | fuel = details[2].strip() 197 | mode = details[3].strip() 198 | year = details[4].strip() 199 | value = details[5].strip() 200 | 201 | if float(value) != 0.0: 202 | data_out.append(tuple([fuel, tech, mode])) 203 | output_table.append(tuple([tech, fuel, mode, year, value])) 204 | data_all.append(tuple([tech, mode])) 205 | 206 | if param_current == 'InputActivityRatio': 207 | tech = details[1].strip() 208 | fuel = details[2].strip() 209 | mode = details[3].strip() 210 | value = details[5].strip() 211 | if float(value) != 0.0: 212 | data_inp.append(tuple([fuel, tech, mode])) 213 | data_all.append(tuple([tech, mode])) 214 | 215 | if param_current == 'TechnologyToStorage': 216 | tech = details[1].strip() 217 | storage = details[2].strip() 218 | mode = details[3].strip() 219 | value = details[4].strip() 220 | if float(value) > 0.0: 221 | storage_to.append(tuple([storage, tech, mode])) 222 | data_all.append(tuple([storage, mode])) 223 | 224 | if param_current == 'TechnologyFromStorage': 225 | tech = details[1].strip() 226 | storage = details[2].strip() 227 | mode = details[3].strip() 228 | value = details[4].strip() 229 | if float(value) > 0.0: 230 | storage_from.append(tuple([storage, tech, mode])) 231 | data_all.append(tuple([storage, mode])) 232 | 233 | if param_current == 'EmissionActivityRatio': 234 | tech = details[1].strip() 235 | emission = details[2].strip() 236 | mode = details[3].strip() 237 | value = details[5].strip() 238 | if float(value) != 0.0: 239 | emission_table.append(tuple([emission, tech, mode])) 240 | data_all.append(tuple([tech, mode])) 241 | 242 | if any(param in line for param in params_to_check): 243 | param_current = details[1] 244 | parsing = True 245 | 246 | data_out = list(set(data_out)) 247 | data_inp = list(set(data_inp)) 248 | data_all = list(set(data_all)) 249 | storage_to = list(set(storage_to)) 250 | storage_from = list(set(storage_from)) 251 | emission_table = list(set(emission_table)) 252 | 253 | dict_out = defaultdict(list) 254 | dict_inp = defaultdict(list) 255 | dict_all = defaultdict(list) 256 | dict_stt = defaultdict(list) 257 | dict_stf = defaultdict(list) 258 | dict_emi = defaultdict(list) 259 | 260 | for fuel, tech, mode in data_out: 261 | dict_out[fuel].append((mode, tech)) 262 | 263 | for fuel, tech, mode in data_inp: 264 | dict_inp[fuel].append((mode, tech)) 265 | 266 | for tech, mode in data_all: 267 | if mode not in dict_all[tech]: 268 | dict_all[tech].append(mode) 269 | 270 | for storage, tech, mode in storage_to: 271 | dict_stt[storage].append((mode, tech)) 272 | 273 | for storage, tech, mode in storage_from: 274 | dict_stf[storage].append((mode, tech)) 275 | 276 | for emission, tech, mode in emission_table: 277 | dict_emi[emission].append((mode, tech)) 278 | 279 | def file_output_function(if_dict, str_dict, set_list, set_name, extra_char): 280 | for each in set_list: 281 | if each in if_dict.keys(): 282 | line = set_name + str(each) + ']:=' + str(str_dict[each]) + extra_char 283 | if set_list == tech_list: 284 | line = line.replace(',','').replace(':=[',':= ').replace(']*','').replace("'","") 285 | else: 286 | line = line.replace('),',')').replace('[(',' (').replace(')]',')').replace("'","") 287 | else: 288 | line = set_name + str(each) + ']:=' 289 | 290 | file_out.write(line + ';' + '\n') 291 | 292 | storage_list_len = {'otoole': 0, 293 | 'momani': 1} 294 | 295 | # Append lines at the end of the data file 296 | with open(data_outfile, 'w') as file_out: # 'a' to open in 'append' mode 297 | 298 | file_out.writelines(lines) 299 | 300 | file_output_function(dict_out, dict_out, fuel_list, 'set MODExTECHNOLOGYperFUELout[', '') 301 | file_output_function(dict_inp, dict_inp, fuel_list, 'set MODExTECHNOLOGYperFUELin[', '') 302 | file_output_function(dict_all, dict_all, tech_list, 'set MODEperTECHNOLOGY[', '*') 303 | 304 | if len(storage_list) > storage_list_len[data_format]: 305 | file_output_function(dict_stt, dict_stt, storage_list, 'set MODExTECHNOLOGYperSTORAGEto[', '') 306 | file_output_function(dict_stf, dict_stf, storage_list, 'set MODExTECHNOLOGYperSTORAGEfrom[', '') 307 | 308 | if len(emission_list) > 0: 309 | file_output_function(dict_emi, dict_emi, emission_list, 'set MODExTECHNOLOGYperEMISSION[', '') 310 | 311 | file_out.write('end;') 312 | 313 | 314 | if __name__ == '__main__': 315 | 316 | if len(sys.argv) != 4: 317 | msg = "Usage: python {} " 318 | print(msg.format(sys.argv[0])) 319 | sys.exit(1) 320 | else: 321 | data_format = sys.argv[1] 322 | data_infile = sys.argv[2] 323 | data_outfile = sys.argv[3] 324 | main(data_format, data_infile, data_outfile) 325 | -------------------------------------------------------------------------------- /scripts/tstranslate.py: -------------------------------------------------------------------------------- 1 | """Translate TS naming to make it compatible with the new UI naming convention 2 | 3 | This script renames the timeslices in the csv files (and actually any other items) 4 | as defined in the tsnaming.csv file (see example in this folder). This is needed 5 | to import models into the new UI as the timeslices need to be named S11, S12, S21, 6 | etc. to indicate day 1 of season 1 (S11), day 3 or season 6 (S63), etc. 7 | 8 | Call this script with the following options: 9 | 1. Input data directory - set of csvs to adjust. 10 | 2. Output directory - where to put the converted csvs. 11 | 12 | Script created 2023 by Taco Niet. Apache-2.0 license. 13 | 14 | """ 15 | 16 | import os, sys, csv 17 | 18 | def main(data_indirectory, data_outdirectory): 19 | with open("tsnaming.csv", "r") as tsitems: 20 | tslist = list(csv.reader(tsitems)) 21 | for csv_name in os.listdir(data_indirectory): 22 | if csv_name.endswith('.csv'): 23 | text = open(os.path.join(data_indirectory, csv_name), "r") 24 | for line in tslist: 25 | #print(csv_name) 26 | text = ''.join([i for i in text]).replace(line[0], line[1]) 27 | x = open(os.path.join(data_outdirectory, csv_name),"w") 28 | x.writelines(text) 29 | x.close() 30 | # end main 31 | 32 | 33 | if __name__ == '__main__': 34 | if len(sys.argv) != 3: 35 | msg = "Usage: python {} " 36 | print(msg.format(sys.argv[0])) 37 | sys.exit(1) 38 | else: 39 | data_indir = sys.argv[1] 40 | data_outdir = sys.argv[2] 41 | main(data_indir, data_outdir) -------------------------------------------------------------------------------- /src/README.md: -------------------------------------------------------------------------------- 1 | # OSeMOSYS GNU MathProg 2 | 3 | Thanks for using OSeMOSYS and welcome to the OSeMOSYS community. 4 | 5 | To use OSeMOSYS you will first need to install a few dependencies. Instructions for 6 | these are given below. 7 | 8 | ## Running OSeMOSYS 9 | 10 | If you've followed the installation instructions below using conda, before running OSeMOSYS you'll 11 | need to activate your conda environment: 12 | 13 | conda activate osemosys 14 | 15 | To run OSeMOSYS, first navigate to the folder containing your OSeMOSYS files. 16 | By default, OSeMOSYS results are written into the `results` directory. If this doesn't already exist, 17 | you'll want to create it: 18 | 19 | mkdir results 20 | 21 | Now enter the following line into your command prompt: 22 | 23 | glpsol -m osemosys.txt -d simplicity.txt 24 | 25 | The results from the model run should be available in the `results` folder. 26 | 27 | ### Short and Fast versions of the code 28 | 29 | Alternatively, you can run the "short" or "fast" versions of the OSeMOSYS code. 30 | These versions of the OSeMOSYS code produce the same results as the original version, but are written 31 | using a more concise form which condenses many of the equations. For larger models that are more 32 | computationally expensive, the short and fast versions will provide a significant performance boost. 33 | However, for development purposes, the original version of the OSeMOSYS code is much easier to understand. 34 | 35 | glpsol -m osemosys_short.txt -d simplicity.txt 36 | glpsol -m osemosys_fast.txt -d simplicity.txt 37 | 38 | ### Running using other solvers 39 | 40 | Running using CBC or CLP is a little more involved, as it requires two separate steps. 41 | First, an LP file is generated using glpsol: 42 | 43 | glpsol -m osemosys_short.txt -d simplicity.txt --wlp simplicity.lp --check 44 | 45 | Then the LP file is passed to the CBC (or CLP) solver to produce a solution file: 46 | 47 | cbc simplicity.lp solve -solu simplicity.sol 48 | 49 | The solution file is written out in a format that requires post-processing. We recommend using 50 | the open-source Python package **otoole** to do this for you: 51 | 52 | otoole results cbc csv simplicity.sol results --input_datafile simplicity.txt 53 | 54 | ## Installation 55 | 56 | To use OSeMOSYS, you'll need to install the 57 | [GNU Linear Programming Kit](https://www.gnu.org/software/glpk/). 58 | 59 | The easiest way to do this is to use Anaconda or Miniconda. 60 | 61 | ### 1. Install conda package manager 62 | 63 | First, install [miniconda](https://docs.conda.io/en/latest/miniconda.html#) by following 64 | the instructions [here](https://conda.io/projects/conda/en/latest/user-guide/install/#). 65 | 66 | ### 2. Create a new environment 67 | 68 | Run the following commands to create and activate a new environment containing the `glpk` library: 69 | 70 | conda create -n osemosys python=3.8 glpk 71 | conda activate osemosys 72 | 73 | ### 3. Optional - install **otoole** for pre- and post- processing 74 | 75 | First, activate the conda environment and then install otoole:: 76 | 77 | conda activate osemosys 78 | pip install otoole 79 | 80 | ### 4. Optional - install CBC or CLP open-source solvers 81 | 82 | On Linux or OSX you can also install the more powerful CBC or CLP 83 | open-source solvers using conda: 84 | 85 | conda install -c conda-forge coincbc coin-or-clp 86 | 87 | ## Where to get help 88 | 89 | ### The original paper 90 | 91 | The [original OSeMOSYS paper](https://doi.org/10.1016/j.enpol.2011.06.033) provides a plain English 92 | description for each of the equation blocks in the model file (`osemosys.txt`). 93 | 94 | ### OSeMOSYS Documentation 95 | 96 | You can read the [OSeMOSYS documentation online](https://osemosys.readthedocs.io/en/latest/?badge=latest). 97 | 98 | ### Forum 99 | 100 | The [Google Groups OSeMOSYS forum](https://groups.google.com/u/1/g/osemosys) 101 | contains a large number of questions and answers and is useful and active 102 | source of information for how to use OSeMOSYS and tackle all sorts of 103 | OSeMOSYS modelling issues. 104 | 105 | ### Github Issues 106 | 107 | The OSeMOSYS source code and issue tracker are located on [Github](https://github.com/OSeMOSYS/OSeMOSYS_GNU_MathProg). 108 | 109 | If you think you have identified a bug, or want to suggest an enhancement, please log an issue 110 | [here](https://github.com/OSeMOSYS/OSeMOSYS_GNU_MathProg/issues/new/choose). 111 | 112 | ### Training materials 113 | 114 | - [Understanding the Energy System Lecture Slides](http://www.osemosys.org/understanding-the-energy-system.html) 115 | by OSeMOSYS Team 116 | - [OSeMOSYS Video Lectures](https://www.youtube.com/watch?v=U9Z4GE_l9mQ&list=PLY5NLA2BTufKU_wDSp-JzP6dhpzwsg1Xx) by OSeMOSYS Team 117 | 118 | ### OSeMOSYS website 119 | 120 | The OSeMOSYS website at [osemosys.org](http://osemosys.org) contains a lot of useful information. 121 | 122 | ### Newsletter 123 | 124 | Sign up for a monthly OSeMOSYS [newsletter](http://www.osemosys.org/news-and-events.html). 125 | 126 | ## Citing OSemOSYS 127 | 128 | If you use OSeMOSYS in your work, please cite the original paper: 129 | 130 | Howells, M., Rogner, H., Strachan, N., Heaps, C., Huntington, H., Kypreos, S., Hughes, A., Silveira, S., DeCarolis, J., Bazilian, M., Roehrl, A., 2011. OSeMOSYS: The Open Source Energy Modeling System: An introduction to its ethos, structure and development. Energy Policy, 39 (10), pp. 5850-5870. 131 | 132 | If you use Bibtex, you can use the following: 133 | 134 | @article{HOWELLS20115850, 135 | title = "OSeMOSYS: The Open Source Energy Modeling System: An introduction to its ethos, structure and development", 136 | journal = "Energy Policy", 137 | volume = "39", 138 | number = "10", 139 | pages = "5850 - 5870", 140 | year = "2011", 141 | note = "Sustainability of biofuels", 142 | issn = "0301-4215", 143 | doi = "https://doi.org/10.1016/j.enpol.2011.06.033", 144 | url = "http://www.sciencedirect.com/science/article/pii/S0301421511004897", 145 | author = "Mark Howells and Holger Rogner and Neil Strachan and Charles Heaps and Hillard Huntington and Socrates Kypreos and Alison Hughes and Semida Silveira and Joe DeCarolis and Morgan Bazillian and Alexander Roehrl", 146 | keywords = "Energy systems analysis, Energy modeling, Open source", 147 | abstract = "This paper discusses the design and development of the Open Source Energy Modeling System (OSeMOSYS). It describes the model’s formulation in terms of a ‘plain English’ description, algebraic formulation, implementation—in terms of its full source code, as well as a detailed description of the model inputs, parameters, and outputs. A key feature of the OSeMOSYS implementation is that it is contained in less than five pages of documented, easily accessible code. Other existing energy system models that do not have this emphasis on compactness and openness makes the barrier to entry by new users much higher, as well as making the addition of innovative new functionality very difficult. The paper begins by describing the rationale for the development of OSeMOSYS and its structure. The current preliminary implementation of the model is then demonstrated for a discrete example. Next, we explain how new development efforts will build on the existing OSeMOSYS codebase. The paper closes with thoughts regarding the organization of the OSeMOSYS community, associated capacity development efforts, and linkages to other open source efforts including adding functionality to the LEAP model." 148 | } -------------------------------------------------------------------------------- /tests/Data_check_statements/data_simp_Timeslice_check.txt: -------------------------------------------------------------------------------- 1 | ############### 2 | # Sets # 3 | ############### 4 | # 5 | set DAYTYPE := 1 ; 6 | set FUEL := BAGASSE BIOMASS DSL ETH FEL1 FEL2 FER GAS HEAT LAND LANDFOREST LNDSUGCAN MOLASSES RAWSUG RIVERWATER SEC_EL STOREDENERGY SUGCAN WATAGR WATIN WATOUT ; 7 | set MODE_OF_OPERATION := 1 2 ; 8 | set SEASON := 1 2 3 ; 9 | set DAILYTIMEBRACKET := 1 2 ; 10 | set EMISSION := CO2 WATCON ; 11 | set REGION := SIMPLICITY ; 12 | set YEAR := 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 ; 13 | set STORAGE := DAM ; 14 | set TIMESLICE := ID IN SD SN WD WN ; 15 | set TECHNOLOGY := BIOMASSPRO CHP ETHPLANT ELEC_IMPORT GAS_EXTRACTION GAS_IMPORT GRID_EXP HYD1 HYD2 IMPDSL IMPFERT IMPRAWSUG LNDFORCOV LNDRES LNDSUGPL LNDSUGPLIR LNDSUGPLRF NGCC RIVER RIVER_2 RIVWATAGR SOLPV1 SOLPV2 SUGFACTORY TD TD2 WINDPOWER BACKSTOP1 BACKSTOP2 ; 16 | 17 | 18 | ##################### 19 | # Parameters # 20 | ##################### 21 | # 22 | param ResultsPath := "results"; 23 | # 24 | param AccumulatedAnnualDemand default 0 := 25 | [SIMPLICITY,*,*]: 26 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 27 | ETH 1 1.03 1.061 1.093 1.126 1.159 1.194 1.23 1.267 1.305 1.344 1.384 1.426 1.469 1.513 1.558 1.605 1.653 1.702 1.754 1.806 1.86 1.916 1.974 2.033 2.094 2.157 28 | RAWSUG 0.5 0.51 0.519 0.529 0.538 0.548 0.558 0.567 0.577 0.587 0.596 0.606 0.615 0.625 0.635 0.644 0.654 0.663 0.673 0.683 0.692 0.702 0.712 0.721 0.731 0.74 0.75 29 | ; 30 | 31 | param AnnualEmissionLimit default -1 := 32 | [SIMPLICITY,*,*]: 33 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 34 | CO2 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 0.2 0.18 0.16 0.14 0.12 0.1 0.09 0.08 0.07 0.06 0.05 35 | ; 36 | 37 | param AnnualExogenousEmission default 0 := 38 | [SIMPLICITY,*,*]: 39 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 40 | CO2 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 41 | ; 42 | 43 | param AvailabilityFactor default 1 := 44 | ; 45 | 46 | param CapacityFactor default 1 := 47 | [SIMPLICITY,HYD1,*,*]: 48 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 49 | ID 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 50 | IN 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 51 | SD 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 52 | SN 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 53 | WD 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 54 | WN 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 55 | [SIMPLICITY,RIVER,*,*]: 56 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 57 | ID 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 58 | IN 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 59 | SD 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 60 | SN 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 61 | WD 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 62 | WN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 63 | [SIMPLICITY,SOLPV1,*,*]: 64 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 65 | ID 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 66 | IN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 | SD 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 68 | SN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69 | WD 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 70 | WN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71 | [SIMPLICITY,SOLPV2,*,*]: 72 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 73 | ID 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 74 | IN 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 75 | SD 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 76 | SN 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 77 | WD 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 78 | WN 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 79 | [SIMPLICITY,WINDPOWER,*,*]: 80 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 81 | ID 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 82 | IN 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 83 | SD 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 84 | SN 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 85 | WD 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 86 | WN 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 87 | ; 88 | 89 | param CapacityOfOneTechnologyUnit default 0 := 90 | ; 91 | 92 | param CapacityToActivityUnit default 1 : 93 | BACKSTOP1 BACKSTOP2 BIOMASSPRO CHP ELEC_IMPORT GAS_EXTRACTION GAS_IMPORT GRID_EXP HYD1 HYD2 NGCC RIVER SOLPV1 SOLPV2 TD TD2 WINDPOWER:= 94 | SIMPLICITY 1 1 1 1 1 1 1 31.536 31.536 31.536 31.536 1 31.536 31.536 31.536 1 31.536 95 | ; 96 | 97 | param CapitalCost default 0 := 98 | [SIMPLICITY,*,*]: 99 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 100 | BACKSTOP1 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 101 | BACKSTOP2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 102 | ETHPLANT 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 103 | GRID_EXP 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 104 | HYD1 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 105 | HYD2 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 106 | LNDSUGPLIR 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 107 | LNDSUGPLRF 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 108 | NGCC 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 109 | SOLPV1 1700 1700 1700 1700 1700 1700 1600 1600 1600 1600 1600 1500 1500 1500 1500 1500 1400 1400 1400 1400 1400 1300 1300 1300 1300 1300 1200 110 | SOLPV2 2700 2700 2700 2700 2700 2700 2600 2600 2600 2600 2600 2500 2500 2500 2500 2500 2400 2400 2400 2400 2400 2300 2300 2300 2300 2300 2200 111 | SUGFACTORY 231.1 228.69 226.28 223.88 221.47 219.06 216.66 214.25 211.84 209.43 207.03 204.62 202.21 199.8 197.4 194.99 192.58 190.2 187.86 185.54 183.25 180.98 178.75 176.54 174.36 172.21 170.08 112 | WINDPOWER 1845 1808 1772 1736 1702 1667 1634 1601 1569 1538 1507 1477 1448 1419 1390 1362 1356 1349 1342 1335 1329 1322 1315 1309 1302 1296 1289 113 | ; 114 | 115 | param CapitalCostStorage default 0 := 116 | ; 117 | 118 | param Conversionld default 0 : 119 | 1:= 120 | ID 1 121 | IN 1 122 | SD 1 123 | SN 1 124 | WD 1 125 | WN 1 126 | ; 127 | 128 | param Conversionlh default 0 : 129 | 1 2:= 130 | ID 1 0 131 | IN 0 1 132 | SD 1 0 133 | SN 0 1 134 | WD 1 0 135 | WN 0 1 136 | ; 137 | 138 | param Conversionls default 0 : 139 | 1 2 3:= 140 | ID 0 1 0 141 | IN 0 1 0 142 | SD 0 0 1 143 | SN 0 0 1 144 | WD 1 0 0 145 | WN 1 0 0 146 | ; 147 | 148 | param DaySplit default 0.00137 := 149 | ; 150 | 151 | param DaysInDayType default 7 := 152 | ; 153 | 154 | param DepreciationMethod default 1 := 155 | ; 156 | 157 | param DiscountRate default 0.05 := 158 | ; 159 | 160 | param DiscountRateStorage default 0.05 := 161 | ; 162 | 163 | param EmissionActivityRatio default 0 := 164 | [SIMPLICITY,GAS_EXTRACTION,CO2,*,*]: 165 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 166 | 1 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 167 | 2 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 168 | [SIMPLICITY,GAS_IMPORT,CO2,*,*]: 169 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 170 | 1 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 171 | 2 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 172 | ; 173 | 174 | param EmissionsPenalty default 0 := 175 | [SIMPLICITY,*,*]: 176 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 177 | CO2 7.5 7.5 7.5 7.5 7.5 7.5 8 8 8 8 8 8.5 8.5 8.5 8.5 8.5 9 9 9 9 9 9.5 9.5 9.5 9.5 9.5 10 178 | ; 179 | 180 | param FixedCost default 0 := 181 | [SIMPLICITY,*,*]: 182 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 183 | ETHPLANT 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 184 | GRID_EXP 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 185 | HYD1 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 186 | HYD2 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 187 | NGCC 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 188 | SUGFACTORY 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 189 | TD 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 190 | ; 191 | 192 | param InputActivityRatio default 0 := 193 | [SIMPLICITY,ETHPLANT,FEL1,*,*]: 194 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 195 | 1 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 196 | 2 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 197 | [SIMPLICITY,ETHPLANT,MOLASSES,*,*]: 198 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 199 | 1 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 200 | 2 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 201 | [SIMPLICITY,GRID_EXP,SEC_EL,*,*]: 202 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 203 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 204 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 205 | [SIMPLICITY,HYD2,RIVERWATER,*,*]: 206 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 207 | 1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 208 | 2 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 209 | [SIMPLICITY,LNDFORCOV,LAND,*,*]: 210 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 211 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 212 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 213 | [SIMPLICITY,LNDSUGPL,LAND,*,*]: 214 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 215 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 216 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 217 | [SIMPLICITY,LNDSUGPLIR,DSL,*,*]: 218 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 219 | 1 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 .021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 220 | 2 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 .021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 221 | [SIMPLICITY,LNDSUGPLIR,FEL1,*,*]: 222 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 223 | 1 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 224 | 2 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 225 | [SIMPLICITY,LNDSUGPLIR,FER,*,*]: 226 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 227 | 1 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 228 | 2 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 229 | [SIMPLICITY,LNDSUGPLIR,LNDSUGCAN,*,*]: 230 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 231 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 232 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 233 | [SIMPLICITY,LNDSUGPLIR,WATAGR,*,*]: 234 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 235 | 1 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 236 | 2 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 237 | [SIMPLICITY,LNDSUGPLRF,DSL,*,*]: 238 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 239 | 1 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 .021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 240 | 2 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 .021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 241 | [SIMPLICITY,LNDSUGPLRF,FER,*,*]: 242 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 243 | 1 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 244 | 2 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 245 | [SIMPLICITY,LNDSUGPLRF,LNDSUGCAN,*,*]: 246 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 247 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 248 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 249 | [SIMPLICITY,NGCC,GAS,*,*]: 250 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 251 | 1 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 252 | 2 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 253 | [SIMPLICITY,RIVWATAGR,WATIN,*,*]: 254 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 255 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 256 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 257 | [SIMPLICITY,SUGFACTORY,SUGCAN,*,*]: 258 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 259 | 1 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 260 | 2 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 261 | [SIMPLICITY,TD,SEC_EL,*,*]: 262 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 263 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 264 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 265 | ; 266 | 267 | param MinStorageCharge default 0 := 268 | ; 269 | 270 | param ModelPeriodEmissionLimit default -1 := 271 | ; 272 | 273 | param ModelPeriodExogenousEmission default 0 := 274 | ; 275 | 276 | param OperationalLife default 1 : 277 | BACKSTOP1 BACKSTOP2 BIOMASSPRO CHP ETHPLANT ELEC_IMPORT GAS_EXTRACTION GAS_IMPORT GRID_EXP HYD1 HYD2 IMPDSL IMPFERT IMPRAWSUG LNDFORCOV LNDRES LNDSUGPL LNDSUGPLIR LNDSUGPLRF NGCC RIVER RIVER_2 RIVWATAGR SOLPV1 SOLPV2 SUGFACTORY TD TD2 WINDPOWER:= 278 | SIMPLICITY 1 1 1 1 30 1 1 1 50 80 80 1 1 1 15 1 1 15 15 30 1 1 1 20 20 30 50 1 25 279 | ; 280 | 281 | param OperationalLifeStorage default 0 := 282 | ; 283 | 284 | param OutputActivityRatio default 0 := 285 | [SIMPLICITY,BACKSTOP1,FEL1,*,*]: 286 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 287 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 288 | [SIMPLICITY,BACKSTOP2,FEL2,*,*]: 289 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 290 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 291 | [SIMPLICITY,ETHPLANT,ETH,*,*]: 292 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 293 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 294 | [SIMPLICITY,GAS_EXTRACTION,GAS,*,*]: 295 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 296 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 297 | [SIMPLICITY,GAS_IMPORT,GAS,*,*]: 298 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 299 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 300 | [SIMPLICITY,GRID_EXP,FEL2,*,*]: 301 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 302 | 1 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 303 | [SIMPLICITY,HYD1,SEC_EL,*,*]: 304 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 305 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 306 | [SIMPLICITY,HYD2,FEL1,*,*]: 307 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 308 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 309 | [SIMPLICITY,IMPDSL,DSL,*,*]: 310 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 311 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 312 | [SIMPLICITY,IMPFERT,FER,*,*]: 313 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 314 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 315 | [SIMPLICITY,IMPRAWSUG,RAWSUG,*,*]: 316 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 317 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 318 | [SIMPLICITY,LNDFORCOV,LANDFOREST,*,*]: 319 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 320 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 321 | [SIMPLICITY,LNDRES,LAND,*,*]: 322 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 323 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 324 | [SIMPLICITY,LNDSUGPL,LNDSUGCAN,*,*]: 325 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 326 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 327 | [SIMPLICITY,LNDSUGPLIR,SUGCAN,*,*]: 328 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 329 | 1 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 330 | [SIMPLICITY,LNDSUGPLRF,SUGCAN,*,*]: 331 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 332 | 1 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 333 | [SIMPLICITY,NGCC,SEC_EL,*,*]: 334 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 335 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 336 | [SIMPLICITY,RIVER,RIVERWATER,*,*]: 337 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 338 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 339 | [SIMPLICITY,RIVER_2,WATIN,*,*]: 340 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 341 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 342 | [SIMPLICITY,RIVWATAGR,WATAGR,*,*]: 343 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 344 | 1 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 345 | [SIMPLICITY,SOLPV1,FEL2,*,*]: 346 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 347 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 348 | [SIMPLICITY,SOLPV2,FEL2,*,*]: 349 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 350 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 351 | [SIMPLICITY,SUGFACTORY,BAGASSE,*,*]: 352 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 353 | 1 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 354 | [SIMPLICITY,SUGFACTORY,MOLASSES,*,*]: 355 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 356 | 1 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 357 | [SIMPLICITY,SUGFACTORY,RAWSUG,*,*]: 358 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 359 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 360 | [SIMPLICITY,TD,FEL1,*,*]: 361 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 362 | 1 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 363 | [SIMPLICITY,WINDPOWER,SEC_EL,*,*]: 364 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 365 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 366 | ; 367 | 368 | param REMinProductionTarget default 0 := 369 | ; 370 | 371 | param RETagFuel default 0 := 372 | ; 373 | 374 | param RETagTechnology default 0 := 375 | [SIMPLICITY,*,*]: 376 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 377 | SOLPV1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 378 | SOLPV2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 379 | WINDPOWER 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 380 | ; 381 | 382 | param ReserveMargin default 1 := 383 | ; 384 | 385 | param ReserveMarginTagFuel default 0 := 386 | ; 387 | 388 | param ReserveMarginTagTechnology default 0 := 389 | ; 390 | 391 | param ResidualCapacity default 0 := 392 | [SIMPLICITY,*,*]: 393 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 394 | ETHPLANT 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 395 | LNDFORCOV 150 147.115 144.231 141.346 138.462 135.577 132.692 129.808 126.923 124.038 121.154 118.269 115.385 112.5 109.615 106.731 103.846 100.962 98.077 95.192 92.308 89.423 86.538 83.654 80.769 77.885 75 396 | LNDSUGPLIR 25 23.438 21.875 20.313 18.75 17.188 15.625 14.063 12.5 10.938 9.375 7.813 6.25 4.688 3.125 1.563 0 0 0 0 0 0 0 0 0 0 0 397 | LNDSUGPLRF 60 56.25 52.5 48.75 45 41.25 37.5 33.75 30 26.25 22.5 18.75 15 11.25 7.5 3.75 0 0 0 0 0 0 0 0 0 0 0 398 | NGCC 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0 0 0 0 0 0 399 | SUGFACTORY 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 400 | ; 401 | 402 | param ResidualStorageCapacity default 999 := 403 | ; 404 | 405 | param SpecifiedAnnualDemand default 0 := 406 | [SIMPLICITY,*,*]: 407 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 408 | FEL1 2.214 2.225 2.274 2.342 2.426 2.509 2.589 2.683 2.78 2.886 2.955 3.006 3.061 3.121 3.186 3.258 3.336 3.419 3.503 3.589 3.676 3.763 3.855 3.952 4.054 4.161 4.273 409 | FEL2 0 0 0 0 0.3 0.4 0.5 0.7 0.75 0.9 0.95 1 1.1 1.2 1.25 1.28 1.3 1.35 1.5 1.55 1.6 1.64 1.7 1.78 1.85 1.92 2.05 410 | ; 411 | 412 | param SpecifiedDemandProfile default 0 := 413 | [SIMPLICITY,FEL1,*,*]: 414 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 415 | ID 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 416 | IN 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 417 | SD 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 418 | SN 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 419 | WD 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 420 | WN 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 421 | [SIMPLICITY,FEL2,*,*]: 422 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 423 | ID 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 424 | IN 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 425 | SD 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 426 | SN 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 427 | WD 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 428 | WN 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 429 | ; 430 | 431 | param StorageLevelStart default 0 := 432 | ; 433 | 434 | param StorageMaxChargeRate default 0 := 435 | ; 436 | 437 | param StorageMaxDischargeRate default 0 := 438 | ; 439 | 440 | param TechnologyFromStorage default 0 := 441 | [SIMPLICITY,HYD2,*,*]: 442 | 1 2:= 443 | DAM 0 1 444 | ; 445 | 446 | param TechnologyToStorage default 0 := 447 | [SIMPLICITY,HYD2,*,*]: 448 | 1 2:= 449 | DAM 1 0 450 | ; 451 | 452 | param TotalAnnualMaxCapacity default -1 := 453 | [SIMPLICITY,*,*]: 454 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 455 | GAS_EXTRACTION 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 456 | HYD1 0 0 0 0 0 0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 457 | HYD2 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 458 | RIVER 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 459 | ; 460 | 461 | param TotalAnnualMaxCapacityInvestment default -1 := 462 | [SIMPLICITY,*,*]: 463 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 464 | HYD1 0 0 0 0 0 0 0.02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 465 | HYD2 0 0 0 0 0 0 0 0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 466 | LNDSUGPLIR 5 5 5 5 5 5 5 5 5 5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 10 10 10 10 10 10 10 467 | ; 468 | 469 | param TotalAnnualMinCapacity default 0 := 470 | ; 471 | 472 | param TotalAnnualMinCapacityInvestment default 0 := 473 | [SIMPLICITY,*,*]: 474 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 475 | HYD1 0 0 0 0 0 0 0.02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 476 | ; 477 | 478 | param TotalTechnologyAnnualActivityLowerLimit default 0 := 479 | [SIMPLICITY,*,*]: 480 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 481 | LNDFORCOV 150 147.115 144.231 141.346 138.462 135.577 132.692 129.808 126.923 124.038 121.154 118.269 115.385 112.5 109.615 106.731 103.846 100.962 98.077 95.192 92.308 89.423 86.538 83.654 80.769 77.885 75 482 | HYD1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 483 | ; 484 | 485 | param TotalTechnologyAnnualActivityUpperLimit default -1 := 486 | [SIMPLICITY,*,*]: 487 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 488 | LNDRES 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 489 | RIVER 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 490 | ; 491 | 492 | param TotalTechnologyModelPeriodActivityLowerLimit default 0 := 493 | ; 494 | 495 | param TotalTechnologyModelPeriodActivityUpperLimit default -1 := 496 | ; 497 | 498 | param TradeRoute default 0 := 499 | ; 500 | 501 | param VariableCost default 0 := 502 | [SIMPLICITY,BACKSTOP1,*,*]: 503 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 504 | 1 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 505 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 506 | [SIMPLICITY,BACKSTOP2,*,*]: 507 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 508 | 1 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 509 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 510 | [SIMPLICITY,ETHPLANT,*,*]: 511 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 512 | 1 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 513 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 514 | [SIMPLICITY,GAS_EXTRACTION,*,*]: 515 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 516 | 1 7.5 7.5 7.5 7.5 7.5 7.5 8 8 8 8 8 8.5 8.5 8.5 8.5 8.5 9 9 9 9 9 9.5 9.5 9.5 9.5 9.5 10 517 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 518 | [SIMPLICITY,GAS_IMPORT,*,*]: 519 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 520 | 1 8 8 8.5 8.5 8.5 8.5 8.5 9 9 9 9 9 9.5 9.5 9.5 9.5 9.5 10 10 10 10 10.5 10.5 10.5 10.5 10.5 11 521 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 522 | [SIMPLICITY,IMPDSL,*,*]: 523 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 524 | 1 15.647 17.365 19.083 20.801 22.519 24.237 25.219 26.201 27.183 28.164 29.146 30.128 31.11 32.091 33.073 34.055 34.454 34.853 35.252 35.65 36.049 36.448 36.847 37.246 37.645 38.043 38.043 525 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 526 | [SIMPLICITY,IMPFERT,*,*]: 527 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 528 | 1 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 529 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 530 | [SIMPLICITY,IMPRAWSUG,*,*]: 531 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 532 | 1 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 533 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 534 | [SIMPLICITY,LNDFORCOV,*,*]: 535 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 536 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 537 | [SIMPLICITY,LNDRES,*,*]: 538 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 539 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 540 | [SIMPLICITY,LNDSUGPL,*,*]: 541 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 542 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 543 | [SIMPLICITY,LNDSUGPLIR,*,*]: 544 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 545 | 1 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 546 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 547 | [SIMPLICITY,LNDSUGPLRF,*,*]: 548 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 549 | 1 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 550 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 551 | [SIMPLICITY,RIVER_2,*,*]: 552 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 553 | 1 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 554 | [SIMPLICITY,RIVWATAGR,*,*]: 555 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 556 | 1 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 557 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 558 | [SIMPLICITY,SOLPV1,*,*]: 559 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 560 | 1 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 561 | 2 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 562 | [SIMPLICITY,SOLPV2,*,*]: 563 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 564 | 1 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 565 | 2 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 566 | [SIMPLICITY,SUGFACTORY,*,*]: 567 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 568 | 1 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 569 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 570 | [SIMPLICITY,WINDPOWER,*,*]: 571 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 572 | 1 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 573 | 2 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 574 | ; 575 | 576 | param YearSplit default 0 : 577 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 578 | ID 0.2667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 579 | IN 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 580 | SD 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 581 | SN 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 582 | WD 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 583 | WN 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 584 | ; 585 | 586 | # 587 | end; -------------------------------------------------------------------------------- /tests/Data_check_statements/data_simp_capacity_inv_check.txt: -------------------------------------------------------------------------------- 1 | ############### 2 | # Sets # 3 | ############### 4 | # 5 | set DAYTYPE := 1 ; 6 | set FUEL := BAGASSE BIOMASS DSL ETH FEL1 FEL2 FER GAS HEAT LAND LANDFOREST LNDSUGCAN MOLASSES RAWSUG RIVERWATER SEC_EL STOREDENERGY SUGCAN WATAGR WATIN WATOUT ; 7 | set MODE_OF_OPERATION := 1 2 ; 8 | set SEASON := 1 2 3 ; 9 | set DAILYTIMEBRACKET := 1 2 ; 10 | set EMISSION := CO2 WATCON ; 11 | set REGION := SIMPLICITY ; 12 | set YEAR := 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040 ; 13 | set STORAGE := DAM ; 14 | set TIMESLICE := ID IN SD SN WD WN ; 15 | set TECHNOLOGY := BIOMASSPRO CHP ETHPLANT ELEC_IMPORT GAS_EXTRACTION GAS_IMPORT GRID_EXP HYD1 HYD2 IMPDSL IMPFERT IMPRAWSUG LNDFORCOV LNDRES LNDSUGPL LNDSUGPLIR LNDSUGPLRF NGCC RIVER RIVER_2 RIVWATAGR SOLPV1 SOLPV2 SUGFACTORY TD TD2 WINDPOWER BACKSTOP1 BACKSTOP2 ; 16 | 17 | 18 | ##################### 19 | # Parameters # 20 | ##################### 21 | # 22 | param ResultsPath := "results"; 23 | # 24 | param AccumulatedAnnualDemand default 0 := 25 | [SIMPLICITY,*,*]: 26 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 27 | ETH 1 1.03 1.061 1.093 1.126 1.159 1.194 1.23 1.267 1.305 1.344 1.384 1.426 1.469 1.513 1.558 1.605 1.653 1.702 1.754 1.806 1.86 1.916 1.974 2.033 2.094 2.157 28 | RAWSUG 0.5 0.51 0.519 0.529 0.538 0.548 0.558 0.567 0.577 0.587 0.596 0.606 0.615 0.625 0.635 0.644 0.654 0.663 0.673 0.683 0.692 0.702 0.712 0.721 0.731 0.74 0.75 29 | ; 30 | 31 | param AnnualEmissionLimit default -1 := 32 | [SIMPLICITY,*,*]: 33 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 34 | CO2 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 9999 0.2 0.18 0.16 0.14 0.12 0.1 0.09 0.08 0.07 0.06 0.05 35 | ; 36 | 37 | param AnnualExogenousEmission default 0 := 38 | [SIMPLICITY,*,*]: 39 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 40 | CO2 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 41 | ; 42 | 43 | param AvailabilityFactor default 1 := 44 | ; 45 | 46 | param CapacityFactor default 1 := 47 | [SIMPLICITY,HYD1,*,*]: 48 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 49 | ID 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 50 | IN 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 51 | SD 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 52 | SN 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 53 | WD 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 54 | WN 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 0.56 55 | [SIMPLICITY,RIVER,*,*]: 56 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 57 | ID 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 58 | IN 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 0.65 59 | SD 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 60 | SN 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 61 | WD 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 62 | WN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 63 | [SIMPLICITY,SOLPV1,*,*]: 64 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 65 | ID 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 66 | IN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 67 | SD 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 68 | SN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 69 | WD 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 70 | WN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 71 | [SIMPLICITY,SOLPV2,*,*]: 72 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 73 | ID 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 74 | IN 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 75 | SD 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 76 | SN 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 77 | WD 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 78 | WN 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 79 | [SIMPLICITY,WINDPOWER,*,*]: 80 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 81 | ID 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 82 | IN 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 83 | SD 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 84 | SN 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 85 | WD 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 86 | WN 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.25 87 | ; 88 | 89 | param CapacityOfOneTechnologyUnit default 0 := 90 | ; 91 | 92 | param CapacityToActivityUnit default 1 : 93 | BACKSTOP1 BACKSTOP2 BIOMASSPRO CHP ELEC_IMPORT GAS_EXTRACTION GAS_IMPORT GRID_EXP HYD1 HYD2 NGCC RIVER SOLPV1 SOLPV2 TD TD2 WINDPOWER:= 94 | SIMPLICITY 1 1 1 1 1 1 1 31.536 31.536 31.536 31.536 1 31.536 31.536 31.536 1 31.536 95 | ; 96 | 97 | param CapitalCost default 0 := 98 | [SIMPLICITY,*,*]: 99 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 100 | BACKSTOP1 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 101 | BACKSTOP2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 102 | ETHPLANT 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 25 103 | GRID_EXP 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 4000 104 | HYD1 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 4500 105 | HYD2 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 3500 106 | LNDSUGPLIR 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 3.75 107 | LNDSUGPLRF 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 2.75 108 | NGCC 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 1100 109 | SOLPV1 1700 1700 1700 1700 1700 1700 1600 1600 1600 1600 1600 1500 1500 1500 1500 1500 1400 1400 1400 1400 1400 1300 1300 1300 1300 1300 1200 110 | SOLPV2 2700 2700 2700 2700 2700 2700 2600 2600 2600 2600 2600 2500 2500 2500 2500 2500 2400 2400 2400 2400 2400 2300 2300 2300 2300 2300 2200 111 | SUGFACTORY 231.1 228.69 226.28 223.88 221.47 219.06 216.66 214.25 211.84 209.43 207.03 204.62 202.21 199.8 197.4 194.99 192.58 190.2 187.86 185.54 183.25 180.98 178.75 176.54 174.36 172.21 170.08 112 | WINDPOWER 1845 1808 1772 1736 1702 1667 1634 1601 1569 1538 1507 1477 1448 1419 1390 1362 1356 1349 1342 1335 1329 1322 1315 1309 1302 1296 1289 113 | ; 114 | 115 | param CapitalCostStorage default 0 := 116 | ; 117 | 118 | param Conversionld default 0 : 119 | 1:= 120 | ID 1 121 | IN 1 122 | SD 1 123 | SN 1 124 | WD 1 125 | WN 1 126 | ; 127 | 128 | param Conversionlh default 0 : 129 | 1 2:= 130 | ID 1 0 131 | IN 0 1 132 | SD 1 0 133 | SN 0 1 134 | WD 1 0 135 | WN 0 1 136 | ; 137 | 138 | param Conversionls default 0 : 139 | 1 2 3:= 140 | ID 0 1 0 141 | IN 0 1 0 142 | SD 0 0 1 143 | SN 0 0 1 144 | WD 1 0 0 145 | WN 1 0 0 146 | ; 147 | 148 | param DaySplit default 0.00137 := 149 | ; 150 | 151 | param DaysInDayType default 7 := 152 | ; 153 | 154 | param DepreciationMethod default 1 := 155 | ; 156 | 157 | param DiscountRate default 0.05 := 158 | ; 159 | 160 | param DiscountRateStorage default 0.05 := 161 | ; 162 | 163 | param EmissionActivityRatio default 0 := 164 | [SIMPLICITY,GAS_EXTRACTION,CO2,*,*]: 165 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 166 | 1 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 167 | 2 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 168 | [SIMPLICITY,GAS_IMPORT,CO2,*,*]: 169 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 170 | 1 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 171 | 2 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 172 | ; 173 | 174 | param EmissionsPenalty default 0 := 175 | [SIMPLICITY,*,*]: 176 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 177 | CO2 7.5 7.5 7.5 7.5 7.5 7.5 8 8 8 8 8 8.5 8.5 8.5 8.5 8.5 9 9 9 9 9 9.5 9.5 9.5 9.5 9.5 10 178 | ; 179 | 180 | param FixedCost default 0 := 181 | [SIMPLICITY,*,*]: 182 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 183 | ETHPLANT 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 8.46 184 | GRID_EXP 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 185 | HYD1 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 65 186 | HYD2 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 187 | NGCC 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 188 | SUGFACTORY 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 8.67 189 | TD 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 0.96 190 | ; 191 | 192 | param InputActivityRatio default 0 := 193 | [SIMPLICITY,ETHPLANT,FEL1,*,*]: 194 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 195 | 1 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 196 | 2 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 0.0251 197 | [SIMPLICITY,ETHPLANT,MOLASSES,*,*]: 198 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 199 | 1 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 200 | 2 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 0.1519 201 | [SIMPLICITY,GRID_EXP,SEC_EL,*,*]: 202 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 203 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 204 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 205 | [SIMPLICITY,HYD2,RIVERWATER,*,*]: 206 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 207 | 1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 208 | 2 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 209 | [SIMPLICITY,LNDFORCOV,LAND,*,*]: 210 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 211 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 212 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 213 | [SIMPLICITY,LNDSUGPL,LAND,*,*]: 214 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 215 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 216 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 217 | [SIMPLICITY,LNDSUGPLIR,DSL,*,*]: 218 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 219 | 1 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 .021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 220 | 2 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 .021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 221 | [SIMPLICITY,LNDSUGPLIR,FEL1,*,*]: 222 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 223 | 1 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 224 | 2 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 0.000515 225 | [SIMPLICITY,LNDSUGPLIR,FER,*,*]: 226 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 227 | 1 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 228 | 2 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 229 | [SIMPLICITY,LNDSUGPLIR,LNDSUGCAN,*,*]: 230 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 231 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 232 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 233 | [SIMPLICITY,LNDSUGPLIR,WATAGR,*,*]: 234 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 235 | 1 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 236 | 2 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 0.634 237 | [SIMPLICITY,LNDSUGPLRF,DSL,*,*]: 238 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 239 | 1 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 .021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 240 | 2 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 .021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 0.021132 241 | [SIMPLICITY,LNDSUGPLRF,FER,*,*]: 242 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 243 | 1 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 244 | 2 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 0.000064 245 | [SIMPLICITY,LNDSUGPLRF,LNDSUGCAN,*,*]: 246 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 247 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 248 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 249 | [SIMPLICITY,NGCC,GAS,*,*]: 250 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 251 | 1 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 252 | 2 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 1.992 253 | [SIMPLICITY,RIVWATAGR,WATIN,*,*]: 254 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 255 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 256 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 257 | [SIMPLICITY,SUGFACTORY,SUGCAN,*,*]: 258 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 259 | 1 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 260 | 2 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 7.52 261 | [SIMPLICITY,TD,SEC_EL,*,*]: 262 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 263 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 264 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 265 | ; 266 | 267 | param MinStorageCharge default 0 := 268 | ; 269 | 270 | param ModelPeriodEmissionLimit default -1 := 271 | ; 272 | 273 | param ModelPeriodExogenousEmission default 0 := 274 | ; 275 | 276 | param OperationalLife default 1 : 277 | BACKSTOP1 BACKSTOP2 BIOMASSPRO CHP ETHPLANT ELEC_IMPORT GAS_EXTRACTION GAS_IMPORT GRID_EXP HYD1 HYD2 IMPDSL IMPFERT IMPRAWSUG LNDFORCOV LNDRES LNDSUGPL LNDSUGPLIR LNDSUGPLRF NGCC RIVER RIVER_2 RIVWATAGR SOLPV1 SOLPV2 SUGFACTORY TD TD2 WINDPOWER:= 278 | SIMPLICITY 1 1 1 1 30 1 1 1 50 80 80 1 1 1 15 1 1 15 15 30 1 1 1 20 20 30 50 1 25 279 | ; 280 | 281 | param OperationalLifeStorage default 0 := 282 | ; 283 | 284 | param OutputActivityRatio default 0 := 285 | [SIMPLICITY,BACKSTOP1,FEL1,*,*]: 286 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 287 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 288 | [SIMPLICITY,BACKSTOP2,FEL2,*,*]: 289 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 290 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 291 | [SIMPLICITY,ETHPLANT,ETH,*,*]: 292 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 293 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 294 | [SIMPLICITY,GAS_EXTRACTION,GAS,*,*]: 295 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 296 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 297 | [SIMPLICITY,GAS_IMPORT,GAS,*,*]: 298 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 299 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 300 | [SIMPLICITY,GRID_EXP,FEL2,*,*]: 301 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 302 | 1 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 0.82 303 | [SIMPLICITY,HYD1,SEC_EL,*,*]: 304 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 305 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 306 | [SIMPLICITY,HYD2,FEL1,*,*]: 307 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 308 | 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 309 | [SIMPLICITY,IMPDSL,DSL,*,*]: 310 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 311 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 312 | [SIMPLICITY,IMPFERT,FER,*,*]: 313 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 314 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 315 | [SIMPLICITY,IMPRAWSUG,RAWSUG,*,*]: 316 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 317 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 318 | [SIMPLICITY,LNDFORCOV,LANDFOREST,*,*]: 319 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 320 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 321 | [SIMPLICITY,LNDRES,LAND,*,*]: 322 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 323 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 324 | [SIMPLICITY,LNDSUGPL,LNDSUGCAN,*,*]: 325 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 326 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 327 | [SIMPLICITY,LNDSUGPLIR,SUGCAN,*,*]: 328 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 329 | 1 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 0.047 330 | [SIMPLICITY,LNDSUGPLRF,SUGCAN,*,*]: 331 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 332 | 1 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 0.0376 333 | [SIMPLICITY,NGCC,SEC_EL,*,*]: 334 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 335 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 336 | [SIMPLICITY,RIVER,RIVERWATER,*,*]: 337 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 338 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 339 | [SIMPLICITY,RIVER_2,WATIN,*,*]: 340 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 341 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 342 | [SIMPLICITY,RIVWATAGR,WATAGR,*,*]: 343 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 344 | 1 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 0.9 345 | [SIMPLICITY,SOLPV1,FEL2,*,*]: 346 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 347 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 348 | [SIMPLICITY,SOLPV2,FEL2,*,*]: 349 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 350 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 351 | [SIMPLICITY,SUGFACTORY,BAGASSE,*,*]: 352 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 353 | 1 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 16.2 354 | [SIMPLICITY,SUGFACTORY,MOLASSES,*,*]: 355 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 356 | 1 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 0.34 357 | [SIMPLICITY,SUGFACTORY,RAWSUG,*,*]: 358 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 359 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 360 | [SIMPLICITY,TD,FEL1,*,*]: 361 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 362 | 1 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 0.95 363 | [SIMPLICITY,WINDPOWER,SEC_EL,*,*]: 364 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 365 | 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 366 | ; 367 | 368 | param REMinProductionTarget default 0 := 369 | ; 370 | 371 | param RETagFuel default 0 := 372 | ; 373 | 374 | param RETagTechnology default 0 := 375 | [SIMPLICITY,*,*]: 376 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 377 | SOLPV1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 378 | SOLPV2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 379 | WINDPOWER 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 380 | ; 381 | 382 | param ReserveMargin default 1 := 383 | ; 384 | 385 | param ReserveMarginTagFuel default 0 := 386 | ; 387 | 388 | param ReserveMarginTagTechnology default 0 := 389 | ; 390 | 391 | param ResidualCapacity default 0 := 392 | [SIMPLICITY,*,*]: 393 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 394 | ETHPLANT 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 395 | LNDFORCOV 150 147.115 144.231 141.346 138.462 135.577 132.692 129.808 126.923 124.038 121.154 118.269 115.385 112.5 109.615 106.731 103.846 100.962 98.077 95.192 92.308 89.423 86.538 83.654 80.769 77.885 75 396 | LNDSUGPLIR 25 23.438 21.875 20.313 18.75 17.188 15.625 14.063 12.5 10.938 9.375 7.813 6.25 4.688 3.125 1.563 0 0 0 0 0 0 0 0 0 0 0 397 | LNDSUGPLRF 60 56.25 52.5 48.75 45 41.25 37.5 33.75 30 26.25 22.5 18.75 15 11.25 7.5 3.75 0 0 0 0 0 0 0 0 0 0 0 398 | NGCC 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0 0 0 0 0 0 399 | SUGFACTORY 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 0.8475 400 | ; 401 | 402 | param ResidualStorageCapacity default 999 := 403 | ; 404 | 405 | param SpecifiedAnnualDemand default 0 := 406 | [SIMPLICITY,*,*]: 407 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 408 | FEL1 2.214 2.225 2.274 2.342 2.426 2.509 2.589 2.683 2.78 2.886 2.955 3.006 3.061 3.121 3.186 3.258 3.336 3.419 3.503 3.589 3.676 3.763 3.855 3.952 4.054 4.161 4.273 409 | FEL2 0 0 0 0 0.3 0.4 0.5 0.7 0.75 0.9 0.95 1 1.1 1.2 1.25 1.28 1.3 1.35 1.5 1.55 1.6 1.64 1.7 1.78 1.85 1.92 2.05 410 | ; 411 | 412 | param SpecifiedDemandProfile default 0 := 413 | [SIMPLICITY,FEL1,*,*]: 414 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 415 | ID 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 416 | IN 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 417 | SD 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 418 | SN 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 419 | WD 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 420 | WN 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 421 | [SIMPLICITY,FEL2,*,*]: 422 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 423 | ID 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 424 | IN 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 0.08 425 | SD 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 426 | SN 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 427 | WD 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 428 | WN 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 429 | ; 430 | 431 | param StorageLevelStart default 0 := 432 | ; 433 | 434 | param StorageMaxChargeRate default 0 := 435 | ; 436 | 437 | param StorageMaxDischargeRate default 0 := 438 | ; 439 | 440 | param TechnologyFromStorage default 0 := 441 | [SIMPLICITY,HYD2,*,*]: 442 | 1 2:= 443 | DAM 0 1 444 | ; 445 | 446 | param TechnologyToStorage default 0 := 447 | [SIMPLICITY,HYD2,*,*]: 448 | 1 2:= 449 | DAM 1 0 450 | ; 451 | 452 | param TotalAnnualMaxCapacity default -1 := 453 | [SIMPLICITY,*,*]: 454 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 455 | GAS_EXTRACTION 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 456 | HYD1 0 0 0 0 0 0 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 0.02 457 | HYD2 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 458 | RIVER 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 459 | ; 460 | 461 | param TotalAnnualMaxCapacityInvestment default -1 := 462 | [SIMPLICITY,*,*]: 463 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 464 | HYD1 0 0 0 0 0 0 0.02 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 465 | HYD2 0 0 0 0 0 0 0 0 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 466 | LNDSUGPLIR 5 5 5 5 5 5 5 5 5 5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 7.5 10 10 10 10 10 10 10 467 | ; 468 | 469 | param TotalAnnualMinCapacity default 0 := 470 | ; 471 | 472 | param TotalAnnualMinCapacityInvestment default 0 := 473 | [SIMPLICITY,*,*]: 474 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 475 | HYD1 0 0 0 0 0 0 0.03 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 476 | ; 477 | 478 | param TotalTechnologyAnnualActivityLowerLimit default 0 := 479 | [SIMPLICITY,*,*]: 480 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 481 | LNDFORCOV 150 147.115 144.231 141.346 138.462 135.577 132.692 129.808 126.923 124.038 121.154 118.269 115.385 112.5 109.615 106.731 103.846 100.962 98.077 95.192 92.308 89.423 86.538 83.654 80.769 77.885 75 482 | ; 483 | 484 | param TotalTechnologyAnnualActivityUpperLimit default -1 := 485 | [SIMPLICITY,*,*]: 486 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 487 | LNDRES 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 300 488 | RIVER 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 489 | ; 490 | 491 | param TotalTechnologyModelPeriodActivityLowerLimit default 0 := 492 | ; 493 | 494 | param TotalTechnologyModelPeriodActivityUpperLimit default -1 := 495 | ; 496 | 497 | param TradeRoute default 0 := 498 | ; 499 | 500 | param VariableCost default 0 := 501 | [SIMPLICITY,BACKSTOP1,*,*]: 502 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 503 | 1 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 504 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 505 | [SIMPLICITY,BACKSTOP2,*,*]: 506 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 507 | 1 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 508 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 509 | [SIMPLICITY,ETHPLANT,*,*]: 510 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 511 | 1 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 512 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 513 | [SIMPLICITY,GAS_EXTRACTION,*,*]: 514 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 515 | 1 7.5 7.5 7.5 7.5 7.5 7.5 8 8 8 8 8 8.5 8.5 8.5 8.5 8.5 9 9 9 9 9 9.5 9.5 9.5 9.5 9.5 10 516 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 517 | [SIMPLICITY,GAS_IMPORT,*,*]: 518 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 519 | 1 8 8 8.5 8.5 8.5 8.5 8.5 9 9 9 9 9 9.5 9.5 9.5 9.5 9.5 10 10 10 10 10.5 10.5 10.5 10.5 10.5 11 520 | 2 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 999999 521 | [SIMPLICITY,IMPDSL,*,*]: 522 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 523 | 1 15.647 17.365 19.083 20.801 22.519 24.237 25.219 26.201 27.183 28.164 29.146 30.128 31.11 32.091 33.073 34.055 34.454 34.853 35.252 35.65 36.049 36.448 36.847 37.246 37.645 38.043 38.043 524 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 525 | [SIMPLICITY,IMPFERT,*,*]: 526 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 527 | 1 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 400 528 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 529 | [SIMPLICITY,IMPRAWSUG,*,*]: 530 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 531 | 1 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 331 532 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 533 | [SIMPLICITY,LNDFORCOV,*,*]: 534 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 535 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 536 | [SIMPLICITY,LNDRES,*,*]: 537 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 538 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 539 | [SIMPLICITY,LNDSUGPL,*,*]: 540 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 541 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 542 | [SIMPLICITY,LNDSUGPLIR,*,*]: 543 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 544 | 1 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 0.75 545 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 546 | [SIMPLICITY,LNDSUGPLRF,*,*]: 547 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 548 | 1 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 0.55 549 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 550 | [SIMPLICITY,RIVER_2,*,*]: 551 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 552 | 1 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 0.07 553 | [SIMPLICITY,RIVWATAGR,*,*]: 554 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 555 | 1 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 0.01 556 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 557 | [SIMPLICITY,SOLPV1,*,*]: 558 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 559 | 1 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 560 | 2 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 2.54 561 | [SIMPLICITY,SOLPV2,*,*]: 562 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 563 | 1 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 564 | 2 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 565 | [SIMPLICITY,SUGFACTORY,*,*]: 566 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 567 | 1 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 2.89 568 | 2 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 569 | [SIMPLICITY,WINDPOWER,*,*]: 570 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 571 | 1 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 572 | 2 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 4.167 573 | ; 574 | 575 | param YearSplit default 0 : 576 | 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 2024 2025 2026 2027 2028 2029 2030 2031 2032 2033 2034 2035 2036 2037 2038 2039 2040:= 577 | ID 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 578 | IN 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 579 | SD 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 580 | SN 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 581 | WD 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 582 | WN 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 583 | ; 584 | 585 | # 586 | end; -------------------------------------------------------------------------------- /tests/README.md: -------------------------------------------------------------------------------- 1 | # GNU MathProg Tests 2 | 3 | The purpose of the testing file4s contained in this folder is to 4 | ensure that the outputs received from the two versions of the 5 | GNU MathProg implementations of OSeMOSYS match what is expected 6 | for a given model file. -------------------------------------------------------------------------------- /tests/super_simple_model.txt: -------------------------------------------------------------------------------- 1 | set MODE_OF_OPERATION := 2 | 1 3 | ; 4 | param default 0 : AnnualExogenousEmission := 5 | ; 6 | param default 0 : AccumulatedAnnualDemand := 7 | ; 8 | param default 99999 : TotalAnnualMaxCapacity := 9 | ; 10 | param default 1 : CapacityToActivityUnit := 11 | BB gas_plant 1.00 12 | ; 13 | param default 0 : StorageMaxChargeRate := 14 | ; 15 | param default 0.05 : DiscountRate := 16 | ; 17 | 18 | param default 0.05 : DiscountRateStorage := 19 | ; 20 | 21 | param default 0 : TotalTechnologyAnnualActivityLowerLimit := 22 | ; 23 | param default 999 : ResidualStorageCapacity := 24 | ; 25 | param default 0 : OutputActivityRatio := 26 | BB gas_import natural_gas 1 2016 1 27 | BB gas_plant electricity 1 2016 1 28 | ; 29 | set EMISSION := 30 | ; 31 | param default 0 : RETagFuel := 32 | ; 33 | param default 0 : FixedCost := 34 | BB gas_plant 2016 9.1101 35 | ; 36 | param default 0 : EmissionActivityRatio := 37 | ; 38 | param default 0 : RETagTechnology := 39 | ; 40 | param default 0 : YearSplit := 41 | x 2016 1 42 | ; 43 | param default 0 : Conversionlh := 44 | ; 45 | param default 0.00137 : DaySplit := 46 | ; 47 | param default 0 : MinStorageCharge := 48 | ; 49 | param default 0 : VariableCost := 50 | BB gas_plant 1 2016 9.1202 51 | ; 52 | param default 0 : CapitalCostStorage := 53 | ; 54 | param default 0 : ResidualCapacity := 55 | BB gas_plant 2016 3.1101 56 | ; 57 | set DAYTYPE := 58 | ; 59 | param default 0 : StorageLevelStart := 60 | ; 61 | set TECHNOLOGY := 62 | gas_import 63 | gas_plant 64 | ; 65 | param default 0 : InputActivityRatio := 66 | BB gas_plant natural_gas 1 2016 1.1101 67 | ; 68 | param default 1 : OperationalLife := 69 | ; 70 | param default 99999 : AnnualEmissionLimit := 71 | ; 72 | param default 99999 : ModelPeriodEmissionLimit := 73 | ; 74 | param default 99999 : TotalTechnologyAnnualActivityUpperLimit := 75 | ; 76 | param default 0 : TechnologyToStorage := 77 | ; 78 | param default 0 : ReserveMarginTagFuel := 79 | ; 80 | param default 0 : OperationalLifeStorage := 81 | ; 82 | set STORAGE := 83 | ; 84 | param default 0 : ModelPeriodExogenousEmission := 85 | ; 86 | param default 99999 : TotalAnnualMaxCapacityInvestment := 87 | ; 88 | param default 0 : SpecifiedDemandProfile := 89 | BB electricity x 2016 1 90 | ; 91 | param default 0 : TotalAnnualMinCapacity := 92 | ; 93 | set YEAR := 94 | 2016 95 | ; 96 | set FUEL := 97 | natural_gas 98 | electricity 99 | ; 100 | param default 0 : TotalTechnologyModelPeriodActivityLowerLimit := 101 | ; 102 | param default 0 : ReserveMarginTagTechnology := 103 | ; 104 | param default 0 : StorageMaxDischargeRate := 105 | ; 106 | param default 0 : TradeRoute := 107 | ; 108 | param default 1 : CapacityFactor := 109 | ; 110 | param default 1 : DepreciationMethod := 111 | ; 112 | param default 7 : DaysInDayType := 113 | ; 114 | param default 0 : Conversionld := 115 | ; 116 | param default 0 : Conversionls := 117 | ; 118 | set SEASON := 119 | ; 120 | set DAILYTIMEBRACKET := 121 | ; 122 | param default 1 : AvailabilityFactor := 123 | ; 124 | param default 0 : SpecifiedAnnualDemand := 125 | BB electricity 2016 2.1101 126 | ; 127 | set TIMESLICE := 128 | x 129 | ; 130 | param default 0 : CapitalCost := 131 | ; 132 | set REGION := 133 | BB 134 | ; 135 | param default 1 : ReserveMargin := 136 | ; 137 | param default 0 : TotalAnnualMinCapacityInvestment := 138 | ; 139 | param default 99999 : TotalTechnologyModelPeriodActivityUpperLimit := 140 | ; 141 | param default 0 : REMinProductionTarget := 142 | ; 143 | param default 0 : CapacityOfOneTechnologyUnit := 144 | ; 145 | param default 0 : EmissionsPenalty := 146 | ; 147 | param default 0 : TechnologyFromStorage := 148 | ; 149 | -------------------------------------------------------------------------------- /tests/test_gnu_mathprog.py: -------------------------------------------------------------------------------- 1 | """Runs tests against long and short OSeMOSYS implementations and various solvers 2 | 3 | Checks:: 4 | 5 | - OSeMOSYS Short formulation 6 | - OSeMOSYS Long formulation 7 | - OSeMOSYS Fast formulation 8 | 9 | and solvers:: 10 | 11 | - GLPSOL 12 | - CBC [awaiting release of otoole v0.7] 13 | 14 | """ 15 | import os 16 | from pytest import fixture 17 | import pytest 18 | import pandas as pd 19 | from typing import Tuple, Any 20 | 21 | import tempfile 22 | 23 | from subprocess import run 24 | 25 | 26 | @fixture() 27 | def get_folder(): 28 | return os.path.dirname(os.path.abspath(__file__)) 29 | 30 | 31 | @fixture( 32 | scope="function", 33 | params=[("glpk", "long"), ("glpk", "short"), (("glpk", "fast"))], 34 | ids=["glpk-long", "glpk-short", "glpk-fast"], 35 | ) 36 | def run_model(request, tmpdir, get_folder) -> Tuple[Any, str]: 37 | """This parameterised pytest fixture is used to run the different OSeMOSYS formulations 38 | 39 | The short, long and fast versions of the code are run for GLPK 40 | 41 | With the addition of a post-processing script for CBC, it will be possible to include 42 | CBC in the same tests. 43 | 44 | """ 45 | 46 | if request.param[1] == "long": 47 | model_file = os.path.join(get_folder, "../src/osemosys.txt") 48 | elif request.param[1] == "short": 49 | model_file = os.path.join(get_folder, "../src/osemosys_short.txt") 50 | elif request.param[1] == "fast": 51 | model_file = os.path.join(get_folder, "../src/osemosys_fast.txt") 52 | 53 | results_folder = str(tmpdir.mkdir("results")) 54 | 55 | os.chdir(os.path.join(results_folder, "..")) 56 | 57 | data_file = os.path.join(get_folder, "utopia.txt") 58 | 59 | if request.param[0] == "glpk": 60 | 61 | arguments = ["glpsol", "-m", model_file, "-d", data_file] 62 | output = run(arguments, capture_output=True, text=True) 63 | return output, os.path.join(results_folder) 64 | 65 | elif request.param[0] == "cbc": 66 | 67 | lp_file = tempfile.NamedTemporaryFile(suffix=".lp").name 68 | 69 | arguments = [ 70 | "glpsol", 71 | "-m", 72 | model_file, 73 | "-d", 74 | data_file, 75 | "--wlp", 76 | lp_file, 77 | "--check", 78 | ] 79 | run(arguments) 80 | 81 | cbc_results_file = os.path.join(results_folder, "results.txt") 82 | 83 | arguments = ["cbc", lp_file, "-sec", "15", "solve", "-solu", cbc_results_file] 84 | output = run(arguments) 85 | # Add post-processing for CBC results here 86 | return output, cbc_results_file 87 | 88 | 89 | class TestOsemosysOutputs: 90 | def test_mathprog_run_normal(self, run_model): 91 | output, results_folder = run_model 92 | try: 93 | assert "OPTIMAL LP SOLUTION FOUND" in output.stdout 94 | except AssertionError as ex: 95 | raise AssertionError(str(ex), output) 96 | assert "obj = 2.944686269e+04" in output.stdout 97 | 98 | def test_results_exist(self, run_model): 99 | """OSeMOSYS short and long versions should produce 29 CSV files 100 | 101 | These are placed into the folder specified by the ``ResultPath`` 102 | parameter 103 | """ 104 | _, results_folder = run_model 105 | print(results_folder) 106 | assert os.path.exists(str(results_folder)) 107 | print(os.listdir(str(results_folder))) 108 | assert len(os.listdir(str(results_folder))) == 30 109 | 110 | def test_results_read_accumulated_new_capacity(self, run_model): 111 | """ 112 | """ 113 | _, results_folder = run_model 114 | result_file = os.path.join(str(results_folder), "AccumulatedNewCapacity.csv") 115 | actual = pd.read_csv(result_file) 116 | actual = actual[actual.YEAR == 2010].reset_index(drop=True) 117 | 118 | expected = pd.DataFrame( 119 | columns=["REGION", "TECHNOLOGY", "YEAR", "VALUE"], 120 | data=[ 121 | ["UTOPIA", "E01", 2010, 2.279801], 122 | ["UTOPIA", "E31", 2010, 0.110000], 123 | ["UTOPIA", "IMPDSL1", 2010, 77.597496], 124 | ["UTOPIA", "IMPHCO1", 2010, 191.565506], 125 | ["UTOPIA", "RHE", 2010, 46.867723], 126 | ["UTOPIA", "RHO", 2010, 46.135248], 127 | ["UTOPIA", "RL1", 2010, 18.901890], 128 | ["UTOPIA", "SRE", 2010, 0.100000], 129 | ["UTOPIA", "TXD", 2010, 11.690000], 130 | ["UTOPIA", "RIV", 2010, 5.587785], 131 | ], 132 | ) 133 | 134 | pd.testing.assert_frame_equal(actual, expected) 135 | 136 | def test_results_read_new_capacity(self, run_model): 137 | """ 138 | """ 139 | _, results_folder = run_model 140 | 141 | result_file = os.path.join(str(results_folder), "NewCapacity.csv") 142 | actual = pd.read_csv(result_file) 143 | actual = ( 144 | actual.groupby(by=["REGION", "TECHNOLOGY"], as_index=False) 145 | .sum() 146 | .drop(columns="YEAR") 147 | ) 148 | 149 | expected = pd.DataFrame( 150 | columns=["REGION", "TECHNOLOGY", "VALUE"], 151 | data=[ 152 | ["UTOPIA", "E01", 2.279801], 153 | ["UTOPIA", "E31", 0.110000], 154 | ["UTOPIA", "IMPDSL1", 1717.805326], 155 | ["UTOPIA", "IMPHCO1", 1451.847478], 156 | ["UTOPIA", "RHE", 46.867723], 157 | ["UTOPIA", "RHO", 46.135248], 158 | ["UTOPIA", "RIV", 97.919280], 159 | ["UTOPIA", "RL1", 34.303990], 160 | ["UTOPIA", "SRE", 0.100000], 161 | ["UTOPIA", "TXD", 17.790000], 162 | ], 163 | ) 164 | 165 | pd.testing.assert_frame_equal(actual, expected) 166 | 167 | def test_results_read_investment_cost(self, run_model): 168 | """ 169 | """ 170 | _, results_folder = run_model 171 | 172 | result_file = os.path.join(str(results_folder), "CapitalInvestment.csv") 173 | df = pd.read_csv(result_file) 174 | 175 | actual = ( 176 | df.groupby(by=["REGION", "TECHNOLOGY"], as_index=False) 177 | .sum() 178 | .drop(columns="YEAR") 179 | ) 180 | 181 | expected = pd.DataFrame( 182 | columns=["REGION", "TECHNOLOGY", "VALUE"], 183 | data=[ 184 | ["UTOPIA", "E01", 2845.536735], 185 | ["UTOPIA", "E31", 330.000000], 186 | ["UTOPIA", "RHE", 4218.095050], 187 | ["UTOPIA", "RHO", 4613.524752], 188 | ["UTOPIA", "SRE", 10.000000], 189 | ["UTOPIA", "TXD", 18572.760000], 190 | ], 191 | ) 192 | 193 | pd.testing.assert_frame_equal(actual, expected) 194 | 195 | def test_results_read_varom(self, run_model): 196 | """ 197 | """ 198 | _, results_folder = run_model 199 | 200 | result_file = os.path.join( 201 | str(results_folder), "AnnualVariableOperatingCost.csv" 202 | ) 203 | df = pd.read_csv(result_file) 204 | 205 | actual = ( 206 | df.groupby(by=["REGION", "TECHNOLOGY"], as_index=False) 207 | .sum() 208 | .drop(columns="YEAR") 209 | ) 210 | 211 | expected = pd.DataFrame( 212 | columns=["REGION", "TECHNOLOGY", "VALUE"], 213 | data=[ 214 | ["UTOPIA", "E01", 90.471708], 215 | ["UTOPIA", "E31", 0.000310], 216 | ["UTOPIA", "E51", 0.000563], 217 | ["UTOPIA", "IMPDSL1", 10618.931276], 218 | ["UTOPIA", "IMPHCO1", 1884.827246], 219 | ["UTOPIA", "RHE", 0.002048], 220 | ["UTOPIA", "RHO", 0.006237], 221 | ["UTOPIA", "RIV", 0.000968], 222 | ["UTOPIA", "RL1", 0.001841], 223 | ["UTOPIA", "TXD", 0.001709], 224 | ], 225 | ) 226 | 227 | pd.testing.assert_frame_equal( 228 | actual, expected, check_exact=False, rtol=1e-3 229 | ) 230 | 231 | def test_results_emissions(self, run_model): 232 | """ 233 | """ 234 | _, results_folder = run_model 235 | 236 | result_file = os.path.join(str(results_folder), "AnnualEmissions.csv") 237 | df = pd.read_csv(result_file) 238 | 239 | actual = ( 240 | df.groupby(by=["REGION", "EMISSION"], as_index=False) 241 | .sum() 242 | .drop(columns="YEAR") 243 | ) 244 | 245 | expected = pd.DataFrame( 246 | columns=["REGION", "EMISSION", "VALUE"], 247 | data=[["UTOPIA", "CO2", 163.516797], ["UTOPIA", "NOX", 170.895000]], 248 | ) 249 | 250 | pd.testing.assert_frame_equal(actual, expected) 251 | 252 | def test_total_tech_model_period_activity(self, run_model): 253 | """ 254 | """ 255 | 256 | _, results_folder = run_model 257 | 258 | result_file = os.path.join(str(results_folder), "TotalTechnologyModelPeriodActivity.csv") 259 | actual = pd.read_csv(result_file) 260 | 261 | columns = ["REGION", "TECHNOLOGY", "VALUE"] 262 | data = [ 263 | ["UTOPIA", "E01", 301.572359341649], 264 | ["UTOPIA", "E31", 30.98719154944], 265 | ["UTOPIA", "E51", 56.29176], 266 | ["UTOPIA", "IMPDSL1", 1061.89312756574], 267 | ["UTOPIA", "IMPHCO1", 942.413622942653], 268 | ["UTOPIA", "RHE", 204.751310891089], 269 | ["UTOPIA", "RHO", 623.698689108911], 270 | ["UTOPIA", "RL1", 184.1], 271 | ["UTOPIA", "TXD", 170.895], 272 | ["UTOPIA", "RIV", 96.8349735920001], 273 | ] 274 | 275 | expected = pd.DataFrame( 276 | columns=columns, 277 | data=data, 278 | ) 279 | 280 | pd.testing.assert_frame_equal(actual, expected) 281 | 282 | @pytest.mark.skip(reason="no way of currently testing this") 283 | def test_results_rate_of_production(self, run_model): 284 | """REGION,TIMESLICE,TECHNOLOGY,FUEL,YEAR,VALUE 285 | """ 286 | _, results_folder = run_model 287 | 288 | result_file = os.path.join(str(results_folder), "RateOfProductionByTechnology.csv") 289 | df = pd.read_csv(result_file) 290 | 291 | actual = ( 292 | df.groupby(by=["REGION", "TIMESLICE", "TECHNOLOGY", "FUEL"], as_index=False) 293 | .sum() 294 | .drop(columns="YEAR") 295 | ) 296 | 297 | expected = pd.DataFrame( 298 | columns=["REGION", "TIMESLICE", "TECHNOLOGY", "FUEL", "VALUE"], 299 | data=[["UTOPIA", "WS", "TECH", "FUEL", 163.516797]], 300 | ) 301 | 302 | pd.testing.assert_frame_equal(actual, expected) 303 | -------------------------------------------------------------------------------- /tests/utopia.txt: -------------------------------------------------------------------------------- 1 | # 2 | # To run the model, copy and paste the following line into the command prompt, after replacing ...FILEPATH... with your folder structure. 3 | # 4 | # C:\...FILEPATH...\glpsol -m C:\...FILEPATH...\OSeMOSYS_2016_08_01.txt -d C:\...FILEPATH...\UTOPIA_2016_08_01.txt -o C:\...FILEPATH...\UTOPIA-Results.txt 5 | # 6 | # Alternatively, install GUSEK (http://gusek.sourceforge.net/gusek.html) and run the model within this integrated development environment (IDE). 7 | # To do so, open the .dat file within GUSEK and select "Use External .dat file" from the Options menu. Then go to the .mod file and select the "Go" icon or press F5. 8 | # 9 | # Based on UTOPIA version 5: BASE - Utopia Base Model 10 | # The following are DEFAULT units, but they can be changed by users to their comfort. When doing so, users are advised to check the consistency of their choices though. 11 | # Energy and demands in PJ/a 12 | # Power plants in GW 13 | # Investment and Fixed O&M Costs: Power plant: Million $ / GW (//$/kW) 14 | # Other plant costs: Million $/PJ/a 15 | # Variable O&M (& Import) Costs: Million $ / PJ (//$/GJ) 16 | # 17 | #**************************************** 18 | param AnnualExogenousEmission default 0 := ; 19 | param AnnualEmissionLimit default -1 := ; 20 | param ModelPeriodExogenousEmission default 0 := ; 21 | param ModelPeriodEmissionLimit default -1 := ; 22 | #**************************************** 23 | param ResultsPath := "results"; 24 | #**************************************** 25 | set EMISSION := CO2 NOX ; 26 | set TECHNOLOGY := E01 E21 E31 E51 E70 IMPDSL1 IMPGSL1 IMPHCO1 IMPOIL1 IMPURN1 RHE RHO RL1 SRE TXD TXE TXG RIV RHu RLu TXu ; 27 | # Summary of Set: TECHNOLOGY 28 | # E01 = Coal fuelled power plant 29 | # E21 = Nuclear power plant 30 | # E31 = Hydro power plant 31 | # E51 = Consumes and generates electricity 32 | # E70 = Diesel fuelled power plant 33 | # IMPDSL1 = Diesel supply 34 | # IMPGSL1 = Gasoline supply 35 | # IMPHCO1 = Coal supply 36 | # IMPOIL1 = Crude oil supply 37 | # IMPURN1 = Uranium supply 38 | # RHE = Residential electricity heating consuming electricity 39 | # RL1 = Residential lighting consuming electricity 40 | # SRE = Refinery 41 | # TXD = Transport in passenger km consuming diesel 42 | # TXE = Transport in passenger km consuming electricity 43 | # TXG = Transport in passenger km consuming gasoline 44 | # RIV = River to supply hydro power plants 45 | # RHu = Unmet heating demand 46 | # RLu = Unmet lighting demand 47 | # TXu = Unmet transport demand 48 | # 49 | set FUEL := DSL ELC GSL HCO HYD OIL URN RH RL TX ; 50 | # Summary of Set: FUEL 51 | # DSL = Diesel 52 | # ELC = Electricity 53 | # GSL = Gasoline 54 | # HCO = Coal 55 | # HYD = Hydro 56 | # OIL = Oil 57 | # URN = Uranium 58 | # RH = Heating demand 59 | # RL = Lighting demand 60 | # TX = Transport demand 61 | # 62 | set YEAR := 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 ; 63 | set TIMESLICE := ID IN SD SN WD WN ; 64 | set MODE_OF_OPERATION := 1 2 ; 65 | set REGION := UTOPIA ; 66 | # 67 | # SEASON (Use consecutive numbers only, i.e, 1,2,3,4!, e.g., 1 = winter, 2 = spring, 3 = summer, 4 = autumn. The seasons with the higher number follow those with lower numbers.) 68 | # Note: in the UTOPIA case, energy is not stored from one season to another. Rather, the available capacity is assumed to be infinite. Therefore, it can be assumed that the intermediate season is between winter and summer without any consequences for the model results (and not both, between winter and summer, and between summer and winter). 69 | set SEASON := 1 2 3 ; 70 | # 71 | # DAYTYPE (Use consecutive numbers only, i.e, 1,2,3,4!, e.g., 1 = weekdays, 2 = weekends. The weekdays with the higher numbers follow those with lower numbers.) 72 | set DAYTYPE := 1 ; 73 | # 74 | # DAILYTIMEBRACKET (Use consecutive numbers only, i.e, 1,2,3,4!, e.g., 1 = first hour of day, 2 = 2nd hour of day, etc. The time brackets with the higher numbers follow those with lower numbers) 75 | set DAILYTIMEBRACKET := 1 2 ; 76 | # 77 | set STORAGE := DAM ; 78 | # 79 | param DiscountRate default 0.05 :=; 80 | param DiscountRateStorage default 0.05 :=; 81 | # 82 | # DepreciationMethod; equal to 1 for Sinking Fund and 2 for Straight Line Depreciation 83 | param DepreciationMethod default 1 :=; 84 | 85 | # 86 | # YearSplit{l in TIMESLICE, y in YEAR} Units: Fraction of 8760 hours 87 | # The fraction of the year in each time slice. 88 | param YearSplit : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 89 | ID 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 90 | IN 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 91 | SD 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 92 | SN 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 0.0833 93 | WD 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 0.3333 94 | WN 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 0.1667 ; 95 | 96 | # 97 | # AccumulatedAnnualDemand{r in REGION, f in FUEL, y in YEAR} Units: PJ 98 | # This type of demand can be satisfied at any time of the year, as long as the total is met. 99 | param AccumulatedAnnualDemand default 0 := 100 | [UTOPIA,*,*]: 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 101 | TX 5.2 5.46 5.72 5.98 6.24 6.5 6.76 7.02 7.28 7.54 7.8 8.189 8.578 8.967 9.356 9.745 10.134 10.523 10.912 11.301 11.69 ; 102 | 103 | # 104 | # SpecifiedAnnualDemand{r in REGION, f in FUEL, y in YEAR} Units: PJ 105 | # The annual requirement for each output fuel. 106 | param SpecifiedAnnualDemand default 0 := 107 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 108 | RH 25.2 26.46 27.72 28.98 30.24 31.5 32.76 34.02 35.28 36.54 37.8 39.69 41.58 43.47 45.36 47.25 49.14 51.03 52.92 54.81 56.7 109 | RL 5.6 5.88 6.16 6.44 6.72 7 7.28 7.56 7.84 8.12 8.4 8.82 9.24 9.66 10.08 10.5 10.92 11.34 11.76 12.18 12.6 ; 110 | 111 | # 112 | # SpecifiedDemandProfile{r in REGION, l in TIMESLICE, f in FUEL, y in YEAR} Units: Fraction 113 | # Indicates the proportion of energy demand required in each time slice. For each year the sum must be equal to 1. 114 | param SpecifiedDemandProfile default 0 := 115 | [UTOPIA,RH,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 116 | ID 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 0.12 117 | IN 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 118 | SD 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 119 | SN 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 120 | WD 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 0.5467 121 | WN 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 0.2733 122 | 123 | [UTOPIA,RL,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 124 | ID 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 125 | IN 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 126 | SD 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 0.15 127 | SN 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 0.05 128 | WD 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 129 | WN 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 ; 130 | 131 | # 132 | # CapacityToActivityUnit{r in REGION, t in TECHNOLOGY}; Units: PJ/GW-YR 133 | # Thus here we use a factor of 31.536, which is the level of energy production in PJ produced from 1 GW operating for 1 year (1GW * 8760 * 3600 / 10^6) 134 | param CapacityToActivityUnit default 1 : E01 E21 E31 E51 E70 := 135 | UTOPIA 31.536 31.536 31.536 31.536 31.536 ; 136 | 137 | # InputActivityRatio{r in REGION, t in TECHNOLOGY, f in FUEL, m in MODE_OF_OPERATION, y in YEAR} Units: Ratio 138 | # The input (use) of fuel per unit of activity for each technology. 139 | param InputActivityRatio default 0 := 140 | [UTOPIA,*,DSL,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 141 | E70 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 3.4 142 | RHO 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 1.428571429 143 | TXD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 144 | 145 | [UTOPIA,*,ELC,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 146 | RHE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 147 | RL1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 148 | TXE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 149 | 150 | [UTOPIA,*,GSL,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 151 | TXG 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 152 | 153 | [UTOPIA,*,HCO,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 154 | E01 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 155 | 156 | [UTOPIA,*,HYD,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 157 | E31 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 3.125 158 | 159 | [UTOPIA,*,OIL,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 160 | SRE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 161 | 162 | [UTOPIA,*,URN,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 163 | E21 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 164 | 165 | [UTOPIA,*,ELC,2,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 166 | E51 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 1.3889 ; 167 | 168 | # 169 | # OutputActivityRatio{r in Region, t in Technology, f in Fuel, m in ModeOfOperation, y in Year} Units: Ratio 170 | # Ratio of output to activity. 171 | # Should be 1 for power plants/electricity, 1 for supply technologies and their respective fuels and zero for rest. 172 | param OutputActivityRatio default 0 := 173 | [UTOPIA,*,RH,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 174 | RHE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 175 | RHO 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 176 | RHu 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 177 | 178 | [UTOPIA,*,RL,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 179 | RL1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 180 | RLu 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 181 | 182 | [UTOPIA,*,TX,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 183 | TXD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 184 | TXE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 185 | TXG 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 186 | TXu 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 187 | 188 | [UTOPIA,*,DSL,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 189 | SRE 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 0.7 190 | IMPDSL1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 191 | 192 | [UTOPIA,*,ELC,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 193 | E01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 194 | E21 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 195 | E31 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 196 | E51 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 197 | E70 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 198 | 199 | [UTOPIA,*,GSL,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 200 | SRE 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 201 | IMPGSL1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 202 | 203 | [UTOPIA,*,HCO,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 204 | IMPHCO1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 205 | 206 | [UTOPIA,*,HYD,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 207 | RIV 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 208 | 209 | [UTOPIA,*,OIL,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 210 | IMPOIL1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 211 | 212 | [UTOPIA,*,URN,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 213 | IMPURN1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ; 214 | 215 | # 216 | # FixedCost{r in Region, t in Technology, y in Year} Units: M€/GW of Capacity 217 | # The annual cost per unit of capacity of a technology. 218 | param FixedCost default 0 := 219 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 220 | E01 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 221 | E21 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 500 222 | E31 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 75 223 | E51 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 224 | E70 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 225 | RHO 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 226 | RL1 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 9.46 227 | TXD 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 52 228 | TXE 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 229 | TXG 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 ; 230 | 231 | # 232 | # CapitalCost{r in Region, t in Technology, y in Year} Units: M€/GW Capacity 233 | # Total capital cost (including interest paid during construction)per unit of capacity for new capacity additions 234 | param CapitalCost default 0 := 235 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 236 | E01 1400 1390 1380 1370 1360 1350 1340 1330 1320 1310 1300 1290 1280 1270 1260 1250 1240 1230 1220 1210 1200 237 | E21 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 5000 238 | E31 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 3000 239 | E51 900 900 900 900 900 900 900 900 900 900 900 900 900 900 900 900 900 900 900 900 900 240 | E70 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 1000 241 | IMPDSL1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 242 | IMPGSL1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 243 | IMPHCO1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 244 | IMPOIL1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 245 | IMPURN1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 246 | RHE 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 247 | RHO 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 248 | RL1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 249 | SRE 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 250 | TXD 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 251 | TXE 2000 1975 1950 1925 1900 1875 1850 1825 1800 1775 1750 1725 1700 1675 1650 1625 1600 1575 1550 1525 1500 252 | TXG 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 1044 253 | RIV 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 254 | RHu 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255 | RLu 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 256 | TXu 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ; 257 | 258 | # 259 | # VariableCost{r in Region, t in Technology, m in ModeOfOperation, y in Year} Units: Million €/PJ = €/GJ 260 | # Cost per unit of activity of the technology 261 | # This variable records both the nonfuel O&M costs of processes and fuel costs of each fuel supplied to those processes. 262 | param VariableCost default 0.00001 := 263 | [UTOPIA,*,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 264 | E01 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 265 | E21 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 1.5 266 | E70 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 267 | SRE 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 268 | IMPDSL1 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 269 | IMPGSL1 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 270 | IMPHCO1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 271 | IMPOIL1 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 272 | IMPURN1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 273 | RHu 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 274 | RLu 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 275 | TXu 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 99999 ; 276 | 277 | # 278 | # ResidualCapacity{r in Region, t in Technology, y in Year} Units: GW 279 | # The capacity left over from periods prior to the modeling period. 280 | param ResidualCapacity default 0 := 281 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 282 | E01 0.5 0.5 0.5 0.4 0.4 0.4 0.4 0.4 0.4 0.3 0.32 0.3 0.3 0.3 0.3 0.2 0.2 0.2 0.2 0.2 0.15 283 | E21 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 284 | E31 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 285 | E51 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 286 | E70 0.3 0.3 0.29 0.29 0.28 0.28 0.27 0.27 0.26 0.26 0.25 0.26 0.26 0.27 0.27 0.28 0.28 0.29 0.29 0.3 0.2 287 | RHE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 288 | RHO 25 23.8 22.5 21.3 20 18.8 17.5 16.3 15 13.8 12.5 11.3 10 8.8 7.5 6.3 5 3.8 2.5 1.3 0 289 | RL1 5.6 5 4.5 3.9 3.4 2.8 2.2 1.7 1.1 0.6 0 0 0 0 0 0 0 0 0 0 0 290 | TXD 0.6 0.6 0.5 0.5 0.4 0.4 0.4 0.3 0.3 0.2 0.2 0.2 0.2 0.1 0.1 0.1 0.1 0.1 0 0 0 ; 291 | 292 | 293 | # 294 | # AvailabilityFactor{r in Region, t in Technology, y in Year} Units: Fraction of Hours in Year 295 | # Maximum time technology may run for the whole year. Often used to simulate planned outages. OSeMOSYS will choose when to run or not run. 296 | param AvailabilityFactor default 1 := 297 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 298 | RHE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 299 | RHO 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 300 | RL1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 301 | TXD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 302 | TXE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 303 | TXG 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ; 304 | 305 | # 306 | # CapacityFactor{r in Region, t in Technology, l in TIMESLICE, y in Year} Units: Fraction of Hours in Year 307 | # Indicates the maximum time technology may run in a given time slice. 308 | param CapacityFactor default 1 := 309 | [UTOPIA,E01,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 310 | ID 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 311 | IN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 312 | SD 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 313 | SN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 314 | WD 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 315 | WN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 316 | 317 | [UTOPIA,E21,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 318 | ID 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 319 | IN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 320 | SD 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 321 | SN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 322 | WD 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 323 | WN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 324 | 325 | [UTOPIA,E31,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 326 | ID 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 327 | IN 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 328 | SD 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 329 | SN 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 330 | WD 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 331 | WN 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 0.27 332 | 333 | [UTOPIA,E51,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 334 | ID 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 335 | IN 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 336 | SD 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 337 | SN 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 338 | WD 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 339 | WN 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 0.17 340 | 341 | [UTOPIA,E70,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 342 | ID 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 343 | IN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 344 | SD 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 345 | SN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 346 | WD 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 347 | WN 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 ; 348 | 349 | # 350 | # EmissionActivityRatio{r in Region, t in Technology, e in Emission, m in ModeOfOperation, y in Year} Units: Tonnes/PJ Output 351 | # Emissions factor per unit of activity. 352 | param EmissionActivityRatio default 0 := 353 | [UTOPIA,*,CO2,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 354 | IMPDSL1 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 355 | IMPGSL1 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 356 | IMPHCO1 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 0.089 357 | IMPOIL1 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 0.075 358 | 359 | [UTOPIA,*,NOX,1,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 360 | TXD 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 361 | TXG 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ; 362 | 363 | # 364 | # EmissionsPenalty{r in Region, e in Emission, y in Year} Units: Million $/Tonne of Pollutant 365 | # Externality cost per unit of emission 366 | param EmissionsPenalty := 367 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 368 | CO2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 369 | NOX 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ; 370 | 371 | # 372 | # ReserveMarginTagFuel{r in Region,f in Fuel, y in Year} Units: 1=yes, 0=no 373 | # Indicates if the output fuel has a reserve margin associated with it 374 | param ReserveMarginTagFuel default 0 := 375 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 376 | ELC 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ; 377 | 378 | # 379 | # ReserveMargin{r in Region, y in Year} Units: Ratio (Installed/Peak) 380 | # The reserve (installed) capacity required relative to the peak demand for the specified fuel. 381 | param ReserveMargin : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 382 | UTOPIA 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 1.18 ; 383 | 384 | # 385 | # ReserveMarginTagTechnology{r in Region,t in Technology, y in Year} Units: fraction 386 | # Amount the technology contributes to the reserve margin 1=100% 0.2=20%. 387 | param ReserveMarginTagTechnology default 0 := 388 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 389 | E01 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 390 | E21 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 391 | E31 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 392 | E51 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 393 | E70 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ; 394 | 395 | # 396 | # param OperationalLife{r in Region, t in Technology}; Units: years 397 | # Operational lifespan of a process in years. 398 | param OperationalLife default 1 : E01 E21 E31 E51 E70 RHE RHO RL1 SRE TXD TXE TXG := 399 | UTOPIA 40 40 100 100 40 30 30 10 50 15 15 15 ; 400 | 401 | # 402 | # TotalAnnualMaxCapacity{r in Region, t in Technology, y in Year} Units: GW 403 | # Maximum total (residual and new) capacity each year. 404 | param TotalAnnualMaxCapacity default -1 := 405 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 406 | E31 0.1301 0.1401 0.1401 0.1501 0.1501 0.1501 0.1601 0.1601 0.1601 0.1601 0.1701 0.201 0.201 0.201 0.201 0.201 0.201 0.201 0.201 0.201 0.2101 407 | E51 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 408 | RHE 0 0 0 0 0 0 0 0 0 0 999999999 999999999 999999999 999999999 999999999 999999999 999999999 999999999 999999999 999999999 999999999 409 | SRE 0.1001 0.1001 0.1001 0.1001 0.1001 0.1001 0.1001 0.1001 0.1001 0.1001 999999999 999999999 999999999 999999999 999999999 999999999 999999999 999999999 999999999 999999999 999999999 410 | TXE 0 0.4 0.8 1.2 1.6 2 2.4 2.8 3.2 3.6 4 4.6 5.2 5.8 6.4 7 7.6 8.2 8.8 9.4 10 ; 411 | 412 | # 413 | # TotalAnnualMinCapacity{r in Region, t in Technology, y in Year} Units: GW 414 | # Minimum total (residual and new) capacity each year. 415 | param TotalAnnualMinCapacity default 0 := 416 | [UTOPIA,*,*] : 1990 1991 1992 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 := 417 | E31 0.13 0.14 0.14 0.15 0.15 0.15 0.16 0.16 0.16 0.16 0.17 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.2 0.21 418 | SRE 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0 0 0 0 0 0 0 0 0 0 0 ; 419 | 420 | # 421 | # TotalAnnualMaxCapacityInvestment{r in Region, t in Technology, y in Year} Units: GW 422 | # Maximum new capacity each year. Use this to stop OSeMOSYS investing in existing technologies. 423 | param TotalAnnualMaxCapacityInvestment default -1 := ; 424 | # 425 | # TotalAnnualMinCapacityInvestment{r in Region, t in Technology, y in Year} Units: GW 426 | # Minimum new capacity each year. 427 | param TotalAnnualMinCapacityInvestment default 0 := ; 428 | # 429 | # param TotalTechnologyAnnualActivityUpperLimit{r in Region, t in Technology, y in Year} Units: PJ 430 | # Maximum amount of activity that a technology can perform each year. 431 | param TotalTechnologyAnnualActivityUpperLimit default -1 := ; 432 | # 433 | # TotalTechnologyAnnualActivityLowerLimit{r in Region, t in Technology, y in Year} Units: PJ 434 | # Minimum activity that a technology can perform each year. 435 | param TotalTechnologyAnnualActivityLowerLimit default 0 := ; 436 | # 437 | # TotalTechnologyModelPeriodActivityUpperLimit{r in Region, t in Technology} Units: PJ 438 | # Maximum level of activity by a technology over the whole model period. 439 | param TotalTechnologyModelPeriodActivityUpperLimit default -1 := 440 | # THIS IS NOT ENFORCED IN ORIGINAL CODE!!! UTOPIA E51 0 # set E51 to zero to force model not to use it. 441 | ; 442 | # 443 | # TotalTechnologyModelPeriodActivityLowerLimit{r in Region, t in Technology} Units: PJ 444 | # Minimum level of activity by a technology over the whole model period. 445 | param TotalTechnologyModelPeriodActivityLowerLimit default 0 := ; 446 | # 447 | # RETagTechnology{r in Region, t in Technology, y in Year} Units: 1=yes, 0=no 448 | # Flags technologies that are allowed to contribute to the renewable capacity of the system. 449 | param RETagTechnology default 0 := ; 450 | # 451 | # RETagFuel{r in Region,f in Fuel, y in Year} Units: 1=yes, 0=no 452 | # The fuels for which there is a renewable target. 453 | param RETagFuel default 0 := ; 454 | # 455 | # REMinProductionTarget{r in Region, y in Year} Units: Fraction 456 | # What fraction of the fuels (tagged in the RETagFuel parameter) must come from the Renewable technologies (tagged in the RETagTechnology parameter) 457 | param REMinProductionTarget default 0 := ; 458 | # 459 | # Conversionls{l in TIMESLICE, ls in SEASON} 460 | # Set equal to 1 to assign a particular time slice to a season. Set equal to 0 in order not to assign a particular time slice to a season. 461 | param Conversionls default 0 := 462 | [*,*]: 1 2 3 := 463 | ID 0 1 0 464 | IN 0 1 0 465 | SD 0 0 1 466 | SN 0 0 1 467 | WD 1 0 0 468 | WN 1 0 0 ; 469 | # Conversionld{l in TIMESLICE, ld in DAYTYPE} 470 | # Set equal to 1 to assign a particular time slice to a day type. Set equal to 0 in order not to assign a particular time slice to a day type. 471 | param Conversionld default 0 := 472 | [*,*]: 1 := 473 | ID 1 474 | IN 1 475 | SD 1 476 | SN 1 477 | WD 1 478 | WN 1 ; 479 | # Conversionlh{l in TIMESLICE, lh in DAILYTIMEBRACKET} 480 | # Set equal to 1 to assign a particular time slice to a daily time bracket. Set equal to 0 in order not to assign a particular time slice to a daily time bracket. 481 | param Conversionlh default 0 := 482 | [*,*]: 1 2 := 483 | ID 1 0 484 | IN 0 1 485 | SD 1 0 486 | SN 0 1 487 | WD 1 0 488 | WN 0 1 ; 489 | # 490 | # DaySplit{lh in DAILYTIMEBRACKET, y in YEAR}; 491 | # The length of one time bracket in one specific day as a fraction of the year, e.g., when distinguishing between days and night: 12h/(24h*365d) 492 | param DaySplit default 0.00137 :=; 493 | # 494 | # TechnologyToStorage{r in REGION, t in TECHNOLOGY, s in STORAGE, m in MODE_OF_OPERATION} 495 | param TechnologyToStorage default 0 := 496 | [UTOPIA,*,*,2] : DAM := 497 | E51 1 ; 498 | # 499 | # TechnologyFromStorage{r in REGION, t in TECHNOLOGY, s in STORAGE, m in MODE_OF_OPERATION} 500 | param TechnologyFromStorage default 0 := 501 | [UTOPIA,*,*,1] : DAM := 502 | E51 1 ; 503 | # 504 | # StorageLevelStart{r in REGION, s in STORAGE} 505 | # At beginning of first year. Attention: if zero, OSeMOSYS will use the first time slices in the entire first day type in the entire first season to fill the storage. 506 | # To avoid OSeMOSYS taking a whole part of a season to fill up the storage, and to avoid defining smaller seasons, set it to zero, run the model, and check the StorageLevelYearStart 507 | # variable of the following year and use a similar value for StorageLevelStart. Alternatively, model a few years before the first year of your interest. 508 | param StorageLevelStart default 999:= 509 | ; 510 | # DaysInDayType{ls in SEASON, ld in DAYTYPE, y in YEAR}; 511 | # Number of days for each day type within a week, i.e., out of 7 512 | param DaysInDayType default 7:= 513 | ; 514 | # StorageMaxChargeRate{r in REGION, s in STORAGE}; Unit: GW 515 | param StorageMaxChargeRate default 99:= 516 | ; 517 | # StorageMaxDischargeRate{r in REGION, s in STORAGE}; Unit: GW 518 | param StorageMaxDischargeRate default 99:= 519 | ; 520 | # MinStorageCharge{r in REGION, s in STORAGE, y in YEAR}; Unit: fraction of MaxStorageCharge, i.e., between 0.00 and 0.99 521 | param MinStorageCharge default 0. := 522 | ; 523 | # OperationalLifeStorage{r in REGION, s in STORAGE, y in YEAR}; Unit: years 524 | param OperationalLifeStorage default 99 := 525 | ; 526 | # CapitalCostStorage{r in REGION, s in STORAGE, y in YEAR}; Unit: USD/GWa 527 | param CapitalCostStorage default 0 := 528 | ; 529 | # ResidualStorageCapacity{r in REGION, s in STORAGE, y in YEAR}; 530 | # Storage capacity which is available from before the modelling period, or which is know to become available in a specific year. Unit: GWa 531 | param ResidualStorageCapacity default 999 := 532 | ; 533 | # CapacityOfOneTechnologyUnit{r in REGION, t in TECHNOLOGY, y in YEAR}; Unit: GW 534 | # Defines the minimum size of one capacity addition. If set to zero, no mixed integer linear programming (MILP) is used and computational time will decrease. 535 | param CapacityOfOneTechnologyUnit default 0 := ; 536 | # 537 | # TradeRoute{r in REGION, rr in REGION, f in FUEL, y in YEAR} 538 | # Defines which region r is linked with which region rr in order to enable or disable trading of a specific fuel. Unit: Fraction, either 1 or 0 539 | # 1 defines a trade link and 0 ensuring that no trade occurs. Values inbetween are not allowed. If r is linked to rr, rr has also to be linked with r. 540 | # I.e., for one specific year and fuel, this parameter is entered as a symmetric matrix (with a diagonal of zeros). 541 | param TradeRoute default 0 := 542 | ; 543 | end; 544 | --------------------------------------------------------------------------------