As mentioned previously, I wrote a lineup simulator in C to run through all 9! permutations. I tested it against the 2005 Astros. The full results are here (6.8 MB gzipped text file), but here are the top 10 and bottom 10 lineups.
The classic lineup:
This lineup clocks in about 1 run per game lower than was actually scored last year. Part of this probably is due to not accounting for steals, defensive errors, or sacrifices.
For reference, here's the output from the Baseball Musings lineup analysis tool.
Surprisingly, my simulator strongly suggests loading all of your best hitters up front. The leadoff position suggests putting someone with a good OBA (as you would expect) and then straight away putting your best two sluggers in the next slots. There also seems to be some support for the second leadoff batter theory here as well, with Taveras in the 9 hole. At best, the non-traditional lineup nets me about 12 runs on the season over the classic lineup. That's maybe one win. The differential between the best and worst possible lineups is pretty significant, around 10%.
One thing to consider; NL numbers might not be the best numbers to test this on because there are a lot of double switches in the back third of many games when relievers are brought in which changes lineups considerably. My next run, I think I'm going to take aggregated numbers for AL lineups.