First, it’s extremely difficult to get an engine to play human-like chess because humans don’t crunch numbers and deal in absolutes. Humans use a lot of intuition. Sometimes if you ask a GM why he played a certain move he doesn’t know. All he can say is it looked good. Why did it look good? He can’t say. Intuition was involved. Engines don’t calculate that way. They recommend a move because they have calculated it to be the best in mathematical terms.
There are two general ways to dumb down an engine:
1) Limit the depth of the search. Changing how deep and how long the computer thinks changes its strength. The problem with changing only the time an engine is allowed to think is that today’s engines can spot strong moves in an instant so even giving them 2 seconds to think means they will still play a pretty strong game.
2) Changing the evaluation criteria. Engines count material and evaluate positional characteristics in a certain way. Change these parameters and you will change its strength.
Most often strong players make subtle positional mistakes while weaker players make serious tactical errors and gross blunders. As you drop down the rating list you find players making little mistakes that allow their opponent to accumulate small advantages with a few tactical errors thrown in and the further down you go, the more glaring these mistakes become. Hard to duplicate.
Here is a dirty little programming secret. In order to dumb down an engine many programs are disguised to give you material odds! They either just make a stupid outright blunder and hang material or in some cases deliberately set up situations where you can execute a little combination to pick up your material. The problem often is that after the engine gives you your material advantage it starts playing like Anand.
The result of all this is you can never get an engine to play like a human, especially at lower levels because it is extremely difficult to program to play like humans and not, well, machines.
My suggestion for getting an engine to practice against at lower levels is twofold. First, using your program, make an opening book from games played by players below whatever rating level you select. Personally, I’d make the opening book maybe 15 moves deep. Second, go to a place like Jib Alblett’s Winboard Project site (link listed on this Blog) and download one of the weaker engines. Then you can play against the weaker engine using actual opening moves of lower rated players and afterwards let your GM strength engine show you all the missed wins. It’s not an ideal solution, but it’s the best I can think of.