This is a significant AI problem. The generic solution would be running simulated future game outcomes for each potential move to see which one maximizes your probable point advantage. However, this will get expensive very quickly--each move involves scanning thousands of possible word/location combinations, and your opponents' tiles are not known. It would get very interesting if you restrict the amount of time the player can run and the size of the code.

My suggestions: