25 std::vector<double> mdens_score(providers.size());
26 std::vector<double> mdens_score_cumulative(providers.size());
27 vector <ResourceProvider*>::iterator res_p;
28 vector <double>::iterator score;
29 vector <double>::iterator cumul;
30 for (res_p = providers.begin(), score = mdens_score.begin(), cumul = mdens_score_cumulative.begin();
31 res_p!=providers.end();
32 res_p++, score++, cumul++)
35 if(cumul==mdens_score_cumulative.begin()){
38 (*cumul) = (*score) + (*(cumul-1));
43 double r = ( (double)rand() / (double)RAND_MAX ) * mdens_score_cumulative.at(mdens_score_cumulative.size()-1);
45 vector <double>::iterator lb = lower_bound(mdens_score_cumulative.begin(),mdens_score_cumulative.end(),r);
46 int sel_ind = lb - mdens_score_cumulative.begin();
49 selected = providers.at(sel_ind)->getTskComAgent();
virtual double calculateScore(ResourceProvider *rp)=0
virtual TskComAgent * scheduleTask(CloudTask *task, std::vector< ResourceProvider * > providers)
virtual ~ProbabilisticScheduler()