Extreme game analysis feedback
Posted: Mon Jan 02, 2023 9:42 am
Some feedback on how can this be improved.
The first thing that should be done is implement a filtering strategy. Top N, or Top % does not work (practically). It results in bloated trees, slowly growing an not particularly useful.
So the first thing, that should be in place is a filtering (ignoring) mechanism. It would start primitive and improved.
So for example ignore when score outside [-score1, score2] is the first basic filter.
Also able to ignore when score is outside [rootScore-alpha1, rootScore+alpha2]
Once the basic filtering mechanism is there, there are many smart AND user defined filtering that can be done.
The second thing that can be done, is expansion strategies. You can see that also in IDEA, but not well advertised or documented.
Basically, instead of "auto expanding" you can select a move and pick the strategy to expand it.
For example.
ply 1: get N1 alternative if score difference (to root) less than score 1 , get N2 alternatives if score difference (to root less than score 2, ... etc
ply 2: the same, that is instructions on how to expand the children of the above step (always taking into account that there could be already existing positions to avoid doing the job multiple times...)
example
ply 1: get 10 alterantives if score 10cp, 5 alternatives if score 50 , 3 alternatives else.
So if the root has +55cp, it would start generating alternatives. if the 3 alternative has score difference to the root > 50 it stops, if not continues until 5 alternatives or score difference > 50. When reaching 5 alternatives and scorediffernce < 10cp continue until score difference >10cp or alternatives 10.
Those 2 features can carry you a long way
Of course this depends on what you envision for the tool to do.
The first thing that should be done is implement a filtering strategy. Top N, or Top % does not work (practically). It results in bloated trees, slowly growing an not particularly useful.
So the first thing, that should be in place is a filtering (ignoring) mechanism. It would start primitive and improved.
So for example ignore when score outside [-score1, score2] is the first basic filter.
Also able to ignore when score is outside [rootScore-alpha1, rootScore+alpha2]
Once the basic filtering mechanism is there, there are many smart AND user defined filtering that can be done.
The second thing that can be done, is expansion strategies. You can see that also in IDEA, but not well advertised or documented.
Basically, instead of "auto expanding" you can select a move and pick the strategy to expand it.
For example.
ply 1: get N1 alternative if score difference (to root) less than score 1 , get N2 alternatives if score difference (to root less than score 2, ... etc
ply 2: the same, that is instructions on how to expand the children of the above step (always taking into account that there could be already existing positions to avoid doing the job multiple times...)
example
ply 1: get 10 alterantives if score 10cp, 5 alternatives if score 50 , 3 alternatives else.
So if the root has +55cp, it would start generating alternatives. if the 3 alternative has score difference to the root > 50 it stops, if not continues until 5 alternatives or score difference > 50. When reaching 5 alternatives and scorediffernce < 10cp continue until score difference >10cp or alternatives 10.
Those 2 features can carry you a long way
Of course this depends on what you envision for the tool to do.