From c469974b4b7a9ecba7ad87dbdd6be780351b02cd Mon Sep 17 00:00:00 2001
From: abdoulbari zakir <32519851+a-zakir@users.noreply.github.com>
Date: Wed, 13 Dec 2023 11:22:31 +0100
Subject: [PATCH] reshape constraint construction (#1815)

* rename method

* rename with respect to the default style

* remove default parameters

* fix

* update

* fix

* ShortTermStorageLevel specific case

* NTC fix

* .
---
 .../optimisation/ProblemMatrixEssential.h     |   2 +-
 .../constraints/AbstractStartUpCostsGroup.h   |   2 +-
 .../constraints/AreaHydroLevelGroup.cpp       |   2 +-
 .../constraints/AreaHydroLevelGroup.h         |   2 +-
 .../constraints/BindingConstraintDayGroup.cpp |   2 +-
 .../constraints/BindingConstraintDayGroup.h   |   2 +-
 .../BindingConstraintWeekGroup.cpp            |   2 +-
 .../constraints/BindingConstraintWeekGroup.h  |   2 +-
 ...sistenceNumberOfDispatchableUnitsGroup.cpp |   2 +-
 ...onsistenceNumberOfDispatchableUnitsGroup.h |   2 +-
 .../constraints/ConstraintBuilder.cpp         | 137 ++++++------------
 .../constraints/ConstraintBuilder.h           |  75 +++-------
 .../constraints/ConstraintGroup.h             |   2 +-
 .../constraints/ExchangeBalanceGroup.cpp      |   2 +-
 .../constraints/ExchangeBalanceGroup.h        |   2 +-
 .../constraints/FinalStockGroup.cpp           |   2 +-
 .../constraints/FinalStockGroup.h             |   2 +-
 .../optimisation/constraints/Group1.cpp       |   2 +-
 src/solver/optimisation/constraints/Group1.h  |   2 +-
 .../constraints/HydraulicSmoothingGroup.cpp   |   2 +-
 .../constraints/HydraulicSmoothingGroup.h     |   2 +-
 .../constraints/HydroPowerGroup.cpp           |   2 +-
 .../constraints/HydroPowerGroup.h             |   2 +-
 .../constraints/MaxPumpingGroup.cpp           |   2 +-
 .../constraints/MaxPumpingGroup.h             |   2 +-
 .../constraints/MinDownTimeGroup.cpp          |   2 +-
 .../constraints/MinDownTimeGroup.h            |   2 +-
 .../constraints/MinMaxHydroPowerGroup.cpp     |   2 +-
 .../constraints/MinMaxHydroPowerGroup.h       |   2 +-
 ...NbDispUnitsMinBoundSinceMinUpTimeGroup.cpp |   2 +-
 .../NbDispUnitsMinBoundSinceMinUpTimeGroup.h  |   2 +-
 .../NbUnitsOutageLessThanNbUnitsStopGroup.cpp |   2 +-
 .../NbUnitsOutageLessThanNbUnitsStopGroup.h   |   2 +-
 .../PMinMaxDispatchableGenerationGroup.cpp    |   2 +-
 .../PMinMaxDispatchableGenerationGroup.h      |   2 +-
 35 files changed, 94 insertions(+), 184 deletions(-)

diff --git a/src/solver/optimisation/ProblemMatrixEssential.h b/src/solver/optimisation/ProblemMatrixEssential.h
index cc1a52f11b..799d7b42c1 100644
--- a/src/solver/optimisation/ProblemMatrixEssential.h
+++ b/src/solver/optimisation/ProblemMatrixEssential.h
@@ -43,7 +43,7 @@ class ProblemMatrixEssential
     {
         for (auto& group : constraintgroups_)
         {
-            group->Build();
+            group->BuildConstraints();
         }
     }
 
diff --git a/src/solver/optimisation/constraints/AbstractStartUpCostsGroup.h b/src/solver/optimisation/constraints/AbstractStartUpCostsGroup.h
index 56885c325f..0d5758f09e 100644
--- a/src/solver/optimisation/constraints/AbstractStartUpCostsGroup.h
+++ b/src/solver/optimisation/constraints/AbstractStartUpCostsGroup.h
@@ -13,7 +13,7 @@ class AbstractStartUpCostsGroup : public ConstraintGroup
     {
     }
 
-        void Build() = 0;
+        void BuildConstraints() = 0;
 
     bool simulation_ = false;
     StartUpCostsData GetStartUpCostsDataFromProblemHebdo();
diff --git a/src/solver/optimisation/constraints/AreaHydroLevelGroup.cpp b/src/solver/optimisation/constraints/AreaHydroLevelGroup.cpp
index 005ce0fecf..04a24721fc 100644
--- a/src/solver/optimisation/constraints/AreaHydroLevelGroup.cpp
+++ b/src/solver/optimisation/constraints/AreaHydroLevelGroup.cpp
@@ -6,7 +6,7 @@ AreaHydroLevelData AreaHydroLevelGroup::GetAreaHydroLevelData()
             .CaracteristiquesHydrauliques = problemeHebdo_->CaracteristiquesHydrauliques};
 }
 
-void AreaHydroLevelGroup::Build()
+void AreaHydroLevelGroup::BuildConstraints()
 {
     auto areaHydroLevelData = GetAreaHydroLevelData();
     AreaHydroLevel areaHydroLevel(builder_, areaHydroLevelData);
diff --git a/src/solver/optimisation/constraints/AreaHydroLevelGroup.h b/src/solver/optimisation/constraints/AreaHydroLevelGroup.h
index 9c66cfc2c3..3fe6cce0fd 100644
--- a/src/solver/optimisation/constraints/AreaHydroLevelGroup.h
+++ b/src/solver/optimisation/constraints/AreaHydroLevelGroup.h
@@ -8,7 +8,7 @@ class AreaHydroLevelGroup : public ConstraintGroup
     using ConstraintGroup::ConstraintGroup;
 
     
-    void Build() override;
+    void BuildConstraints() override;
 
 private:
     AreaHydroLevelData GetAreaHydroLevelData();
diff --git a/src/solver/optimisation/constraints/BindingConstraintDayGroup.cpp b/src/solver/optimisation/constraints/BindingConstraintDayGroup.cpp
index 352917cf58..00370f942f 100644
--- a/src/solver/optimisation/constraints/BindingConstraintDayGroup.cpp
+++ b/src/solver/optimisation/constraints/BindingConstraintDayGroup.cpp
@@ -11,7 +11,7 @@ BindingConstraintDayData BindingConstraintDayGroup::GetBindingConstraintDayDataF
             .NumeroDeJourDuPasDeTemps = problemeHebdo_->NumeroDeJourDuPasDeTemps};
 }
 
-void BindingConstraintDayGroup::Build()
+void BindingConstraintDayGroup::BuildConstraints()
 {
     auto bindingConstraintDayData = GetBindingConstraintDayDataFromProblemHebdo();
     BindingConstraintDay bindingConstraintDay(builder_, bindingConstraintDayData);
diff --git a/src/solver/optimisation/constraints/BindingConstraintDayGroup.h b/src/solver/optimisation/constraints/BindingConstraintDayGroup.h
index 3762ec232c..faacea3b79 100644
--- a/src/solver/optimisation/constraints/BindingConstraintDayGroup.h
+++ b/src/solver/optimisation/constraints/BindingConstraintDayGroup.h
@@ -8,7 +8,7 @@ class BindingConstraintDayGroup : public ConstraintGroup
     using ConstraintGroup::ConstraintGroup;
 
     
-    void Build() override;
+    void BuildConstraints() override;
 
 private:
     BindingConstraintDayData GetBindingConstraintDayDataFromProblemHebdo();
diff --git a/src/solver/optimisation/constraints/BindingConstraintWeekGroup.cpp b/src/solver/optimisation/constraints/BindingConstraintWeekGroup.cpp
index d8e5ba084c..714879d9ae 100644
--- a/src/solver/optimisation/constraints/BindingConstraintWeekGroup.cpp
+++ b/src/solver/optimisation/constraints/BindingConstraintWeekGroup.cpp
@@ -10,7 +10,7 @@ BindingConstraintWeekData BindingConstraintWeekGroup::GetBindingConstraintWeekDa
                 .NumeroDeContrainteDesContraintesCouplantes};
 }
 
-void BindingConstraintWeekGroup::Build()
+void BindingConstraintWeekGroup::BuildConstraints()
 {
     auto bindingConstraintWeekData = GetBindingConstraintWeekDataFromProblemHebdo();
     BindingConstraintWeek bindingConstraintWeek(builder_, bindingConstraintWeekData);
diff --git a/src/solver/optimisation/constraints/BindingConstraintWeekGroup.h b/src/solver/optimisation/constraints/BindingConstraintWeekGroup.h
index 5ab52b2984..0ce3ce7c5c 100644
--- a/src/solver/optimisation/constraints/BindingConstraintWeekGroup.h
+++ b/src/solver/optimisation/constraints/BindingConstraintWeekGroup.h
@@ -8,7 +8,7 @@ class BindingConstraintWeekGroup : public ConstraintGroup
     using ConstraintGroup::ConstraintGroup;
 
     
-    void Build() override;
+    void BuildConstraints() override;
 
 private:
     BindingConstraintWeekData GetBindingConstraintWeekDataFromProblemHebdo();
diff --git a/src/solver/optimisation/constraints/ConsistenceNumberOfDispatchableUnitsGroup.cpp b/src/solver/optimisation/constraints/ConsistenceNumberOfDispatchableUnitsGroup.cpp
index c4de0701df..0a2f62db44 100644
--- a/src/solver/optimisation/constraints/ConsistenceNumberOfDispatchableUnitsGroup.cpp
+++ b/src/solver/optimisation/constraints/ConsistenceNumberOfDispatchableUnitsGroup.cpp
@@ -5,7 +5,7 @@
  * @brief build ConsistenceNumberOfDispatchableUnits constraints with
  * respect to default order
  */
-void ConsistenceNumberOfDispatchableUnitsGroup::Build()
+void ConsistenceNumberOfDispatchableUnitsGroup::BuildConstraints()
 {
     auto data = GetStartUpCostsDataFromProblemHebdo();
     ConsistenceNumberOfDispatchableUnits consistenceNumberOfDispatchableUnits(builder_, data);
diff --git a/src/solver/optimisation/constraints/ConsistenceNumberOfDispatchableUnitsGroup.h b/src/solver/optimisation/constraints/ConsistenceNumberOfDispatchableUnitsGroup.h
index 4c042aee13..aef716a127 100644
--- a/src/solver/optimisation/constraints/ConsistenceNumberOfDispatchableUnitsGroup.h
+++ b/src/solver/optimisation/constraints/ConsistenceNumberOfDispatchableUnitsGroup.h
@@ -12,5 +12,5 @@ class ConsistenceNumberOfDispatchableUnitsGroup : public AbstractStartUpCostsGro
 public:
     using AbstractStartUpCostsGroup::AbstractStartUpCostsGroup;
 
-    void Build() override;
+    void BuildConstraints() override;
 };
\ No newline at end of file
diff --git a/src/solver/optimisation/constraints/ConstraintBuilder.cpp b/src/solver/optimisation/constraints/ConstraintBuilder.cpp
index dbbba3310c..b9bb7bf0fc 100644
--- a/src/solver/optimisation/constraints/ConstraintBuilder.cpp
+++ b/src/solver/optimisation/constraints/ConstraintBuilder.cpp
@@ -54,185 +54,132 @@ ConstraintBuilder& ConstraintBuilder::DispatchableProduction(unsigned int index,
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::NumberOfDispatchableUnits(unsigned int index,
-                                                                      double coeff,
-                                                                      int offset,
-                                                                      int delta)
+ConstraintBuilder& ConstraintBuilder::NumberOfDispatchableUnits(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).NumberOfDispatchableUnits(index), coeff);
+    AddVariable(GetVariableManager(0, 0).NumberOfDispatchableUnits(index), coeff);
     return *this;
 }
 
 ConstraintBuilder& ConstraintBuilder::NumberStoppingDispatchableUnits(unsigned int index,
-                                                                            double coeff,
-                                                                            int offset,
-                                                                            int delta)
+                                                                      double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).NumberStoppingDispatchableUnits(index), coeff);
+    AddVariable(GetVariableManager(0, 0).NumberStoppingDispatchableUnits(index), coeff);
     return *this;
 }
 
 ConstraintBuilder& ConstraintBuilder::NumberStartingDispatchableUnits(unsigned int index,
-                                                                            double coeff,
-                                                                            int offset,
-                                                                            int delta)
+                                                                      double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).NumberStartingDispatchableUnits(index), coeff);
+    AddVariable(GetVariableManager(0, 0).NumberStartingDispatchableUnits(index), coeff);
     return *this;
 }
 
 ConstraintBuilder& ConstraintBuilder::NumberBreakingDownDispatchableUnits(unsigned int index,
-                                                                                double coeff,
-                                                                                int offset,
-                                                                                int delta)
+                                                                          double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).NumberBreakingDownDispatchableUnits(index),
-                coeff);
+    AddVariable(GetVariableManager(0, 0).NumberBreakingDownDispatchableUnits(index), coeff);
     return *this;
 }
 
 ConstraintBuilder& ConstraintBuilder::NTCDirect(unsigned int index,
-                                                      double coeff,
-                                                      int offset,
-                                                      int delta)
+                                                double coeff,
+                                                int offset,
+                                                int delta)
 {
     AddVariable(GetVariableManager(offset, delta).NTCDirect(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::IntercoDirectCost(unsigned int index,
-                                                              double coeff,
-                                                              int offset,
-                                                              int delta)
+ConstraintBuilder& ConstraintBuilder::IntercoDirectCost(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).IntercoDirectCost(index), coeff);
+    AddVariable(GetVariableManager(0, 0).IntercoDirectCost(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::IntercoIndirectCost(unsigned int index,
-                                                                double coeff,
-                                                                int offset,
-                                                                int delta)
+ConstraintBuilder& ConstraintBuilder::IntercoIndirectCost(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).IntercoIndirectCost(index), coeff);
+    AddVariable(GetVariableManager(0, 0).IntercoIndirectCost(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::ShortTermStorageInjection(unsigned int index,
-                                                                      double coeff,
-                                                                      int offset,
-                                                                      int delta)
+ConstraintBuilder& ConstraintBuilder::ShortTermStorageInjection(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).ShortTermStorageInjection(index), coeff);
+    AddVariable(GetVariableManager(0, 0).ShortTermStorageInjection(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::ShortTermStorageWithdrawal(unsigned int index,
-                                                                       double coeff,
-                                                                       int offset,
-                                                                       int delta)
+ConstraintBuilder& ConstraintBuilder::ShortTermStorageWithdrawal(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).ShortTermStorageWithdrawal(index), coeff);
+    AddVariable(GetVariableManager(0, 0).ShortTermStorageWithdrawal(index), coeff);
     return *this;
 }
 
 ConstraintBuilder& ConstraintBuilder::ShortTermStorageLevel(unsigned int index,
-                                                                  double coeff,
-                                                                  int offset,
-                                                                  int delta)
+                                                            double coeff,
+                                                            int offset,
+                                                            int delta)
 {
     AddVariable(GetVariableManager(offset, delta).ShortTermStorageLevel(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::HydProd(unsigned int index,
-                                                    double coeff,
-                                                    int offset,
-                                                    int delta)
+ConstraintBuilder& ConstraintBuilder::HydProd(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).HydProd(index), coeff);
+    AddVariable(GetVariableManager(0, 0).HydProd(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::HydProdDown(unsigned int index,
-                                                        double coeff,
-                                                        int offset,
-                                                        int delta)
+ConstraintBuilder& ConstraintBuilder::HydProdDown(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).HydProdDown(index), coeff);
+    AddVariable(GetVariableManager(0, 0).HydProdDown(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::HydProdUp(unsigned int index,
-                                                      double coeff,
-                                                      int offset,
-                                                      int delta)
+ConstraintBuilder& ConstraintBuilder::HydProdUp(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).HydProdUp(index), coeff);
+    AddVariable(GetVariableManager(0, 0).HydProdUp(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::Pumping(unsigned int index,
-                                                    double coeff,
-                                                    int offset,
-                                                    int delta)
+ConstraintBuilder& ConstraintBuilder::Pumping(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).Pumping(index), coeff);
+    AddVariable(GetVariableManager(0, 0).Pumping(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::HydroLevel(unsigned int index,
-                                                       double coeff,
-                                                       int offset,
-                                                       int delta)
+ConstraintBuilder& ConstraintBuilder::HydroLevel(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).HydroLevel(index), coeff);
+    AddVariable(GetVariableManager(0, 0).HydroLevel(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::Overflow(unsigned int index,
-                                                     double coeff,
-                                                     int offset,
-                                                     int delta)
+ConstraintBuilder& ConstraintBuilder::Overflow(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).Overflow(index), coeff);
+    AddVariable(GetVariableManager(0, 0).Overflow(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::FinalStorage(unsigned int index,
-                                                         double coeff,
-                                                         int offset,
-                                                         int delta)
+ConstraintBuilder& ConstraintBuilder::FinalStorage(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).FinalStorage(index), coeff);
+    AddVariable(GetVariableManager(0, 0).FinalStorage(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::PositiveUnsuppliedEnergy(unsigned int index,
-                                                                     double coeff,
-                                                                     int offset,
-                                                                     int delta)
+ConstraintBuilder& ConstraintBuilder::PositiveUnsuppliedEnergy(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).PositiveUnsuppliedEnergy(index), coeff);
+    AddVariable(GetVariableManager(0, 0).PositiveUnsuppliedEnergy(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::NegativeUnsuppliedEnergy(unsigned int index,
-                                                                     double coeff,
-                                                                     int offset,
-                                                                     int delta)
+ConstraintBuilder& ConstraintBuilder::NegativeUnsuppliedEnergy(unsigned int index, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).NegativeUnsuppliedEnergy(index), coeff);
+    AddVariable(GetVariableManager(0, 0).NegativeUnsuppliedEnergy(index), coeff);
     return *this;
 }
 
-ConstraintBuilder& ConstraintBuilder::LayerStorage(unsigned area,
-                                                         unsigned layer,
-                                                         double coeff,
-                                                         int offset,
-                                                         int delta)
+ConstraintBuilder& ConstraintBuilder::LayerStorage(unsigned area, unsigned layer, double coeff)
 {
-    AddVariable(GetVariableManager(offset, delta).LayerStorage(area, layer), coeff);
+    AddVariable(GetVariableManager(0, 0).LayerStorage(area, layer), coeff);
     return *this;
 }
 
diff --git a/src/solver/optimisation/constraints/ConstraintBuilder.h b/src/solver/optimisation/constraints/ConstraintBuilder.h
index 7f043e2107..c9709652af 100644
--- a/src/solver/optimisation/constraints/ConstraintBuilder.h
+++ b/src/solver/optimisation/constraints/ConstraintBuilder.h
@@ -205,85 +205,48 @@ class ConstraintBuilder
                                               int offset = 0,
                                               int delta = 0);
 
-    ConstraintBuilder& NumberOfDispatchableUnits(unsigned int index,
-                                                 double coeff,
-                                                 int offset = 0,
-                                                 int delta = 0);
+    ConstraintBuilder& NumberOfDispatchableUnits(unsigned int index, double coeff);
 
-    ConstraintBuilder& NumberStoppingDispatchableUnits(unsigned int index,
-                                                       double coeff,
-                                                       int offset = 0,
-                                                       int delta = 0);
+    ConstraintBuilder& NumberStoppingDispatchableUnits(unsigned int index, double coeff);
 
-    ConstraintBuilder& NumberStartingDispatchableUnits(unsigned int index,
-                                                       double coeff,
-                                                       int offset = 0,
-                                                       int delta = 0);
+    ConstraintBuilder& NumberStartingDispatchableUnits(unsigned int index, double coeff);
 
-    ConstraintBuilder& NumberBreakingDownDispatchableUnits(unsigned int index,
-                                                           double coeff,
-                                                           int offset = 0,
-
-                                                           int delta = 0);
+    ConstraintBuilder& NumberBreakingDownDispatchableUnits(unsigned int index, double coeff);
 
     ConstraintBuilder& NTCDirect(unsigned int index, double coeff, int offset = 0, int delta = 0);
 
-    ConstraintBuilder& IntercoDirectCost(unsigned int index,
-                                         double coeff,
-                                         int offset = 0,
-                                         int delta = 0);
+    ConstraintBuilder& IntercoDirectCost(unsigned int index, double coeff);
 
-    ConstraintBuilder& IntercoIndirectCost(unsigned int index,
-                                           double coeff,
-                                           int offset = 0,
-                                           int delta = 0);
+    ConstraintBuilder& IntercoIndirectCost(unsigned int index, double coeff);
 
-    ConstraintBuilder& ShortTermStorageInjection(unsigned int index,
-                                                 double coeff,
-                                                 int offset = 0,
-                                                 int delta = 0);
+    ConstraintBuilder& ShortTermStorageInjection(unsigned int index, double coeff);
 
-    ConstraintBuilder& ShortTermStorageWithdrawal(unsigned int index,
-                                                  double coeff,
-                                                  int offset = 0,
-                                                  int delta = 0);
+    ConstraintBuilder& ShortTermStorageWithdrawal(unsigned int index, double coeff);
 
     ConstraintBuilder& ShortTermStorageLevel(unsigned int index,
                                              double coeff,
                                              int offset = 0,
                                              int delta = 0);
 
-    ConstraintBuilder& HydProd(unsigned int index, double coeff, int offset = 0, int delta = 0);
+    ConstraintBuilder& HydProd(unsigned int index, double coeff);
+
+    ConstraintBuilder& HydProdDown(unsigned int index, double coeff);
 
-    ConstraintBuilder& HydProdDown(unsigned int index, double coeff, int offset = 0, int delta = 0);
+    ConstraintBuilder& HydProdUp(unsigned int index, double coeff);
 
-    ConstraintBuilder& HydProdUp(unsigned int index, double coeff, int offset = 0, int delta = 0);
+    ConstraintBuilder& Pumping(unsigned int index, double coeff);
 
-    ConstraintBuilder& Pumping(unsigned int index, double coeff, int offset = 0, int delta = 0);
+    ConstraintBuilder& HydroLevel(unsigned int index, double coeff);
 
-    ConstraintBuilder& HydroLevel(unsigned int index, double coeff, int offset = 0, int delta = 0);
+    ConstraintBuilder& Overflow(unsigned int index, double coeff);
 
-    ConstraintBuilder& Overflow(unsigned int index, double coeff, int offset = 0, int delta = 0);
+    ConstraintBuilder& FinalStorage(unsigned int index, double coeff);
 
-    ConstraintBuilder& FinalStorage(unsigned int index,
-                                    double coeff,
-                                    int offset = 0,
-                                    int delta = 0);
+    ConstraintBuilder& PositiveUnsuppliedEnergy(unsigned int index, double coeff);
 
-    ConstraintBuilder& PositiveUnsuppliedEnergy(unsigned int index,
-                                                double coeff,
-                                                int offset = 0,
-                                                int delta = 0);
-    ConstraintBuilder& NegativeUnsuppliedEnergy(unsigned int index,
-                                                double coeff,
-                                                int offset = 0,
-                                                int delta = 0);
+    ConstraintBuilder& NegativeUnsuppliedEnergy(unsigned int index, double coeff);
 
-    ConstraintBuilder& LayerStorage(unsigned area,
-                                    unsigned layer,
-                                    double coeff,
-                                    int offset = 0,
-                                    int delta = 0);
+    ConstraintBuilder& LayerStorage(unsigned area, unsigned layer, double coeff);
     //@}
 
     class ConstraintBuilderInvalidOperator : public std::runtime_error
diff --git a/src/solver/optimisation/constraints/ConstraintGroup.h b/src/solver/optimisation/constraints/ConstraintGroup.h
index bfc36a9238..559839b431 100644
--- a/src/solver/optimisation/constraints/ConstraintGroup.h
+++ b/src/solver/optimisation/constraints/ConstraintGroup.h
@@ -12,7 +12,7 @@ class ConstraintGroup
     {
     }
 
-    virtual void Build() = 0;
+    virtual void BuildConstraints() = 0;
     PROBLEME_HEBDO* problemeHebdo_;
     ConstraintBuilder& builder_;
 };
\ No newline at end of file
diff --git a/src/solver/optimisation/constraints/ExchangeBalanceGroup.cpp b/src/solver/optimisation/constraints/ExchangeBalanceGroup.cpp
index b6d56c78fb..e1601ef050 100644
--- a/src/solver/optimisation/constraints/ExchangeBalanceGroup.cpp
+++ b/src/solver/optimisation/constraints/ExchangeBalanceGroup.cpp
@@ -9,7 +9,7 @@ ExchangeBalanceData ExchangeBalanceGroup::GetExchangeBalanceDataFromProblemHebdo
             .NumeroDeContrainteDeSoldeDEchange = problemeHebdo_->NumeroDeContrainteDeSoldeDEchange};
 }
 
-void ExchangeBalanceGroup::Build()
+void ExchangeBalanceGroup::BuildConstraints()
 {
     auto data = GetExchangeBalanceDataFromProblemHebdo();
     ExchangeBalance exchangeBalance(builder_, data);
diff --git a/src/solver/optimisation/constraints/ExchangeBalanceGroup.h b/src/solver/optimisation/constraints/ExchangeBalanceGroup.h
index a0f46df960..0e5d55cc00 100644
--- a/src/solver/optimisation/constraints/ExchangeBalanceGroup.h
+++ b/src/solver/optimisation/constraints/ExchangeBalanceGroup.h
@@ -7,7 +7,7 @@ class ExchangeBalanceGroup : public ConstraintGroup
 public:
     using ConstraintGroup::ConstraintGroup;
 
-    void Build() override;
+    void BuildConstraints() override;
 
 private:
     ExchangeBalanceData GetExchangeBalanceDataFromProblemHebdo();
diff --git a/src/solver/optimisation/constraints/FinalStockGroup.cpp b/src/solver/optimisation/constraints/FinalStockGroup.cpp
index 5df2727c83..cd1238db93 100644
--- a/src/solver/optimisation/constraints/FinalStockGroup.cpp
+++ b/src/solver/optimisation/constraints/FinalStockGroup.cpp
@@ -14,7 +14,7 @@ FinalStockExpressionData FinalStockGroup::GetFinalStockExpressionData()
             = problemeHebdo_->NumeroDeContrainteExpressionStockFinal};
 }
 
-void FinalStockGroup::Build()
+void FinalStockGroup::BuildConstraints()
 {
     auto finalStockEquivalentData = GetFinalStockEquivalentData();
     FinalStockEquivalent finalStockEquivalent(builder_, finalStockEquivalentData);
diff --git a/src/solver/optimisation/constraints/FinalStockGroup.h b/src/solver/optimisation/constraints/FinalStockGroup.h
index b433b89c62..3537bdd2ad 100644
--- a/src/solver/optimisation/constraints/FinalStockGroup.h
+++ b/src/solver/optimisation/constraints/FinalStockGroup.h
@@ -9,7 +9,7 @@ class FinalStockGroup : public ConstraintGroup
     using ConstraintGroup::ConstraintGroup;
 
     
-    void Build() override;
+    void BuildConstraints() override;
 
 private:
     FinalStockEquivalentData GetFinalStockEquivalentData();
diff --git a/src/solver/optimisation/constraints/Group1.cpp b/src/solver/optimisation/constraints/Group1.cpp
index 2cec2c553a..101e06b25e 100644
--- a/src/solver/optimisation/constraints/Group1.cpp
+++ b/src/solver/optimisation/constraints/Group1.cpp
@@ -42,7 +42,7 @@ BindingConstraintHourData Group1::GetBindingConstraintHourData()
        .PaliersThermiquesDuPays = problemeHebdo_->PaliersThermiquesDuPays};
 }
 
-void Group1::Build()
+void Group1::BuildConstraints()
 {
     auto areaBalanceData = GetAreaBalanceData();
     AreaBalance areaBalance(builder_, areaBalanceData);
diff --git a/src/solver/optimisation/constraints/Group1.h b/src/solver/optimisation/constraints/Group1.h
index 4bab69fea2..a7df4606dd 100644
--- a/src/solver/optimisation/constraints/Group1.h
+++ b/src/solver/optimisation/constraints/Group1.h
@@ -11,7 +11,7 @@ class Group1 : public ConstraintGroup
 public:
     using ConstraintGroup::ConstraintGroup;
 
-        void Build() override;
+    void BuildConstraints() override;
 
 private:
     AreaBalanceData GetAreaBalanceData();
diff --git a/src/solver/optimisation/constraints/HydraulicSmoothingGroup.cpp b/src/solver/optimisation/constraints/HydraulicSmoothingGroup.cpp
index 1e1772ebc0..048a9ea161 100644
--- a/src/solver/optimisation/constraints/HydraulicSmoothingGroup.cpp
+++ b/src/solver/optimisation/constraints/HydraulicSmoothingGroup.cpp
@@ -3,7 +3,7 @@
 #include "HydroPowerSmoothingUsingVariationMaxDown.h"
 #include "HydroPowerSmoothingUsingVariationMaxUp.h"
 
-void HydraulicSmoothingGroup::Build()
+void HydraulicSmoothingGroup::BuildConstraints()
 {
     HydroPowerSmoothingUsingVariationSum hydroPowerSmoothingUsingVariationSum(builder_);
     HydroPowerSmoothingUsingVariationMaxDown hydroPowerSmoothingUsingVariationMaxDown(builder_);
diff --git a/src/solver/optimisation/constraints/HydraulicSmoothingGroup.h b/src/solver/optimisation/constraints/HydraulicSmoothingGroup.h
index 59e6fd8dac..d55d624aa7 100644
--- a/src/solver/optimisation/constraints/HydraulicSmoothingGroup.h
+++ b/src/solver/optimisation/constraints/HydraulicSmoothingGroup.h
@@ -7,7 +7,7 @@ class HydraulicSmoothingGroup : public ConstraintGroup
     using ConstraintGroup::ConstraintGroup;
 
     
-    void Build() override;
+    void BuildConstraints() override;
 
 private:
 };
\ No newline at end of file
diff --git a/src/solver/optimisation/constraints/HydroPowerGroup.cpp b/src/solver/optimisation/constraints/HydroPowerGroup.cpp
index 5c90569d43..07aa88ab24 100644
--- a/src/solver/optimisation/constraints/HydroPowerGroup.cpp
+++ b/src/solver/optimisation/constraints/HydroPowerGroup.cpp
@@ -9,7 +9,7 @@ HydroPowerData HydroPowerGroup::GetHydroPowerDataFromProblemHebdo()
       .NumeroDeContrainteEnergieHydraulique = problemeHebdo_->NumeroDeContrainteEnergieHydraulique};
 }
 
-void HydroPowerGroup::Build()
+void HydroPowerGroup::BuildConstraints()
 {
     auto hydroPowerData = GetHydroPowerDataFromProblemHebdo();
     HydroPower hydroPower(builder_, hydroPowerData);
diff --git a/src/solver/optimisation/constraints/HydroPowerGroup.h b/src/solver/optimisation/constraints/HydroPowerGroup.h
index e5e8d09ec6..474454e8ec 100644
--- a/src/solver/optimisation/constraints/HydroPowerGroup.h
+++ b/src/solver/optimisation/constraints/HydroPowerGroup.h
@@ -8,7 +8,7 @@ class HydroPowerGroup : public ConstraintGroup
     using ConstraintGroup::ConstraintGroup;
 
     
-    void Build() override;
+    void BuildConstraints() override;
 
 private:
     HydroPowerData GetHydroPowerDataFromProblemHebdo();
diff --git a/src/solver/optimisation/constraints/MaxPumpingGroup.cpp b/src/solver/optimisation/constraints/MaxPumpingGroup.cpp
index 9fd4f41b1c..455b5a72d2 100644
--- a/src/solver/optimisation/constraints/MaxPumpingGroup.cpp
+++ b/src/solver/optimisation/constraints/MaxPumpingGroup.cpp
@@ -6,7 +6,7 @@ MaxPumpingData MaxPumpingGroup::GetMaxPumpingData()
             .NumeroDeContrainteMaxPompage = problemeHebdo_->NumeroDeContrainteMaxPompage};
 }
 
-void MaxPumpingGroup::Build()
+void MaxPumpingGroup::BuildConstraints()
 {
     auto maxPumpingData = GetMaxPumpingData();
     MaxPumping maxPumping(builder_, maxPumpingData);
diff --git a/src/solver/optimisation/constraints/MaxPumpingGroup.h b/src/solver/optimisation/constraints/MaxPumpingGroup.h
index 149ff50035..58494d921f 100644
--- a/src/solver/optimisation/constraints/MaxPumpingGroup.h
+++ b/src/solver/optimisation/constraints/MaxPumpingGroup.h
@@ -8,7 +8,7 @@ class MaxPumpingGroup : public ConstraintGroup
     using ConstraintGroup::ConstraintGroup;
 
     
-    void Build() override;
+    void BuildConstraints() override;
 
 private:
     MaxPumpingData GetMaxPumpingData();
diff --git a/src/solver/optimisation/constraints/MinDownTimeGroup.cpp b/src/solver/optimisation/constraints/MinDownTimeGroup.cpp
index b3fa30da05..33ebf48c8e 100644
--- a/src/solver/optimisation/constraints/MinDownTimeGroup.cpp
+++ b/src/solver/optimisation/constraints/MinDownTimeGroup.cpp
@@ -11,7 +11,7 @@ MinDownTimeData MinDownTimeGroup::GetMinDownTimeDataFromProblemHebdo()
  * @brief build MinDownTime constraints with
  * respect to default order
  */
-void MinDownTimeGroup::Build()
+void MinDownTimeGroup::BuildConstraints()
 {
     auto data = GetMinDownTimeDataFromProblemHebdo();
     MinDownTime minDownTime(builder_, data);
diff --git a/src/solver/optimisation/constraints/MinDownTimeGroup.h b/src/solver/optimisation/constraints/MinDownTimeGroup.h
index 886dfb7f2b..b51f7424a7 100644
--- a/src/solver/optimisation/constraints/MinDownTimeGroup.h
+++ b/src/solver/optimisation/constraints/MinDownTimeGroup.h
@@ -13,7 +13,7 @@ class MinDownTimeGroup : public AbstractStartUpCostsGroup
 public:
     using AbstractStartUpCostsGroup::AbstractStartUpCostsGroup;
 
-        void Build() override;
+        void BuildConstraints() override;
 
 private:
     MinDownTimeData GetMinDownTimeDataFromProblemHebdo();
diff --git a/src/solver/optimisation/constraints/MinMaxHydroPowerGroup.cpp b/src/solver/optimisation/constraints/MinMaxHydroPowerGroup.cpp
index 924c5c1242..e52cd0f6c8 100644
--- a/src/solver/optimisation/constraints/MinMaxHydroPowerGroup.cpp
+++ b/src/solver/optimisation/constraints/MinMaxHydroPowerGroup.cpp
@@ -17,7 +17,7 @@ MaxHydroPowerData MinMaxHydroPowerGroup::GetMaxHydroPowerData()
             = problemeHebdo_->NumeroDeContrainteMaxEnergieHydraulique};
 }
 
-void MinMaxHydroPowerGroup::Build()
+void MinMaxHydroPowerGroup::BuildConstraints()
 {
     auto minHydroPowerData = GetMinHydroPowerData();
     MinHydroPower minHydroPower(builder_, minHydroPowerData);
diff --git a/src/solver/optimisation/constraints/MinMaxHydroPowerGroup.h b/src/solver/optimisation/constraints/MinMaxHydroPowerGroup.h
index 78678c38d0..516202c10f 100644
--- a/src/solver/optimisation/constraints/MinMaxHydroPowerGroup.h
+++ b/src/solver/optimisation/constraints/MinMaxHydroPowerGroup.h
@@ -8,7 +8,7 @@ class MinMaxHydroPowerGroup : public ConstraintGroup
 public:
     using ConstraintGroup::ConstraintGroup;
 
-        void Build() override;
+        void BuildConstraints() override;
 
 private:
     MinHydroPowerData GetMinHydroPowerData();
diff --git a/src/solver/optimisation/constraints/NbDispUnitsMinBoundSinceMinUpTimeGroup.cpp b/src/solver/optimisation/constraints/NbDispUnitsMinBoundSinceMinUpTimeGroup.cpp
index 1aa1683220..ef47e277ee 100644
--- a/src/solver/optimisation/constraints/NbDispUnitsMinBoundSinceMinUpTimeGroup.cpp
+++ b/src/solver/optimisation/constraints/NbDispUnitsMinBoundSinceMinUpTimeGroup.cpp
@@ -12,7 +12,7 @@ NbDispUnitsMinBoundSinceMinUpTimeData
  * @brief build NbUnitsOutageLessThanNbUnitsStopGroup constraints with
  * respect to default order
  */
-void NbDispUnitsMinBoundSinceMinUpTimeGroup::Build()
+void NbDispUnitsMinBoundSinceMinUpTimeGroup::BuildConstraints()
 {
     auto data = GetNbDispUnitsMinBoundSinceMinUpTimeDataFromProblemHebdo();
     NbDispUnitsMinBoundSinceMinUpTime nbDispUnitsMinBoundSinceMinUpTime(builder_, data);
diff --git a/src/solver/optimisation/constraints/NbDispUnitsMinBoundSinceMinUpTimeGroup.h b/src/solver/optimisation/constraints/NbDispUnitsMinBoundSinceMinUpTimeGroup.h
index 653e8a5460..547b003e2f 100644
--- a/src/solver/optimisation/constraints/NbDispUnitsMinBoundSinceMinUpTimeGroup.h
+++ b/src/solver/optimisation/constraints/NbDispUnitsMinBoundSinceMinUpTimeGroup.h
@@ -13,7 +13,7 @@ class NbDispUnitsMinBoundSinceMinUpTimeGroup : public AbstractStartUpCostsGroup
 public:
     using AbstractStartUpCostsGroup::AbstractStartUpCostsGroup;
 
-        void Build() override;
+        void BuildConstraints() override;
 
 private:
     NbDispUnitsMinBoundSinceMinUpTimeData
diff --git a/src/solver/optimisation/constraints/NbUnitsOutageLessThanNbUnitsStopGroup.cpp b/src/solver/optimisation/constraints/NbUnitsOutageLessThanNbUnitsStopGroup.cpp
index 207da519d3..1300f8d343 100644
--- a/src/solver/optimisation/constraints/NbUnitsOutageLessThanNbUnitsStopGroup.cpp
+++ b/src/solver/optimisation/constraints/NbUnitsOutageLessThanNbUnitsStopGroup.cpp
@@ -12,7 +12,7 @@ NbUnitsOutageLessThanNbUnitsStopData
  * @brief build NbUnitsOutageLessThanNbUnitsStopGroup constraints with
  * respect to default order
  */
-void NbUnitsOutageLessThanNbUnitsStopGroup::Build()
+void NbUnitsOutageLessThanNbUnitsStopGroup::BuildConstraints()
 {
     auto data = GetNbUnitsOutageLessThanNbUnitsStopDataFromProblemHebdo();
     NbUnitsOutageLessThanNbUnitsStop nbUnitsOutageLessThanNbUnitsStop(builder_, data);
diff --git a/src/solver/optimisation/constraints/NbUnitsOutageLessThanNbUnitsStopGroup.h b/src/solver/optimisation/constraints/NbUnitsOutageLessThanNbUnitsStopGroup.h
index 849b414c6d..21854003df 100644
--- a/src/solver/optimisation/constraints/NbUnitsOutageLessThanNbUnitsStopGroup.h
+++ b/src/solver/optimisation/constraints/NbUnitsOutageLessThanNbUnitsStopGroup.h
@@ -13,7 +13,7 @@ class NbUnitsOutageLessThanNbUnitsStopGroup : public AbstractStartUpCostsGroup
 public:
     using AbstractStartUpCostsGroup::AbstractStartUpCostsGroup;
 
-        void Build() override;
+        void BuildConstraints() override;
 
 private:
     NbUnitsOutageLessThanNbUnitsStopData GetNbUnitsOutageLessThanNbUnitsStopDataFromProblemHebdo();
diff --git a/src/solver/optimisation/constraints/PMinMaxDispatchableGenerationGroup.cpp b/src/solver/optimisation/constraints/PMinMaxDispatchableGenerationGroup.cpp
index a1245589d0..fd2b2e98ee 100644
--- a/src/solver/optimisation/constraints/PMinMaxDispatchableGenerationGroup.cpp
+++ b/src/solver/optimisation/constraints/PMinMaxDispatchableGenerationGroup.cpp
@@ -4,7 +4,7 @@
  * @brief build P{min,max}DispatchableGeneration constraints with
  * respect to default order
  */
-void PMinMaxDispatchableGenerationGroup::Build()
+void PMinMaxDispatchableGenerationGroup::BuildConstraints()
 {
     auto data = GetStartUpCostsDataFromProblemHebdo();
     PMaxDispatchableGeneration pMaxDispatchableGeneration(builder_, data);
diff --git a/src/solver/optimisation/constraints/PMinMaxDispatchableGenerationGroup.h b/src/solver/optimisation/constraints/PMinMaxDispatchableGenerationGroup.h
index c46b4be9d6..af7405a1a6 100644
--- a/src/solver/optimisation/constraints/PMinMaxDispatchableGenerationGroup.h
+++ b/src/solver/optimisation/constraints/PMinMaxDispatchableGenerationGroup.h
@@ -13,5 +13,5 @@ class PMinMaxDispatchableGenerationGroup : public AbstractStartUpCostsGroup
 public:
     using AbstractStartUpCostsGroup::AbstractStartUpCostsGroup;
 
-        void Build() override;
+        void BuildConstraints() override;
 };
\ No newline at end of file