December 6th, 2013, 04:16 PM
So, I've got kind of a crazy difficult (to me anyway) problem, and I think the smartest people in the world are just the ones to solve it or at least point me in the right direction.
I am creating a Web application that allows customers to automatically book their own appointments online and assigns them to technicians. Different technicians have different skills. So, for instance, an HVAC tech might be able to install or size an HVAC unit, but not repair it. A plumber might be able to do.electrician work.
So if there were an electrical job, we have so many technicians who could do it. The problem is how to assign which jobs to whom. Basically, I need an algorithm that calculates the shortest possible routes for the technicians.
Sounds pretty simple, right? Yeah, I guess so.
...oh but wait, there is one more thing though. Each project takes a certain number of hours with a certain variance, and there is a limited time span to see each customer. So there are morning (8a-12p), afternoon (12p-4p), evening (4p-8p), and night appointments. So a plumber might have a call that takes two hours, 15 minutes, one hour, and 45 minutes in one morning (including travel time).
The customers will also provide a variety of time slots that will work for them. So a customer could select a morning appointment on Friday afternoon appointment on Tuesday and a forth.
So, we've got multiple customers with multiple.convenient appointment times, multiple technicians with different skills, and different lengths of time per appointment for which we need routes.
Then we've got to make sure that we're not wasting skill. So we wouldn't want a plumber/electrician doing an electrician call, when we've got an extra plumber not assigned any work.
As an added bonus feature, it needs to update in real time, every time someone books an appointment.
We've also got customers who will need a specific time, certain jobs that will need a specific tech (i.e. for a service failure), and these will be set by a human, and the system will need to work around it.
Thanks in advance! I just love how there's always a community of people willing to help for no reason at all.
December 6th, 2013, 04:42 PM
Not sure if you are looking for help or someone doing this for you?
If you need help, you will have to explain more detailed where you are stucked at and what you have tried.
If you want someone else to do it for you, you should aks in the "Hire a programmer" forum.
December 6th, 2013, 05:16 PM
I just need an algorithm. And if I can't get the algorithm, I need to know what to study so I can figure it out for myself.
Originally Posted by MrFujin
December 7th, 2013, 01:26 AM
The first step to create algorithm is to make your problem statement detailed.
It is too hard even for you to ponder on this heap of thoughts - and it is even more hopeless to wait someone will help you not having some sample data to work with.
Try to create specification for input and output data. You agree that when you have your algorithm programmed it will anyway need to work with some data, so preparing test sets is useful.
For example let them be text files. Describe the format of these files, invent it.
In your current statement it is even unclear what part of work algorithm should do, since you tell that users should themselves appoint jobs to technicians. And should there be scheduled jobs or each job should be started as soon as possible after assignment? I fear I did not understand this from your description.
December 7th, 2013, 10:35 AM
All right, I agree. I guess the best thing to do at this point would be to break the problem up into smaller parts.
Originally Posted by rodiongork
The first part would be to create an algorithm that finds the shortest route amid a set of coordinates. For instance, if there were four points, (4,6),(8,2),(17,3),(3,1) how would I find an algorithm that would find the shortest route? After that I can find the next step.
December 7th, 2013, 12:57 PM