update india genx - #7
Open
aneeshamanocha wants to merge 103 commits into
Open
Conversation
Instead of true/false according to new HiGHS+JuMP interface rule
This PR modifies the generate_model.jl file by changing the following line of code: co2_cap!(EP, inputs, setup) to if setup["CO2Cap"] >= 1 co2_cap!(EP, inputs, setup) end This is essential because if CO2 capacity constraints are not taken into consideration, then we don't need to execute the co2_cap!(EP, inputs, setup) function.
Currently there's a mismatch between the implementation in the code base and the doc pages regarding the minimum up time and down time. This PR fixes the documentation by starting the summation counter as $$ vCOMMIT[t] \geq \sum_{s = t-(MinUpTime-1)}^t vSTART[s]$$ instead of the $$ vCOMMIT[t] \geq \sum_{s = t-MinUpTime}^t vSTART[s]$$
Rather than keep the license block in each file, we refer readers to the LICENSE file in the root of the repo. This is done to decrease the total number of lines of code, to avoid the need to update the copyright year, and to prevent developers from needing to scroll down.
* less repetition of names, etc New feature: now *any* key-value pairs can be passed to the solver (as long as the keys are strings). Previously, only explicitly specified pairs could be passed. If we really want to prevent the user from passing arbitrary settings (say, because JuMP doesn't support them) then we should add a filter or other validation, rather than have them silently do nothing. * fixed a few of the default values listed in the docstrings to match the implementation.
Rather than start with the user settings and add defaults if these user settings are absent, start with the default and merge the user settings with these. The outcome is the same, but the code is much cleaner. This also paves the way to add additional layers of user settings, such as always using the same solver. I removed the documentation here (for what setting means what) because it's already present in the docs/ folder. That should be the canonical source.
In examples and documentation
Having this setting in gurobi_settings.yml passes it to the solver. This leads to an error in Gurobi. This commit removes this settings from the gurobi_settings.yml files.
the lists are in the form of two dataframe columns: StartNode, EndNode
This does not change the interface at all but makes the code shorter. Co-authored-by: Chakrabarti, Sambuddha (Sam) <sambuddha.chakrabarti@gmail.com>
Add a function to load a dataframe from our common sort of CSV file. This helps DRY with regard to dataframe loading settings, making code easier to read and ensuring the same options are applied everywhere. Also, if we want to make dataframe loading smarter, now there's one centralized place to do it. This commit adds a feature that CSV files of different case can also be loaded. It does not look for folders or yaml files with different cases.
For reading CSV and returning DataFrame, in a case-insensitive way
…_stage write functions
Add documentation for load_inputs Co-authored-by: Jacob Schwartz <jacob@jaschwartz.net>
This allows sets of columns to be extracted from a dataframe into a matrix, for columns which are in any order. Previously the columns needed to be consecutive and in order. For example, the ESR_1, ESR_2, ... ESR_N columns in Energy_share_requirement.csv can now be provided in any order.
The "None" fuel type, commonly used for wind, solar, etc, is no longer required in Fuels_data.csv files. This fixes a point of confusion for new users (like me...) where it's actually required to have a column called "None", filled with (presumably) all zeros. It is automatically added to memory if it doesn't exist.
Resources which would have had a column of all 1's in generators_variability.csv no longer need to be listed. Note that even if there is a system without any variable resources, a file with the Time_Index column will still be required.
This was done previously for all the other files, I guess we missed this one. df[__, :][!, :col] --> df[__, :col] df[!, :col][y] --> df[y, :col]
This should only change the behavior of the ISONE_Trizone, since all other examples which had doubled LDS columns had them all zeros anyway.
Add JuMP macro to not waste time setting "string names" for JuMP variables; this may slightly speed up model creation.
Removes division by ModelScalingFacroe when ParameterScale is set to 0, to express the COR emissions in tons (instead of kilotons).
By multiplying by the ModelScalingFactor
y in keys(EP_cur[c]) is a DenseAxisArray key, to extract the index we need to have y[1], as already done also on line 350 in function fix_capacity_tracking.
Add an `ID` column. Turn off ModelingToGenerateAlternatives
CapResPeriodLength is not implemented now. No need for a warning.
GenX does not actually have any binaries or scripts --- files starting with `#!/usr/bin/julia` or similar --- so having the executable permission bit set is not actually necessary. The only executable that GenX uses currently is the user's installation of `julia`. This commit unsets the executable bit for many GenX files.
* Add docs for using run_genx_case! * Add docs section on running separate TDR
…at) (#447) Co-authored-by: CompatHelper Julia <compathelper_noreply@julialang.org>
Because of the new default settings, the first term would always evaluate to false. It can be removed.
Also remove a wayward Project.toml file and a random lock file
…ag (#426) Eliminate the OperationWrapping flag, and keep the TimeDomainReduction flag. In the past, certain combinations of the two flags would be required to run full-year cases, or cases with pre-clustered data, or cases where GenX performs the clustering. This was very confusing and led to serious, silent errors. Now, use TimeDomainReduction=1 if you want GenX to perform clustering and use the results. This will put clustered results in the TDR_Results folder. Use TimeDomainReduction = 0 if you want an external program (like PowerGenome) to generate reduced time series, or for full-year cases. Adds functions to validate the time series construction and makes sure that the inputs are self-consistent. Time series "weights" are always loaded, so expect the `time_weights.csv` output file for all cases.
Not overwriting results (0) is the typical setting in the examples.
* Slack variables documentation update Added the documentation file slack_variables_overview.md and updated the example folder to include the max cap requirement. * Update to slack variables documentation Fixed column names in Maximum_capacity_requirement.csv example, added new lines in documentation file, removed backup file. * Update make.jl Include reference to slack variables documentation * Add new lines to slack_variables_overview.md
#444) * Update README.md and doc pages for version bump to v0.3.5 and environment upgrade * Update Project.toml * Update how_to_run_genx.md * Update make.jl * Update Project.toml * Update Project.toml reinstate backward compatibility * Update changelog --------- Co-authored-by: Jacob Schwartz <jacob@jaschwartz.net>
* Update make.jl to update the documentation pages for GenX v0.3.5 Doc page upgrade: moving the input output before additional tools, fleshing out the multistage, getting rid of/adding content to the missing content in doc pages. Better integrating multi-stage expansion instructions and file content and format. --------- Co-authored-by: Jacob Schwartz <jacob@jaschwartz.net>
To set the frequency of environment upgrade to monthly
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.