Algorithm Help/ideas

I need to come up with a way to prioritize automotive maintnence schedules.

Given :

  • A list of service items (oil change, rotate tires etc)
  • Each item has a recommended “Do every X months or Y Miles”
  • Each item has the LAST time the service was done (Date / Mileage)
  • Next Service is required at (Date+x or Miles+y)

Now “next service” could be in the future, it could be past due, or it could be due soon

Anyone have any ideas how to take “next service” data, along with current date (today), and current mileage and assign some weighted value that records could be sorted by, so the most urgent is first, least urgent last.

I was thinking about something like


where the weight values decide if days or miles is more important… Personal for service I think being over due by 10 days is less important than being over due by 1000 miles

Any ideas?

You might need more data. For example, say my brake pads needs changed today, and my air filter is past due by 1,000 miles. Which is really more important? If I’m mechanically challenged I’d look at it and say my air filter is more important and wrongly so.

I do not know where this data is coming from or going to, but if it were my car and I was looking at my maintenance application, I’d simply want to know the Air Filter and Brakes are both past due and need to be fixed. I’m not sure I’d want the program prioritizing for me. Fact of the matter is that there are 2 things past due, 2 things that need to be done.

Also consider there are some things that should be done on age, say for instance an under spray, but some things that are mostly miles related (mostly), say tires. So in those cases, the weights for age/miles would change.

The priority would not be that brake pads are more important than an air filter
but more that Air Filter is due in 10 days or 100 miles, while brake pads are due in 6 months or 10000 miles

the problem is weighing time until due vs miles until due

I think you’ve solved that, no? You just need to have a weight multiplier for the two items. May make that a configuration variable or at least a constant defined in one location so that it could be changed easily with time.

That was the reason for the post to see if anyone had an idea better than that.

I’ve always used date for scheduling, and used mileage history to estimate a next date and use that if it’s earlier than the strict date interval.