guys I have met a problem of algorithm, it is not a homework, but only a question from a site. It is described as below:
- 1. There is a housekeeping intermediary company which have two tremendous resources: millions of hourly-paid workers and housekeeping orders.
- 2. A hourly-paid worker only have an id.
- 3. A house-keeping order can be described like this:
struct order_head {
uint32_t id; // order id
double pos_x; // (pos_x, pos_y) indicate the house's position. pos_x is the house's x-coordinate
double pos_y; // pos_y is the house's y-coordinate
int8_t time_len; // The house cleaning time required the customer.
int8_t has_start_time; // Does the customer designate the serving time interval.
int32_t start_time; // If the customer designate the serving time, this indicate the start_time of the time interval. (start_time, start_time+time_len) indicate the serving time
};
Target:
From the tremendous data, the company schedule hourly-paid workers to pick orders, the total working time of all workers is larger the algorithm is better.
Assumption:
- 1. The working time of a day is 08:00 ~ 18:00, 10 hours.
- 2. The workers are hourly-paid say 30$/hour, but some time must be wasted in traffic from the end-worked house to start-to-work house. The farther between the two houses, the more time wasted.
- 3. Initially, the workers are placed at their 1st serving house.
I have thought of the problem for some days, but I can not think out a traditional algorithm best suited this problem. It may be relate to big data processing algorithms, but I am not sure.
Could someone have good thought of this problem?
Thanks!