Copyright (c) 2013 John L. Jerz

How to Solve It: Modern Heuristics by Michalewicz and Fogel

Home
A Proposed Heuristic for a Computer Chess Program (John L. Jerz)
Problem Solving and the Gathering of Diagnostic Information (John L. Jerz)
A Concept of Strategy (John L. Jerz)
Books/Articles I am Reading
Quotes from References of Interest
Satire/ Play
Viva La Vida
Quotes on Thinking
Quotes on Planning
Quotes on Strategy
Quotes Concerning Problem Solving
Computer Chess
Chess Analysis
Early Computers/ New Computers
Problem Solving/ Creativity
Game Theory
Favorite Links
About Me
Additional Notes
The Case for Using Probabilistic Knowledge in a Computer Chess Program (John L. Jerz)
Resilience in Man and Machine

How to Solve it: Modern Heuristics by Michalewicz and Fogel
 
Can we learn to solve difficult problems or do we have to be 'born' with that skill?
 
p.3"A great reward awaits those who can effectively solve problems, and you can develop this talent. It begins with the proper understanding of the purpose to be achieved. All too often, in an attempt to utilize a familiar algorithm, we change the purpose to be achieved simply to fit the algorithm. It's  as if, armed with only a hammer, we needed to screw a screw into a board: we pound the screw into the board even though we know we'll never be able to unscrew it again. Armed with a hammer, everything looks like a nail... Having made a judgment as to the degree of fidelity required in modeling the decision maker's purpose, the next step is to choose a tactic that will find an optimal allocation of the available resources... Effective problem solving requires more than a knowledge of algorithms; it requires a devotion to determining the best combination of approaches that address the purpose to be achieved within the available time and in light of the expected reactions of others who are playing the same game. Recognizing the complexity of real-world problems is prerequisite to their effective solution."
 
Creating an evaluation function for a chess playing computer program can be a difficult task. Where do we  even begin?
 
p.1"One of the reasons that problem solving is often difficult is that we don't know where to begin. Once we have some sort of course charted out in front of us, we can follow that path and hopefully arrive at a solution. But conjuring up that course to follow is a significant challenge."
 
What is actually "solved" when we solve a problem?
 
p.16"Every time we solve a problem we must realize that we are in reality only finding the solution to a model of the problem. All models are a simplification of the real world... The process of problem solving consists of two separate general steps: (1) creating a model of the problem, and (2) using that model to generate a solution... The 'solution' is only a solution in terms of the model. If our model has a high degree of fidelity, we can have more confidence that our solution will be meaningful."
 
So the solution to the problem we have involves making a simplified model of the problem:
 
p.18"Let's rephrase this discussion. There are two possible approaches [to the problem being discussed]. The first uses an approximate model of a problem, and then finds the precise solution. The second approach uses a precise model of the problem, and then finds an approximate solution."
 
But the model is not the actual problem:
 
p.31"Whenever you solve a real-world problem, you have to create a model of that problem first. It is critical to make the distinction that the model that you work with isn't the same as the problem. Every model leaves something out. It has to - otherwise it would be as complicated and unwieldy as the real-world itself. We always work with simplifications of how things really are. We have to accept that. Every solution we create is, to be precise, a solution only to the model that we postulate as being a useful representation of some real-world setting that we want to capture. The trouble with models is that every one of them has an associated set of assumptions. The most common mistake when dealing with a model is to forget the assumptions."
 
Perhaps gaining a deeper understanding to the problem is a good first step towards solving a problem:
 
p.35"If we can really understand the problem, the answer will come out of it, because the answer is not separate from the problem."
 
What basic concepts apply to problem solving?
 
p.35"Three basic concepts are common to every algorithmic approach to problem solving. Regardless of the technique that you employ, you'll need to specify: (1) the representation, (2) the objective, and (3) the evaluation function. The representation encodes alternative candidate solutions for manipulation, the objective describes the purpose to be fulfilled, and the evaluation function returns a specific value that indicates the quality of any particular solution given the representation (or minimally, it allows for a comparison of the quality of two alternative solution)."
 
Let's look at Michalewicz and Fogel's definition of an evaluation function:
 
p.37"The evaluation function: The objective, however, is not the same thing as the evaluation function. The latter is most typically a mapping from the space of possible candidate solutions under the chosen representation to a set of numbers (e.g., the reals), where each element from the space of possible solutions is assigned a numeric value that indicates its quality. The evaluation function allows you to compare the worth of alternate solutions to your problem as you've modeled it. Some evaluation functions allow for discerning a ranking of all possible solutions. This is called an ordinal evaluation function. Alternatively, other evaluation functions are numeric and tell you not only the order of the solutions in terms of their perceived quality, but also the degree of that quality."
 
Unique problems require unique solutions:
 
p.271"Sometimes it's difficult to apply a general problem-solving strategy to a particular problem, as the problem at hand is simply unique in some sense. When this happens, you have to analyze the problem and develop a method that's just right for the particular instance you face."
 
Sometimes problems must be re-solved as time passes and the initial conditions change:
 
p.310"Clearly, problem solving is more than finding the one best solution. It is at once (1) defining the problem, (2) representing the possible candidate solutions, (3) anticipating how the problem may change over time, (4) estimating the probabilities of the possible changes, and (5) searching for solutions that are robust to those changes. Moreover, it is the action of re-solving the problem as it changes based on the most recent available information. Problem solving is a never-ending process."
 
Summary for problem solving: remember these 10 steps:
 
p.484"Here are ten heuristics for problem solving that we'd like you to keep in mind as you face real-world problems.
 
1.Any problem worth solving is worth thinking about.
 
2.Concentrate on the essentials and don't worry about the noise.
 
3. Sometimes finding a solution can be really easy. Don't make it harder on yourself than you have to.
 
4. Beware of obvious solutions. They might be wrong.
 
5. Don't be misled by previous experience.
 
6. Start solving. Don't say 'I don't know how.' Another essential aspect is to 'play' with the problem.
 
7. Don't limit yourself to the search space that's 'defined' by the problem. Expand your horizon.
 
8. Constraints can be helpful.
 
9. Don't be satisfied with finding a solution. Is the solution unique? Are there other possibilities?
 
10. Be patient. Be persistent.
 
If you keep these ten 'commandments' in mind, your problem-solving prowess will become formidable, but don't forget about the danger of making easy generalizations."
 
Is there another way to become skilled at problem solving?
 
p.515"The best way to learn about problem solving is hands on. You have to experiment with different ideas, apply them to problems, and assess the results."

Enter supporting content here