AIToolbox
A library that offers tools for AI problem solving.
|
Go to the documentation of this file. 1 #ifndef AI_TOOLBOX_FACTORED_MDP_MULTI_AGENT_SYS_ADMIN_UTILS_HEADER_FILE
2 #define AI_TOOLBOX_FACTORED_MDP_MULTI_AGENT_SYS_ADMIN_UTILS_HEADER_FILE
23 inline Matrix2D makeA0MatrixStatus(
unsigned neighbors,
size_t id,
double pFailBase,
double pFailBonus,
double pDeadBase,
double pDeadBonus) {
24 using namespace SysAdminUtils;
26 const unsigned neighborsCombinations = std::pow(3, neighbors + 1);
27 Matrix2D retval(neighborsCombinations, 3);
35 for (
size_t n = 0; n < neighbors + 1; ++n) {
36 if (n ==
id)
continue;
37 if (e->second[n] ==
Fail) bonus += pFailBonus;
38 else if (e->second[n] ==
Dead) bonus += pDeadBonus;
42 const double pFail = pFailBase + bonus;
43 const double pDead = pDeadBase + bonus;
46 if (e->second[
id] ==
Good)
47 retval.row(i) << (1.0 - pFail), pFail, 0.0;
48 else if (e->second[
id] ==
Fail)
49 retval.row(i) << 0.0, (1.0 - pDead), pDead;
50 else if (e->second[
id] ==
Dead)
51 retval.row(i) << 0.0, 0.0, 1.0;
67 using namespace SysAdminUtils;
72 retval.row(
Good) << 1.0, 0.0, 0.0;
73 retval.row(
Fail) << 1.0, 0.0, 0.0;
74 retval.row(
Dead) << 1.0, 0.0, 0.0;
92 using namespace SysAdminUtils;
98 retval.row(
Idle * 3 +
Good) << (1.0 - pLoad), pLoad, 0.0;
99 retval.row(
Idle * 3 +
Fail) << (1.0 - pLoad), pLoad, 0.0;
100 retval.row(
Idle * 3 +
Dead) << 1.0, 0.0, 0.0;
102 retval.row(
Load * 3 +
Good) << 0.0, (1.0 - pDoneG), pDoneG;
103 retval.row(
Load * 3 +
Fail) << 0.0, (1.0 - pDoneF), pDoneF;
104 retval.row(
Load * 3 +
Dead) << 1.0, 0.0, 0.0;
106 retval.row(
Done * 3 +
Good) << 1.0, 0.0, 0.0;
107 retval.row(
Done * 3 +
Fail) << 1.0, 0.0, 0.0;
108 retval.row(
Done * 3 +
Dead) << 1.0, 0.0, 0.0;
123 using namespace SysAdminUtils;
128 retval.row(
Idle) << 1.0, 0.0, 0.0;
129 retval.row(
Load) << 1.0, 0.0, 0.0;
130 retval.row(
Done) << 1.0, 0.0, 0.0;
150 using namespace SysAdminUtils;
161 constexpr
double finishReward = 1.0;
162 rewardMatrix.setZero();
182 using namespace SysAdminUtils;
184 case Good:
return 'g';
185 case Fail:
return 'f';
194 using namespace SysAdminUtils;
196 case Idle:
return 'i';
197 case Load:
return 'l';