00001 // ////////////////////////////////////////////////////////////////////// 00002 // Import section 00003 // ////////////////////////////////////////////////////////////////////// 00004 // C 00005 #include <assert.h> 00006 // STL 00007 #include <iostream> 00008 #include <cmath> 00009 #include <iomanip> 00010 // RMOL 00011 #include <rmol/bom/BucketHolder.hpp> 00012 //#include <rmol/bom/Resource.hpp> 00013 #include <rmol/bom/MCOptimiser.hpp> 00014 #include <rmol/bom/Emsr.hpp> 00015 #include <rmol/bom/DPOptimiser.hpp> 00016 #include <rmol/field/FldYieldRange.hpp> 00017 #include <rmol/field/FldDistributionParameters.hpp> 00018 #include <rmol/factory/FacPartialSumHolder.hpp> 00019 #include <rmol/factory/FacPartialSumHolderHolder.hpp> 00020 #include <rmol/factory/FacDemand.hpp> 00021 #include <rmol/factory/FacBucket.hpp> 00022 #include <rmol/command/Optimiser.hpp> 00023 00024 namespace RMOL { 00025 00026 // ////////////////////////////////////////////////////////////////////// 00027 void Optimiser:: 00028 optimalOptimisationByMCIntegration (const int K, 00029 const ResourceCapacity_T iCabinCapacity, 00030 BucketHolder& ioBucketHolder) { 00031 // Retrieve the BucketHolder 00032 // BucketHolder& ioBucketHolder = ioResource.getBucketHolder(); 00033 00034 // Number of classes/buckets: n 00035 const short nbOfClasses = ioBucketHolder.getSize(); 00036 00037 // Create a holder for the list of Partial Sum Lists 00038 PartialSumHolderHolder& aPartialSumHolderHolder = 00039 FacPartialSumHolderHolder::instance().create(); 00040 00047 for (short j=0 ; j <= nbOfClasses - 1; j++) { 00048 PartialSumHolder& aPartialSumList = 00049 FacPartialSumHolder::instance().create (); 00050 00051 FacPartialSumHolderHolder::instance(). 00052 addPartialSumHolder (aPartialSumHolderHolder, aPartialSumList); 00053 } 00054 00055 // Call the class performing the actual algorithm 00056 MCOptimiser::optimalOptimisationByMCIntegration (K, iCabinCapacity, 00057 ioBucketHolder, 00058 aPartialSumHolderHolder); 00059 } 00060 00061 // ////////////////////////////////////////////////////////////////////// 00062 void Optimiser:: 00063 optimalOptimisationByDP (const ResourceCapacity_T iCabinCapacity, 00064 BucketHolder& ioBucketHolder) { 00065 BidPriceVector_T lBidPriceVector; 00066 DPOptimiser::optimalOptimisationByDP (iCabinCapacity, 00067 ioBucketHolder, 00068 lBidPriceVector); 00069 std::cout << "BVP: "; 00070 unsigned int size = lBidPriceVector.size(); 00071 00072 for (unsigned int i = 0; i < size; ++i) { 00073 const double bidPrice = lBidPriceVector.at(i); 00074 std::cout << std::fixed << std::setprecision (2) << bidPrice << " "; 00075 } 00076 std::cout << std::endl; 00077 } 00078 00079 // ////////////////////////////////////////////////////////////////////// 00080 void Optimiser:: 00081 heuristicOptimisationByEmsr (const ResourceCapacity_T iCabinCapacity, 00082 BucketHolder& ioBucketHolder, 00083 BidPriceVector_T& ioBidPriceVector) { 00084 Emsr::heuristicOptimisationByEmsr (iCabinCapacity, 00085 ioBucketHolder, 00086 ioBidPriceVector); 00087 } 00088 00089 // ////////////////////////////////////////////////////////////////////// 00090 void Optimiser:: 00091 heuristicOptimisationByEmsrA (const ResourceCapacity_T iCabinCapacity, 00092 BucketHolder& ioBucketHolder) { 00093 Emsr::heuristicOptimisationByEmsrA (iCabinCapacity, ioBucketHolder); 00094 } 00095 00096 // ////////////////////////////////////////////////////////////////////// 00097 void Optimiser:: 00098 heuristicOptimisationByEmsrB (const ResourceCapacity_T iCabinCapacity, 00099 BucketHolder& ioBucketHolder) { 00100 00101 // Create the aggregated class/bucket. 00102 FldYieldRange aYieldRange = FldYieldRange::FldYieldRange (0); 00103 FldDistributionParameters aDistribParams = 00104 FldDistributionParameters::FldDistributionParameters (0,0); 00105 Demand& aDemand = 00106 FacDemand::instance().create (aDistribParams, aYieldRange); 00107 Bucket& aBucket = FacBucket::instance().create (aYieldRange, aDemand); 00108 00109 Emsr::heuristicOptimisationByEmsrB (iCabinCapacity, 00110 ioBucketHolder, 00111 aBucket); 00112 } 00113 }
Generated on Tue Apr 14 17:57:51 2009 for RMOL by Doxygen 1.5.8