no edit summary
One thing that we used to do with our chess program, [[Duchess]], was to have a special routine that ran before the [[Search|main search]] that identified strong and weak points in each side's respective position - weak squares, [[Passed Pawn|passed pawns]], weak [[King Safety|king protection]], etc, and tried to grow trees of moves to protect our own weak squares or attack the opponent's weak squares. These would be just sequences of moves by our own or our opponent's pieces and pawns to reach the targeted squares. A table was build for the value of reaching each of these goals for each type of piece and for reaching the middle points along the paths (the value diminishing the further they were from the goal). Then during the search the program would get bonus points for reaching some of the intermediate points in the plan.
This seemed most useful in the [[Endgame|endgame]] when actually reaching the culmination of a play might be beyond the [[Depth|search depth]], and where [[Tactics|tactics]] did not dominate as much as they do in the [[Middlegame|middle game]]; for example, Duchess was quite capable of finding long King maneuvers that might take the King far away from simpleminded heuristics such as "[[King
centralization|centralize the King in the endgame]]" and that were too deep to be found by a direct search. It wasn't perfect; it could not take into account the changes in strategy that might be dictated by a radically different structure encountered deep in the search, but it seemed to be better than nothing.