windnode / WindNODE_ABW

Region Anhalt-Bitterfeld-Wittenberg
GNU Affero General Public License v3.0
3 stars 0 forks source link

fix/#36-ex-post-calculation-grid-investment #75

Closed gplssm closed 4 years ago

gplssm commented 4 years ago

Fix #36

gplssm commented 4 years ago

Some notes on what was done and how

Two questions remain from my side:

  1. I saw in model.py that opex_var aren't multiplied by length, annuity is. Is this correct?
  2. How are emissions_fix defined? The implementation right now assumes that these are g/kW
nesnoj commented 4 years ago

Note: I haven't checked the final results, this needs to be done in #76.

gplssm commented 4 years ago

Thanks for this hot new stuff!

I tested with the full year run of ISE2050_Relimit (2020-07-22_063122_fullyear_#75.tar.gz on the server) and have some remarks:

1. There are investments for EHV/HV trafos included in invest.csv which you do not analyze/add to the invest costs. As we've only 2 of them and the cap. is a best guess (from ego) I'm fine with neglecting it.

We could open an issue for the nice-to-have list for that. You decide!

2. The line investments are done continuously and so are the emissions (in contrast to real grid expansion). I better won't open up this can of works here, right? ;)

:arrow_right: Even-nicer-to-have list

3. Investment approach: Will the investment (annuity/EPC) be made per direction (twice) for each Link? I'm not talking about only using the max of both (as you correctly did in the results extraction!) but I think the double investments as part of the optimization problem may "demotivate" grid expansion?
   This is more a general oemof questing we're not going to fix here, but I think it's important enough to be kept in mind.

Yepp, it is accounted twice

I've used your minimum example and saw this

\* Source Pyomo model name=Model *\

min 
objective:
+100 InvestmentFlow_invest(line_0_b_0)
+100 InvestmentFlow_invest(line_0_b_1)
+25000 ONE_VAR_CONSTANT

s.t.

c_e_Bus_balance(b_0_0)_:
-1 flow(b_0_line_0_0)
+1 flow(line_0_b_0_0)
= -300

You're totally right, twice

  1. This is simply wrong
  2. We won't fix it here

Shall we file an issue for oemof-solph?

4. Rather general: I'm a little curious that `params_stat.csv` is not used in the repo code at all, where are static params (e.g. `nominal_storage_capacity` of storages) are obtained from? Aren't they needed for the analysis of flex. results?

I think I get these parameters from region.tech_assumptions and other attributes of region. So far, we haven't used to storage fill level nominal_storage_capacity in our analysis.

Also, find comments on the code.

Two questions remain from my side:

  1. I saw in model.py that opex_var aren't multiplied by length, annuity is. Is this correct?
  2. How are emissions_fix defined? The implementation right now assumes that these are g/kW
1. Currently, this does not matter, as it is 0 in the current settings (only opex_fix>0) but in general you're right, thanks! Same applies for var emissions (also currently 0). I fixed both.

2. No, `g/(kW*km)` resp. `kg/(MW*km)`. You have to use the length, see code comment on this.

Ok. Fixed it - somehow

nesnoj commented 4 years ago

Note @nailend: As soon as this one is merged, new runs need to be used for analysis due to changed file format. I'll create them...

nesnoj commented 4 years ago

:partying_face: