Scheduler
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
src
rlScheduler
domainModel.cpp
Go to the documentation of this file.
1
10
#include "
domainModel.h
"
11
12
#include <cassert>
13
#include <iostream>
14
#include <limits>
15
16
#include <
scheduler/system.h
>
17
#include <
scheduler/processor.h
>
18
#include <
scheduler/time.h
>
19
20
#include "
maxTempEstimator/maxTempEstimator.h
"
21
#include "
configuration.h
"
22
23
24
#include <
scheduler/temperatureModel/temperatureAndAgingModel.h
>
//TODO not good
25
26
using namespace
RlScheduler
;
27
28
DomainModel::DomainModel
(std::shared_ptr<Configuration> c) :
29
conf(c),
30
tempRecord(c,
"tempRecord"
),
31
maxTempRecord(c,
"maxTempRecord"
)
32
{
33
assert(conf !=
nullptr
);
34
deadlineMissRewardCoeff = conf->getDoubleValue(
"rlDiscipline"
,
"deadlineMissRewardCoeff"
);
35
temperatureRewardCoeff = conf->getDoubleValue(
"rlDiscipline"
,
"tempRewardCoeff"
);
36
agingRewardCoeff = conf->getDoubleValue(
"rlDiscipline"
,
"agingRewardCoeff"
);
37
maxTempEstimator = conf->getMaxTempEstimatorFromFile();
38
39
usingThreshold = conf->getBoolValue(
"rlDiscipline"
,
"usingThreshold"
,
true
);
40
}
41
42
DomainModel::~DomainModel
()
43
{
44
}
45
void
DomainModel::end
()
46
{
47
/*
48
tempRecord.printToFile(".");
49
maxTempRecord.printToFile(".");
50
*/
51
if
(maxTempEstimator !=
nullptr
)
52
delete
maxTempEstimator;
53
}
54
55
double
DomainModel::measureReward
()
56
{
57
/*Deadline misses is updated in the rlDiscipline directly,
58
Let's add the temperature to it.*/
59
double
ret = deadlineMissRewardCoeff*
reward
- temperatureRewardCoeff*
getTemperatureCost
() - agingRewardCoeff*
getAging
();
60
//if (getTemperatureCost() > 0.0 && reward > -1000000000)
61
{
62
//if (reward < -0.00000001 || reward > 0.0000001)
63
{
64
/*
65
std::cerr << "reward is a+c*b = " << deadlineMissRewardCoeff*reward;
66
std::cerr << "+" << temperatureRewardCoeff << "x" << getTemperatureCost() << "\n";
67
*/
68
}
69
}
70
return
ret;
71
}
72
73
double
DomainModel::getTemperatureCost
()
74
{
75
#if 0
76
return
getInstantaneousTemp
();
77
#endif
78
#if 0
79
#endif
80
if
(usingThreshold)
81
{
82
static
const
double
tempLimit = conf->getTempLimit();
83
double
temp
=
getInstantaneousTemp
();
84
if
(temp > tempLimit)
85
return
1.0;
86
return
0.0;
87
}
88
assert(maxTempEstimator !=
nullptr
);
89
return
maxTempEstimator->
getMaximumTemperature
();
90
}
91
92
double
DomainModel::getInstantaneousTemp
()
93
{
94
return
Scheduler::System::getInstance
()->
getProc
()->
getTemperature
();
95
}
96
97
double
DomainModel::getAging
()
98
{
99
static
double
previousValue = 0.0;
100
static
double
increment = 0.0;
101
102
Scheduler::TemperatureAndAgingModel
*model =
dynamic_cast<
Scheduler::TemperatureAndAgingModel
*
>
(
Scheduler::System::getInstance
()->
getProc
()->
getTemperatureModel
());
103
double
cumul
= model->
getConsumedLifetime
();
104
increment = cumul - previousValue;
105
previousValue =
cumul
;
106
107
return
increment;
108
}
109
110
111
112
113
114
115
116
117
118
119
120
time.h
bigtemp.temp
list temp
Definition:
bigtemp.py:9
Scheduler::System::getInstance
static System * getInstance()
Definition:
system.cpp:28
Scheduler::Processor::getTemperatureModel
TemperatureModel * getTemperatureModel()
Definition:
processor.cpp:116
RlScheduler::MaxTempEstimator::getMaximumTemperature
virtual double getMaximumTemperature()=0
maxTempEstimator.h
Scheduler::TemperatureAndAgingModel
Definition:
temperatureAndAgingModel.h:24
configuration.h
Scheduler::TemperatureAndAgingModel::getConsumedLifetime
double getConsumedLifetime()
Definition:
temperatureAndAgingModel.cpp:127
RlScheduler::DomainModel::measureReward
double measureReward() override
Definition:
domainModel.cpp:55
domainModel.h
temperatureAndAgingModel.h
Scheduler::Processor::getTemperature
double getTemperature() const
Definition:
processor.cpp:185
processor.h
RlScheduler::DomainModel::getTemperatureCost
double getTemperatureCost()
Definition:
domainModel.cpp:73
aging.cumul
list cumul
Definition:
aging.py:13
RlScheduler::DomainModel::~DomainModel
~DomainModel()
Definition:
domainModel.cpp:42
Scheduler::System::getProc
Processor * getProc()
return the processor
Definition:
system.cpp:76
system.h
RlScheduler::DomainModel::end
void end()
Definition:
domainModel.cpp:45
reward
Definition:
reward.py:1
RlScheduler::DomainModel::getAging
double getAging()
Definition:
domainModel.cpp:97
RlScheduler
Definition:
actions.h:24
RlScheduler::DomainModel::getInstantaneousTemp
double getInstantaneousTemp()
Definition:
domainModel.cpp:92
RlScheduler::DomainModel::DomainModel
DomainModel(std::shared_ptr< Configuration > conf)
Definition:
domainModel.cpp:28
Generated on Sun Nov 26 2017 17:01:35 for Scheduler by
1.8.11