Here's my happy-medium answer:
Have one day a week you do tours. ONE. That way, there's no "oh I can come tomorrow" or anything like that. One day a week, one specific hour. This way, A. You don't appear to be "too" flexible, B. You have the opportunity to do the 'confirmation call' (and that's what you say "I am calling to confirm...") and C. If you are inconvenienced by this, it's at one time a week which is convenient for you to be 'inconvenienced'.
I've found that just telling parents "Out of respect for our group's daily routine...this is when we do our tours/visits." It takes charge of the situation. Someone who is genuinely interested in having a higher quality of care will understand this, and this might limit your no-shows. People are more likely to take advantage of providers who come across as "more" available.
I think this is better, too, than trying to charge a missed appt fee, which isn't how you want to start the relationship (either they'll never come or you will have to bill a prospective parent for not making it). Plus, as many have said, we *don't* want uncommunicative parents in our business. These are the folks that think they can pick up late or drop off early without communicating that need in advance. (They don't even think about the fact that we have to adjust meals,snacks, activities, etc. because of their lack of consideration.) When you say "This is when I do it" it sends a clear message that you have business to take care of and *they* are not your first priority. Puts you in the driver's seat!