You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rename investment group input tables to explicit investment_* names (#1621)
* Initial plan
* Rename investment group input tables
Rename group_asset/group_asset_membership to investment_group_asset/investment_group_asset_membership across schema, model building, validation, tests, fixtures, and user docs.
Co-Authored-By: Claude Code (claude-sonnet-4-6) <noreply@anthropic.com>
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Claude Code (claude-sonnet-4-6) <noreply@anthropic.com>
i.e., a sum-product of all investment variables listed in the group multiplied by given coefficients related by a "right hand side".
557
557
An example of group investment are the maximum and minimum investment limits for group of investment variables.
558
558
The mathematical formulation of these constraints is available [here](@ref investment-group-constraints).
559
-
They can be achieved using group investment constraints by adding rows in `group_asset` such that:
560
559
561
-
- Each row in table `group_asset`
560
+
!!! info
561
+
At the moment, group constraints are only supported for investment variables through `investment_group_asset` and `investment_group_asset_membership`.
562
+
If you need additional constraints involving other variables, add them manually to the JuMP model as shown in the [Bids tutorial](@ref bids-tutorial).
563
+
564
+
They can be achieved using group investment constraints by adding rows in `investment_group_asset` such that:
565
+
566
+
- Each row in table `investment_group_asset`
562
567
-`name` is the name of the group, and unique identifier.
563
568
-`milestone_year` is the year for which the group is defined.
564
569
-`invest_method = true`. This parameter enables the model to use the investment group constraints.
565
570
-`constraint_sense` is either `<=` for maximum and `>=` for minimum.
566
571
-`rhs` is the corresponding value.
567
-
- Each row in table `group_asset_membership`
568
-
-`group_name` should match `group_asset.name`.
572
+
- Each row in table `investment_group_asset_membership`
573
+
-`group_name` should match `investment_group_asset.name`.
569
574
-`asset` is the name of the asset.
570
-
-`milestone_year` should match `group_asset.milestone_year` and `asset.milestone_year`.
575
+
-`milestone_year` should match `investment_group_asset.milestone_year` and `asset.milestone_year`.
571
576
-`coefficient` should be the capacity value for the investment limit.
572
577
573
578
!!! warning
574
-
Notice that only one constraint is created per row in `group_asset`, which means that if both the minimum and maximum investment limits are desired, two rows are required in `group_asset`, one with `constraint_sense = '<='` and one with `constraint_sense = '>='`. In this case, the names of the groups must be different, from instance `ccgt_max` and `ccgt_min`.
575
-
Similarly, the elements in `group_asset_membership` will need to be duplicated, one for each group.
579
+
Notice that only one constraint is created per row in `investment_group_asset`, which means that if both the minimum and maximum investment limits are desired, two rows are required in `investment_group_asset`, one with `constraint_sense = '<='` and one with `constraint_sense = '>='`. In this case, the names of the groups must be different, from instance `ccgt_max` and `ccgt_min`.
580
+
Similarly, the elements in `investment_group_asset_membership` will need to be duplicated, one for each group.
576
581
577
582
#### Example: Group of Assets
578
583
579
-
Let's explore how the groups are set up in the test case called [Norse](https://github.com/TulipaEnergy/TulipaEnergyModel.jl/tree/main/test/inputs/Norse). First, let's take a look at the `group-asset.csv` file:
584
+
Let's explore how the groups are set up in the test case called [Norse](https://github.com/TulipaEnergy/TulipaEnergyModel.jl/tree/main/test/inputs/Norse). First, let's take a look at the `investment-group-asset.csv` file:
Here we can see that the assets `Asgard_Solar` and `Midgard_Wind` belong to the `renewables` group, while the assets `Asgard_CCGT` and `Midgard_CCGT` belong to the `ccgt` group.
Copy file name to clipboardExpand all lines: docs/src/20-user-guide/54-input-table-schemas.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,7 +5,7 @@ The input data must follow the table schemas below to correctly build a system i
5
5
The schemas below are in [`input-schemas.json`](https://github.com/TulipaEnergy/TulipaEnergyModel.jl/blob/main/src/input-schemas.json). You can also view the schemas after loading the package by typing `TulipaEnergyModel.schema` in the Julia console.
6
6
7
7
!!! info "Optional tables/files and their defaults"
8
-
The following tables/files are allowed to be missing: "assets\_rep\_periods\_partitions", "assets\_timeframe\_partitions", "assets\_timeframe\_profiles", "flows\_rep\_periods\_partitions", "group\_asset", "group\_asset\_membership", "profiles\_timeframe". These tables that are allowed to be missing are tables allowed to be empty, i.e., to have 0 rows, during model creation.
8
+
The following tables/files are allowed to be missing: "assets\_rep\_periods\_partitions", "assets\_timeframe\_partitions", "assets\_timeframe\_profiles", "flows\_rep\_periods\_partitions", "investment\_group\_asset", "investment\_group\_asset\_membership", "profiles\_timeframe". These tables that are allowed to be missing are tables allowed to be empty, i.e., to have 0 rows, during model creation.
9
9
- For the partitions tables/files, the default value are `specification = uniform` and `partition = 1` for each asset/flow and year
10
10
- For the profiles tables/files, the default value is a flat profile of value 1.0 p.u.
11
11
- If no group table/file is available there will be no group constraints in the model
0 commit comments