I do a lot of mathematical modeling. I would think if you can pull the data and clearly identify your constraints then this could be done in a simple spreadsheet model. I can probably help build something simple for you. That is if you can get the data.
1. I do not know where you are located, but in the US there are a lot of free sources to pull tide data and paid sources to get more detailed data. So for free I can usually get a month of tides for a specific location, with times, height, and sunrise sunset.
ay High Tide Height Sunrise Moon Time % Moon
/Low Time Feet Sunset Visible
Sa 1 Low 3:07 AM 0.0 7:02 AM Rise 7:56 AM 1
1 High 8:40 AM 1.3 5:29 PM Set 7:55 PM
1 Low 3:48 PM -0.1
1 High 9:15 PM 1.2
2. What is important to note is that not all tides are the same, the more full the moon is the more extreme the tide changes are. So in my opinion the length of your working period changes. You would need to identify at what point it is too deep or shallow to refine you model.
3. What are your other constraints?
How short can a lessen be
What are your working hours
Prior to closing when is the last lesson
How many concurrent lessons
... other limitations
If I was doing this I would download tide data and build a spread sheet model with some VBA to show possible blocks. Then have the ability to grab an available block and fill it in with assignment.