Over a million developers have joined DZone.
Platinum Partner

The Optimization Problem

· Performance Zone

The Performance Zone is brought to you in partnership with New Relic. New Relic APM provides constant monitoring of your apps so you don't have to.

There are many different ways to approach optimization, but we've stumbled on one real-life application that may help you organize your thoughts when developing. It's seasonally appropriate, too! Austin Walters writes about the Lawn Mowing optimization problem over on his blog; he posits the question of optimizing for several different factors when mowing lawns – a project a lot of kids take up in the hot summer months for extra cash.

One thing I always tried to do was optimize my mowing, cutting as close as I could to rocks, ensuring the wheels followed a straight line to ensure maximum coverage (and it looked better), etc. Something that always bothered me was that even though many of the lawns were the same size the time to mow each lawn would vary wildly. Now, years later as my girlfriend is mowing my grandfathers lawn, I am wondering if there is an optimal way to mow a lawn and if so how to calculate it. This is the problem I will call The Lawn Mowing Optimization Problem not really imaginative, but to the point. I am curious on how to optimize for energy expenditure, fuel consumption, ease of mow, time, and potentially beauty/uniform lines. It may not be possible to optimize for each of the goals, however most of the goals will overlap and in turn provide a “close enough” solution.

His approach to the problem provides a pretty solid methodology and is also a fun and interesting exercise for taking normal development/logical practices and applying them in a different context. Check out the post over here  and stay tuned on his blog for results!

The Performance Zone is brought to you in partnership with New Relic. New Relic’s SaaS-based Application Performance Monitoring helps you build, deploy, and maintain great web software.


{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}