Thursday, July 21, 2005

Optimizers

I've worked on a lot of software in my 10+ year career. The vast majority has been the typical pull-data-out-of-a-database-and-show-it-on-the-web type of system. Extremely boring, and far from my roots in engineering and mathematics.

Thinking back to all of the systems that I had some kind of internal visibility to, the most exciting for me have been those involving creating optimal solutions to a problem. I mean, this is exactly why computers exist--not just composing a memo to tell your co-workers that there's going to be a potluck next week, or finding out how much tax you owe at the end of the year. I'm talking real problems that save companies money.

Like geocoding all of the stops that a delivery company needs to make within a city, figuring out the minimum number of trucks that are required for that day's manifest of freight, and exactly which routes the trucks should take through the city's streets in order to minimize delivery time and maximize fuel savings.

Or determining where to put freight on an aircraft in order to first ensure that the C/G is within the envelope (so the thing will fly), and then to optimize the fuel burn.

Or determining the cheapest blend of metal that results in an alloy with a specific set of properties.

These kinds of things are why I stay in this field (besides the fact that I could never cut it as a musician). The downside is that the resulting system no longer requires a knowledgeable person to operate it (downside for the Operator, that is). I mean, all of these things were done by somebody manually before using the same type of iterative processing. With an optimizer, immensely more possible solutions can be explored before determining the truly optimal solution, and as a result, you tend to get a better solution, which equates into bigger $avings.