Trying to design a complex mowing schedule and pulling your hair out? I used Gemini (gemini.google.com) to solve this Constraint Satisfaction Problem (CSP) automatically. Make sure to use 2.5 Pro with reasoning, math, and code.
My prompt:
Here is a description of the problem I need solved.
I need to create a schedule for my robotic mower. Each work area requires a certain duration and mowing frequency (times per week). Mowing hours are 9:00 am to 7:00 pm, 7 days per week. A given work area cannot be mowed on two consecutive days. Prefer later parts of the day to allow for morning dew to dry. Here are the details of the work areas.
back acreage - 4 hrs, 3x weekly
front & side acreage - 4 hrs, 3x weekly
tree line west - 2 hrs, 1x weekly (optionally 2x weekly)
For the time estimations are you using actual times from history (if yes, do you change mowing speed sometimes?). For the schedules that are one after the other, does it go back to base to charge in between or it is a workplan that merges the two (for example front and side + lawn, are you scheduling them independently or you create a new work plan that do it in one go?
For the time estimations, yes I use actual times from history. However, I hear what you’re saying and that’s a concern of mine, where the mowing speed impacts the duration. I have spent weeks dialing in the mowing speed for each work area. I run fast on my acreage/field grass and slow on my lawn sod. I am looking forward to a feature where I can set mowing speed by work area because currently I have to manually adjust it prior to each mowing, which is a headache.
For the consecutive work areas, they are independent work areas, separated by usually 1 hour. Yarbo goes back to charge during that 1 hour break. He may get some shut eye and lunch too, haven’t checked. That’s a good point though that I haven’t considered - combining the work areas for a given day into a “daily work area”. For example, Monday work area = Front & Side Acreage + Lawn. Maybe there are benefits to doing this?
Exact. My problem is that I have a part of my lawn I prefer to go slow (better mowing quality). This is the part of my lawn where we spend most of our time and the grass quality is super high. So I overlap, mow slow and short. Then I have areas where I don’t really care. Max speed, and all… This being said, sometimes, in these high speed areas, I have to slow it down a bit (after rainy days for example). So the time changes quite a bit…
@Yarbo-Forum here you have a perfect example why being able to set speed with the areas/plans would be extremely useful.
As for me asking if they are independent, well, it is related to speed. Say your area takes 3.75h to mow, then you slow down and it goes over by 30 minutes… It would then overlap the next schedule (and the next schedule would not run). If you set it as a “day” schedule, it would matter less. If you have a large enough buffer between each schedule I guess this is ok. Trying to implement your strategy here, but the problem is that my work areas are much larger, and when I change the speed it can change by 2-3h the overall time. And since @Yarbo-Forum did not implement the ability to split areas yet without loosing the mapping of one half of the map, I’m still stuck with large areas that can take 2-3 recharge cycles to complete, so affected a lot by charging time (hot days) and work area speed…
You might also account for duration changes in cases like mowing with the diamond pattern turned on. When it rotates the pattern for the next mow and it creates turning complexities (weird corners, short alley pattern with additional turning) or speed reductions (hills), it will take longer sometimes. My side yard adds 20-30 minutes when it turns 50-90 degrees from the original long mapping direction. Sometimes I disable diamond mode and revert back to the parallel - no angle change setting when I’m in a hurry and a storm is predicted in the afternoon.
I ended up changing the model to better handle unforeseen downtime. Here’s where I’m at.
work area - represents a zone of grass to be mowed (nothing special here). Example - front acreage, side lawn.
work plan - represents a given day and includes all the work areas scheduled for that day. Example: Monday - front acreage + side lawn (with smart ordering).
schedule - represents a given day and is associated with a single work plan. Spans 9:00 am to 7:00 pm. Example: Monday.