Skip to content

Conversation

@Betristor
Copy link
Contributor

Sometimes the model will be built into an ill form if some objective terms are quite large or small. To alleviate this problem, we could add a scaling factor to scale the objective function during solving while leaving all other expressions untouched. In SmallNewEngland/OneZone_3VREBin case, an example ObjScale of 10 could help to change the objective range from [1e-4, 5e+02] to [1e-3, 5e+03].

gmantegna and others added 30 commits August 2, 2023 16:25
These are not needed since there's only one zone.
Fix error on write_costs re: COMMIT_ZONE GenXProject#506
* add PR template

* remove junk files

* update changelog
Removed from the GenX: Introduction page in factor of the Multi-stage
Capacity Expansion Planning with GenX page
`write_outputs` now returns the path where the results were saved after any changes by `choose_output_dir()`

Change `mkdir` to `mkpath`, to avoid errors were a parent directory of the intended results folder is missing.

Finally, update mga outputs_path folder to be the folder created by  `choose_output_dir()`, not the original `outputs_path`

Co-authored-by: Ruaridh Macdonald <rmacd@mit.edu>
Turn on MUST_RUN=1 for the small_hydro plants in the RealSystemExample
cases. Having at least one resource flag is necessary; else the plant
does not contribute to the power balance.
* Validate resources in generators_data.csv

Checks that the information in generators_data.csv is at least
self-consistent and valid. Right now, this just checks the values in the
columns THERM, LDS, FLEX, HYDRO, VRE, STOR, and LDS.
It makes sure that only one of the mutually-exclusive types is present,
   and that a resource which is LDS is either STOR or HYDRO.
Also, I add the vector of resource-dictionaries (`GenXResource`s) to the
inputs dictionary.

Eventually, relevant data (such as one or more time-series) could be
added to each of these resource dicts.

* Update changelog

* Add tests

* Locally silence @error during tests

This turns off some errors _during_testing_ that would usually be printed
to the consolte.

* Silence errors only locally

* Logging is only a dependency for testing
These are causing the build to fail and we don't have any tests, so they
were pretty pointless. Without this we can at least see if the builds
succeed.
Use add_to_expression! and some new functions, rather than `+=` and `-=` for JuMP expressions, to reduce memory usage and time during model generation.

Co-authored-by: RuaridhMacd <rmacd@mit.edu>
…eding to generate (GenXProject#475)

* Add ability for storage to contribute to capacity reserves

* remove VREStor references from capres documentation

* add VOM for virtual charge and discharge

* fix documentation

* remove unused variable

* make CRM check consistent and remove unused variables

* remove virtual charge/discharge if CRM not in use

* fix non-working instance of add to expression

* Revert "fix non-working instance of add to expression"

This reverts commit 04cc9a8.

* fix bug

---------

Co-authored-by: wilson-ricks <wricks@princeton.edu>
The Retrofits feature is still under development, so it is being
disabled. In order to re-enable the feature, remove the line from
load_generators_data! which sends an error if a nonzero RETRO column is
present.


---------

Co-authored-by: Gabe Mantegna <30732358+gmantegna@users.noreply.github.com>
* Remove fill_with_zeros on scalar expression
* Fix CRM bug with empty expression
* createemptyexpression -> create_empty_expression
* Simplify types in expression_manipulation.jl
* We still need to compare the performance and compile time using this approach, but the memory usage and runtime appear the same for now
Add Test-example job to run example case nightly on both `main` and `develop` branches.

---------

Co-authored-by: Jacob Schwartz <jacob@jaschwartz.net>
…rogramming.jl(GenXProject#530)

The current stage value is currently modified in case_runners.jl and erroneously left set to the last stage.
Add VREStor module for modeling co-located VRE and storage, along with associated documentation and example case.

---------

Co-authored-by: Aneesha Manocha <32530260+aneeshamanocha@users.noreply.github.com>
…oject#533)

The VRE_STOR feature and this commit, together, fix a bug which would have affected anyone running a non-myopic multistage case with asymmetric storage. The bug would have resulted in a lower Fixed OM cost for those generators. The VRE_STOR patch made the bug visible by giving a hard `error` rather than running in silence; this allows those cases to run correctly.
'Load' is a confusing term for electrical demand since it's, well, 'overloaded' with the notion of transferring files into memory. 'Demand' is more accessible to non-specialists, and is also a better description of the quantity's role in GenX (an amount of energy desired by users), as demand may not always be fulfilled (if there is non-served energy or flexible demand).
This PR changes 'load' to 'demand', other than keeping the common phrase 'value of lost load' and its abbreviation `Voll`. The changes are fully backward-compatible (and come with `@info` warnings to the user).

Use of `Load` in input files is now deprecated, and support may be dropped in a future version.
Basic electrolyzer implementation: this feature implements a basic electrolyzer implementation, representing hydrogen production for external (exogenous) demand.

Co-authored-by: Jacob Schwartz <jacob@jaschwartz.net>
Co-authored-by: Gabe Mantegna <gabe.mantegna@princeton.edu>
The fuel module accounts for fuel consumption and fuel costs, and also
models the relationship between fuel consumption and power output at
different load via a piecewise linear-approximation.

The CO2 module replaces emissions.jl, and allows us to track the CO2
emissions from power plants based on the fuel consumption, CO2 capture
rate (during the startup and normal operation), and whether the
feedstock is biomass.

See documentation in co2.jl and fuel.jl for detailed descriptions.

Co-Authored-By: Qingyu Xu <xuqingyu0610@gmail.com>
Co-authored-by: Luca Bonaldo <lb9239@princeton.edu>
Add an optional formulation for scheduled maintenance. Plants with this formulation active (so far, limited to thermal-commit plants, THERM=1) need to undergo a certain number of contiguous hours of maintenance every y >= 1 years. During this time they produce no power.

This may be particularly useful in modeling fission plants, which need roughly 4 weeks of maintenance every 18 or 24 months. (Here, 18 would need to be rounded up to 24, as only maintenance cycles which are an integer number of years work with this formulation.)
@codecov-commenter
Copy link

codecov-commenter commented Mar 19, 2024

Codecov Report

Attention: Patch coverage is 0% with 1 lines in your changes are missing coverage. Please review.

Project coverage is 0.07%. Comparing base (aed9b9a) to head (13565bf).

Files Patch % Lines
src/model/generate_model.jl 0.00% 1 Missing ⚠️

❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@          Coverage Diff          @@
##            main    #657   +/-   ##
=====================================
  Coverage   0.07%   0.07%           
=====================================
  Files        112     112           
  Lines       3953    3953           
=====================================
  Hits           3       3           
  Misses      3950    3950           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@sambuddhac
Copy link
Collaborator

Dear @Betristor thanks for raising the issue and the PR to fix. We are in the last legs of releasing GenX v0.4, in which we have tried to fix several similar bugs. I will request you to check this once v0.4 is out to see if the bug still persists, and if it does, we will request you to submit an updated PR to fix it. We expect this new version of GenX to be released (or at least, prereleased this week itself)

@Betristor
Copy link
Contributor Author

@sambuddhac Thanks, I encountered numerical issues during the solving process several times, and thus I hope this fix can help others avoid these numerical issues conveniently and efficiently.

@sambuddhac
Copy link
Collaborator

Dear @Betristor , now is a good time to see if you still have the problem and if yes, accordingly revise your PR. We just did a prerelease of GenX v0.4.0. I would suggest you to do a fresh clone and run from the main. Please observe that this new version comes with a complete redressing of the input data. So, you would have to modify your test case. Here's a translator package from old to new data format: https://github.com/lbonaldo/GenX/tree/release/0.4.0_user_guide/split_generators_data
Please let me know if you need further help.

@Betristor
Copy link
Contributor Author

@sambuddhac Hi, Sam, I updated my code with the latest development, but still it introduces too many changes. I shall close this PR, turn to a new branch and commit the changes.

@Betristor Betristor closed this Mar 25, 2024
@Betristor Betristor deleted the ObjScale branch March 25, 2024 04:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.