GreenCloud Simulator
randdens.cc
Go to the documentation of this file.
1 /*
2  * multidens.cc
3  *
4  * @date Jan 8, 2014
5  * @author Guzek:Mateusz
6  */
7 
8 #include "randdens.h"
9 #include "dcrack.h"
10 
11 RandDENS::RandDENS() : epsilon(0.1){
12 
13 }
14 
16 
17 }
18 
19 TskComAgent* RandDENS::scheduleTask(CloudTask* task, std::vector<ResourceProvider* > providers){
20  return ProbabilisticScheduler::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 
32  result += linkLoadFactor(rp->getRootHost()->rack_->link_load);
33 
34  return result;
35 }
36 
37 double RandDENS::densLoadFactor(double load,double epsilon){
38  return 1/(1+exp(-10*(load-0.5))) - 1/(1+exp((-10/epsilon)*(load-(1-(epsilon/2)))));
39 }
40 
41 double RandDENS::linkLoadFactor(double load){
42  return exp(-(load*load));
43 }
44 
double linkLoadFactor(double load)
Definition: randdens.cc:41
double densLoadFactor(double load, double epsilon)
Definition: randdens.cc:37
virtual TskComAgent * scheduleTask(CloudTask *task, std::vector< ResourceProvider * > providers)
Definition: randdens.cc:19
virtual double calculateScore(ResourceProvider *rp)
Definition: randdens.cc:23
double getResTypeUtil(res_type type)
virtual ~RandDENS()
Definition: randdens.cc:15
virtual TskComAgent * scheduleTask(CloudTask *task, std::vector< ResourceProvider * > providers)
double epsilon
Definition: randdens.h:27
DcRack * rack_
Definition: dchost.h:33
RandDENS()
Definition: randdens.cc:11
double link_load
Definition: dcrack.h:17