Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement data validation & default assumptions #461

Open
14 tasks
clizbe opened this issue Feb 12, 2024 · 2 comments
Open
14 tasks

Implement data validation & default assumptions #461

clizbe opened this issue Feb 12, 2024 · 2 comments
Labels
Type: epic Epic issues (collection of smaller tasks towards a goal)
Milestone

Comments

@clizbe
Copy link
Member

clizbe commented Feb 12, 2024

Description

Please edit this description with new bullets as you think of them:

  • If GraphAssetData.investable is an array of years, investment_cost should also be an array of equal length. (After multi-year investment is implemented.)
  • Consistency checks for connections of assets: We shouldn't allow a transport asset to be the charging flow for a storage asset (but double-check).
  • Check that all assets have a type associated (i.e., consumer, producer, conversion, storage, hub)
  • Check that the flows that are defined as investable are also defined as transport
  • If a storage asset has a missing is_seasonal, the default is false (non-seasonal storage).
  • Check that units are consistent - either correct or throw a warning/error (this should include euro value year)
  • If storage inflows are missing, then assign the default = 0
  • Check that if there is a defined initial_storage_level, it must be between the asset's max/min limits. Also, we need to check that if there are max/min profiles, then you must also check that the initial value is between those values.
  • Add validation described in Validate the efficiency for inflows and outflows for conversion assets #437
  • Find all cases where the flow resolution can/must be inferred #453
  • Check for minimum Tulipa graph criteria esdl4tulipa#5
  • Check if a group in that groups-data file has no members (e.g., assets) in the assets-data file and if an asset in the assets-data file has defined a group that it is not defined in the groups-data file.
  • If the parameter unit_commitment of an asset is set to true, then the unit_commitment_method and the units_on_cost parameters cannot be missing
  • if the storage asset is investable and it has the parameter use_binary_storage_method different from missing then the asset must have an investment_limit greater than zero

Related Issues

@abelsiqueira
Copy link
Member

We just discussed adding arguments or options to define the use case instead of relying on the existence or not of specific files. I'm not sure how to translate that into a bullet point. I think it still needs some definition of the main use cases.

@clizbe
Copy link
Member Author

clizbe commented Jul 22, 2024

Yes, depending on how many switches there are, this might be a file. But for now we want to have it as arguments to a function call, with defaults for the "regular" way of running and only specifying to change from the default.

This specification has two advantages:

  • Easier programming for us, since we don't have to reverse engineer what the user wants based on their data
    • Not: "IF cost data present, AND bloop > 1, DO this - ELSEIF cost data present AND bloop = 0, DO something else"
    • Instead: "IF invest_flag = true, DO invest" - if missing data, error
  • Clearer to the user what they're making Tulipa do
    • Not:
      • User: "I have bloop > 1, but it's not investing"
      • TulipaTeam: "Go look at the cookbook... you can see you need cost data to enable investment"
    • Instead: "ERROR: invest_flag = true, but cost data is missing" or "WARNING: Cost data is present, but invest_flag = false. To activate investment, set invest_flag = true and bloop > 1"

Dunno if that makes it more or less clear.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Type: epic Epic issues (collection of smaller tasks towards a goal)
Projects
None yet
Development

No branches or pull requests

3 participants