Petr Baudis [Mon, 4 Aug 2014 01:39:51 +0000 (4 03:39 +0200)]
selfatari_cousin(): Suggest counter-captures
When looking for alternatives of a self-atari move, aside of the
other liberty also look if we can counter-capture an opponent's
group.
This improves handling of some false-eyeish corner situations,
where we will more often capture the falsifying opponent stones
rather than connecting the pseudo-false eye (which can be fatal
to the status of the group).
Petr Baudis [Mon, 4 Aug 2014 00:29:57 +0000 (4 02:29 +0200)]
Moggy eyefillrate: Revert from 40 back to 60
With less than 50%, Pachi starts to massively misplay the concerned
corner situations. I think measurements are way too noisy for
eyefillrate since the feature is very rarely applied. Perhaps we
could get away fine with just pitching this at 100.
Petr Baudis [Sat, 2 Aug 2014 21:55:59 +0000 (2 23:55 +0200)]
t-unit/sar.t: Add eye falsification selfatari testcase
Petr Baudis [Sat, 2 Aug 2014 14:30:25 +0000 (2 16:30 +0200)]
Selfatari: Allow capture-from-within moves
Petr Baudis [Sat, 1 Feb 2014 03:05:26 +0000 (1 04:05 +0100)]
Moggy init: Also don't set nakaderate twice... sigh
Petr Baudis [Sat, 1 Feb 2014 03:03:07 +0000 (1 04:03 +0100)]
Moggy init: Also don't set nlibrate twice
Petr Baudis [Sat, 1 Feb 2014 03:01:32 +0000 (1 04:01 +0100)]
Moggy init: Rearrange rates initialization by their default value
Petr Baudis [Sat, 1 Feb 2014 02:59:55 +0000 (1 03:59 +0100)]
Moggy init: Do not set lcapturerate twice
Petr Baudis [Sat, 1 Feb 2014 02:59:36 +0000 (1 03:59 +0100)]
Moggy ladderrate: Add a note about obsolescence
Petr Baudis [Wed, 29 Jan 2014 22:12:03 +0000 (29 23:12 +0100)]
Playout: New per-engine setboard_randomok setting
This is for a side-branch experiment where we generate some per-playout
settings for the Moggy playout policy.
Petr Baudis [Wed, 29 Jan 2014 19:34:12 +0000 (29 20:34 +0100)]
Twiddle several Moggy playout policy parameters based on CLOP
These are CLOP experiments with pachi-29a24, single-threaded (i7-3770),
15x15 against GNUGo level 10; patterns were not used (?).
The number after [%] is |eigenvalue|.
abstime 500s 1000s 2000s 4000s
nakade 61% 3.39 80% 3.29 53% 7.62 66% 7.92
eyefill 54% 0.52 84% 0.61 49% 0.38 32% 2.45
nlib 29% 0.02 20% 0.09 22% 0.10 27% 0.28
ko 71% 0.08 63% 0.27 60% 0.33 48% 0.57
uElo SD 35 26 22 39 (smaller is more confident)
Just for your interest, mean winrate during tuning:
komi -35.5 -40.5 -50.5 -50.5 (to give GNUGo an advantage)
Elo 140 164 84 101
Nota bene:
- 4000s S.D. single-threaded translates just to 500s S.D. (8 minutes)
8-threaded, which is still faster than a regular KGS blitz.
- In general, 500s and 4000s values are unfortunately of low confidence,
this Elo spread is more than influence of most of the parameters.
Parameter analysis:
- nakade: let's go with the rough mean of 60%, which seems to hold.
- eyefill: we see a clear downward trend; let's go with 40%, more
tuning needed.
- nlib: we see about constant 25% optimum, but the feature is not
very interesting in general.
- ko: steady decrease, but 40% may hit closer to home in realistic
KGS setting.
Overally, after 500 games, the performance changes as follows (komi -55):
-Elo uElo +Elo (+-1SD)
361 377 392 prior=pattern=80,playout=moggy:nakaderate=20:nlibrate=20:korate=20:eyefillrate=60
396 411 427 prior=pattern=160,playout=moggy:nakaderate=20:nlibrate=20:korate=20:eyefillrate=60
384 399 414 prior=pattern=160,playout=moggy:nakaderate=20:nlibrate=25:korate=40:eyefillrate=60
404 420 435 prior=pattern=160,playout=moggy:nakaderate=60:nlibrate=25:korate=40:eyefillrate=40
Not too conclusive, unfortuinately, but it seems we should have a slight
improvement.
Petr Baudis [Wed, 29 Jan 2014 19:00:20 +0000 (29 20:00 +0100)]
UCT pattern prior: Raise default from 80 to 160
After 500 games with single threaded (i7 HT) -t =4000, there is 44-40+22
Elo improvement here; let's optimize more for realistic scenarios for
our users even though on big cluster, 80 may be a better default.
Petr Baudis [Tue, 31 Dec 2013 02:15:30 +0000 (31 03:15 +0100)]
Moggy nakaderate: 20 -> default, i.e. much more often
Based on recent tuning; ongoing tweaks.
Petr Baudis [Tue, 31 Dec 2013 00:47:26 +0000 (31 01:47 +0100)]
Moggy nakade_check(): Call _after_ x-lib checks, not before
After 3000-games test, there is still no statistically significant
information about it being better or worse than previously, but it sure
makes more sense so let's do it.
Petr Baudis [Sun, 29 Dec 2013 21:37:11 +0000 (29 22:37 +0100)]
autotest-show: Add support for Elo display
Petr Baudis [Sat, 28 Dec 2013 17:49:25 +0000 (28 18:49 +0100)]
UCT debug_after: Extra printouts
Petr Baudis [Tue, 24 Dec 2013 02:12:42 +0000 (24 03:12 +0100)]
UCT dumpthres: Convert from something weird to true fraction of #root.playouts
Petr Baudis [Tue, 24 Dec 2013 01:55:56 +0000 (24 02:55 +0100)]
UCT debug_after: New aid to combine regular thinking + debugging simulation dump
Petr Baudis [Mon, 16 Dec 2013 13:38:00 +0000 (16 14:38 +0100)]
Fix build in packaging systems like portage or debian
We now allow custom LIBS, LDFLAGS settings akin to custom CFLAGS
environment settings by using SYS_* for our overridable internal flags.
Pointed out by Guillaume BINET, solution proposed by Stanisław Halik.
Petr Baudis [Mon, 16 Dec 2013 03:07:14 +0000 (16 04:07 +0100)]
neighbor_count_at(): Fix S_NONE warning
Pointed out by Eugene Lovelace.
Petr Baudis [Mon, 16 Dec 2013 03:03:56 +0000 (16 04:03 +0100)]
is_border_ladder() shortage of libs test: Properly test for potential self-atari condition
Petr Baudis [Sun, 15 Dec 2013 15:03:42 +0000 (15 16:03 +0100)]
TODO: GNUGo cross-pollination?
Petr Baudis [Sun, 15 Dec 2013 14:55:18 +0000 (15 15:55 +0100)]
TODO: Game analysis features
Petr Baudis [Sun, 15 Dec 2013 14:48:00 +0000 (15 15:48 +0100)]
TODO: is_private() hack
Petr Baudis [Sun, 15 Dec 2013 14:45:49 +0000 (15 15:45 +0100)]
TODO: Revamp, elaborate on things
Petr Baudis [Fri, 13 Dec 2013 11:41:46 +0000 (13 12:41 +0100)]
Consider a tree during which we drop komi as untrustworthy - don't resign or reuse it
In late endgame, raising a komi by 1pt can fatally destroy the tree.
Problem discovered in KGS pachi-Marknguyen on 2013-12-13.
Petr Baudis [Fri, 13 Dec 2013 11:38:24 +0000 (13 12:38 +0100)]
sgf2gtp.py: Default SZ to 19
Petr Baudis [Fri, 13 Dec 2013 11:38:09 +0000 (13 12:38 +0100)]
pattern_rate_moves(): Add a debug print listing all patterns considered
Petr Baudis [Tue, 10 Dec 2013 02:08:18 +0000 (10 03:08 +0100)]
PATTERN_SPEC_MATCH_DEFAULT: Disable PF_CAPTURE_COUNTSTONES as it was not used for generating stock pattern files
Using non-matching pattern files and patternspecs is rather fatal as
common situations will not generate matching patterns anymore. A symptom
of that was kindly reported by Martin Miller.
Stanislaw Halik [Fri, 15 Nov 2013 14:40:19 +0000 (15 15:40 +0100)]
add arm-linux-androideabi v16 instructions
Stanislaw Halik [Fri, 15 Nov 2013 14:30:38 +0000 (15 15:30 +0100)]
overriding {c,ld}flags eg when crossing android
Petr Baudis [Thu, 14 Nov 2013 00:54:34 +0000 (14 01:54 +0100)]
uct_progress_text(): Typo fix (add missing space)
Stanislaw Halik [Wed, 13 Nov 2013 23:56:50 +0000 (14 00:56 +0100)]
underflow less by s/floating_t/double/
Stanislaw Halik [Wed, 13 Nov 2013 23:47:11 +0000 (14 00:47 +0100)]
show color information for easy twogtp regress test
Petr Baudis [Mon, 11 Nov 2013 22:39:18 +0000 (11 23:39 +0100)]
network.c: Add missing netinet/in.h include (by Stanisław Halik)
Petr Baudis [Thu, 12 Sep 2013 07:45:42 +0000 (12 09:45 +0200)]
Moggy 3x3 cut keima pattern: Adjust to cover cutting hane-nobi shapes and bamboo joints too
Inspired by pachi vs. Aya in the September KGS slow tournament.
Petr Baudis [Sun, 25 Aug 2013 17:30:50 +0000 (25 19:30 +0200)]
UCB1AMAF vloss_sqrt: Enable, tested to fix high-threading tree deformations
Petr Baudis [Sun, 25 Aug 2013 15:22:36 +0000 (25 17:22 +0200)]
Moggy: Bump selfatarirate to 95.
Petr Baudis [Sat, 24 Aug 2013 23:20:06 +0000 (25 01:20 +0200)]
UCB1AMAF: vloss_sqrt to re-normalize virtual loss for better many-threads performance
Rescale virtual loss value to square root of #threads. This mitigates
the number of virtual losses added in case of a large amount of
threads; it seems that with linear virtual losses, overly diverse
exploration caused by this may cause a wrong mean value computed
for the parent node.
Off by default for now.
Petr Baudis [Sat, 17 Aug 2013 20:18:47 +0000 (17 22:18 +0200)]
Rewrite virtual loss support
Instead of directly manipulating the u stats, track the number
of parallel descents separately and use during node evaluation.
Also, manipulate the counter atomically.
On highly parallel machines, the amount of inconsistency introduced by
virtual loss was just too huge - mostly, there would be a tendency of
"forgetting" the virtual loss addition, but performing the removal,
therefore swinging the results off balance, an effect that would be
self-reinforcing (a funny consequence of how the search works) and
cause the tree to quickly deteriorate into very long, not particulary
wise branches.
The change makes virtual loss support reliable (though I did not test
*too* rigorously if it still works so well, game performance wise)
and doesn't seem to introduce any noticeable performance degradation.
Petr Baudis [Thu, 15 Aug 2013 18:02:25 +0000 (15 20:02 +0200)]
Merge branch 'master' of ssh://repo.or.cz/srv/git/pachi
Petr Baudis [Thu, 15 Aug 2013 18:02:16 +0000 (15 20:02 +0200)]
play_random_game(): Don't enforce minimum gamelen (10)
This intereferes with extremely long tree branches, triggering an
assertion failure wrt. amafmap->gamelen.
Petr Baudis [Thu, 15 Aug 2013 00:54:03 +0000 (15 02:54 +0200)]
Stop pondering on kgs-game_over so that we don't waste CPU when waiting for the next game
Petr Baudis [Fri, 19 Apr 2013 19:27:19 +0000 (19 21:27 +0200)]
uct_search_result(): Resign if only pass is feasible but it won't win the game
Reported by Martin Mueller. This change needs careful testing for
unintended consequences, in case Pachi starts resigning at weird
times...
Petr Baudis [Sun, 14 Apr 2013 17:29:48 +0000 (14 19:29 +0200)]
UCT banner: Allow + instead of space, because kgsGtp is braindamaged
Petr Baudis [Sun, 14 Apr 2013 17:03:49 +0000 (14 19:03 +0200)]
Moggy pat3_gammas: Tuned default values
Petr Baudis [Sun, 14 Apr 2013 17:00:11 +0000 (14 19:00 +0200)]
Merge branch 'moggy3patgamma'
Petr Baudis [Sun, 24 Mar 2013 21:22:11 +0000 (24 22:22 +0100)]
mq_gamma_pick(): Fix case of zero total
Petr Baudis [Sun, 24 Mar 2013 20:19:36 +0000 (24 21:19 +0100)]
Moggy test_pattern3_here(): Disable spurious debug print
Petr Baudis [Sun, 24 Mar 2013 20:15:54 +0000 (24 21:15 +0100)]
Moggy eyefixrate: Set to 100 after brief tuning
Petr Baudis [Fri, 22 Mar 2013 15:37:07 +0000 (22 16:37 +0100)]
Moggy, Pattern3: Add support for assigning gamma values to 3x3 patterns (by default all gammas are still 1.0)
Petr Baudis [Fri, 22 Mar 2013 15:36:34 +0000 (22 16:36 +0100)]
Pattern3: Store pattern index in the top six bits of the hash table
Petr Baudis [Fri, 22 Mar 2013 15:36:07 +0000 (22 16:36 +0100)]
mq.h: Add mq_gamma_{add,pick} routines for dealing with gamma probdists
Petr Baudis [Fri, 22 Mar 2013 12:13:05 +0000 (22 13:13 +0100)]
Moggy eye fix: Fill falsifying move when approach liberty has been filled
Inspired by the Zen-Ishida Densei-sen game.
Petr Baudis [Tue, 19 Mar 2013 15:23:43 +0000 (20 00:23 +0900)]
uct_playout(): Add comment warning about the result number mess, I got caught up in it myself again
Petr Baudis [Tue, 19 Mar 2013 15:23:25 +0000 (20 00:23 +0900)]
uct_playout(): Add playout# to UCT walk debug print
Petr Baudis [Tue, 19 Mar 2013 15:23:03 +0000 (20 00:23 +0900)]
Moggy joseki_check(): Do not suggest invalid joseki moves (on hash collisions)
Petr Baudis [Tue, 19 Mar 2013 12:40:37 +0000 (19 21:40 +0900)]
README (test opponent): +pondering=0, pass_all_alive
Petr Baudis [Sat, 9 Mar 2013 00:06:33 +0000 (9 01:06 +0100)]
Moggy mq_tagged_choose: Debug print with probability distribution
Petr Baudis [Sat, 9 Mar 2013 00:06:15 +0000 (9 01:06 +0100)]
Moggy fullchoose: Do not match features with zero rate
Petr Baudis [Sat, 9 Mar 2013 00:05:40 +0000 (9 01:05 +0100)]
Moggy fullchoose: Fix global atari matching
Petr Baudis [Thu, 7 Mar 2013 01:39:22 +0000 (7 02:39 +0100)]
tools/sgf2gtp.py: Graceful handling of SGFs without black/white setup
Petr Baudis [Wed, 6 Mar 2013 03:21:10 +0000 (6 04:21 +0100)]
Dynkomi linear: Do not call adjusting linear_permove() from linear_persim()
The adjustment is not persistent if not called over permove API. This
caused the endless streams of dynkomi messages in some yose situations.
Petr Baudis [Wed, 6 Mar 2013 03:19:49 +0000 (6 04:19 +0100)]
Dynkomi linear: Factor out linear_simple() from linear_permove()
Petr Baudis [Mon, 4 Mar 2013 18:34:43 +0000 (4 19:34 +0100)]
Thread managers: Raise spawned/joined worker prints debug level to reduce noise at -d 4
D. Cooper Stevenson [Wed, 20 Feb 2013 23:24:09 +0000 (21 00:24 +0100)]
sgf2gtp.py: Include setup stones
This is useful if you want to export a position for processing by the
engine: simply save the position from the GUI and run this modified
sgf2gtp script on it.
Petr Baudis [Wed, 20 Feb 2013 23:18:35 +0000 (21 00:18 +0100)]
sgf2gtp.py: Convert tabs to four spaces, as is the Python custom
Petr Baudis [Wed, 20 Feb 2013 10:44:36 +0000 (20 11:44 +0100)]
network.c: SO_REUSEADDR value shall be an int (found by Farmer Lu)
Petr Baudis [Mon, 13 Aug 2012 19:49:38 +0000 (13 21:49 +0200)]
Merge branch 'pachi-10-satsugen'
Petr Baudis [Mon, 13 Aug 2012 19:48:20 +0000 (13 21:48 +0200)]
uct_progress_json(): Remove extra curly braces around choice value
Petr Baudis [Sun, 12 Aug 2012 20:23:25 +0000 (12 22:23 +0200)]
Pachi Retsugen-devel 10.99
Petr Baudis [Sun, 12 Aug 2012 20:22:13 +0000 (12 22:22 +0200)]
Pachi Satsugen 10.00
Jean-loup Gailly [Sun, 12 Aug 2012 19:36:52 +0000 (12 21:36 +0200)]
Distributed mode: no time limit by default on slaves, control on master only
Petr Baudis [Sun, 12 Aug 2012 14:56:28 +0000 (12 16:56 +0200)]
Change default time settings from -t =80000 to -t 15
This loses a semi-nice property that Pachi will by default have
the same strength on any computer, but on the other hand it will
make Pachi adjust its strength based on the computer without playing
needlessly fast or taking way too long time per move. This should be
more user friendly. Suggested by Jean-Loup.
Petr Baudis [Sun, 12 Aug 2012 14:12:32 +0000 (12 16:12 +0200)]
UCT pondering: Enable by default
Petr Baudis [Sun, 12 Aug 2012 12:24:52 +0000 (12 14:24 +0200)]
UCT max_maintime_ratio: Raise back to 2.0
Based on empirical observation during a 9x9 tournament.
2.0 is still dramatic decrease from the previous default 3.0 and should
avoid most troublesome situations, but my gut feeling is that Pachi is
just playing way too fast now. It's not based on hard data, but neither
was the reduction to 1.5, IIRC.
Petr Baudis [Sun, 12 Aug 2012 12:19:17 +0000 (12 14:19 +0200)]
UCT virtual_loss: Revert default change
It seems all our virtual_loss tuning was bogus due to a mistake
in the option setting code - all tests were in fact done with
virtual_loss zero.
High virtual_loss has catastrophic effect on gameplay - it transforms
the tree to long narrow corridors with high difference between black
and white node values. I'm not 100% sure about the cause even though
I spent quite long time trying to debug this, but I think it's because
the noise introduced by updates lost due to conflicts is just too high.
Moreover, with virtual_loss raising with number of threads, both the
noise rate and noise magnitude goes up, amplifying the effect.
Petr Baudis [Sun, 12 Aug 2012 12:18:41 +0000 (12 14:18 +0200)]
UCT virtual_loss: Allow setting virtual_loss to arbitrary values
Petr Baudis [Sun, 12 Aug 2012 12:18:15 +0000 (12 14:18 +0200)]
uct_leaf_node(): Fix node value debug print
Petr Baudis [Sun, 12 Aug 2012 10:37:24 +0000 (12 12:37 +0200)]
fbook_init(): Remove bogus comment
Jean-loup Gailly [Sun, 12 Aug 2012 00:21:25 +0000 (12 02:21 +0200)]
New parameter defaults, obtained by tuning on large configurations
Kept default debug_level=3 and pondering=0 but for optimal results
use: -d 0 pondering=1
Petr Baudis [Thu, 9 Aug 2012 22:09:42 +0000 (10 00:09 +0200)]
chat_init(): Fix problematic ptrdiff_t format string handling
Introduced in commit
2e8729f.
Neil Mclean [Wed, 8 Aug 2012 19:32:09 +0000 (8 21:32 +0200)]
Ammend to static inline, for no gcc warning.
Neil Mclean [Wed, 8 Aug 2012 19:31:52 +0000 (8 21:31 +0200)]
GCC: -Wextra warning: ‘static’ is not at beginning of declaration.
Neil Mclean [Wed, 8 Aug 2012 19:31:10 +0000 (8 21:31 +0200)]
Change type of mercymin to 'int' to avoid gcc sign-compare warning.
Neil Mclean [Wed, 18 Jul 2012 00:06:29 +0000 (18 01:06 +0100)]
Win32 gcc compiler warning fix. Added util.h prototype for stpcpy().
Petr Baudis [Mon, 6 Aug 2012 00:32:43 +0000 (6 02:32 +0200)]
Fix stack overflows and crashes when reading very long ladders
Petr Baudis [Sun, 5 Aug 2012 16:24:04 +0000 (5 18:24 +0200)]
UCT initial_extra_komi: Way to seed adaptive dynkomi, also preserve it across state resets
This means that unexpected opponent move (promotion failure) will not reset the dynamic komi. This is fairly important esp. for the maximize_score option.
Petr Baudis [Wed, 1 Aug 2012 20:56:03 +0000 (1 22:56 +0200)]
UCT spawn_thread_manager(): Make sure each thread gets 1M stack
Petr Baudis [Wed, 1 Aug 2012 20:55:13 +0000 (1 22:55 +0200)]
middle_ladder_walk(): Use alloca() for board copy allocation
This should somewhat reduce stack usage which seems to give us some trouble with deep ladders.
Petr Baudis [Wed, 1 Aug 2012 16:40:20 +0000 (1 18:40 +0200)]
README: Mention large-scale board patterns
Petr Baudis [Wed, 1 Aug 2012 16:37:50 +0000 (1 18:37 +0200)]
README: Update strength estimates
Petr Baudis [Wed, 1 Aug 2012 15:22:16 +0000 (1 17:22 +0200)]
README Greedy Pachi: Mention xkomi/extra komi messages
Petr Baudis [Wed, 1 Aug 2012 15:21:27 +0000 (1 17:21 +0200)]
uct_progress_text(): komi -> xkomi
Petr Baudis [Tue, 31 Jul 2012 07:41:51 +0000 (31 09:41 +0200)]
UCT adaptive dynkomi: Less verbose
Petr Baudis [Mon, 30 Jul 2012 20:52:51 +0000 (30 22:52 +0200)]
UCT: Introduce 'maximize_score' preset that turns on adaptive dynkomi, val_scale and allow_losing_pass.
Petr Baudis [Mon, 30 Jul 2012 20:37:10 +0000 (30 22:37 +0200)]
RULES_PASS_STONES -> RULES_SIMING, also count handicap stones as points
Petr Baudis [Mon, 30 Jul 2012 20:04:53 +0000 (30 22:04 +0200)]
RULES_PASS_STONES: Correctly support undo
Petr Baudis [Mon, 30 Jul 2012 20:03:38 +0000 (30 22:03 +0200)]
Preserve rules over board_clear()
Petr Baudis [Mon, 30 Jul 2012 12:27:13 +0000 (30 14:27 +0200)]
Add support for RULES_PASS_STONES - player hands a stone to the opponent on pass
Requested by Robert Jasiek for the 13x13 EGC2012 tournament.