-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

> I had a very kiss algorithm previously.  It was very close to
> time_to_use = 0.1 * (time_left - 60)

My impression is that you over-engineer (or over-think) everything.  You
try to improve on something before you've implemented something that is
simple and you know works reasonably well.

Always do the simple thing first and prove to yourself that it is broken
before you try to fix it.   Then you have a base-line you can test against.

Why time_left - 60?     If you have less than 1 minute left your program
is going to have negative time.    You are starting your program out
right away with a 1 minute time-handicap.   There is no reason to do
this.

If you are afraid you will lose on time, don't worry about that too much
unless you see it happening.  In theory it will NEVER happen with this
kind of function but in practice network delays or other timing
ambiguities can have an influence.

In my opinion,  if you NEVER lose on time your time-control algorithm is
 too conservative.   To make the best use of your time you want to end
every game with NO time left - although that is not possible in practice
when using sudden death time-controls that CGOS uses.  There is no
virtue in never losing on time if you are playing with a big time handicap.

If you want a different curve, don't use a multiplier, use a different
math operator or function.    You may want some function that takes into
 consideration the move number.   The principle here would be to
consider that the number of moves remaining is not likely to be as high
at move 50 as it is at move 1.    What I do can probably be improved but
it gets away from KISS.

I also think 1/10 of the remaining time per move is too aggressive, but
you can figure this out with testing.

It will never be perfect because you can't know in advance how long a
game will last.   If you know your opponent will resign when he is
losing for instance, you would be far more aggressive about your time
control because you only have to allocate enough time to achieve a won
game, not to finish the game and you don't care much about losing on
time in a lost position.

Probably, an ideal algorithm will consider:

  1. The move number.
  2. The opponent
  3. The score.
  4. The difficulty of the current position.

You can gain some time playing easy moves quickly, but you can shoot
yourself in the foot if you don't get this right!     Don't even try to
get fancy until your program is so good that you must seek competitive
refinements.



- - Don
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFG99rfDsOllbwnSikRAhpcAJ4kiSdmrKY7t7y4/QduYRXOAHP0/gCfXe4s
RSFl84SyG7206q0Tu+JXdmU=
=+gki
-----END PGP SIGNATURE-----
_______________________________________________
computer-go mailing list
computer-go@computer-go.org
http://www.computer-go.org/mailman/listinfo/computer-go/

Reply via email to