h5 with the plan of f5 is certainly playable, and probably an easy win. But it's unnecessarily complex. It also gives black an outside passer which any engine eval function is not going to like. Trying to code your eval heuristics to recognize all the complexities of h5 + f5 seems perilous to me.kbhearn wrote:a bit more detail for the position in particular should you try to tackle it by eval (but you should try to fix the 50 move rule thing besides as it'll help these situations in general):
position after 51 ... Rh7
[d]1k2bn2/2p1p2r/2p1P1pN/P1P3P1/1P3P1P/3N4/4R3/2K5 w - - 1 52
what you need to recognise as progress here is that h5 gxh5 f5 is an improvement
[d]1k2bn2/2p1p2r/2p1P2N/P1P2PPp/1P6/3N4/4R3/2K5 b - - 0 53
after that there's many varied possibilities for further progress/counterattacks/etc so it's possible this may not be enough (i.e. some lines white sacs more pawns for a piece so if it likes its pawns so much that it doesn't want to win a piece that could again create a problem)
The simpler and more generalized (e.g. applicable to a wide range of positions, if not all positions) points to focus on in a position like this are:
1. king centralization in endgame positions
2. supporting advanced pawns with the king
3. piece mobility
4. attackers vs defenders (on e6 for example)
5. king safety
1 and 2 should nudge your engine into walking the king up to the (perfectly safe) center. If it gets all the way to e5 (providing support to e6) the night and rook no longer have to babysit e6. Then the rook and nigh can maneuver to more active positions instead of just moving from defensive post to defensive post to hold the position as is.
I think the simplest and most productive thing here is "get the king into the game".
Trying to make your engine smart enough to recognize (via static evaluation) that giving up a pawn to generate a passed pawn *for the enemy* in order to create possibilities with the e+f+g pawns is perilous and will only come in handy in a small percentage of positions. Certainly worth it if you can do it without making eval too slow and without making your engine prefer unnecessary risk over simple development. Also worth the effort if your goal is to make an engine that isn't just like the other 99% of engines out there. But I see that as icing on the cake when sticking to the basics listed above should be enough for any engine to know how to make progress in this position.
Just my 2 cents.