8 #include <stdair/basic/BasConst_General.hpp>
9 #include <stdair/basic/RandomGeneration.hpp>
10 #include <stdair/bom/BomManager.hpp>
11 #include <stdair/bom/FlightDate.hpp>
12 #include <stdair/bom/LegDate.hpp>
13 #include <stdair/bom/SegmentDate.hpp>
14 #include <stdair/bom/LegCabin.hpp>
15 #include <stdair/bom/SegmentCabin.hpp>
16 #include <stdair/bom/FareFamily.hpp>
17 #include <stdair/bom/BookingClass.hpp>
18 #include <stdair/service/Logger.hpp>
30 stdair::LegCabin& ioLegCabin) {
32 const stdair::SegmentCabinList_T lSegmentCabinList =
33 stdair::BomManager::getList<stdair::SegmentCabin> (ioLegCabin);
34 stdair::SegmentCabinList_T::const_iterator itSC = lSegmentCabinList.begin();
35 assert (itSC != lSegmentCabinList.end());
36 const stdair::SegmentCabin* lSegmentCabin_ptr = *itSC;
37 assert (lSegmentCabin_ptr != NULL);
40 const stdair::BookingClassList_T lBookingClassList =
41 stdair::BomManager::getList<stdair::BookingClass> (*lSegmentCabin_ptr);
42 stdair::RandomGeneration lSeedGenerator (stdair::DEFAULT_RANDOM_SEED);
45 for (stdair::BookingClassList_T::const_iterator itBC =
46 lBookingClassList.begin(); itBC != lBookingClassList.end(); ++itBC) {
47 stdair::RandomSeed_T lRandomSeed =
48 lSeedGenerator.generateUniform01 () * 1e9;
49 stdair::BookingClass* lBookingClass_ptr = *itBC;
50 assert (lBookingClass_ptr != NULL);
51 lBookingClass_ptr->generateDemandSamples (K, lRandomSeed);
86 const stdair::LegDateList_T& lLDList =
87 stdair::BomManager::getList<stdair::LegDate> (ioFlightDate);
88 for (stdair::LegDateList_T::const_iterator itLD = lLDList.begin();
89 itLD != lLDList.end(); ++itLD) {
90 stdair::LegDate* lLD_ptr = *itLD;
91 assert (lLD_ptr != NULL);
94 const stdair::LegCabinList_T& lLCList =
95 stdair::BomManager::getList<stdair::LegCabin> (*lLD_ptr);
96 for (stdair::LegCabinList_T::const_iterator itLC = lLCList.begin();
97 itLC != lLCList.end(); ++itLC) {
98 stdair::LegCabin* lLC_ptr = *itLC;
99 assert (lLC_ptr != NULL);
114 stdair::VirtualClassMap_T lVirtualClassMap;
117 const stdair::SegmentCabinList_T lSegmentCabinList =
118 stdair::BomManager::getList<stdair::SegmentCabin> (ioLegCabin);
119 stdair::SegmentCabinList_T::const_iterator itSC = lSegmentCabinList.begin();
120 assert (itSC != lSegmentCabinList.end());
121 const stdair::SegmentCabin* lSegmentCabin_ptr = *itSC;
122 assert (lSegmentCabin_ptr != NULL);
125 const stdair::BookingClassList_T lBookingClassList =
126 stdair::BomManager::getList<stdair::BookingClass> (*lSegmentCabin_ptr);
129 for (stdair::BookingClassList_T::const_iterator itBC =
130 lBookingClassList.begin(); itBC != lBookingClassList.end(); ++itBC) {
131 stdair::BookingClass* lBookingClass_ptr = *itBC;
132 assert (lBookingClass_ptr != NULL);
134 const stdair::Yield_T& lYield = lBookingClass_ptr->getYield();
135 stdair::VirtualClassStruct lVirtualClass (*lBookingClass_ptr);
136 lVirtualClass.setYield (lYield);
137 lVirtualClass.setMean (lBookingClass_ptr->getMean());
138 lVirtualClass.setStdDev (lBookingClass_ptr->getStdDev());
140 lVirtualClassMap.insert (stdair::VirtualClassMap_T::
141 value_type (lYield, lVirtualClass));
145 ioLegCabin.emptyVirtualClassList();
146 for (stdair::VirtualClassMap_T::reverse_iterator itVC =
147 lVirtualClassMap.rbegin(); itVC != lVirtualClassMap.rend(); ++itVC) {
148 stdair::VirtualClassStruct& lVC = itVC->second;
150 ioLegCabin.addVirtualClass (lVC);
157 const bool& iReduceFluctuations) {
158 double lMaxBPVariation = 0.0;
161 if (stdair::BomManager::hasList<stdair::LegDate> (ioFlightDate)) {
162 STDAIR_LOG_DEBUG (
"Optimisation for the flight date: "
163 << ioFlightDate.toString());
164 const stdair::LegDateList_T& lLDList =
165 stdair::BomManager::getList<stdair::LegDate> (ioFlightDate);
166 for (stdair::LegDateList_T::const_iterator itLD = lLDList.begin();
167 itLD != lLDList.end(); ++itLD) {
168 stdair::LegDate* lLD_ptr = *itLD;
169 assert (lLD_ptr != NULL);
172 const stdair::LegCabinList_T& lLCList =
173 stdair::BomManager::getList<stdair::LegCabin> (*lLD_ptr);
174 for (stdair::LegCabinList_T::const_iterator itLC = lLCList.begin();
175 itLC != lLCList.end(); ++itLC) {
176 stdair::LegCabin* lLC_ptr = *itLC;
177 assert (lLC_ptr != NULL);
179 const stdair::BidPrice_T& lCurrentBidPrice =
180 lLC_ptr->getCurrentBidPrice();
181 const stdair::BidPrice_T& lPreviousBidPrice =
182 lLC_ptr->getPreviousBidPrice();
183 assert (lPreviousBidPrice != 0);
184 const double lBPVariation =
185 std::abs((lCurrentBidPrice - lPreviousBidPrice)/lPreviousBidPrice);
186 lMaxBPVariation = std::max(lMaxBPVariation, lBPVariation);
190 return lMaxBPVariation;