You can subscribe to this list here.
| 2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(9) |
Nov
(11) |
Dec
(18) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2002 |
Jan
(68) |
Feb
(194) |
Mar
(75) |
Apr
(44) |
May
(48) |
Jun
(29) |
Jul
(60) |
Aug
(74) |
Sep
(12) |
Oct
(13) |
Nov
(30) |
Dec
(62) |
| 2003 |
Jan
(63) |
Feb
(28) |
Mar
(63) |
Apr
(27) |
May
(53) |
Jun
(8) |
Jul
(17) |
Aug
(2) |
Sep
(95) |
Oct
(28) |
Nov
(36) |
Dec
(24) |
| 2004 |
Jan
(92) |
Feb
(47) |
Mar
(43) |
Apr
(86) |
May
(64) |
Jun
(10) |
Jul
(4) |
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2005 |
Jan
(1) |
Feb
(4) |
Mar
(3) |
Apr
(5) |
May
|
Jun
|
Jul
(14) |
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(7) |
| 2006 |
Jan
(1) |
Feb
(4) |
Mar
(14) |
Apr
(22) |
May
(51) |
Jun
|
Jul
|
Aug
(6) |
Sep
|
Oct
|
Nov
(25) |
Dec
(1) |
| 2007 |
Jan
|
Feb
(7) |
Mar
(80) |
Apr
(27) |
May
(15) |
Jun
(6) |
Jul
(25) |
Aug
(1) |
Sep
(3) |
Oct
(17) |
Nov
(174) |
Dec
(176) |
| 2008 |
Jan
(355) |
Feb
(194) |
Mar
(5) |
Apr
(28) |
May
(49) |
Jun
|
Jul
(28) |
Aug
(61) |
Sep
(61) |
Oct
(49) |
Nov
(71) |
Dec
(2) |
| 2009 |
Jan
(12) |
Feb
(216) |
Mar
(299) |
Apr
(257) |
May
(324) |
Jun
(222) |
Jul
(103) |
Aug
(127) |
Sep
(72) |
Oct
(76) |
Nov
(2) |
Dec
(23) |
| 2010 |
Jan
(23) |
Feb
(11) |
Mar
(11) |
Apr
(112) |
May
(19) |
Jun
(37) |
Jul
(44) |
Aug
(25) |
Sep
(10) |
Oct
(4) |
Nov
(5) |
Dec
(25) |
| 2011 |
Jan
(44) |
Feb
(19) |
Mar
(18) |
Apr
(3) |
May
(14) |
Jun
(1) |
Jul
(22) |
Aug
(7) |
Sep
|
Oct
|
Nov
|
Dec
|
| 2012 |
Jan
(51) |
Feb
(42) |
Mar
(9) |
Apr
(9) |
May
(2) |
Jun
(29) |
Jul
(47) |
Aug
(5) |
Sep
|
Oct
(38) |
Nov
(33) |
Dec
(13) |
| 2013 |
Jan
|
Feb
(7) |
Mar
(9) |
Apr
|
May
|
Jun
|
Jul
(3) |
Aug
(2) |
Sep
(9) |
Oct
(22) |
Nov
(18) |
Dec
(7) |
| 2014 |
Jan
(2) |
Feb
|
Mar
(2) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2015 |
Jan
|
Feb
(5) |
Mar
|
Apr
(24) |
May
|
Jun
(18) |
Jul
(10) |
Aug
(21) |
Sep
|
Oct
|
Nov
(3) |
Dec
(1) |
| 2016 |
Jan
(1) |
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2018 |
Jan
(2) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2019 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(1) |
| 2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2022 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Tim S. <ts...@ai...> - 2012-02-03 04:39:05
|
Romain, I checked this out, or rather the latest since there was a few after this one. I commented out the MySQL stuff to get it to run. I've played about 15 games now on the Default map (easier to test I think than all the variants and their multitude of units) against 5 ExpAI's. A few things: 1) Maybe its because it's been forever since I played default (normally I play other variants) but the ExpAI seems much more aggressive on the master board than I remember. Almost Human Hater like. I don't think you made any changes in that area of the AI but it certainly seems to play different on Default than on other Variants. Maybe it's the simpler recruit tree or the smaller Masterboard. 2) The AI still seems to push out the 4 skill units to the front when attacking. I especially notice this when there is a Warlock involved. Not sure if the Warlock is considers not very valuable or what, but it always seems to rush out front on it's own if the rest of the Titan stack it's with is only skill 2/3. Other 4 skill units seem to get in front at times still as well but there are fewer of them in play in most games so I don't see them as often. 3) Does the AI have a 'I surrender my Titan in a hopeless battle' mode? By this I mean in at least 2 games now I have seen a Titan + 1 Angel (or 2 Angels) just get placed in the middle of the map when defending against a 7 stack that is at least 3 times as strong. As if the AI is just saying kill me ASAP because I am going to lose anyway. I was shocked the first time I saw it and it's happened 2 more times. Not sure if it's related to all 4 skill units, Angels or the fact the enemy 7 stack is so strong (usually full of units like Unicorns/Behemoths/Serpents/Giants/Gryffons etc). 4) Once or twice I have seen the AI do strange things like rush a lone Centaur out in front (the 4 skill unit again) but instead of just facing 1 unit, it gets placed so that 2 enemy units can attack it. That was strange because normally the AI is much better at making sure units are placed so only 1 unit can attack back. 5) A couple of times on defense on non-plains maps I have seen a 7 unit AI Titan stack get placed so that the Titan is 2 squares from the edge and is surrounded on all 6 sides by a defender. It's a pretty flower like formation, but not a particularly good one. Not sure why it does that and it gets squished when it does because it has so many open areas to attack to get to the Titan. There are some maps like Forest where it makes sense to push defensive placement forward due to Trees blocking things but this was not that case. Can't figure out exactly what triggered it but I will be looking for it to do so again. 6) I've reloaded some battles 5-10 times to replay interesting ones. Mostly to see placement and AI decision making. It's nice to see the AI always setup the same if I setup the same on defense. Unlike simple AI that randomly sets up different every time. This is good progress. 7) Still not sure how much better AI is with Rangestrikers. Haven't seen them enough in action. Plus in many battles there really isn't a great opportunity to have them out of the battle since they are needed to win so they have to fight simply because there are so equal or close to equal units on both sides. I'll have to fight a few hopeless battles to see if the AI takes advantage of it's range strikers. 8) It seems to me the prior EXPAI took a while recalculating moves after the initial placement. Again, it my be my imagination but I swear the old one regularly re-thought out positions during the battle taking 15 seconds or so on my PC. I often see the AI just whip through moves/dice rolls at Simple AI speed once a couple of rounds of battle are over. So things happen so fast I can't see what's going on with position of units, saving damaged units, use of ranger strikers etc unless it's me in the battle. Is there some trigger or something that speeds up the AI at a certain point in the battle that maybe happens more on Default games than in the variants with their more diverse and high strength units? Tim > On 01/27/12 10:49, Romain Dolbeau wrote: >> ExpAI as an attacker should be better at avoiding timeloss... *should* :-) > 5055 it is then :-/ > |
|
From: Romain D. <rom...@ca...> - 2012-01-31 17:54:16
|
(warning: long! :-) On 01/13/12 06:20, Tim Sowden wrote: > Here's how I would initially start with valuing each unit (this would be a > function that would take a unit and return a value). > 1) Base value: power*skill. So an angel would be 6*4=24. No surprises (...) > 2) Recruit Value: This is whether the unit can recruit anywhere at all (...) > 3) Recruit Here: As in this hex where the battle is taking place. If the (...) > 4) Titan: If the unit is a Titan multiply it's value*5. Should be (...) > The goal would be to figure out the right values for each unit which > means figuring out the value of each of those 4 parts of the > calculation. Having fiddled quite a lot with various evaluators in Colossus AIs, I think that you estimation is not quite enough. While it's likely quite good at representing the importance of *keeping* a unit, it doesn't reflect the value when *fighting* with a unit. Gorgons are better fighter than Warbear most of the times, are much worse recruiter long-term, but would effectively have the same value in Plains. > Once this part is done, the next step will be improving the movement on > the board (though Romain's existing experimental AI may already be good > enough if we get proper unit valuations). I don't think it's possible to separate the movement on the board from the overall strategy of the game, unfortunately. In my opinion an ideal AI would 1) assert the value of each units long-term (many turns) 2) assert the value of each units mid-term (next few turns) 3) assert the value of each units short-term (the current battle) then it would need to weight each goal ; loosing short-term is bad (or the worse possible thing if the Titan is involved), but then comes the mid-term and long-term goals. Currently ExpAI doesn't quite achieve that (obviously :-), but tries to 1) evaluate each units mid/long term for usefulness 2) "evaluate" each units short-term (points value mostly) 3) start by preserving the 'good' long-term ones at the expense of the 'bad' long-term ones 4) if things get desperate, involve everyone (only for attacking with the Titan so far, IIRC). The main issue with that approach is the weighting between all the factors. The AI takes into account the overall situation, the various independent situation of all creatures, and the objectives with each creatures on both sides. So we have... 1) the points from each creature independently (SimpleAI:evaluateCritterMove()) 2) the points from the overall situation (ExperimentalAI:evaluateLegionBattleMoveAsAWhole()) 3) the points from the various objectives (a whole sub-package...) Each of those has a lot of evaluators, some using points value, some absolute value, and most both. That are added up, and for objectives, there's also the priority factor. That's 40+ parameters, plus the priorities, plus the points value, plus the fact that there's a lot of hard-coded heuristics... and most of those parameters are unbounded, just to make things more fun. Incidentally, trying to create an AI better than SimpleAI has led me to one conclusion: SimpleAI is awesome :-) It's hard to believe it has stood the test of time so long without being significantly bested in terms of behavior on the battlefield... Right now I'm (again) at a loss on how to go forward; while I've read a bit about the theories, I don't see how to apply them 'effectively' to our issues :-( It seems we have too many parameters, too many assumptions, and not enough information on the value of the results :-( If anyone who has taken an AI course could find a proper java library and start hacking, maybe we could get the ball rolling :-) Cordially, -- Romain Dolbeau <rom...@ca...> |
|
From: Romain D. <rom...@ca...> - 2012-01-31 17:09:59
|
On 01/29/12 03:46, David Ripton wrote: > Conclusion: material is more important than exact tactics. And, > honestly, after the first couple of turns the strategies pretty much > converge. While I agree, the current version of ExpAI in my branch is much better at keeping its minotaur alive when attacking than SimpleAI, both versus SimpleAI. Could you try it and report if 'feels' better than SimpleAI? It could be an artifact of SimpleAI not being very good... Out of 200 battles each ways, SimpleAI never saved 40 points (Titan + Minotaur) and only got 52 points (same + Ogre) only 7 times. It had 24/36/48 points a total of 125 times. ExpAI was 47 and 33 for 40pts and 52pts, and only 69 times 24/36/48 ; 48pts was only 7 times vs. 25 for SimpleAI. The average was marginally better for SimpleAI, and it won a bit more battles. Not sure if either number was significant, 200 battles is not quite enough I think. SimpleAI vs. SimpleAI shows 5% variation from a 200-battles run to another :-/ Cordially, -- Romain Dolbeau <rom...@ca...> |
|
From: Clemens K. <lem...@sa...> - 2012-01-30 15:15:16
|
Hello all, I've made a new public testing build (called 0.13.0 release candidate 1), i.e. if nothing big comes up I would make a 0.13.0 soon. This brings mostly ability to reconnect if there were short network interruptions, the fix so that Colossus runs also in Java 7 and a few small other things. Build is only available on the homepage, not in SF download area. http://colossus.sourceforge.net/ Please give it a try! Thanks & Regards, Clemens -- NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone! Jetzt informieren: http://www.gmx.net/de/go/freephone/ |
|
From: David R. <dr...@ri...> - 2012-01-29 04:27:29
|
On 01/28/12 22:42, Tim Sowden wrote: > On 1/28/2012 9:46 PM, David Ripton wrote: >> On 01/28/12 18:31, John David Galt wrote: >> >>> Ogr Ogr Ogr (empty) >>> >>> Gor Ttn Min >>> >>> (my entry side) >> I just fought this battle out 10 times. >> >> For the first 5 I used my strategy on defense (gorgon, ogre, minotaur, >> ogre in the second row, leftover ogre in the back) and JDG's strategy on >> attack (ogres in front, the rest in the back). The attacker (with the >> material advantage of the titan) won 4 of 5. >> >> For the other 5 I used JDG's strategy (ogres in front) on defense, and >> my strategy (minotaur and gorgon in the third row for the early >> rangestrike, ogres in the second row, titan hiding in back) on attack. >> The attacker (with the material advantage of the titan) won 4 of 5 again. >> >> Conclusion: material is more important than exact tactics. And, >> honestly, after the first couple of turns the strategies pretty much >> converge. >> > > What you didn't mention in these 10 battles is what the point of this > battle was about: What units was the attacker left with? The 4/5 winning > seems about right. But if JDGs (and my) setup saves the Mino or Gorgon > more than yours does then it's the superior setup. 10 battles is > probably too few, you'd need to do maybe 100-1000 to get an idea if > there is a real difference. The winning titan usually ended up preserving the gorgon or minotaur or both. Sometimes an ogre too. When the titan lost, obviously it didn't matter. But, yeah, 10 battles aren't really enough to conclude anything. But that's all I had the patience to play. The AI is much more patient than I am. -- David Ripton dr...@ri... |
|
From: Tim S. <ts...@ai...> - 2012-01-29 03:42:59
|
On 1/28/2012 9:46 PM, David Ripton wrote: > On 01/28/12 18:31, John David Galt wrote: > >> Ogr Ogr Ogr (empty) >> >> Gor Ttn Min >> >> (my entry side) > I just fought this battle out 10 times. > > For the first 5 I used my strategy on defense (gorgon, ogre, minotaur, > ogre in the second row, leftover ogre in the back) and JDG's strategy on > attack (ogres in front, the rest in the back). The attacker (with the > material advantage of the titan) won 4 of 5. > > For the other 5 I used JDG's strategy (ogres in front) on defense, and > my strategy (minotaur and gorgon in the third row for the early > rangestrike, ogres in the second row, titan hiding in back) on attack. > The attacker (with the material advantage of the titan) won 4 of 5 again. > > Conclusion: material is more important than exact tactics. And, > honestly, after the first couple of turns the strategies pretty much > converge. > What you didn't mention in these 10 battles is what the point of this battle was about: What units was the attacker left with? The 4/5 winning seems about right. But if JDGs (and my) setup saves the Mino or Gorgon more than yours does then it's the superior setup. 10 battles is probably too few, you'd need to do maybe 100-1000 to get an idea if there is a real difference. Tim |
|
From: David R. <dr...@ri...> - 2012-01-29 02:46:52
|
On 01/28/12 18:31, John David Galt wrote: > Ogr Ogr Ogr (empty) > > Gor Ttn Min > > (my entry side) I just fought this battle out 10 times. For the first 5 I used my strategy on defense (gorgon, ogre, minotaur, ogre in the second row, leftover ogre in the back) and JDG's strategy on attack (ogres in front, the rest in the back). The attacker (with the material advantage of the titan) won 4 of 5. For the other 5 I used JDG's strategy (ogres in front) on defense, and my strategy (minotaur and gorgon in the third row for the early rangestrike, ogres in the second row, titan hiding in back) on attack. The attacker (with the material advantage of the titan) won 4 of 5 again. Conclusion: material is more important than exact tactics. And, honestly, after the first couple of turns the strategies pretty much converge. -- David Ripton dr...@ri... |
|
From: John D. G. <jd...@di...> - 2012-01-28 23:31:36
|
Romain Dolbeau wrote:
>>> >> ATTCREATURES=Titan,Gorgon,Minotaur,Ogre,Ogre,Ogre
>>> >> DEFCREATURES=Gorgon,Minotaur,Ogre,Ogre,Ogre
[snip]
> And I have a question for you if you have time (also to anybody else who's
> willing to answer...), about the starting position. Given the battle above,
> how would start as the defender? And should someone pick that position as the
> defender, how would you play the attacker? (cue the chess opening moves
> database analogy :-)
When defending in a battle like that, I always want the stupid (skill 2)
characters as my initial front line, thus my setup would look like:
Ogr Ogr Ogr (empty)
Gor Ttn Min
(my entry side)
I prefer this even more strongly if the stupid guys are stronger (Trolls or
Cyclopes), somewhat less if the attacker has many (or good) rangestrikers.
The main point of this setup is to get the attacker to engage first with my
expendable units, leaving my fliers and rangestrikers as reserves so that I
can move them in response to the attacker's setup, as well as preserve them.
The second point is so that, if the attacker sets up with his rangestrikers
in front (to take shots with them before engaging me), I can swarm them with
my stupid guys. This is important because the main use of rangestrikers for
the attacker is to force the defender to leave whatever defensible terrain
(hilltop, walls, cliff) he occupies and come and engage him (on pain of
taking several turns worth of shots and THEN being engaged). If as defender
I can kill those units first, then I can sit in my terrain for the rest of
the battle, improving my odds.
As the attacker against this setup, I will hold back my fliers and
rangestrikers on the first turn too (unless I can avoid them being swarmed
by hiding behind terrain, like the two adjacent bogs in Swamp if the
defenders were not native) and engage the defender's front line with my
stupid units. Even on my second turn, my fliers and rangestrikers probably
hold back at my entry side, but that depends on where the defender has now
placed his fliers and rangestrikers, and how far they can get next turn.
As in a real battle, if possible I want my opponent to commit his reserves
while I still have some left.
Assume a battle in Plains betwen the two stacks shown, with attacker entering
from the bottom (A1-D1). A battle with me playing both sides would begin like
this.
Defender turn 1: as above, thus
Ogres D5, E4, F3; Gorgon F4; Titan E5; Minotaur D6.
Attacker turn 1:
Ogres B2, C2, D2; Gorgon D1; Minotaur A1. No strikes by either side.
Defender turn 2: sit. No strikes by either side.
Attacker turn 2:
Ogres D4, E3, F2; Gorgon C3; Minotaur B3.
Attacker starts rolling at the F2 end and tries to kill a middle ogre.
Both rangestrikers fire on the exposed Min unless they have a good chance to
kill Ogr D5 on this turn.
Defender can only attack ogres, probably kills one of D4 or E3.
At this point it becomes unpredictable. Defender wants to engage attacker's
rangestrikers, but I've lined up so that defender's Min could only engage
both of them at once, while his remaining Ogres are probably still engaged,
and his Gor can probably only engage by flying in to replace his dead Ogre.
If no Angel is available, I give defender about a 60% chance to win this
battle, more because he is defender than because of his material advantage.
|
|
From: Romain D. <rom...@ca...> - 2012-01-27 10:31:38
|
On 01/27/12 10:49, Romain Dolbeau wrote: > ExpAI as an attacker should be better at avoiding timeloss... *should* :-) 5055 it is then :-/ -- Romain Dolbeau <rom...@ca...> |
|
From: Romain D. <rom...@ca...> - 2012-01-27 09:49:52
|
On 01/26/12 17:15, Romain Dolbeau wrote: > Please try playing against ExpAI on branch Colossus-mysql-stuff, revision 5051 > (you may need to disable the MySQL stuff or have a MySQL database handy..). It > should behave much less so. > In fact, I think it relies on rangestriking too much now... > Also, it should try to avoid overkilling by rewarding less if too much damage > would be inflicted on a single opponent. Sorry, 5051 was missing a file ; 5053 is now the one to look for. ExpAI as an attacker should be better at avoiding timeloss... *should* :-) -- Romain Dolbeau <rom...@ca...> |
|
From: David R. <dr...@ri...> - 2012-01-27 04:56:33
|
On 01/26/12 10:59, Romain Dolbeau wrote: > On 01/26/12 16:28, Bruno Wolff III wrote: >> Romain Dolbeau<ro...@do...> wrote: >>> ATTCREATURES=Titan,Gorgon,Minotaur,Ogre,Ogre,Ogre >>> DEFCREATURES=Gorgon,Minotaur,Ogre,Ogre,Ogre >> Presumably there isn't an angel available? > > Exactly. > >> I think the Gorgon and Minotaur are a lot closer in value than you seem >> to suggest. (...) Also I think you are undervaluing having an ogre left. > > I agree with you; the goal is indeed to try and preserve as much pieces as you > can, but also in the situation where you can only keep one out of two or > three, which do you keep? I think it's reasonable to say keep the minotaur or > gorgon over an ogre - and that between the two big one it's debatable. > > And I have a question for you if you have time (also to anybody else who's > willing to answer...), about the starting position. Given the battle above, > how would start as the defender? And should someone pick that position as the > defender, how would you play the attacker? (cue the chess opening moves > database analogy :-) I'm assuming the titan is only power 6, and there's no angel to summon. Obviously if he's bigger he can be more aggressive. If there's an angel, this battle is a cakewalk, and protecting the recruiters becomes more important than just winning. If the attacker enters on F1-F2-F3-F4 and the defender has A1-A2-A3: Defender: second rank: Gorgon B1, Ogre B2, Minotaur B3, Ogre B4 back rank: Ogre A1, Ogre A2 Why: 1. Staggered skill factor makes the opponent's carries less effective. 2. I want the gorgon and the minotaur in a position where they can double-team the titan early if the attacker stupidly exposes it thereby (assuming the attacker isn't stupid) forcing him to keep the titan back and keep some pieces on titan shield duty. Attacker: third rank: Gorgon D1, Minotaur D2 second rank: Ogre E1, Ogre E2, Ogre E3 back rank: Titan F1 The two rangestrikers go where they can double-plonk the gorgon on the end of the line, with minimal exposure to getting swarmed. The three ogres back them up and provide a wall to keep the minotaur off the titan. The titan hides, since the minotaur and gorgon are both unpinned. -- David Ripton dr...@ri... |
|
From: David R. <dr...@ri...> - 2012-01-27 04:41:26
|
On 01/25/12 23:31, Tim Sowden wrote: > My guess is that the reason the AI isn't saving the Mino more often is > because all the AI's rush all their 4 move units out as far as possible > in battle. Only with the attacker. The defender does a good job of hanging back. (Maybe too good; it sometimes ends up settling for a time loss when it could win points without much risk.) SimpleAI's attacker over-aggression is by design, to avoid letting the defender recruit, to trigger angel summoning ASAP, to make room for said angel, to reduce the legion sizes early to reduce the combinatorial burden on the AI, and especially to avoid taking embarrassing time losses. I think it's a reasonable heuristic, though SimpleAI sometimes takes it too far and does truly silly things like charging a lone centaur forward into a 1:2 for no reason. (I've continued with "attacker charge, defender cower" idea with Slugathon's CleverBot, though it has a reward for adjacent allies that tends to help the AI hold formation a bit better than SimpleAI does. I meant to put that in SimpleAI, but there was a nasty bug in the whole legion eval function.) -- David Ripton dr...@ri... |
|
From: Tim S. <ts...@ai...> - 2012-01-27 03:40:29
|
For the Defender: A really simple, but effective thing I do is *always* put my 2 skill units up front (or as far as they can walk). Because 2 skill units are 90% of the time the last units I want to keep and they need to be up front so they can reach units/support the faster moving ones in battle. At the same time I almost always put flying units (the Gorgon) in behind because on the next turn they can go anywhere they need to anyway. The Minotaur is the harder unit to use after turn 1 since it will be behind the 2 skill units initially but then since he's a unit you want to keep that's OK. For the Attacker: If the defender can't recruit, it's the same as the Defender. 2 skill units up front. If you put the Gorgon/Mino up front or out 3 squares they will be killed on turn 2 as the defender swarms in the Ogres (think of it like chess, the pawns go first). The only time I put range strikers up front on turn 1 is if they are behind terrain that can't be easily passed by the defender (intervening swamp/tree/desert slope etc) or I have so many of them (a stack of Rangers/Gorgons only) that it doesn't matter. It's on turn 2 and later that I position the range strikers to support the non-range strikers. If the defender can recruit, then the only way I'd ever attack is if I could summon an Angel (this battle is actually pretty close and could easily leave you with just your Titan). But assuming the Defender can recruit then you have to force the issue quickly (kill the recruiting units) or pin the defender so the recruit can't enter the board. In those cases it makes sense to potentially use the Mino/Gorgon up front for Range Striking on turn 1 and so you get access to your Angel faster. But in your simulation you aren't letting either side recruit/summon so the first case applies (better units in the back). Tim > On Thu, Jan 26, 2012 at 16:59:41 +0100, > Romain Dolbeau<ro...@do...> wrote: >> And I have a question for you if you have time (also to anybody else who's >> willing to answer...), about the starting position. Given the battle above, >> how would start as the defender? And should someone pick that position as the >> defender, how would you play the attacker? (cue the chess opening moves >> database analogy :-) > That might be a better question for the Titan list or the a Titan forum > on BGG. > > My thoughts would be you'd want the ogres forward so that you can use them > quickly and the minotaur and gorgon back so that they are harder to > rangestrike in the opening. You are going to want to try to engage the > attackers minotaur and gorgon if you can. If they keep them back, then > you can use your rangestrikers more effectively and can probably be satisfied > with trading rangestrikes. > > ------------------------------------------------------------------------------ > Keep Your Developer Skills Current with LearnDevNow! > The most comprehensive online learning library for Microsoft developers > is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, > Metro Style Apps, more. Free future releases when you subscribe now! > http://p.sf.net/sfu/learndevnow-d2d > _______________________________________________ > Colossus-developers mailing list > Col...@li... > https://lists.sourceforge.net/lists/listinfo/colossus-developers > |
|
From: Bruno W. I. <br...@wo...> - 2012-01-26 16:42:18
|
On Thu, Jan 26, 2012 at 16:59:41 +0100, Romain Dolbeau <ro...@do...> wrote: > > And I have a question for you if you have time (also to anybody else who's > willing to answer...), about the starting position. Given the battle above, > how would start as the defender? And should someone pick that position as the > defender, how would you play the attacker? (cue the chess opening moves > database analogy :-) That might be a better question for the Titan list or the a Titan forum on BGG. My thoughts would be you'd want the ogres forward so that you can use them quickly and the minotaur and gorgon back so that they are harder to rangestrike in the opening. You are going to want to try to engage the attackers minotaur and gorgon if you can. If they keep them back, then you can use your rangestrikers more effectively and can probably be satisfied with trading rangestrikes. |
|
From: Romain D. <ro...@do...> - 2012-01-26 16:15:24
|
On 01/26/12 05:31, Tim Sowden wrote: > My guess is that the reason the AI isn't saving the Mino more often is > because all the AI's rush all their 4 move units out as far as possible > in battle. The AI should also be aware of whether the defender can > recruit. Please try playing against ExpAI on branch Colossus-mysql-stuff, revision 5051 (you may need to disable the MySQL stuff or have a MySQL database handy..). It should behave much less so. In fact, I think it relies on rangestriking too much now... Also, it should try to avoid overkilling by rewarding less if too much damage would be inflicted on a single opponent. -- Romain Dolbeau <ro...@do...> |
|
From: Romain D. <ro...@do...> - 2012-01-26 16:00:16
|
On 01/26/12 16:28, Bruno Wolff III wrote: > Romain Dolbeau <ro...@do...> wrote: >> ATTCREATURES=Titan,Gorgon,Minotaur,Ogre,Ogre,Ogre >> DEFCREATURES=Gorgon,Minotaur,Ogre,Ogre,Ogre > Presumably there isn't an angel available? Exactly. > I think the Gorgon and Minotaur are a lot closer in value than you seem > to suggest. (...) Also I think you are undervaluing having an ogre left. I agree with you; the goal is indeed to try and preserve as much pieces as you can, but also in the situation where you can only keep one out of two or three, which do you keep? I think it's reasonable to say keep the minotaur or gorgon over an ogre - and that between the two big one it's debatable. And I have a question for you if you have time (also to anybody else who's willing to answer...), about the starting position. Given the battle above, how would start as the defender? And should someone pick that position as the defender, how would you play the attacker? (cue the chess opening moves database analogy :-) Cordially, -- Romain Dolbeau <ro...@do...> |
|
From: Bruno W. I. <br...@wo...> - 2012-01-26 15:51:30
|
On Wed, Jan 25, 2012 at 23:31:58 -0500, Tim Sowden <ts...@ai...> wrote: > > My guess is that the reason the AI isn't saving the Mino more often is > because all the AI's rush all their 4 move units out as far as possible > in battle. The AI should also be aware of whether the defender can Yes, I see that a lot and actually try to take advantage of that when fighting battles. |
|
From: Bruno W. I. <br...@wo...> - 2012-01-26 15:37:05
|
On Sun, Jan 22, 2012 at 11:54:51 +0100, Romain Dolbeau <ro...@do...> wrote: > > ATTCREATURES=Titan,Gorgon,Minotaur,Ogre,Ogre,Ogre > DEFCREATURES=Gorgon,Minotaur,Ogre,Ogre,Ogre Presumably there isn't an angel available? > The new logic is this: in this new Battle, the Attacker should win - it has 94 > pts vs. only 70, with the Titan has the clear material advantage. Also, the > 'wanted' result is simple: the Ogres are cannon fodder, and the attacking > Titan should try and keep the Minotaur as best it can. the Gorgon is also > cannon fodder, but still better than the Ogre short-term [if anyone disagrees, > please chimes in, I still lose most of my papers-and-dice game after over 20 > years of playing, so...]. I think the Gorgon and Minotaur are a lot closer in value than you seem to suggest. The gorgon is more powerful and is easier to recruit with than the minotaur. Unless you think you need colossus in your Titan stack to win this game (or the gorgons are gone), I think you should count them about equal. Also I think you are undervaluing having an ogre left. As long as you can still recruit with them, having more pieces and being able to recruit in more places is going to be useful if you are under an immediate threat of being attacked. |
|
From: Romain D. <ro...@do...> - 2012-01-26 15:28:59
|
On 01/26/12 09:32, Romain Dolbeau wrote: > Look into "net.sf.colossus.ai.objectives.AbstractObjectiveHelper" for the > internal class "AllThereIsToKnowAboutYourCreature". I haven't committed some > recent changes, but the idea is already there. I've committed the changes now, if anyone is interested to look into it all. The objectives are now generated for all CreatureType, so in theory you only need to change the priorities ... and maybe also all the parameters and logic to compute how a situation contributes to an objectives. That's a lot of parameters :-( -- Romain Dolbeau <ro...@do...> |
|
From: Romain D. <rom...@ca...> - 2012-01-26 08:33:12
|
On 01/26/12 05:31, Tim Sowden wrote: > That said, I think your choice of what it should save (Titan, then Titan > + Mino, then Titan + Gorgon, then...) is a bit simplistic. The Battle is also taking place in Plains, so there's no recruiting involved. It also simplifies thing. Also, no summoning. I tried to keep things simple at first... and I suspect 200 simulations is still not statistically significant :-/ > That's why in my last post I mentioned that what's needed is a unit > evaluator function that generates a value for each unit based on the > what it can recruit, whether it can recruit in that square, how much is > left in the caretaker stack etc. For simplicity sake of your battle > simulator, you can simply say some battles take place on brush by > weighting the Gorgon with more value so the AI tries harder to save it > or save Ogres over the Gorgon in a Marsh. Look into "net.sf.colossus.ai.objectives.AbstractObjectiveHelper" for the internal class "AllThereIsToKnowAboutYourCreature". I haven't committed some recent changes, but the idea is already there. > The other thing the AI tends to do is use wounded units to > overkill the enemy (ie 1 enemy unit left with only 1-2 hits left and the > AI uses 4 units to kill it allowing the defender to selectively kill a > weakened attacker). That one hopefully can be cured by doing all these > simulations and having the AI learn to make smarter decisions about that. Indeed regrouping is always a positive in the evaluators, even when it's overkill. I've thought about changing that. > I would hope the when the AI keeps Titan + 1 unit that it keeps the > right unit (Mino or Gorgon depending on recruit chances) more than 1% of > the time. A good human player would keep the right unit about 80% I'd guess. The battle is still closer than that I think, against another human it would be lower I expect. Against SimpleAI, 80% might be possible... Cordially, -- Romain Dolbeau <rom...@ca...> |
|
From: Tim S. <ts...@ai...> - 2012-01-26 04:31:53
|
I'm not an experienced player (<3 years playing) but I do win a good portion of the MP games I play. I like your new battle scenario because it's easier to define what you want the AI to accomplish in terms of it having a successful battle. That said, I think your choice of what it should save (Titan, then Titan + Mino, then Titan + Gorgon, then...) is a bit simplistic. For example if the battle is taking place in the Hills, then no question it's Titan + Mino. If the battle is taking place in the Brush however, I'd much rather keep the Gorgon alive because at the end of the battle it can recruit to strengthen the Titan stack. In the Marsh, the Ogres are better than the Gorgon because again they can recruit after battle. On neutral ground (no recruit possible) then it's definitely Mino, Gorgon then Ogre. That's why in my last post I mentioned that what's needed is a unit evaluator function that generates a value for each unit based on the what it can recruit, whether it can recruit in that square, how much is left in the caretaker stack etc. For simplicity sake of your battle simulator, you can simply say some battles take place on brush by weighting the Gorgon with more value so the AI tries harder to save it or save Ogres over the Gorgon in a Marsh. My guess is that the reason the AI isn't saving the Mino more often is because all the AI's rush all their 4 move units out as far as possible in battle. The AI should also be aware of whether the defender can recruit. If they can't, there is far less need to rush out the 4 hit units to the front and the Ogres and be put in front as you'd expect a human player to do. There is WAY more time than is ever needed in 7 turns to kill that enemy stack without worrying about pushing the attack pace. The other thing the AI tends to do is use wounded units to overkill the enemy (ie 1 enemy unit left with only 1-2 hits left and the AI uses 4 units to kill it allowing the defender to selectively kill a weakened attacker). That one hopefully can be cured by doing all these simulations and having the AI learn to make smarter decisions about that. I would hope the when the AI keeps Titan + 1 unit that it keeps the right unit (Mino or Gorgon depending on recruit chances) more than 1% of the time. A good human player would keep the right unit about 80% I'd guess. Tim > I've update my script with a new battle I've chosen ; I've changed my mind > about the whole thing. Now I have: > > ATTCREATURES=Titan,Gorgon,Minotaur,Ogre,Ogre,Ogre > DEFCREATURES=Gorgon,Minotaur,Ogre,Ogre,Ogre > > So it's not the same for both side anymore. The old battle was too indecisive, > probably more about luck than strategy. > > The new logic is this: in this new Battle, the Attacker should win - it has 94 > pts vs. only 70, with the Titan has the clear material advantage. Also, the > 'wanted' result is simple: the Ogres are cannon fodder, and the attacking > Titan should try and keep the Minotaur as best it can. the Gorgon is also > cannon fodder, but still better than the Ogre short-term [if anyone disagrees, > please chimes in, I still lose most of my papers-and-dice game after over 20 > years of playing, so...]. > > The balance of creatures is set that by saving only the amount of points the > winner has after the Battle, we know what is in the surviving legion; for the > Attacker, 24 is the Titan alone, 36 Titan + Ogre, 40 Titan + Minotaur, 42 > Titan + Gorgon, 48 Titan + 2 Ogres, and so on. Same principle for the > Defender. So now I save that in the database. > > The Battles are still running using a modified ExpAI (that plays worse than > the one in SVN I think...). In intermediate file "results1.txt", we have the > average surviving points for each AI vs. AI combinations. My local ExpAI seems > to be a worse defender points-wise - the attacker AI leaves the battle with > more points than against other AIs. Which sounds bad for that ExpAI :-( > > And less than 1% of the Battle had the Titan + Minotaur combinations alive at > the end. Which doesn't sound good, but what do you experienced players think? |
|
From: Romain D. <rom...@ca...> - 2012-01-22 13:46:53
|
On 01/22/12 11:54, Romain Dolbeau wrote: > Usually, I just plug into SQL and poke around the table to try and make some > sense out of the results. I add some thoughts at the end of this mail. > > The Battles are still running using a modified ExpAI (that plays worse than > the one in SVN I think...). In intermediate file "results1.txt", we have the The updated file with all 200*16 battles, and the complete mysqldump of the table for those who care to make their own statistics. -- Romain Dolbeau <rom...@ca...> |
|
From: Clemens K. <lem...@sa...> - 2012-01-22 11:01:45
|
> the end. Which doesn't sound good, but what do you experienced players > think? Don't look at me, I would probably loose 70% of games I would try against any AI (including a hypothetical TotalRandomAI, which does *everything* merely randomly ;-) But within my limited expertise, your approach makes sense to me. BR, Clemens -------- Original-Nachricht -------- > Datum: Sun, 22 Jan 2012 11:54:51 +0100 > Von: Romain Dolbeau <ro...@do...> > An: Clemens Katzer <lem...@sa...> > CC: col...@li... > Betreff: Re: [Colossus-developers] Evaluating a battle > On 01/22/12 11:06, Clemens Katzer wrote: > > > thanks, Romain, excellent job (the branch)! > > I was able to set up a DB and run the all_combi.sh. > > Excellent. > > > It created the XML files and then started running games, which produced > > some output (see below); I just don't know what to do with it :) > > Usually, I just plug into SQL and poke around the table to try and make > some > sense out of the results. I add some thoughts at the end of this mail. > > > I guess one next logical step would be to get all the "neuronal network" > > classes from somewhere and plug them in into the colossus application. > > Piece of cake, so to speak... right? :~) > > Yeah, but It seems to me neither Neuroph (easy to understand? but > apparently a > bit slow?) or Encog (more complicated?, fast?) doesn't do "reinforcement > learning". I still haven't figured out what we really want to do and > whether > we can do it. > > I've update my script with a new battle I've chosen ; I've changed my mind > about the whole thing. Now I have: > > ATTCREATURES=Titan,Gorgon,Minotaur,Ogre,Ogre,Ogre > DEFCREATURES=Gorgon,Minotaur,Ogre,Ogre,Ogre > > So it's not the same for both side anymore. The old battle was too > indecisive, > probably more about luck than strategy. > > The new logic is this: in this new Battle, the Attacker should win - it > has 94 > pts vs. only 70, with the Titan has the clear material advantage. Also, > the > 'wanted' result is simple: the Ogres are cannon fodder, and the attacking > Titan should try and keep the Minotaur as best it can. the Gorgon is also > cannon fodder, but still better than the Ogre short-term [if anyone > disagrees, > please chimes in, I still lose most of my papers-and-dice game after over > 20 > years of playing, so...]. > > The balance of creatures is set that by saving only the amount of points > the > winner has after the Battle, we know what is in the surviving legion; for > the > Attacker, 24 is the Titan alone, 36 Titan + Ogre, 40 Titan + Minotaur, 42 > Titan + Gorgon, 48 Titan + 2 Ogres, and so on. Same principle for the > Defender. So now I save that in the database. > > The Battles are still running using a modified ExpAI (that plays worse > than > the one in SVN I think...). In intermediate file "results1.txt", we have > the > average surviving points for each AI vs. AI combinations. My local ExpAI > seems > to be a worse defender points-wise - the attacker AI leaves the battle > with > more points than against other AIs. Which sounds bad for that ExpAI :-( > > And less than 1% of the Battle had the Titan + Minotaur combinations alive > at > the end. Which doesn't sound good, but what do you experienced players > think? > > -- > Romain Dolbeau > <ro...@do...> > -- "Feel free" - 10 GB Mailbox, 100 FreeSMS/Monat ... Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail |
|
From: Romain D. <ro...@do...> - 2012-01-22 10:55:02
|
On 01/22/12 11:06, Clemens Katzer wrote: > thanks, Romain, excellent job (the branch)! > I was able to set up a DB and run the all_combi.sh. Excellent. > It created the XML files and then started running games, which produced > some output (see below); I just don't know what to do with it :) Usually, I just plug into SQL and poke around the table to try and make some sense out of the results. I add some thoughts at the end of this mail. > I guess one next logical step would be to get all the "neuronal network" > classes from somewhere and plug them in into the colossus application. > Piece of cake, so to speak... right? :~) Yeah, but It seems to me neither Neuroph (easy to understand? but apparently a bit slow?) or Encog (more complicated?, fast?) doesn't do "reinforcement learning". I still haven't figured out what we really want to do and whether we can do it. I've update my script with a new battle I've chosen ; I've changed my mind about the whole thing. Now I have: ATTCREATURES=Titan,Gorgon,Minotaur,Ogre,Ogre,Ogre DEFCREATURES=Gorgon,Minotaur,Ogre,Ogre,Ogre So it's not the same for both side anymore. The old battle was too indecisive, probably more about luck than strategy. The new logic is this: in this new Battle, the Attacker should win - it has 94 pts vs. only 70, with the Titan has the clear material advantage. Also, the 'wanted' result is simple: the Ogres are cannon fodder, and the attacking Titan should try and keep the Minotaur as best it can. the Gorgon is also cannon fodder, but still better than the Ogre short-term [if anyone disagrees, please chimes in, I still lose most of my papers-and-dice game after over 20 years of playing, so...]. The balance of creatures is set that by saving only the amount of points the winner has after the Battle, we know what is in the surviving legion; for the Attacker, 24 is the Titan alone, 36 Titan + Ogre, 40 Titan + Minotaur, 42 Titan + Gorgon, 48 Titan + 2 Ogres, and so on. Same principle for the Defender. So now I save that in the database. The Battles are still running using a modified ExpAI (that plays worse than the one in SVN I think...). In intermediate file "results1.txt", we have the average surviving points for each AI vs. AI combinations. My local ExpAI seems to be a worse defender points-wise - the attacker AI leaves the battle with more points than against other AIs. Which sounds bad for that ExpAI :-( And less than 1% of the Battle had the Titan + Minotaur combinations alive at the end. Which doesn't sound good, but what do you experienced players think? -- Romain Dolbeau <ro...@do...> |
|
From: Clemens K. <lem...@sa...> - 2012-01-22 10:06:43
|
Hello all,
thanks, Romain, excellent job (the branch)!
I was able to set up a DB and run the all_combi.sh.
It created the XML files and then started running games, which produced
some output (see below); I just don't know what to do with it :)
Anyway, this SQL access is nice, because I had plans all the time to
store e.g. on web server some things to DB (usernames etc.,
or played games and their involved players, and lot of other stuff.)
Problem was always the "how to get started with a DB at all".
This might give me a start from which to hack on :)
As said, running all_combi.sh produces output as below. Dunno why some
of it is displayed as WARNING, or what I want to do with the results
in the DB tables ...
I guess one next logical step would be to get all the "neuronal network"
classes from somewhere and plug them in into the colossus application.
Piece of cake, so to speak... right? :~)
Thanks & Regards,
Clemens
+ pwd
+ ./test.sh 1 /home/katzer/ws/ai-mysql/Test_SimpleAI_vs_SimpleAI.xml
Starting Colossus to run internally 1 games.
Games will start from savegame /home/katzer/ws/ai-mysql/Test_SimpleAI_vs_SimpleAI.xml.
WARNING: SQL CREATE DOING "CREATE TABLE SmallTitan (SID integer AUTO_INCREMENT,terrain varchar(32) default 'null',A_Angel smallint default 0,A_Archangel smallint default 0,A_Behemoth smallint default 0,A_Centaur smallint default 0,A_Colossus smallint default 0,A_Cyclops smallint default 0,A_Dragon smallint default 0,A_Gargoyle smallint default 0,A_Giant smallint default 0,A_Gorgon smallint default 0,A_Griffon smallint default 0,A_Guardian smallint default 0,A_Hydra smallint default 0,A_Lion smallint default 0,A_Minotaur smallint default 0,A_Ogre smallint default 0,A_Ranger smallint default 0,A_Serpent smallint default 0,A_Troll smallint default 0,A_Unicorn smallint default 0,A_Warbear smallint default 0,A_Warlock smallint default 0,A_Wyvern smallint default 0,A_Titan smallint default 0,D_Angel smallint default 0,D_Archangel smallint default 0,D_Behemoth smallint default 0,D_Centaur smallint default 0,D_Colossus smallint default 0,D_Cyclops smallint default 0,D_Dragon smallint default 0,D_Gargoyle smallint default 0,D_Giant smallint default 0,D_Gorgon smallint default 0,D_Griffon smallint default 0,D_Guardian smallint default 0,D_Hydra smallint default 0,D_Lion smallint default 0,D_Minotaur smallint default 0,D_Ogre smallint default 0,D_Ranger smallint default 0,D_Serpent smallint default 0,D_Troll smallint default 0,D_Unicorn smallint default 0,D_Warbear smallint default 0,D_Warlock smallint default 0,D_Wyvern smallint default 0,D_Titan smallint default 0,summoned varchar(32) default 'null',summonturn smallint default -1,reinforcement varchar(32) default 'null',attackerpoints smallint default 0,defenderpoints smallint default 0,attacker bigint default 0,defender bigint default 0,draw bigint default 0,timeloss bigint default 0,winnerpointsleft smallint default 0,attAI varchar(32) default 'null',defAI varchar(32) default 'null',PRIMARY KEY (SID));"
WARNING: SQL: found 0 rows in SmallTitan totalling 0 battles (0, 0, 0, 0)
WARNING: SQL HISTORY (70 vs. 70)
WARNING: SQL HISTORY ( all):NONE!
WARNING: SQL HISTORY ( 20%):NONE!
WARNING: SQL HISTORY ( 5%):NONE!
WARNING: SQL HISTORY ( matching):NONE!
WARNING: BATTLE IS OVER ; relevant information is believed to be:
Fighting in Plains
Attacker: Rd01; Gorgon Minotaur Ogre Ogre Ogre
Defender: Br01; Gorgon Minotaur Ogre Ogre Ogre
RESULT: defender win ; left: Gorgon Ogre
WARNING: SQL INSERT/UPDATE -> QUERY OK (0,1,0,0) @ 1
+ for WHAT in '${ALLNAMES}'
++ pwd
+ ./test.sh 1 /home/katzer/ws/ai-mysql/Test_SimpleAI_vs_ExperimentalAI.xml
Starting Colossus to run internally 1 games.
Games will start from savegame /home/katzer/ws/ai-mysql/Test_SimpleAI_vs_ExperimentalAI.xml.
WARNING: SQL: found 1 rows in SmallTitan totalling 1 battles (0, 1, 0, 0)
WARNING: SQL HISTORY (70 vs. 70)
WARNING: SQL HISTORY ( all):Attacker: 0 Defender: 1 Draw: 0 TimeLoss: 0 [1]
WARNING: SQL HISTORY ( 20%):Attacker: 0 Defender: 1 Draw: 0 TimeLoss: 0 [1]
WARNING: SQL HISTORY ( 5%):Attacker: 0 Defender: 1 Draw: 0 TimeLoss: 0 [1]
WARNING: SQL HISTORY ( matching):Attacker: 0 Defender: 1 Draw: 0 TimeLoss: 0 [1]
WARNING: SQL HISTORY (null):Attacker: 0 Defender: 1 Draw: 0 TimeLoss: 0 [1]
WARNING: BATTLE IS OVER ; relevant information is believed to be:
Fighting in Plains
Attacker: Rd01; Gorgon Minotaur Ogre Ogre Ogre
Defender: Br01; Gorgon Minotaur Ogre Ogre Ogre
RESULT: attacker win ; left: Ogre Ogre
WARNING: SQL INSERT/UPDATE -> QUERY OK (1,0,0,0) @ 2
+ for WHAT in '${ALLNAMES}'
++ pwd
+ ./test.sh 1 /home/katzer/ws/ai-mysql/Test_SimpleAI_vs_RationalAI.xml
Starting Colossus to run internally 1 games.
Games will start from savegame /home/katzer/ws/ai-mysql/Test_SimpleAI_vs_RationalAI.xml.
WARNING: SQL: found 2 rows in SmallTitan totalling 2 battles (1, 1, 0, 0)
WARNING: SQL HISTORY (70 vs. 70)
WARNING: SQL HISTORY ( all):Attacker: 1 Defender: 1 Draw: 0 TimeLoss: 0 [1, 2]
WARNING: SQL HISTORY ( 20%):Attacker: 1 Defender: 1 Draw: 0 TimeLoss: 0 [1, 2]
WARNING: SQL HISTORY ( 5%):Attacker: 1 Defender: 1 Draw: 0 TimeLoss: 0 [1, 2]
WARNING: SQL HISTORY ( matching):Attacker: 1 Defender: 1 Draw: 0 TimeLoss: 0 [1, 2]
WARNING: SQL HISTORY (null):Attacker: 1 Defender: 1 Draw: 0 TimeLoss: 0 [1, 2]
-------- Original-Nachricht --------
> Datum: Mon, 09 Jan 2012 17:56:39 +0100
> Von: Romain Dolbeau <ro...@do...>
> An: col...@li...
> Betreff: [Colossus-developers] Evaluating a battle (was: Stanford online course ...)
> On 01/08/12 12:09, Romain Dolbeau wrote:
> > I think that if we could have a simple battle (4 or 5 pieces, same on
> > both side, in Plains) that a "TrainedAI" could learn to fight
> > "optimally" against both SimpleAI, ExpAI, other AIs and itself
>
> Just to know where we stand now, I'm running an updated version from my
> very old SQL code. I've created a battle like above (2 Trolls and 3 Ogres
> vs. the same, in Plains), and I'm running ExpAI vs. SimpleAI and SimpleAI
> vs. ExpAI, and storing in my database. I have no idea if one has an actual
> edge over the other...
>
> I'm attaching the needed stuff to run the same.
>
> Procedure:
> 1) put BattleRecordFilteredResults.java, BattleRecord.java,
> BattleRecordSQL.java in the server package (from a SVN checkout)
> 2) apply the patch 'patch'
> 3) get 'mysql-connector-java-5.0.8-bin.jar' from
> <http://dev.mysql.com/downloads/connector/j/5.0.html> and put it in libs/
> 4) rebuild the code
> 5) rebuild the tools ('ant tools')
> 6) you can regenerate a custom battle with MakeBattle like thus (the 2 XML
> files I use are in 'stuff' already, you can use them directly) :
>
> #####
> java -classpath build/ant/classes net.sf.colossus.tools.MakeBattle
> --dlist=Troll,Troll,Ogre,Ogre,Ogre --alist=Troll,Troll,Ogre,Ogre,Ogre
> --aAI=ExperimentalAI --dAI=SimpleAI > Test_ExpAI_vs_SimpleAI.xml
>
> java -classpath build/ant/classes net.sf.colossus.tools.MakeBattle
> --dlist=Troll,Troll,Ogre,Ogre,Ogre --alist=Troll,Troll,Ogre,Ogre,Ogre
> --dAI=ExperimentalAI --aAI=SimpleAI > Test_SimpleAI_vs_ExpAI.xml
> #####
>
> 7) have a mysql database running on the local machine ; you need to create
> the base inside the SQL and to grant the privileges to the proper user:
>
> ##### (inside mysql)
> create database ColossusBattleRecordV2;
>
> GRANT ALL PRIVILEGES ON ColossusBattleRecordV2.* TO 'colossus'@'localhost'
> identified by 'colossus';
> #####
>
> (you can change a lot of thing inside BattleRecordSQL.java)
>
> 8) to test everything work (from the just rebuilded Colosus SVN checkout)
>
> ./test.sh 1 /absolute/path/to/Test_ExpAI_vs_SimpleAI.xml
>
> should run the battle and store the results in the database. Then you can
> run both a gazillion time to get statistics on your favorite battle with
> your favorite AIs.
>
> So far, I have 27/7/6 and 15/15/10 (attacker win/defender win/draw, no
> timeloss yet) depending on whether ExpAI (first case) or SimpleAI (second
> case) is the attacker.
>
> Cordially,
>
> P.S. beware, the code is ugly, it's a quick'n'dirty hack to save time on
> creating statistics.
>
> --
> Romain Dolbeau
> <ro...@do...>
>
--
"Feel free" - 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail
|