mirror of
https://github.com/vcmi/vcmi.git
synced 2024-12-26 22:57:00 +02:00
[programming challenge, SSN]
* preliminary bonus generation * calculation of certain army statisticks for ANN.
This commit is contained in:
parent
927d6a8e36
commit
2f7ba07050
@ -145,11 +145,28 @@ double * genSSNinput(const DuelParameters & dp, CArtifactInstance * art)
|
|||||||
*(cur++) = side.heroId;
|
*(cur++) = side.heroId;
|
||||||
for(int k=0; k<4; ++k)
|
for(int k=0; k<4; ++k)
|
||||||
*(cur++) = side.heroPrimSkills[k];
|
*(cur++) = side.heroPrimSkills[k];
|
||||||
for(int i=0; i<7; ++i)
|
|
||||||
|
//weighted average of statistics
|
||||||
|
auto avg = [&](std::function<int(CCreature *)> getter) -> double
|
||||||
{
|
{
|
||||||
*(cur++) = side.stacks[i].type;
|
double ret;
|
||||||
*(cur++) = side.stacks[i].count;
|
int div = 0;
|
||||||
}
|
for(int i=0; i<7; ++i)
|
||||||
|
{
|
||||||
|
auto & cstack = side.stacks[i];
|
||||||
|
if(cstack.count > 0)
|
||||||
|
{
|
||||||
|
ret += getter(VLC->creh->creatures[cstack.type]) * cstack.count;
|
||||||
|
div+=cstack.count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ret/div;
|
||||||
|
};
|
||||||
|
|
||||||
|
*(cur++) = avg([](CCreature * c){return c->attack;});
|
||||||
|
*(cur++) = avg([](CCreature * c){return c->defence;});
|
||||||
|
*(cur++) = avg([](CCreature * c){return c->speed;});
|
||||||
|
*(cur++) = avg([](CCreature * c){return c->hitPoints;});
|
||||||
}
|
}
|
||||||
|
|
||||||
//bonus description
|
//bonus description
|
||||||
@ -236,6 +253,27 @@ void SSNRun()
|
|||||||
dp.sides[1].heroId = 1;
|
dp.sides[1].heroId = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::vector<Bonus> btt; //bonuses to test on
|
||||||
|
for(int i=0; i<5; ++i)
|
||||||
|
{
|
||||||
|
Bonus b;
|
||||||
|
b.type = Bonus::PRIMARY_SKILL;
|
||||||
|
b.subtype = PrimarySkill::ATTACK;
|
||||||
|
b.val = 5 * i + 1;
|
||||||
|
btt.push_back(b);
|
||||||
|
|
||||||
|
b.subtype = PrimarySkill::DEFENSE;
|
||||||
|
btt.push_back(b);
|
||||||
|
|
||||||
|
b.type = Bonus::STACKS_SPEED;
|
||||||
|
b.subtype = 0;
|
||||||
|
btt.push_back(b);
|
||||||
|
|
||||||
|
b.type = Bonus::STACK_HEALTH;
|
||||||
|
btt.push_back(b);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
//evaluate
|
//evaluate
|
||||||
for(int i=0; i<dps.size(); ++i)
|
for(int i=0; i<dps.size(); ++i)
|
||||||
{
|
{
|
||||||
@ -322,4 +360,4 @@ int main(int argc, char **argv)
|
|||||||
SSNRun();
|
SSNRun();
|
||||||
|
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user