A computational model of analogical problem solving