Mixing linearised unit commitment for fixed generators and multi-horizon for extendable

7 views
Skip to first unread message

Peter Klein

unread,
Jul 3, 2024, 7:36:44 AM (4 days ago) Jul 3
to pypsa
Hi All

Is it possible to solve capacity expansion planning for extendable generators in multi-horizon, whilst including linearised unit commitment for fixed generators in the same model? I know you can't have unit commitment for extendable generators as this is non-linear.This seems to work fine for binary unit commitment but for linearised it fails:

n.optimize(multi_investment_periods=True, linearized_unit_commitment=True)

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
Cell In[27], line 1
----> 1 n.optimize(multi_investment_periods=True, linearized_unit_commitment=True)

File ~/anaconda3/envs/pypsa-rsa/lib/python3.10/site-packages/pypsa/optimization/optimize.py:604, in OptimizationAccessor.__call__(self, *args, **kwargs)
    602 @wraps(optimize)
    603 def __call__(self, *args, **kwargs):
--> 604     return optimize(self._parent, *args, **kwargs)

File ~/anaconda3/envs/pypsa-rsa/lib/python3.10/site-packages/pypsa/optimization/optimize.py:574, in optimize(n, snapshots, multi_investment_periods, transmission_losses, linearized_unit_commitment, model_kwargs, extra_functionality, assign_all_duals, solver_name, solver_options, **kwargs)
    571 n._linearized_uc = linearized_unit_commitment
    573 n.consistency_check()
--> 574 m = create_model(
    575     n,
    576     sns,
    577     multi_investment_periods,
    578     transmission_losses,
    579     linearized_unit_commitment,
    580     **model_kwargs,
    581 )
    582 if extra_functionality:
    583     extra_functionality(n, sns)

File ~/anaconda3/envs/pypsa-rsa/lib/python3.10/site-packages/pypsa/optimization/optimize.py:274, in create_model(n, snapshots, multi_investment_periods, transmission_losses, linearized_unit_commitment, **kwargs)
...
    426         )
    427     joiner = self._get_index_joiner(index_cls)
    428     joined_index = joiner(matching_indexes)

ValueError: cannot align objects with join='exact' where index/labels/sizes are not equal along these coordinates (dimensions): 'snapshot' ('snapshot',), 'period' ('snapshot',), 'timestep' ('snapshot',)




multi-investment-optimisation.ipynb
Reply all
Reply to author
Forward
0 new messages