diff --git a/src/libs/antares/study/parts/common/cluster_list.cpp b/src/libs/antares/study/parts/common/cluster_list.cpp index 801bfe11ad..3fe23f9fc9 100644 --- a/src/libs/antares/study/parts/common/cluster_list.cpp +++ b/src/libs/antares/study/parts/common/cluster_list.cpp @@ -437,12 +437,30 @@ bool ClusterList::loadReserveParticipations(Area& area, const std::fil auto cluster = area.thermal.list.getClusterByName(tmpClusterName); if (reserve && cluster) { - ThermalClusterReserveParticipation tmpReserveParticipation{reserve.value(), - tmpMaxPower, - tmpParticipationCost, - tmpMaxPowerOff, - tmpParticipationCostOff}; - cluster.value().get()->addReserveParticipation(section.name, tmpReserveParticipation); + bool isClusterMustRun = false; + for (const auto& clusterMustRun : area.thermal.list.each_mustrun_and_enabled()) + { + if (clusterMustRun->id() == cluster.value().get()->id()) + { + isClusterMustRun = true; + break; + } + } + if (!isClusterMustRun) + { + ThermalClusterReserveParticipation tmpReserveParticipation{ reserve.value(), + tmpMaxPower, + tmpParticipationCost, + tmpMaxPowerOff, + tmpParticipationCostOff }; + + + cluster.value().get()->addReserveParticipation(section.name, tmpReserveParticipation); + } + else + { + logs.warning() << area.name << " : " << tmpClusterName << " is mustrun and is participating in capacity reservation " << section.name << ", ignored."; + } } else {