Skip to content
Little GolemMake your next move.

Hex bots on little golem

Public forum discussion.

#2 · FatPhil

21 Jan 2014

Excellent! Do you know what their target rating is likely to be?

I have no problem desperately trying, but failing, to not fling ratings points in their direction a couple of times until they're closer to where they should be. It's always painful on the way up, but everything levels out in the end, so I encourage others to join the hex13 MC party...

#4 · lazyplayer

21 Jan 2014

Over 2000 but not by much... but their strenght/weakness is probably different from that of humans... i think they probably play 2600 near the end and sub 1900 near the start... :)

#5 · Arek Kulczycki

21 Jan 2014

Playing B12 and L2 as first 2 moves the bot is over 2000 level? This is insane, let me play the MC then :>

#6 · shalev

21 Jan 2014

B12 was probably ok after A10, but I agree L2 is pretty crazy. But look how the game turned out!

It's also interesting to go back and try to find Ignatius's mistakes.

#7 · Ignatius J Reilly

21 Jan 2014

I came to this thread to confess that I was about to lose a game against mohex, but I see that this has already been discussed. I was not expecting the bots to be very strong, so I played very quickly the first several moves. My 25 b5 was a silly mistake. Clearly I made some mistakes before this but I haven't gone back to analyze. The L2 J3 H4 sequence led me to believe that mohex was adopting a very simple-minded strategy, but these moves were more useful than I initially gave them credit for.

#8 · Ignatius J Reilly

21 Jan 2014

Regarding L2 + B12:

Thirty years ago I wrote a very simple hex-playing program which used a simulated electrical network to select promising moves (and also to evaluate board positions) and then did some alpha-beta pruning, looking ahead four moves. The program worked surprisingly well, given the very short amount of time I spent writing the program. Initially I was disappointed with my program, because it tended to play its first two moves at L2 and B12 (or rather, the equivalent locations on a smaller board). But I soon found that L2 and B12 were stronger than I realized. For a while I adopted this strategy in my own games.

#9 · shalev

21 Jan 2014

What I find strange about L2 in this particular game is that after i9, the second player can play j10 and gain some strength on the left reasonably efficiently. Instead, Mohex chose to play L2+j3, gaining a ladder escape on the obtuse corner, which I think is less efficient here (although in general I like obtuse corner escapes).

By the way, Ignatius, 9.f5 was probably a mistake... I didn't really analyze, but 9.g5 feels a lot better.

#10 · Ignatius J Reilly

21 Jan 2014

Yes, I didn't put much thought into 9.f5. At that point in the game I did not have much respect for my opponent.

#12 · Ingo Althofer

21 Jan 2014

Hello,
I met two of the programmers of "MoHex" and "Wolve" during
a computer games conference in August 2013, in Japan.
If I remember correctly after their talk (on Hex programming)
it was, amongst other things, discussed that it might be
interesting to test the bots on LittleGolem.

By the way, in that conference also Richard Lorentz presented
his work on Breakthrough programming.

Ingo.

#14 · shalev

22 Jan 2014

Arek, I think the bots have some randomness, so I don't think it's likely that the bot will play the same game.

#15 · Arek Kulczycki

23 Jan 2014

This time I donated some ranking points to a bot...

Gotta admit I played badly and also miscalculated the finish, but the wolve_bot took his chances perfectly I would say. I didn't expect this after seeing some L2 or L3 play. We have to be really careful against AI!

#17 · shalev

23 Jan 2014

This is exciting - the existence of strong bots could really expand our Hex knowledge!

I just started a game against mohex_bot. I'll try to play carefully. Let's see how it goes! (Of course, don't comment on the game before it's over).

#18 · Greck

23 Jan 2014

just in case mohex_bot is reading :P

#19 · lazyplayer

23 Jan 2014

mo_hex vs shalev game so far: 1.c2 2.f8 3.j9 4.h7

First L2 mania, now 4 H7... seems they play like me.. or i play like them..

hehe :)

and in fact i had noticed they're strong at the end while playing with mohex some years ago, on my computer... i've already experimented with them... :)

#21 · shalev

23 Jan 2014

@Gregorio: LOL

@lazyplayer: I just played 5. J6. I think mohex's H7 is not very good... I'd be embarrassed if I lost from here.

#22 · lazyplayer

23 Jan 2014

shalev, i agree it is not very good but it is not totally absurd.. some games can be won by playing like that.. but.. only some :D

#23 · lazyplayer

23 Jan 2014

shalev, i agree it is not very good but it is not totally absurd.. some games can be won by playing like that.. but.. only some :D

#24 · Art Duval

24 Jan 2014

shalev, will you post a full commentary on your game when it's done? That would be very interesting.

#25 · shalev

24 Jan 2014

@Art Duval: Sure, I'll be happy to!

#27 · FatPhil

28 Jan 2014

There are several mohex moves that seem very very odd to me, and I predicted lots of Maciej's moves, so I'm happy that in the face of a mental box, I can occasionally pick a right move.

Maybe mohex gets performance anxiety when faced with someone so strong.

I'm glad to have donated a few dozen points already to their flotation campaign, I'll sign up for a few more MCs...

#28 · David J Bush

28 Jan 2014

MoHex is likely the strongest engine, but could use improvement. For example, one of the parameters you can set is number of threads, but when increased beyond 1, it crashes. Maybe some of the code for the solver algorithm, which recently mapped out 9x9 and is all about multiple thread management, could be incorporated?

#29 · shalev

28 Jan 2014

Just finished my game against mohex. I'll write up an analysis.

#30 · FatPhil

29 Jan 2014

!http://www.trmph.com/diagram/1,hex,13,c2f8j9h7j6j5e7f6i6j7i7i4h5h4g5g4e5f5d9e6c7d8b9b12c10d11c12c11e10,-1!

Dumb question time again! Looking at the ladder that formed, and your escape, did mohex play that little sequence as best he could? I tried a few other alternatives for mohex deviating from the same row after a different number of steps across, and with white in my incapable hands each one lead to your escape providing a connection for black. So was that move 29 effectively a black connection to the bottom?

(Feel free to just push this to one side until later - don't get disturbed from the bigger task.)

#31 · shalev

29 Jan 2014

Phil, that's right: move 29 is connected to the bottom. In fact, already at move 21 my c7 stone is connected to both the top and the bottom. I can probably prove I had a win even before that, but I think c7 is the first stone that is guaranteed to be in the winning path.

#32 · FatPhil

29 Jan 2014

Yeah, thanks for that, I've just read through your full game, and worked backwards from 29 to see where *I* can actually detect futility set in. I'm happy that I've managed to push it back at least 5 plies. It would be nice to have a strong AI to play against, so that I can try out my what-if's. I'd like to check if I really could connect to the bottom from move 24 onwards, against any white play, for example.

#34 · Art Duval

2 Feb 2014

@shalev: interesting! Sometimes when I'm pretty sure I'm in a losing position that (but it's maybe hard to see that it's losing), especially to a lower-rated player, my only hope is to make the game as confusing as I can. (I prefer not to give examples, because I don't want to embarrass anyone.) Maybe this is the same thing.

So, maybe not "stupid" moves when it sees the opponent is winning, but maybe less straightforward. It could be a design feature, or it could be that the less straightforward move leads to a longer or more complicated game, in some measure. But I'm just speculating.

#35 · Harald Korneliussen

3 Feb 2014

"Does wolve play stupid moves if it can see a forced win for the opponent?"

That is very likely. Monte Carlo Go programs often do. When all moves are really losing, it's hard to make the program pick one that's sensible from a human perspective (at least without sacrificing play strength).

But last time I checked, Wolve was the traditional alpha-beta search program and MoHex the Monte Carlo one, so it might simply be a bug. I made that error in a connect four player I wrote once, it didn't value later losses more highly than early losses, so as soon as it reached a theoretically lost position, it would play randomly.

#36 · FatPhil

7 Feb 2014

2000+, yeah, right!

If there's anything interesting in that game, I'd like to know, I suspect there isn't, except from a bug-squashing perspective in MoHex. I played my same naive 1600 "strategy" of panicking every move and playing reactively. I think the only move where I thought I didn't fit that pattern was 31, where I thought I could push the game in the direction I wanted. Didn't feel stressed until move 72, as I hadn't envisioned that, it disrupted the neat easy finish that I guessed ought to be there. Endgame-wise I probably played it terribly, I was just trying to keep in mind that I always need to choices of where a connection should be, and each of those two choices should leave me with 2 choices... I have no idea when the game was academically over - some insight into the end would be nice if someone has the time. Similarly, what was the final goof from the bot? I don't remember seeing any, as I said I felt I was just following his lead for the first 30 moves of the game, but of course, I only have very shallow insight into the game.

I signed up to the MC in order to charitably donate ratings points to the bot - all such charity is revoked, it's gonna have to find its own level without my help!

Thanks in advance for any feedback which might help my game.

Right, I'm buzzed now, I need a beer!

#38 · shalev

8 Feb 2014

Congratulations Phil!

I took a look at the game. It's somewhat complicated. I think Phil wins after move 32, but I didn't verify 100%. Move 34 is terrible, so I'm more certain after that. I'm not sure if mohex had a way to win at move 32. It's complicated, but even then position is likely already lost. Mohex's chances are possibly better if he deviates at move 26:

http://www.trmph.com/hex/board#13,l12g7j6j5h6h7d8d9b10b11c10c11d10d11e10e11f10f6e6c9b9c8b8c7b7c5

But I actually think mohex is behind most of the game. I don't really like move 18, and white's opening moves are questionable.

This is interesting, because I was sort of expecting the game to go back and forth, with both players making mistakes and the winning player switching. Instead, it seems like black is just leading the whole time...

I wonder if other players agree with me about this. I definitely could be mistaken in my analysis.

#39 · FatPhil

8 Feb 2014

@MG: Yes - 46.b4 elicited a "?!?!?" from me.

@Shalev: Thanks - I'm glad that the time I made a decisive move correlates with the bot entering a state of almost certain loss. If only I knew why I made that move! I don't know if 34 actually is terrible, but it took only a fraction of a second to respond with a move that I thought made my connection easier. However, that's probably one definition of a bad move. I don't know what I'd have done with your move 26, and that makes it immediately superior to what the bot did.

Who runs the bots? Can we ask them (the bots, but presumably via their human proxies) why they made the choices they did. If they're MC, then can the moves be run again and again, to see if the bot has consensus with itself? This is for the benefit of the bot, situations like move 26, 34, 46 are surely good test cases?

#40 · FatPhil

8 Feb 2014

Don't write a sequence of interobangs, as they'll get converted into

#41 · shalev

10 Feb 2014

This is the first instance I've seen of mohex making an error that turns a certain winning position into a certain losing one:

http://www.littlegolem.net/jsp/game/game.jsp?gid=1607976&nmove=21

Mohex should have played 21. h3 instead of 21. i2, which would give this:

http://www.trmph.com/hex/board#13,k7k7c12d9e9e4f7g6h6h5i5i4j4j3k3l1k2k1j2j1h3i2i3h2f3g3f4g4e6

Overall, mohex seems to be playing worse than I originally estimated. I think its final rating might be something like 1900 or even 1800.

#42 · Arek Kulczycki

25 Feb 2014

I'm pretty sure that the bots can see (with 100% certainty) if they're winning or losing after around 30 moves or less. It would be a nice feature if they just resigned at a set moment when losing - they cannot do "tricks" after all.

Maybe I'm overreacting, but it really annoys me to play until the very last piece of the winning line is put on the board... What do you think?

#43 · dushoff

25 Feb 2014

@arek Yes, it's stupid for the bots to play until the very end. It should be reasonably simple to come up with a resignation strategy. For example, the canonical 9x9 game posted in a pdf recently seemed to stop at exactly the right time; the opponent's win should be "trivial" in some definable sense.

#44 · na_wspak

25 Feb 2014

The give up algorithm should consider the opponent's rank.

#45 · David J Bush

25 Feb 2014

The only Hex engine I know that would resign was Six.

At least, this isn't Amazons :-)

#46 · Arek Kulczycki

25 Feb 2014

If introducing the give up algorithm is too time consuming then I think it would be just right to set a maximum number of moves - say, 40 for 13x13 board. It is extremely rare for the game not to be obvious after 40 moves and don't tell me that bots might not recognise a losing position!

Do the bots' authors read this forum? :)

#47 · Mirko Rahn

25 Feb 2014

Conway also writes about how to play when in hopeless position. One then should make it as hard as possible for the winner, give as much chances to loose as possible, he says.

The human "give up algorithm" is quite complex and takes into account not only the (objective) strength of the opponent but expresses the believe that there is no chance to win and also it is a social concept to not bore others. Please note that these are relative terms in the human world, e.g. it might be a boring game for a strong player while the opponent still believes in the possibility of a win. Moreover, these terms are hard to implement.

However, it certainly would make it more enjoyable for humans when the algorithms would be tuned to play more like a human. Not only wrt. to resign, e.g. the Havannah bots often go to much for the sudden death instead of trying to achieve strategic goals.

@Arek: Right, if it is _impossible_ to win, then the bot should resign. But "impossible" is relative to the worst possible player, not guys like you.

#48 · shalev

26 Feb 2014

Arek, 40 is a bit too little, no? I played several games that lasted longer than 40 moves, including a few against you.

50 moves for 13x13 sounds more reasonable, but it could be over a lot sooner depending on the situation. I think it's reasonable to ask the bots to resign when they detect that they lost for sure. If that's too harsh, they can maybe spend a few moves testing the opponent, but not too many. Any player good enough to get into a surely winning position against the bot is likely to see the win at that point.

#49 · Arek Kulczycki

26 Feb 2014

@shalev: Our recent game was uncommonly long and it was still not obvious only at move 35 - http://littlegolem.net/jsp/game/game.jsp?gid=1597330&nmove=35.
Later I was blindly following a bad idea by confusion.

Hence I think 40 is more than enough considering that bots are unable to attempt to trick humans, even more than that - they play nonsense near the end.
Also na_wspak made a good suggestion. The number could differ regarding to opponent's rank.

I'm not persistent that this is a good idea, but this is the easiest idea to implement.

#50 · Mirko Rahn

26 Feb 2014

What exactly do you mean by "to trick"?

You are right, better give up than play nonsense but I can not see why, in principle, a machine can not play in a way that makes the winning path as long as possible.