Releases: TulipaEnergy/TulipaEnergyModel.jl
Releases · TulipaEnergy/TulipaEnergyModel.jl
v0.14.0
TulipaEnergyModel v0.14.0
Breaking changes
- Changes in the model schema due to the new parameter
flow_coefficient_in_capacity_constraint
in theflow_commission
table.
Merged pull requests:
- Test changes to MPS on CI (#1080) (@abelsiqueira)
- Implement data validation step with basic check for duplicate rows (#1088) (@abelsiqueira)
- Create connection inside benchmark run because tables exist (#1089) (@abelsiqueira)
- Fix docstrings of add_group_constraints (#1090) (@abelsiqueira)
- Add setup steps to benchmark to properly run from scratch (#1092) (@abelsiqueira)
- Add instructions to run comparative benchmarks locally (#1093) (@abelsiqueira)
- Validate schema's oneOf constraints (#1099) (@abelsiqueira)
- Validate that only transport flows can be investable (#1102) (@abelsiqueira)
- Validate group consistency in asset and group_asset tables (#1107) (@abelsiqueira)
- Add a coefficient parameter to multiply the flow variables in the capacity constraints (#1116) (@datejada)
Closed issues:
- Add argument descriptions to all "add constraints" functions (#723)
- Add pre-processing step to calculate the flow (#1072)
- Verify in the CI that the MPS files have not changed (#1076)
- No duplicate rows in input data (#1091)
- Add option to determine which flows are included in the capacity constraints (#1096)
- Check that all assets have a type associated (i.e., consumer, producer, conversion, storage, hub) (#1098)
- Check that the flows that are defined as investable are also defined as transport (#1101)
- Validate consistency between group field in asset and group table (#1105)
v0.13.0
TulipaEnergyModel v0.13.0
Breaking changes
- Update DuckDB version that fixes the windows build.
Merged pull requests:
- Always saving the solution when using run scenario (#1032) (@datejada)
- Improvements to creating expressions attached to constraints (#1033) (@abelsiqueira)
- Delete Cbc from the tests (#1034) (@datejada)
- Remove DataFrames completely (#1035) (@abelsiqueira)
- Change multi-year fixed and investment costs to help differentiate and fix objective fixed costs (#1048) (@abelsiqueira)
- Create model schema from a JSON file (#1054) (@datejada)
- Add type assertions in add_expression and attach_expression functions (#1055) (@abelsiqueira)
- docs(formulation): Update formatting of tip admonition blocks by indenting the content in the raw markdown (#1060) (@kdheepak)
- Rename index to id to prevent using sql keyword (#1061) (@abelsiqueira)
- Rename "from" and "to" to "from_asset" and "to_asset" uniformly. (#1062) (@abelsiqueira)
- Start moving sql queries to SQL files (#1063) (@abelsiqueira)
- Update DuckDB version to 1.2.1 (#1075) (@abelsiqueira)
- Update mathematical formulation with DC power flow constraints (#1078) (@datejada)
- Clean test printing (#1079) (@abelsiqueira)
- Fix Windows failure due to tests introduced in #1079 (#1083) (@abelsiqueira)
- Use absolute path to include json file (#1085) (@abelsiqueira)
Closed issues:
v0.12.0
TulipaEnergyModel v0.12.0
Breaking changes
- Remove graph, representative_periods, years, and timeframe structures in favour of tables.
- Change various names of tables and IO functions.
Merged pull requests:
- Refactor many files related to multi-year expressions remove graph and completely removes the sets structure (#1004) (@abelsiqueira)
- Fix sort in the query to keep linear index per asset in the storage constraint (#1010) (@datejada)
- Add explicit asset timeframe partitions (#1012) (@datejada)
- Improve performance to create constraints over clustered year (#1017) (@abelsiqueira)
- Change sum(coef * var) to JuMP.add_to_expression (#1018) (@abelsiqueira)
- Remove graph and other internal structures and general cleaning (#1023) (@abelsiqueira)
- Refactor names in the ramping constraints (#1025) (@datejada)
- Remove active parameter (#1027) (@datejada)
- Improve documentation multi-year (#1028) (@gnawin)
- Create src/data-preparation.jl and move creation of partition-related tables there (#1029) (@abelsiqueira)
- Remove variable lookup that was created only for the strangle pattern (#1030) (@abelsiqueira)
Closed issues:
- Make sure that inactive assets (and their flows) are removed from the model (#266)
- Multi-year investment (#462)
- Change
representative_periods
to use DuckDB (#713) - Refactor the groupby inside create_internal_structure to use DuckDB/TulipaIO in the for loops of profiles (#738)
- Change graph data access and constraint creation to use the indices tables (#942)
- Remove
active
parameter from flows and assets (#960) - [Bug] The storage balance constraints are not correctly created (#1007)
- Add default values for
assets_timeframe_partitions
table (#1009) - Improve performance v0.11.0 (#1014)
- Fix data for
simple
investment method (#1016) - Update names on ramping constraints creation (#1024)
- Formulation of multi-year investment needs a correction on the fixed costs (#1026)
v0.11.0
TulipaEnergyModel v0.11.0
Breaking changes
- Major internal refactoring of the code to speed up the model creation using DuckDB
- Input schema has changed. Therefore, CSV files from version 0.10.x V must be upgraded to the new format in version 0.11.0
Merged pull requests:
- Remove first row of input files (#993) (@datejada)
- Implement solution saving and exporting for refactored code (#1000) (@abelsiqueira)
- [docs]: prepare documentation for release 0.11.0 (#1002) (@abelsiqueira)
- Update EU benchmark case study (#1003) (@datejada)
- Update .all-contributorsrc and run generate changing some links (#1005) (@abelsiqueira)
- Bump actions/stale from 9.0.0 to 9.1.0 (#1006) (@dependabot[bot])
- Modify docs flow lower bound (#883) (@gnawin)
- Refactor some of the code related to model creation (#886) (@abelsiqueira)
- Create TulipaVariable struct and define variable tables (#887) (@datejada)
- Refactor content of create model into separate files (#888) (@abelsiqueira)
- Multi year docs (#889) (@gnawin)
- Various small fixes (#890) (@abelsiqueira)
- Unpack sets inside
add_*_constraints!
functions (#893) (@suvayu) - Fix index (#894) (@gnawin)
- Start transition from DataFrames to DuckDB (#896) (@abelsiqueira)
- Add how-to for multi-year investments (#899) (@gnawin)
- Create flow variables using the indices table (#900) (@datejada)
- Create units_on variables using the indices table (#902) (@datejada)
- Update storage variable creation using indices table (#904) (@datejada)
- [docs] Modify the description of the parameter discounting factor operation cost (#905) (@gnawin)
- Add uses of Tulipa to docs (#907) (@clizbe)
- Add new package section to dev docs (#910) (@clizbe)
- Add
highest_in
tocreate_constraints_indices
(#913) (@gnawin) - Move units_on from DF to DuckDB (#915) (@clizbe)
- Add
highest_out
tocreate_constraints_indices
(#917) (@gnawin) - Fix case where the there are no time blocks to determine in a constraint (#920) (@abelsiqueira)
- Fix: remove duplicate tmp_create_constraints_indices (#921) (@abelsiqueira)
- Fix 91-developer.md (#922) (@clizbe)
- Refactor variables to use TulipaVariable (#925) (@abelsiqueira)
- Create all variables directly from connection and independent of dataframes (#926) (@abelsiqueira)
- Create constraints with new TulipaConstraint object (#928) (@abelsiqueira)
- Bump codecov/codecov-action from 4 to 5 (#929) (@dependabot[bot])
- Split assets data to better reflect year dependency (#932) (@abelsiqueira)
- Option to disable name creation (#936) (@joaquimg)
- Remove *_partitions from graph object (#939) (@abelsiqueira)
- Remove graph dependency from src/constraints/consumer.jl (#944) (@abelsiqueira)
- Remove old code for compute_assets_partitions (#949) (@abelsiqueira)
- Store a table name inside TulipaVariable and TulipaConstraint (#950) (@abelsiqueira)
- Rename and split some constraints to reflect Miro (#951) (@abelsiqueira)
- Remove bad asset test (#952) (@clizbe)
- Add explicit return to JuliaFormatter and docs (#953) (@clizbe)
- Create investment bound from the variable definition (#954) (@datejada)
- Use
@timeit
on function calls (#956) (@gnawin) - Update TulipaConstraint to allow attaching more constraints to the same indices table (#959) (@abelsiqueira)
- Move some of the active checks earlier in the workflow (#962) (@abelsiqueira)
- Update capacity.jl to use the new attach functions and update tables (#963) (@abelsiqueira)
- Update ramping file with new attach_constraint and create new tables (#965) (@abelsiqueira)
- Use attach_constraint for src/constraints/storage.jl (#967) (@abelsiqueira)
- Use let block in capacity constraints (#968) (@abelsiqueira)
- Create transport table and update transport.jl (#970) (@abelsiqueira)
- Update constraint files hub.jl, conversion.jl and energy.jl to use attach_constraints (#971) (@abelsiqueira)
- Rename, split, create new constraints for group.jl (#972) (@datejada)
- Add docs for enables_names = false (#973) (@clizbe)
- Remove unnecessary expression and move lower bound of flow variable from src/constraints/capacity.jl (#976) (@abelsiqueira)
- Remove most of graph from src/constraints/capacity.jl (#978) (@abelsiqueira)
- Remove graph from src/constraints/energy.jl and transport.jl (#979) (@abelsiqueira)
- Remove graph from src/constraints/ramping-and-unit-commitment.jl (#980) (@abelsiqueira)
- Remove graph from src/constraints/storage.jl (#981) (@abelsiqueira)
- Replace all intra_rp by rep_period and inter_rp by over_clustered_year (#982) (@abelsiqueira)
- Remove data from graph object in src/constraints/group.jl (#985) (@datejada)
- Remove need for representative_periods and graph in add_expression_terms_rep_period_constraints (#987) (@abelsiqueira)
- Add explicit 'using' to tests (#995) (@clizbe)
Closed issues:
- Return tables (a.k.a. DuckDB) or dataframes as the output format (#115)
- Consider storing the profile aggregation in the constraints data frames (or somewhere else) (#473)
- Use functions for saving flow solutions (#566)
- Change from_asset/to_asset or from/to for consistency (#624)
- Add the dual solutions to
energy_problem.dataframes[:highest_in_out]
(#637) - EU benchmark files are too big, store somewhere else (#673)
- Split
profile_name
in theprofiles_table
(#683) - Create a site/notebook/template/repo for the whole pipeline documentation (#685)
- Explore uses of DuckDB to create a single column to iterate (#716)
- Create outputs for the new results of the variables (#818)
- Implement automatic flow resolutions (#880)
- Update documentation with feedback from Maaike (#935)
- Remove first row from the input files (#991)
- Update benchmark case study (#1001)
- Find all cases where the flow resolution can/must be inferred (#453)
- Improve _parse_rp_partitions to reflect more general usage (#610)
- Change construct_dataframes to use tables (a.k.a. DuckDB) or input data frames (#611)
- Add a repo checklist to README.DEV (#630)
- Rename the variables and constraints dataframes in the model (#642)
- Test
TimeStruct.jl
package to handle the flexible time resolution in the model (#689) - Add policy questions to answer with the model to the docs (#775)
- Add formatter option to have explicit returns (#796)
- Remove test using Tiny/bad-assets-data.csv (and file) (#812)
- Update documentation - formulation (note that formulation needs updates not only in the investments, but also in ramping, groups, and binary charging) (#819)
- Modify the documentation on the lower bound of flows (#882)
- Define variable tables (#884)
- Create all data and tables necessary for the model before the function (#885)
- Update documentation - how-to (#891)
- Change functions that receive explicit sets to receive the variable
sets
(#892) - Define partition tables (#895)
- Create flow variables using the indices in the variable structure (#898)
- Create units on variables using the indices in the variable structure (#901)
- Update storage variables using the indices in the variable structure (#903)
- Instead of DF, use a TulipaIO table (#909)
- units_on (#911)
- Create constraints indices for
highest_in
(#912) - Create constraints indices for
highest_out
(#914) - Create constraints indices for
units_on
andunits_on_and_outflows
(#918) - Refactor variables (#923)
- Define (balance) constraints tables (#927)
- Try using
@timeit to
on function calls, not onbegin ... end
blocks (#934) - Change the default of the
enable_names
option to false in thecreate_model
function (#937) - Update JuliaFormater options (#940)
- Don't get data from graph object in src/constraints/consumer.jl (#943)
- Don't get data from graph object in src/constraints/investment.jl (#945)
- Don't get data from graph object in src/constraints/capacity.jl (#947)
- Update
compute_assets_partitions!
to use DuckDB more efficiently (#948) - Don't get data from graph object in src/constraints/storage.jl (#955)
- Update
TulipaConstraint
to store the dual variables and the list of constraints that use the same set of indices (#957) - Rename constraint names to names in Miro that don't have to split or that are simple to split (#958)
- Rename, split, create new constraints for capacity.jl (#961)
- Rename, split, create new constraints for ramping-and-unit-commitment.jl (#964)
- Rename, split, create new constraints for storage.jl (#966)
- Rename, split, create new constraints for group.jl (#969)
- Don't get data from graph object in src/constraints/group.jl (#977)
- Apply specific 'using' syntax to the tests (#994)
v0.10.4
TulipaEnergyModel v0.10.4
Merged pull requests:
v0.10.3
TulipaEnergyModel v0.10.3
Merged pull requests:
v0.10.2
TulipaEnergyModel v0.10.2
Merged pull requests:
- Specify the domain of decommission variables (#846) (@gnawin)
- Apply BestieTemplate v0.12.0 (#848) (@abelsiqueira)
- Bump peter-evans/create-or-update-comment from 3 to 4 (#850) (@dependabot[bot])
- Bump peter-evans/find-comment from 2 to 3 (#851) (@dependabot[bot])
- Bump actions/stale from 4.1.1 to 9.0.0 (#852) (@dependabot[bot])
- Bump lycheeverse/lychee-action from 1 to 2 (#853) (@dependabot[bot])
- Bump julia-actions/cache from 1 to 2 (#854) (@dependabot[bot])
- Update the authors list in various files (#856) (@abelsiqueira)
- Fix links to contributing & developer (#857) (@clizbe)
- 858 fix kbd error in docs (#859) (@clizbe)
- Fix all-contributors (#860) (@abelsiqueira)
- docs: add abelsiqueira as a contributor for code, and review (#861) (@allcontributors[bot])
- docs: add datejada as a contributor for code, review, and 2 more (#862) (@allcontributors[bot])
- docs: add suvayu as a contributor for code, review, and ideas (#863) (@allcontributors[bot])
- docs: add gnawin as a contributor for code, review, and 2 more (#864) (@allcontributors[bot])
- docs: add clizbe as a contributor for code, review, and 2 more (#865) (@allcontributors[bot])
- docs: add g-moralesespana as a contributor for research, ideas, and 2 more (#866) (@allcontributors[bot])
- docs: add jkiviluo as a contributor for ideas, and research (#867) (@allcontributors[bot])
- docs: add mdeweerdt as a contributor for fundingFinding, and projectManagement (#868) (@allcontributors[bot])
- docs: add greg-neustroev as a contributor for ideas, research, and code (#869) (@allcontributors[bot])
- docs: add gzclarence as a contributor for ideas, and research (#870) (@allcontributors[bot])
- docs: add lsoucasse as a contributor for ideas (#871) (@allcontributors[bot])
- Fix italics in schema list (#872) (@clizbe)
- docs: add sjvrijn as a contributor for ideas (#873) (@allcontributors[bot])
- Correct Maaike's name (#874) (@abelsiqueira)
- Change lower bound and test value (#876) (@gnawin)
- Fix links to contributing and developer documentation (#877) (@datejada)
- [AUTO] pre-commit update (#878) (@github-actions[bot])
- docs: add maaikeelgersma as a contributor for ideas, and research (#879) (@allcontributors[bot])
Closed issues:
- Apply BestieTemplate.jl (#676)
- Add checks to the domain of decommission variables and make sure they only exist when there are existing capacities or investments - compact method. (#828)
- The model can be unbounded under certain set-ups (#844)
- [BUG] - Italics in docs (#847)
- Update online codecov requirement to 98% (#849)
- [Bug] Fix link to CONTRIBUTING and README.dev.md (#855)
- [Bug] Replace
<kbd>stuff</kbd>
by backticks (#858)
v0.10.1
TulipaEnergyModel v0.10.1
Merged pull requests:
- Limit DuckDB version to 1.0 until duckdb/duckdb#13911 is fixed (#842) (@abelsiqueira)
- DuckDB_jll needs explicit compat bounds (#843) (@abelsiqueira)
Closed issues:
v0.10.0
TulipaEnergyModel v0.10.0
Merged pull requests:
- Make docs friendlier and FIX broken links (#698) (@clizbe)
- Add run_scenario(connection) (#699) (@clizbe)
- Replace from_csv functions with TulipaIO (#704) (@clizbe)
- Use DuckDB to create the RepresentativePeriod structure (#708) (@datejada)
- Update benchmarks.jl (#709) (@datejada)
- Change Symbols to Strings for input data (#711) (@datejada)
- Refactor timeframes, assets, and flows to use DuckDB for input data (#712) (@datejada)
- Edit concepts and how-to-use (#719) (@clizbe)
- Create profiling folder with instructions (#721) (@abelsiqueira)
- Add ramping and unit commitment basic constraints (#726) (@clizbe)
- Add missing BenchmarkTools in the profiling script (#728) (@abelsiqueira)
- Remove table tree structure (#733) (@datejada)
- Update schema to be used by TulipaIO and change name to schema_per_table (#737) (@abelsiqueira)
- New group feature in the model for investments (#742) (@datejada)
- Update documentation with groups information (#744) (@datejada)
- Add basic multi-year support (#745) (@abelsiqueira)
- Update CFF file (#746) (@datejada)
- Create utils/csv-modifications.jl to help making changes in CSVs (#751) (@abelsiqueira)
- Remove empty column in assets-data.csv files (#755) (@abelsiqueira)
- Add year information to the data (#757) (@abelsiqueira)
- Add units_on_cost to the objective function (#760) (@datejada)
- Add new test case for UC and ramping (#761) (@datejada)
- Create Multi-year Investments test data (#762) (@abelsiqueira)
- Update UC and ramping dataframe (#764) (@datejada)
- Fix unit commitment conditions in the constraints (#767) (@datejada)
- Split static graph data and add is_milestone to years' data (#768) (@abelsiqueira)
- Update docs with UC and Ramps (#769) (@datejada)
- Add more meaningful data for multi-year (#771) (@gnawin)
- Include duration in the ramping constraints (#773) (@datejada)
- Add two columns to assets-data (#780) (@gnawin)
- Change to initial units in input data (#781) (@datejada)
- Add common dicts and an expression for multi-year (#782) (@gnawin)
- Add compact method for multi-year (#784) (@gnawin)
- Update EU case study (#785) (@datejada)
- Add investment method to the graph structure (#788) (@datejada)
- Add simple method for multi year investment on assets (#793) (@datejada)
- Avoid missing value investment method (#795) (@datejada)
- Update input file for vintage information (#799) (@abelsiqueira)
- Add an expression that covers both simple and compact methods (#800) (@gnawin)
- Add UC and ramps concepts to the docs (#801) (@datejada)
- Update UC and ramping constraints with accumulated units (#804) (@datejada)
- Refactor group constraints to improve performance (#807) (@datejada)
- Update Benchmark.yml (#808) (@datejada)
- Update docs (#811) (@clizbe)
- Implement ModelParameters (#813) (@abelsiqueira)
- Update storage binary charging constraints (#814) (@datejada)
- Add investment weights to objective function (#815) (@gnawin)
- Add operation weights (#817) (@gnawin)
- Change to account for initial storage units and capacity energy storage in the multi-year feature (#820) (@datejada)
- Add necessary data to prepare multi-year transport (#821) (@gnawin)
- Update files for storage investment method with multi-year investment (#822) (@datejada)
- Update energy storage constraints with multi-year investment (#823) (@datejada)
- Update storage binary constraints with multi-year investment (#824) (@datejada)
- Add simple method transport investment (#829) (@gnawin)
- Add new economic parameters functions (#830) (@datejada)
- Change flow data to make multi-year case feasible (#832) (@gnawin)
- Remove unneccessarily duplicated data (#834) (@gnawin)
- Put weights in the objective function (#836) (@gnawin)
- Add accumulated investment limit to binary storage constraints (#837) (@datejada)
- Add objective value to multi-year test (#839) (@gnawin)
- Release 0.10.0 (#840) (@gnawin)
Closed issues:
- Build the input workflow (#289)
- Add Dependabot to check actions (#444)
- Use dataframes instead of dict for RP weight matrix (#495)
- Refactor architecture to use Tables (DuckDB) (#547)
- Add basic version of unit commitment and ramping constraints (#581)
- Make Docs landing page more friendly (#592)
- Update citation.cff file (#619)
- Change Symbol to String (#632)
- Use the input schema again (#636)
- run_scenario for connection or other convenience functions (#665)
- Write down and review the formulation including different levels of detail (#690)
- Add remote url fix to readme.dev (#695)
- Fix readme.dev to our fork workflow (#696)
- Remove all csv related reading functions and use TulipaIO instead. (#702)
- Use strings instead of Symbols in the create_input_dataframes function (#705)
- Refactor the inputs to use DuckDB as much as possible (#706)
- Refactor to create RepresentativePeriod from DuckDB (#707)
- Refactor timeframe and assets data inputs to read from DuckDB (#710)
- How to get a column from DuckDB directly? (#714)
- Add basic investment model (obj, upper bounds, conversion, cost efficiency), and create the needed parameters (#722)
- Add optional ramping constraints (#724)
- Remove table_tree (the end) (#729)
- [BUG] Italics in docstring (#730)
- Create new "entity" called "group" to have a set of common constraints (#732)
- Change the name
schema_per_file
toschema_per_table_name
(#734) - Add the most complicated method (#740)
- Update documentation with the group feature (#743)
- Multi-year data and timeframe relation (#748)
- Update the documentation with ramping and unit commitment constraints (#750)
- Add new case study to test UC and ramping constraints (#752)
- Add information for diff of CSV files (#753)
- Files assets-data.csv have an extra hidden empty column (#754)
- Add operational cost of units_on in the objective function (#756)
- Create multi-year test data (#758)
- Update dataframe for UC and ramping constraints (#763)
- Create a test dataset for multi-year that makes more sense, considering existing capacities with different profiles. (#765)
- Prepare more data for multi-year simple and compact formulation (#766)
- Include a new section for ramping and unit commitment constraints in the concepts (#770)
- Include durations on the ramping constraints (#772)
- Update EU case study for benchmark (#776)
- Add additional data to multi-year that will be used for both simple and compact methods (#777)
- Add to model the common lists/subsets for years for both simple and compact methods (#778)
- Use
initial_units
instead ofinitial_capacity
as input data (#779) - Add the compact method (#783)
- Add the simplest method for multi-year investment (#786)
- Add
investment_method
data to the graph structure (#787) - Update group constraints according to the investment methods (#789)
- Update ramping constraints to consider multi-year investment methods (#790)
- Update binary to avoid simultaneously charging/discharging constraints to consider multi-year investment methods (#791)
- Add the simple method for investments in transport assets (#792)
- Avoid having missing value in the investment_method (#794)
- Update input file for vintage information (#797)
- Change accumulated capacity expression to account for both investment methods (#798)
- Create economic parameters (#802)
- Add the simple method for storage assets (#806)
- Add investment weights (#810)
- Add operation weights (#816)
- Review duplicated data in assets-data and vintage-assets-data (same for flows) (#825)
- Create functions for the economic parameters calculations (#826)
- Make multi-year test feasible (#831)
- Use weights for investments and operation in the objective function. (#835)
- Update the test for multi-year investment, including ramps, binary charging, investments in storage (and in energy storage) to be sure the constraints are correct when using multi-year investment (#838)
v0.9.2
TulipaEnergyModel v0.9.2
Merged pull requests:
- Update formulation and how-to-use with the max/min outgoing energy limit (#691) (@datejada)
- Refactor energy constraints to use sum instead of mean (#693) (@datejada)
- FIX README.dev.md (#694) (@clizbe)
- Release v0.9.2 (#697) (@datejada)
Closed issues:
- Create new variables and constraints to have a max/min energy outgoing flow for assets, using the base periods (#526)
- Update citation.cff file (#619)
- Update documentation with max/min energy outgoing flow for assets (#662)
- [BUG] - Change aggregation function for the max/min energy outgoing flow for assets (#692)