GreenCloud Simulator
bestdens.cc
Go to the documentation of this file.
1 /*
2  * bestdens.cc
3  *
4  * @date Oct 29, 2014
5  * @author Guzek:Mateusz
6  */
7 
8 #include "bestdens.h"
9 #include "dcrack.h"
10 
11 BestDENS::BestDENS() : epsilon(0.1){
12 
13 }
14 
16 
17 }
18 
19 TskComAgent* BestDENS::scheduleTask(CloudTask* task, std::vector<ResourceProvider* > providers){
20  return BestScoreScheduler::scheduleTask(task,providers);
21 }
22 
24  double result = 0;
25  double load;
26  for(int i = FirstResType; i <= LastResType ; i++){
27  load = rp->getResTypeUtil(static_cast<res_type>(i));
28  result+= densLoadFactor(load,epsilon);
29  }
30  result=result/(LastResType+1); // normalize according to the number of dimensions
31 // std::cerr << "Res_prov " << rp->id_ << "\n";
32 // DcHost* host = rp->getRootHost();
33 // DcRack* rack = host->rack_;
34 // std::cerr << "Rack " << rack->rack_id_ << "\n";
35 // double ll = rack->link_load;
36 // std::cerr << "ll " << ll << "\n";
37  result *= pow(linkLoadFactor(rp->getRootHost()->rack_->link_load),2);
38 // result += linkLoadFactor(ll);
39 
40 
41 // double load = rp->getResTypeUtil(Computing);
42 // result = densLoadFactor(load,0.1);
43 // std::cerr << "Host " << rp->id_ /*<< "CPU load: " << load*/ << "\tDENS score: " << result << "\n";
44 
45  return result;
46 }
47 
48 double BestDENS::densLoadFactor(double load,double epsilon){
49  return 1/(1+exp(-10*(load-0.5))) - 1/(1+exp((-10/epsilon)*(load-(1-(epsilon/2)))));
50 }
51 
52 double BestDENS::linkLoadFactor(double load){
53  return exp(-(load*load));
54 }
55 
double linkLoadFactor(double load)
Definition: bestdens.cc:52
double densLoadFactor(double load, double epsilon)
Definition: bestdens.cc:48
virtual ~BestDENS()
Definition: bestdens.cc:15
virtual TskComAgent * scheduleTask(CloudTask *task, std::vector< ResourceProvider * > providers)
virtual double calculateScore(ResourceProvider *rp)
Definition: bestdens.cc:23
double getResTypeUtil(res_type type)
double epsilon
Definition: bestdens.h:27
DcRack * rack_
Definition: dchost.h:33
BestDENS()
Definition: bestdens.cc:11
virtual TskComAgent * scheduleTask(CloudTask *task, std::vector< ResourceProvider * > providers)
Definition: bestdens.cc:19
double link_load
Definition: dcrack.h:17