Control system, control method, and program
The control system optimizes task execution by grouping tasks and reallocating them based on specific conditions, enhancing efficiency and reducing resource utilization in task completion.
Patent Information
- Application Number
- JP2022037944
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Filing Date
- 2022-03-11
- Publication Date
- 2025-08-13
- Estimated Expiration
- 2042-03-11
AI Technical Summary
Existing systems for task execution in multiple objects may not efficiently complete tasks due to inefficiencies in real-time re-planning, leading to potential delays and increased resource utilization.
A control system that divides tasks into groups and assigns them to objects, with reallocation occurring when certain conditions are met to ensure efficient task completion, minimizing calculation and movement time.
The system enables efficient execution of tasks by reducing calculation load, movement time, and preventing unnecessary movements, thus ensuring timely completion of all tasks.
Smart Images

Figure 0007722950000001 
Figure 0007722950000002 
Figure 0007722950000003
Abstract
Description
[Technical Field]
[0001] The present invention relates to a control system, a control method, and a program. [Background technology]
[0002] There is a technology for controlling multiple objects to process multiple tasks. In relation to this technology, Patent Document 1 discloses a system for replanning a mission of a robot vehicle in area exploration. In Patent Document 1, multiple vehicles each process an assigned task. The vehicles are monitored in real time, and a vehicle that has malfunctioned and is performing an incomplete task is detected. The system appropriately replans a specified task in real time and redistributes it to the remaining vehicles so that the remaining vehicles can participate in task processing (exploration) to complete the incomplete task that has malfunctioned. [Prior art documents] [Patent documents]
[0003] [Patent Document 1] Japanese Patent Application Laid-Open No. 2014-059860 Summary of the Invention [Problem to be solved by the invention]
[0004] In the technology disclosed in Patent Document 1, a given task is re-planned in real time as needed to complete an incomplete task that has malfunctioned. With such a technology, there is a risk that the entire task processing may not be executed efficiently.
[0005] The present invention provides a control system, a control method, and a program that enable efficient execution of processing of the entire task. [Means for solving the problem]
[0006] The control system of the present invention includes a task allocation unit that divides a plurality of tasks distributed in a space into a plurality of groups, each group including one or more tasks, and assigns each of the plurality of groups to a plurality of objects whose state can change in the space; a task processing execution unit that controls each of the plurality of objects to process the tasks of the assigned group; and a reallocation unit that, when the task processing status satisfies a predetermined condition, assigns tasks for which processing in other groups has not yet been completed to an object that has completed processing of all tasks of its assigned group.
[0007] Furthermore, the control method of the present invention divides a plurality of tasks distributed in a space into a plurality of groups each containing one or more tasks, assigns each of the plurality of groups to a plurality of objects whose state can change in the space, controls each of the plurality of objects to process the tasks of the assigned group, and, when the task processing status satisfies a predetermined condition, assigns to the object that has completed processing all tasks of the assigned group tasks that have not yet been processed in other groups.
[0008] In addition, the program of the present invention causes a computer to perform the following steps: dividing a plurality of tasks distributed in a space into a plurality of groups, each group including one or more tasks, and assigning each of the plurality of groups to a plurality of objects whose state can change in the space; controlling each of the plurality of objects to process the tasks of the assigned group; and, when the task processing status satisfies a predetermined condition, assigning to an object that has completed processing all tasks of its assigned group tasks that have not yet been processed in other groups.
[0009] By configuring the present invention as described above, it is highly likely that an object that has completed all of its tasks will be reassigned to a group that should be supported, and therefore the present invention can efficiently execute the processing of the entire task.
[0010] Preferably, the task allocation section divides the tasks into a plurality of groups and allocates each of the groups to each of the objects before the object starts processing the task. By configuring the present invention in this way, once an object starts processing a task, the group configuration is not changed, thereby making it possible to reduce the calculation load and prevent an increase in calculation time.
[0011] Preferably, the reallocation unit allocates tasks that have not yet been processed in other groups when the number of objects that have completed processing of all tasks in the allocated group is equal to or greater than a predetermined number. By being configured in this way, the present invention can suppress an increase in the movement time (movement distance) of an object and an increase in the processing time of a task, thereby enabling the present invention to process all tasks efficiently.
[0012] Preferably, the task processing execution unit controls the object so that the object, which has completed processing all tasks of the assigned group, waits in a predetermined state until a task is reassigned. By configuring the present invention in this way, the object is prevented from making unnecessary movements, and therefore the present invention can prevent an increase in the movement time and movement distance of the object.
[0013] Preferably, the task allocation section divides the plurality of tasks into the groups in accordance with the estimated time required for each task. By configuring the present invention in this way, it is possible to suppress the deviation in the expected required time between groups, and therefore the present invention can further suppress an increase in the task processing time as a whole. [Effects of the Invention]
[0014] According to the present invention, it is possible to provide a control system, a control method, and a program that enable efficient execution of processing of the entire task. [Brief explanation of the drawings]
[0015] [Figure 1] FIG. 1 is a diagram illustrating a control system according to a first embodiment. [Figure 2] FIG. 2 is a diagram illustrating tasks distributed in space according to the first embodiment; [Figure 3] FIG. 2 is a diagram illustrating a configuration of a control device according to the first embodiment. [Figure 4] 3 is a flowchart showing a control method executed by the control system according to the first embodiment. [Figure 5] 10 is a flowchart showing an example of task allocation processing by the task allocation unit according to the first embodiment; [Figure 6] FIG. 10 is a diagram for explaining a first specific example. [Figure 7] FIG. 10 is a diagram for explaining a first specific example. [Figure 8] FIG. 10 is a diagram for explaining a first specific example. [Figure 9] FIG. 10 is a diagram for explaining a second specific example. [Figure 10] FIG. 10 is a diagram for explaining a second specific example. [Figure 11] FIG. 10 is a diagram for explaining a second specific example. [Figure 12] FIG. 10 is a diagram for explaining a second specific example. [Figure 13] FIG. 10 is a diagram for explaining a second specific example. [Figure 14]FIG. 10 is a diagram for explaining a second specific example. [Figure 15] FIG. 10 is a diagram for explaining a second specific example. [Figure 16] 10 is a flowchart showing a control method executed by the control system according to the second embodiment. [Figure 17] FIG. 10 is a diagram illustrating a virtual space in which tasks are distributed according to a modified example. DETAILED DESCRIPTION OF THE INVENTION
[0016] (Embodiment 1) Hereinafter, embodiments of the present invention will be described with reference to the drawings. For clarity of explanation, the following description and drawings have been omitted and simplified as appropriate. In addition, the same elements in each drawing are given the same reference numerals, and duplicate explanations are omitted as necessary.
[0017] 1 is a diagram illustrating a control system 1 according to a first embodiment. The control system 1 includes a communication device 12 corresponding to each of a plurality of objects 10, and a control device 100. The communication device 12 and the control device 100 are communicatively connected via a wired or wireless network 2.
[0018] The object 10 processes each of a plurality of tasks distributed in space. The tasks will be described later. The object 10 is, for example, a machine such as an autonomously mobile robot. The object 10 may be a human or a robot arm. The object 10 may be any object capable of processing tasks distributed in space. In the following description, the object 10 is assumed to be a robot. If the object 10 is a machine such as a robot or a robot arm, the communication device 12 may be built into the object 10. If the object 10 is a human, the communication device 12 may be a communication terminal that can be carried by the human, such as a smartphone or a tablet terminal.
[0019] The object 10 moves in a space where tasks are distributed. The object 10 moves in the space, arrives at the location of a task, and then processes the task. That is, the object 10 can change its location in the space (move in the space). In other words, the object 10 can change its state. The "state" here refers to a physical location in the space. In other words, the object 10 is an object whose state can be changed in the space. In this embodiment, one object 10 can process one task. In other words, multiple objects 10 do not have to process one task.
[0020] FIG. 2 is a diagram illustrating tasks distributed in a space according to the first embodiment. In the example of FIG. 2, tasks #1 to #14 are arranged in space 70, which is a real space. Four objects 10A to 10D exist in space 70. Each of objects 10A to 10D processes one or more of tasks #1 to #14. For example, object 10A moves to the location where task #4 is arranged and processes task #4. Furthermore, for example, after object 10A finishes processing task #4, it moves to the location where task #3 is arranged and processes task #3. Similarly, for example, object 10B moves to the location where task #8 is arranged and processes task #8.
[0021] The tasks may be any tasks that are distributed in space and can be completed by the objects 10. For example, a task may be to perform some work at each point in the space. For example, a task may be to repair a malfunctioning item (such as a broken machine or damaged furniture) located in the space. For example, a task may be to clean each point in the space. For example, a task may be to check the number of customers in a store located in the space (how busy the store is).
[0022] The communication device 12 is a device configured to transmit and receive signals to and from the control device 100. The communication device 12 may have substantially the same functions as the communication unit 106 described below. The communication device 12 receives instructions for the corresponding object 10 from the control device 100. The object 10 processes a task according to the instructions from the control device 100. Details will be described later.
[0023] The control device 100 is, for example, a computer such as a server. The control device 100 may be realized by, for example, cloud computing. The control device 100 (control system 1) controls the object 10 to process a task. The control device 100 transmits an instruction to the communication device 12 corresponding to the object 10 to cause the object 10 to process the task.
[0024] The control device 100 divides a plurality of tasks distributed in space into a plurality of groups, each containing one or more tasks, and assigns each of the plurality of groups to a plurality of objects 10. The control device 100 controls each of the plurality of objects to process the tasks of the assigned group. Then, when the task processing status satisfies a predetermined condition, the control device 100 assigns to an object that has completed processing all tasks of its assigned group tasks that have not yet been processed in other groups. This will be described in more detail later.
[0025] In the example of FIG. 2, for example, the control device 100 groups tasks #1 to #4 into group A. Also, for example, the control device 100 groups tasks #5 to #8 into group B. Also, for example, the control device 100 groups tasks #9 to #11 into group C. Also, for example, the control device 100 groups tasks #12 to #14 into group D. Then, the control device 100 assigns group A to object 10A. Similarly, the control device 100 assigns groups B to D to objects 10B to 10D, respectively.
[0026] The control device 100 also controls the object 10A to process tasks #1 to #4 of group A. The control device 100 controls the object 10B to process tasks #5 to #8 of group B. The control device 100 controls the object 10C to process tasks #9 to #11 of group C. The control device 100 controls the object 10D to process tasks #12 to #14 of group D.
[0027] For example, suppose that objects 10A and 10B have completed processing all of the tasks assigned to them. In this case, if the task processing status satisfies a predetermined condition, control device 100 assigns to objects 10A and 10B tasks that have not been processed in other groups C and D. As a result, objects 10A and 10B process the unprocessed tasks in groups C and D.
[0028] Fig. 3 is a diagram showing the configuration of the control device 100 according to the first embodiment. As shown in Fig. 3, the control device 100 has, as its main hardware components, a control unit 102, a storage unit 104, a communication unit 106, and an interface unit 108 (IF; Interface). The control unit 102, the storage unit 104, the communication unit 106, and the interface unit 108 are connected to each other via a data bus or the like. Note that the object 10, which is a machine, may also have the hardware configuration of the control device 100 shown in Fig. 3.
[0029] The control unit 102 is a processor such as a CPU (Central Processing Unit). The control unit 102 functions as an arithmetic device that performs control processing, arithmetic processing, etc. The control unit 102 may have multiple processors. The storage unit 104 is a storage device such as a memory or a hard disk. The storage unit 104 is, for example, a ROM (Read Only Memory) or a RAM (Random Access Memory). The storage unit 104 has a function for storing control programs, arithmetic programs, etc. executed by the control unit 102. In other words, the storage unit 104 (memory) stores one or more instructions. The storage unit 104 also has a function for temporarily storing processing data, etc. The storage unit 104 may include a database. The storage unit 104 may have multiple memories.
[0030] The communication unit 106 performs processing necessary for communicating with other devices, such as the communication device 12 (object 10), via a network. The communication unit 106 may include a communication port, a router, a firewall, etc. The interface unit 108 is, for example, a user interface (UI). The interface unit 108 has an input device, such as a keyboard, a touch panel, or a mouse, and an output device, such as a display or a speaker. The interface unit 108 may be configured such that the input device and the output device are integrated, such as a touch screen (touch panel). The interface unit 108 accepts data input operations by a user (operator) and outputs information to the user. The interface unit 108 may, for example, display the task assignment results.
[0031] The control device 100 according to the first embodiment includes, as its components, a prior information acquisition unit 112, a task allocation unit 120, a task processing execution unit 130, a task processing status acquisition unit 140, and a reallocation unit 150. Each of the above-described components can be realized, for example, by executing a program under the control of the control unit 102. More specifically, each of the components can be realized by the control unit 102 executing a program (instructions) stored in the storage unit 104. Alternatively, each component may be realized by recording a necessary program on a non-volatile recording medium and installing it as needed. Each component may not necessarily be realized by software programs, but may be realized by any combination of hardware, firmware, and software. Each component may also be realized using a user-programmable integrated circuit, such as an FPGA (field-programmable gate array) or a microcomputer. In this case, a program consisting of each of the above-described components may be realized using this integrated circuit. This also applies to other embodiments described later.
[0032] The prior information acquisition unit 112 acquires prior information. The prior information acquisition unit 112 stores the acquired prior information in the storage unit 104. The prior information is information that is used when the task allocation unit 120, which will be described later, assigns tasks. Furthermore, the prior information is information that is used to acquire estimated task durations that are used when the task allocation unit 120, which will be described later, assigns tasks. The estimated task durations will be described later.
[0033] The prior information includes at least task information and object information. The task information may indicate, for example, the location of each of a plurality of tasks distributed in space. The object information may indicate the number of objects 10 and information about each of the plurality of objects 10. The object information may indicate, for each object 10, the current location and performance of the object 10.
[0034] The performance of the object 10 may be any factor that can be used to obtain the expected task time. For example, the performance of the object 10 may include the movement speed of the object 10 in space. Also, for example, the performance of the object 10 may include the relative performance level of the object 10. In this case, for example, the performance level of the object 10A may be "high," the performance level of the object 10B may be "medium," and the performance level of the object 10C may be "low." Also, for example, the performance of the object 10 may indicate the processing level of each task distributed in space. The processing level may be the processing time expected when the object 10 completes each task (expected task processing time). Also, the processing level may be the proficiency (degree of strength / weakness) of each object 10 for each task.
[0035] The predicted task processing time may not depend on the performance of the object 10. In other words, the predicted task processing time may not take into account differences in performance of the object 10. In this case, the task information may indicate the predicted task processing time for each task, regardless of the object 10. In this case, the task information may also indicate the difficulty of the processing.
[0036] The task allocation unit 120 divides a plurality of tasks distributed in space into a plurality of groups, each including one or more tasks, and allocates each of the plurality of groups to a plurality of objects 10. In other words, the task allocation unit 120 determines the task (group) to be handled by each object 10. Here, the task allocation unit 120 may perform the allocation process before the object starts processing the task. In other words, the task allocation unit 120 may not perform the allocation process again after the object 10 starts processing the task. In this way, once the object 10 starts processing the task, the composition of the task groups will not be changed.
[0037] Furthermore, the task allocation unit 120 may divide multiple tasks into groups according to the estimated time required for each task (estimated task required time). In this case, the task allocation unit 120 may group tasks (assign tasks) by processing that minimizes the difference between the groups in the total estimated task required time for each group. In other words, the task allocation unit 120 may group tasks (assign tasks) by processing that minimizes the difference between the groups in the total estimated task required time for each group. A specific example of task allocation processing will be described later.
[0038] Here, the predicted task required time is the predicted time required for each task (task required time). The task required time corresponds to the total time of the travel time of the object 10 to the task and the time of the object 10 to process the task (task processing time). Therefore, the predicted task required time corresponds to the total time of the predicted travel time (predicted travel time) and the predicted task processing time (predicted task processing time). Furthermore, the predicted task required time for the next task after a task has been processed corresponds to the total time of the predicted travel time from the current position (position of the processed task) to the next task and the predicted task processing time of the next task. In other words, the predicted task required time corresponds to the sum of the predicted travel time from the position of the most recently processed task (previous task) and the predicted task processing time of the task to be moved to.
[0039] The predicted task required time can be obtained using prior information. For example, the predicted travel time can be obtained from the distance from the current position of the object 10 to the position of the task and the travel speed of the object 10. The predicted task processing time can also be obtained from the performance of the object 10. Alternatively, if the task processing time does not depend on the performance of the object 10, or if differences in the performance of the object 10 are not taken into consideration, the predicted task processing time can be obtained from task information. If the predicted task processing time cannot be obtained, the predicted task processing time for all tasks may be set to the same time.
[0040] The task processing execution unit 130 controls each of the multiple objects 10 to process the task of the assigned group. Specifically, the task processing execution unit 130 generates an instruction (object instruction) indicating that the task of the assigned group is to be processed for each object 10. Then, the task processing execution unit 130 transmits the object instruction corresponding to each object 10 to the communication device 12 corresponding to that object 10.
[0041] The object instructions include instructions (movement instructions) indicating movement to the task assigned to each object 10. The movement instructions may indicate the order in which to process multiple tasks included in the group assigned to the corresponding object 10, that is, the movement path of the object 10. The order in which the tasks are to be processed may be determined, for example, as follows: First, it is determined that the object 10 moves from its current location to the task that will have the shortest task required time (or movement time). Next, it is determined that the object 10 moves from that task to the task that will have the shortest task required time (or movement time) among the unprocessed tasks. The next destination task is determined in a similar manner. For example, in the example of FIG. 2, if group A consisting of tasks #1 to #4 is assigned to object 10A, the movement instructions may indicate that the object 10A should first move to task #4, then move to task #3, then move to task #2, and then move to task #1.
[0042] The object instruction also includes an instruction (task processing instruction) to process the tasks of the assigned group. The object instruction also includes an instruction (standby instruction) to wait at a predetermined position (state) after completing the processing of all tasks of the assigned group. For example, the wait instruction may indicate to wait near the position of the last processed task. Alternatively, the wait instruction may indicate to wait at the initial position.
[0043] The task processing status acquisition unit 140 acquires task processing status information indicating the task processing status. Specifically, the task processing status acquisition unit 140 acquires, as the task processing status information, information on tasks that have been completed by each object 10, information on tasks currently being processed, information on unprocessed tasks, and location information indicating the current location of each object 10. The task processing status acquisition unit 140 then stores the acquired task processing status information in the storage unit 104.
[0044] The reallocation unit 150 reallocates unprocessed tasks. When the processing status of the tasks satisfies a predetermined condition (trigger condition), the reallocation unit 150 allocates tasks that have not yet been processed in other groups to an object 10 that has completed processing all tasks in the assigned group. In other words, when the processing status of the tasks satisfies the trigger condition, the reallocation unit 150 decides to reallocate tasks. Note that even when reallocation is performed, the group configuration determined by the task allocation unit 120 is not changed.
[0045] Here, in the first embodiment, the "predetermined condition (trigger condition)" is that the number of objects 10 (task-completed objects) that have completed processing of all tasks in an assigned group is equal to or greater than a predetermined number. In other words, when the number of objects 10 that have completed processing of all tasks in an assigned group is equal to or greater than a predetermined number, the reallocation unit 150 allocates tasks for which processing has not been completed in other groups to the objects 10 for which processing of all tasks has been completed. In other words, when the number of task-completed objects is equal to or greater than a predetermined number, the reallocation unit 150 allocates tasks for which processing has not been completed (unprocessed tasks) in a group (unprocessed group) that includes unprocessed tasks to the task-completed objects.
[0046] The "predetermined number" may be determined, for example, from a ratio to the total number of objects 10. For example, the predetermined number may be 50% of the total number of objects 10. In this case, in the example of FIG. 2, the total number of objects 10 is 4, so the "predetermined number" is 2. Therefore, when two objects 10 have completed processing all tasks of the assigned group, the task reallocation process is executed. The predetermined number may be a number that does not depend on the total number of objects 10. For example, the predetermined number may be set to 2 regardless of the total number of objects 10. In other words, in the first embodiment, the reallocation unit 150 executes the reallocation process when multiple objects 10 have completed processing all tasks of the assigned group.
[0047] Furthermore, when the reallocation unit 150 reallocates unprocessed tasks to task-completed objects, the reallocation unit 150 may perform the reallocation so that the processing completion times of all tasks in the unprocessed groups are as even as possible between the unprocessed groups. For example, when the reallocation unit 150 reallocates unprocessed tasks to task-completed objects, the reallocation unit 150 may perform the reallocation by processing so that the total estimated task durations of the unprocessed groups are as even as possible between the unprocessed groups. Furthermore, the reallocation unit 150 may perform the reallocation so that a predetermined number of task-completed objects support different unprocessed groups. In other words, the reallocation unit 150 reallocates a predetermined number of task-completed objects to different unprocessed groups. This will be described in detail later.
[0048] FIG. 4 is a flowchart showing a control method executed by the control system 1 according to the first embodiment. The prior information acquisition unit 112 acquires prior information as described above (step S102). The task allocation unit 120 performs task allocation processing using the prior information (step S110). Specifically, the task allocation unit 120 acquires estimated task durations from the prior information. Then, the task allocation unit 120 assigns each task to each object 10 according to the estimated task duration, and performs grouping for each object 10. Various methods can be adopted for task allocation (grouping). For example, one example is a method of assigning (grouping) tasks by applying a greedy algorithm. The following describes this method using a flowchart.
[0049] FIG. 5 is a flowchart showing an example of task allocation processing by the task allocation unit 120 according to the first embodiment. The task allocation unit 120 acquires an estimated task required time (step S112). Specifically, the task allocation unit 120 acquires an estimated task required time for each task for each object 10 using prior information. As described above, the estimated task required time is the sum of the estimated travel time from the current location of each object 10 to each task and the estimated task processing time for that task. For example, in the example of FIG. 2, the estimated task required time for task #4 for object 10A is the sum of the estimated travel time from the current location of object 10A to task #4 and the estimated task processing time that object 10 is expected to require to process task #4.
[0050] As described above, the predicted movement time can be obtained from the distance from the current position of the object 10 to the position of the task and the movement speed of the object 10. The predicted task processing time can also be obtained from the performance of the object 10. Alternatively, if the task processing time does not depend on the performance of the object 10, or if differences in the performance of the object 10 are not taken into consideration, the predicted task processing time can be obtained from the task information. In this case, the task information may indicate the predicted task processing time of each task. Furthermore, if the predicted task processing time cannot be obtained, the task allocation unit 120 may obtain the predicted task processing time by assuming that the predicted task processing time of all tasks is the same.
[0051] The task allocation unit 120 allocates to all objects 10 the task with the shortest estimated task required time from the current location (step S114). For example, in the example of FIG. 2, for object 10A, it is assumed that task #4 is the task with the shortest estimated task required time from the current location. Furthermore, for object 10B, it is assumed that task #8 is the task with the shortest estimated task required time from the current location. Furthermore, for object 10C, it is assumed that task #11 is the task with the shortest estimated task required time from the current location. Furthermore, for object 10D, it is assumed that task #14 is the task with the shortest estimated task required time from the current location. In this case, the task allocation unit 120 allocates task #4 to object 10A. Similarly, the task allocation unit 120 allocates task #8 to object 10B, task #11 to object 10C, and task #14 to object 10D.
[0052] At this time, the task allocation unit 120 allocates different tasks to each object 10. In other words, if two objects 10 have the same task with the shortest expected task time, the task allocation unit 120 may allocate that task to any one of the objects 10A (for example, the object 10 whose current location is closer to the task). Then, the task allocation unit 120 may allocate the task with the next shortest expected task time to the other object 10.
[0053] In the process of S114, the task allocation unit 120 allocates to each object 10 a task that has the shortest estimated task required time from the current position, but this is not a limitation. The task allocation unit 120 may allocate to each object 10 a task that has the shortest estimated travel time from the current position.
[0054] Next, the task allocation unit 120 determines the object 10 with the shortest total predicted task duration of the assigned tasks (step S116). Specifically, the task allocation unit 120 calculates the total predicted task duration of the assigned tasks for each object 10. Then, the task allocation unit 120 determines the object 10 with the shortest total predicted task duration.
[0055] The task allocation unit 120 allocates the task with the shortest predicted task required time to the object 10 determined in S116 from the position of the most recently allocated task (step S118). In this way, the next task is allocated to the object 10 with the shortest total predicted task required time, so that the deviation in the total predicted task required time between the objects 10 can be suppressed. Furthermore, because the next task to be allocated is the task with the shortest predicted task required time, even if that task is allocated, a sudden increase in the total predicted task required time for the object 10 can be suppressed. Therefore, the deviation in the total predicted task required time between the objects 10 can be suppressed.
[0056] In the process of S118, the task allocation unit 120 assigns the task with the shortest predicted task required time from the position of the most recently assigned task to the object 10 with the shortest total predicted task required time of the assigned tasks. However, the task allocation unit 120 may also assign the task with the shortest predicted travel time from the position of the most recently assigned task to the object 10 with the shortest total predicted task processing time of the assigned tasks.
[0057] The task allocation unit 120 determines whether or not all tasks have been allocated (step S120). If all tasks have been allocated (YES in S120), all tasks have been grouped by object 10. Therefore, the task allocation unit 120 ends the process. On the other hand, if all tasks have not been allocated (NO in S120), there are still tasks that have not been grouped. Therefore, the process flow returns to S116, and the processes of S116 to S120 are repeated.
[0058] In the example of FIG. 2 described above, in the process of S114, tasks #4, #8, #11, and #14 are assigned to objects 10A, 10B, 10C, and 10D, respectively. In this case, it is assumed that the total predicted task duration for object 10A (the predicted task duration for task #4) is 1.0 hour. Furthermore, it is assumed that the total predicted task duration for object 10B (the predicted task duration for task #8) is 2.0 hours. Furthermore, it is assumed that the total predicted task duration for object 10C (the predicted task duration for task #11) is 3.0 hours. Furthermore, it is assumed that the total predicted task duration for object 10D (the predicted task duration for task #14) is 4.0 hours. In this case, in the process of S116, the task allocation unit 120 determines object 10A as the object 10 with the shortest total predicted task duration. Therefore, the task allocation unit 120 allocates the task with the shortest expected task required time to the object 10A (S118).
[0059] Here, suppose that task #3 is assigned to object 10A. The estimated task duration (the total of the estimated travel time from task #4 to task #3 and the estimated task processing time for task #3) is 0.5 hours. In this case, the total estimated task duration for object 10A (the total of the estimated task durations for task #4 and task #3) is 1.5 hours. Therefore, in the next process of S116, the task allocation unit 120 again determines object 10A as the object 10 with the shortest total estimated task duration. Therefore, the task allocation unit 120 assigns the task with the shortest estimated task duration to object 10A (S118).
[0060] Here, suppose that task #2 is assigned to object 10A. The estimated task duration (the total of the estimated travel time from task #3 to task #2 and the estimated task processing time for task #2) is 2.0 hours. In this case, the total estimated task duration for object 10A (the total of the estimated task durations for task #4, task #3, and task #2) is 3.5 hours. Therefore, in the next process of S116, the task allocation unit 120 determines that object 10B is the object 10 with the shortest total estimated task duration. Therefore, the task allocation unit 120 assigns the task with the shortest estimated task duration to object 10B (S118).
[0061] Here, suppose that task #7 is assigned to object 10B. The estimated task duration (the total of the estimated travel time from task #8 to task #7 and the estimated task processing time for task #7) is 2.0 hours. In this case, the total estimated task duration for object 10B (the total of the estimated task durations for task #8 and task #7) is 4.0 hours. Therefore, in the next process of S116, the task allocation unit 120 determines that object 10C is the object 10 with the shortest total estimated task duration. Therefore, the task allocation unit 120 assigns the task with the shortest estimated task duration to object 10C (S118). Thereafter, by performing similar processes, tasks #1 to #14 are assigned to objects 10A to 10D.
[0062] In the manner described above, for example, tasks #1 to #4 are assigned to object 10A. That is, tasks #1 to #4 are grouped into group A corresponding to object 10A. Furthermore, tasks #5 to #8 are assigned to object 10B. That is, tasks #5 to #8 are grouped into group B corresponding to object 10B. Furthermore, tasks #9 to #11 are assigned to object 10C. That is, tasks #9 to #11 are grouped into group C corresponding to object 10C. Furthermore, tasks #12 to #14 are assigned to object 10D. That is, tasks #12 to #14 are grouped into group D corresponding to object 10D.
[0063] Returning to the explanation of Fig. 4, as described above, the task processing execution unit 130 controls each of the multiple objects 10 to execute processing of the task of the assigned group (step S130). Specifically, the task processing execution unit 130 transmits an object instruction corresponding to each object 10 to the communication device 12 corresponding to that object 10. As a result, each object 10 starts processing the task of the assigned group.
[0064] As described above, the task processing status acquisition unit 140 acquires task processing status information (step S132). The reallocation unit 150 uses the task processing status information to determine whether processing of all tasks has been completed (step S134). If processing of all tasks has been completed (YES in S134), the processing flow ends.
[0065] On the other hand, if the processing of all tasks has not been completed (NO in S134), the reallocation unit 150 determines whether the number of objects that have completed the processing of all tasks for which they are responsible (task-completed objects) is equal to or greater than a predetermined number (step S140). Specifically, the reallocation unit 150 determines the task-completed objects by using the task processing status information. More specifically, the reallocation unit 150 determines, for each object 10, whether the processing of all assigned tasks has been completed by using the task processing status information. Then, the reallocation unit 150 determines whether the number of the determined task-completed objects is equal to or greater than a predetermined number. For example, as described above, the predetermined number may be 50% of the total number of objects 10.
[0066] If the number of task-completed objects is not equal to or greater than the predetermined number (NO in S140), the process flow returns to S132. Then, the processes of S132 to S140 are repeated. On the other hand, if the number of task-completed objects is equal to or greater than the predetermined number (YES in S140), the above-mentioned trigger condition for reallocation is satisfied. In this case, the reallocation unit 150 executes the reallocation process (step S150).
[0067] Specifically, the reallocation unit 150 assigns an unprocessed group to a task-completed object, and assigns unprocessed tasks (unprocessed tasks) in the unprocessed group. When the reallocation unit 150 reallocates the unprocessed tasks to the task-completed object, the reallocation unit 150 may perform the reallocation so that the processing completion times of all tasks in the unprocessed group are as even as possible between the unprocessed groups. For example, the reallocation unit 150 may assign an unprocessed group to a task-completed object so that the number of objects processing tasks in the unprocessed group is as even as possible between the unprocessed groups.
[0068] For example, the reallocation unit 150 reallocates each task-completed object to an unprocessed group including an unprocessed task with the shortest expected travel time (or expected task required time) from the location of the task-completed object. That is, the reallocation unit 150 assigns, to each task-completed object, an unprocessed task with the shortest expected travel time, and assigns the unprocessed group including the unprocessed task. At this time, the reallocation unit 150 may reallocate each task-completed object to a different unprocessed group.
[0069] Here, when the unprocessed group including the unprocessed task with the shortest expected travel time is the same for multiple task completion objects, the reallocation unit 150 may reallocate only one of the task completion objects to that unprocessed group, and then reallocate the other task completion objects to another unprocessed group.
[0070] For example, the reallocation unit 150 may reallocate, to the unprocessed group X, a task-completed object that has the shortest expected travel time to an unprocessed task belonging to the unprocessed group X. Then, the reallocation unit 150 may reallocate, for another task-completed object, an unprocessed task that has the shortest expected travel time in an unprocessed group Y other than the unprocessed group X. In this way, each task-completed object can be reallocated to a different unprocessed group. Furthermore, by reallocating the task-completed objects in this way, it is possible to start processing the unprocessed tasks in the unprocessed group X earlier.
[0071] Alternatively, the reallocation unit 150 may rearrange, among the plurality of task completion objects, a task completion object having a short expected travel time to an unprocessed task included in another unprocessed group Y other than the unprocessed group X, into the other unprocessed group Y. Then, the reallocation unit 150 may rearrange, among the plurality of task completion objects, a task completion object having the longest expected travel time to an unprocessed task included in another unprocessed group Y other than the unprocessed group X, into the unprocessed group X. In this way, each task completion object can be rearranged into a different unprocessed group. Furthermore, by rearranging the task completion objects in this manner, it is possible to suppress imbalances in the travel times of each task completion object.
[0072] For example, in the example of FIG. 2 above, suppose tasks #1 to #4, tasks #5 to #8, tasks #9 to #11, and tasks #12 to #14 are grouped into groups A, B, C, and D, respectively. Furthermore, suppose object 10C has completed processing all tasks in group C and is waiting at the position of task #9, and object 10D has completed processing all tasks in group D and is waiting at the position of task #12. At this time, suppose tasks #1 and #2 in group A are unprocessed, and tasks #5 and #6 in group B are unprocessed. In this case, the unprocessed task with the shortest expected travel time from objects 10C and 10D, which are task-completed objects, is task #5 included in group B. If this continues, objects 10C and 10D will be relocated to the same group B. Meanwhile, the expected travel time from object 10C to unprocessed task #2 in group A is shorter than the expected travel time from object 10D to unprocessed task #2 in group A. Therefore, the reallocation unit 150 may rearrange the object 10C to group A and the object 10D to group B.
[0073] However, if an object 10 in an unprocessed group has started processing the final task, or if the object 10 has started moving toward the final task, it is possible not to relocate the task completion object to that unprocessed group. This is because relocating a task completion object to such an unprocessed group would be wasteful. In other words, even if a task completion object is relocated to such an unprocessed group, it is highly likely that the originally placed object 10 will already be processing the final task when the task completion object arrives. In this case, there will be no task for the task completion object to process in the relocated unprocessed group. Therefore, relocating a task completion object to such an unprocessed group would be wasteful.
[0074] Therefore, the reallocation unit 150 excludes such unprocessed groups and reallocates the task completion objects to the unprocessed groups. Note that if the number of unprocessed groups to which task completion objects are to be reallocated is smaller than the number of task completion objects, the reallocation unit 150 may reallocate two or more task completion objects to one unprocessed group. Note that the reallocation unit 150 performs reallocation so that an unprocessed group to which two or more task completion objects are to be reallocated contains more unprocessed tasks than the number of task completion objects.
[0075] Once the reallocation process is completed, the process flow returns to S 130. Then, the task process execution unit 130 controls the task completion object to execute the task processing of the reallocated group (S 130).
[0076] 6 to 8 are diagrams for explaining a first specific example. FIG. 6 is a diagram showing the arrangement of tasks according to the first specific example. FIG. 7 is a diagram for explaining a case where the method according to the first embodiment is used in the first specific example. FIG. 8 is a diagram for explaining a case where the method according to the comparative example is used in the first specific example.
[0077] As shown in FIG. 6, in the first specific example, tasks #1 to #8 are arranged in a line. Four objects 10A to 10D perform the task processing. In the first specific example, the tasks are arranged at equal intervals, and the travel time between adjacent tasks is T=0.5. Note that the tasks may be, for example, cleaning work on each floor of an eight-story building. Alternatively, the tasks may be, for example, repairing each of eight broken machines arranged in a line.
[0078] Furthermore, the expected task processing time for each task is known in advance, as shown in Figure 6. That is, the expected task processing time for task #1 is T=1. The expected task processing time for task #2 is T=1. The expected task processing time for task #3 is T=1. The expected task processing time for task #4 is T=3. The expected task processing time for task #5 is T=3. The expected task processing time for task #6 is T=1. The expected task processing time for task #7 is T=1. The expected task processing time for task #8 is T=1.
[0079] As shown in FIG. 6, the actual task processing times are as follows. These actual task processing times are only known after object 10 processes the tasks. The actual task processing time for task #1 is T=3. The actual task processing time for task #2 is T=1. The actual task processing time for task #3 is T=1. The actual task processing time for task #4 is T=3. The actual task processing time for task #5 is T=2. The actual task processing time for task #6 is T=2. The actual task processing time for task #7 is T=3. The actual task processing time for task #8 is T=1.
[0080] In the first specific example, the trigger condition for reallocation according to the first embodiment is set to "50% of the total number of objects 10 complete processing of all assigned tasks." Since there are four objects 10, when two objects 10 complete processing of all tasks assigned to them, these two objects 10 are rearranged to a group related to the other two objects 10. In other words, when two objects 10 complete processing of tasks assigned to them, these two objects 10 support the other two objects 10. Note that when another object 10 completes processing of all tasks and there are unprocessed tasks, the object 10 may be rearranged.
[0081] 7, in the initial state (time t=0), object 10A is placed at the position of task #1. Object 10B is placed at the position of task #4. Object 10C is placed at the position of task #5. Object 10D is placed at the position of task #8.
[0082] The task allocation unit 120 allocates each task to each object 10 based on the travel time and the expected task processing time as follows: The task allocation unit 120 allocates tasks #1, #2, and #3 to object 10A. Therefore, tasks #1, #2, and #3 belong to group A. The task allocation unit 120 also allocates task #4 to object 10B. Therefore, task #4 belongs to group B. The task allocation unit 120 also allocates task #5 to object 10C. Therefore, task #5 belongs to group C. The task allocation unit 120 allocates tasks #6, #7, and #8 to object 10D. Therefore, tasks #6, #7, and #8 belong to group D.
[0083] At time t=3, object 10A finishes processing task #1. Object 10A then moves to the position of the next task #2 and processes task #2. In other words, at time t=3, of the tasks in group A, tasks #2 and #3 are unprocessed tasks, and processing of neither task #2 nor #3 has begun.
[0084] Furthermore, at time t=3, object 10D is processing task #7. That is, object 10D finishes processing task #8 at time t=1. Then, object 10D arrives at the position of the next task #7 at time t=1.5 and starts processing task #7. Therefore, at time t=3, time T=1.5 has passed since the start of processing task #7. At time t=3, of the tasks in group D, tasks #7 and #6 are unprocessed tasks, and processing has started for task #7, but processing has not started for task #6.
[0085] On the other hand, at time t=3, object 10C has already finished processing task #5. That is, object 10C finishes processing task #5 at time t=2. Therefore, object 10C completes processing of all tasks assigned to it. However, since other objects 10 have not completed processing of all tasks assigned to them, object 10C waits.
[0086] Then, at time t=3, object 10B finishes processing task #4. Therefore, object 10B completes processing of all tasks assigned to itself. As a result, the two objects 10B and 10C have completed processing of all tasks assigned to themselves, and so the reallocation unit 150 performs reallocation processing. Specifically, the reallocation unit 150 assigns the tasks of groups A and D, which are unprocessed groups, to objects 10B and 10C. In other words, the reallocation unit 150 assigns the tasks assigned to objects 10A and 10D to objects 10B and 10C.
[0087] The reallocation unit 150 allocates task #3, which is the task with the shortest travel time (i.e., the closest) among the unprocessed tasks in the unprocessed group, to object 10B from the position of object 10B at time t=3 (the position of task #4). As a result, object 10B is rearranged in group A and will support object 10A. Thereafter, object 10B moves toward the position of task #3. Then, at time t=3.5, object 10B arrives at the position of task #3 and starts processing task #3.
[0088] Furthermore, the reallocation unit 150 allocates task #6, which is the task with the shortest travel time (i.e., the closest) among the unprocessed tasks in the unprocessed group, to object 10C from the position of object 10C at time t=3 (the position of task #5). As a result, object 10C is rearranged in group D and will support object 10D. Thereafter, object 10C moves toward the position of task #6. Then, at time t=3.5, object 10C arrives at the position of task #6 and starts processing task #6.
[0089] At time t=4.5, object 10A finishes processing task #2. That is, object 10A arrives at the location of task #2 at time t=3.5 and starts processing task #2. Then, at time t=4.5, after time T=1 has elapsed, object 10A finishes processing task #2.
[0090] Also, at time t=4.5, object 10B completes processing of task #3. That is, as described above, object 10B arrives at the position of task #3 at time t=3.5 and starts processing task #3. Then, at time t=4.5, after time T=1 has elapsed, object 10B completes processing of task #3.
[0091] At time t=4.5, object 10C is processing task #6. That is, as described above, object 10C arrives at the location of task #6 at time t=3.5 and starts processing task #6. At time t=4.5, time T=1 has passed since the processing of task #6 started.
[0092] Furthermore, at time t=4.5, object 10D completes processing of task #7. That is, as described above, object 10D arrives at the position of task #7 at time t=1.5 and starts processing task #7. Therefore, at time t=4.5, after a time T=3 has elapsed, object 10D completes processing of task #7.
[0093] Then, at time t=5.5, when time T=2 has elapsed since time t=3.5, object 10C finishes processing task #6. As a result, at time t=5.5, all processing of tasks #1 to #8 is completed. Furthermore, the movement of each object 10 is "a single movement to the position of the adjacent task." In other words, the movement time (movement distance) of each object 10 is kept to a minimum.
[0094] On the other hand, the reallocation condition in the comparative example shown in Fig. 8 is set to "immediately after completing the processing of all tasks handled by object 10, reallocate object 10 to the group that is expected to take the longest time to process the tasks." The initial state (time t = 0) and task allocation are the same as those in Fig. 7.
[0095] At time t=2, object 10A is processing task #1. At time t=2, object 10B is processing task #4. At time t=2, object 10D is processing task #7. That is, object 10D finishes processing task #8 at time t=1. Then, at time t=1.5, object 10D arrives at the position of the next task #7 and starts processing task #7. Therefore, at time t=2, time T=0.5 has passed since the start of processing task #7. In this way, objects 10A, 10B, and 10D have not yet completed processing all of the tasks for which they are responsible.
[0096] Meanwhile, at time t=2, object 10C finishes processing task #5. Therefore, object 10C completes processing of all tasks assigned to it. Therefore, object 10C is relocated to another group at time t=2. Here, in group A, where task processing has not been completed, the total estimated task processing time of the remaining tasks is T=2. Furthermore, in group D, where task processing has not been completed, the total estimated remaining task processing time is T=1.5. Note that in group B, where task processing has not been completed, there are no unprocessed tasks for which processing has not started. Therefore, object 10C is relocated to group A, which has the largest total estimated remaining task processing time. Note that, among the unprocessed groups A, B, and D, group A has the largest number of unprocessed tasks for which processing has not started, and therefore object 10C may be relocated to group A. Therefore, object 10C moves toward task #3 in group A, which is closest to the current location of object 10C.
[0097] At time t=3, object 10A finishes processing task #1. Then, object 10A moves toward the next task #2. Also, at time t=3, object 10C, which has been rearranged to group A, starts processing task #3. That is, object 10C moves a distance of two tasks from task #5 to arrive at task #3. Therefore, object 10C arrives at task #3 at time t=3, when time T=1 (=0.5×2) has elapsed since time t=2. Therefore, at time t=3, object 10C starts processing task #3. Also, at time t=3, object 10D is processing task #7. That is, at time t=3, time T=1.5 has elapsed since the start of processing task #7.
[0098] On the other hand, at time t=3, object 10B finishes processing task #4. Therefore, object 10B completes processing of all tasks assigned to it. Therefore, object 10B is relocated to another group at time t=3. Here, of groups A and D, which are unprocessed groups, object 10A is heading to the last task #2 in group A. Therefore, object 10B is not relocated to group A. Therefore, object 10B is relocated to group D. Therefore, object 10B is headed to task #6, which is the closest unprocessed task in group D.
[0099] Thereafter, at time t=4.5, object 10A finishes processing task #2. At time t=4, object C finishes processing task #3. At time t=4, which is a time T=1 (=0.5×2) that has elapsed since time t=3, object 10B arrives at task #6. Therefore, at time t=4, object 10B starts processing task #6. At time t=6, object 10B finishes processing task #6. At time t=4.5, object 10D finishes processing task #7.
[0100] In this way, in the comparative example, all processing of tasks #1 to #8 is completed at time t=6. Therefore, in the comparative example, the time until all tasks are completed is longer than in the first embodiment. Also, in the comparative example, the movement of objects 10B and 10C is "a single movement to a position two tasks away." Therefore, in the comparative example, the movement time (movement distance) of object 10 is longer than in the method according to the first embodiment.
[0101] As shown in FIG. 7, by not performing the reallocation process until time t=3 when both objects 10B and 10C have completed processing of the tasks for which they are responsible, objects 10B and 10C can process tasks that are close to each other. However, it is not until time t=3 that it becomes clear that it is better not to perform the reallocation process. Therefore, as shown in FIG. 8, if the reallocation process is performed immediately after object 10 has completed processing of the task for which it is responsible, object 10 may end up processing a relatively distant task. This may increase the overall processing time and may increase the travel time and travel distance.
[0102] In contrast, the control system 1 according to the first embodiment is configured to assign tasks that have not yet been processed in other groups to objects that have completed processing all tasks in their assigned groups when the number of task-completed objects is equal to or greater than a predetermined number. This increases the likelihood that a task close to the task-completed object can be reassigned to the task-completed object. Therefore, the control system 1 according to the first embodiment can efficiently process all tasks.
[0103] Figures 9 to 15 are diagrams for explaining a second specific example. Figures 9 and 10 are diagrams showing task allocation according to the second specific example. Figures 11 to 15 are diagrams for explaining a case where the method according to the first embodiment is used in the second specific example.
[0104] As shown in FIG. 9, in the second specific example, tasks #1 to #8 are arranged on a plane. Four objects 10A to 10D perform the processing of the tasks. The tasks may be, for example, repairing each of eight broken machines arranged on the plane. Alternatively, the tasks may be, for example, cleaning eight locations arranged on the plane.
[0105] As shown in Figure 9, the travel time between tasks is shown near the arrows connecting the tasks. As shown in Figure 9, in the second specific example, the travel time between tasks is different. The travel time from the position of task #1 to the position of task #2 is 0.5 hours, and the travel time from the position of task #2 to the position of task #3 is 0.5 hours. Furthermore, the travel time from the position of task #4 to the position of task #7 is 1 hour, the travel time from the position of task #5 to the position of task #3 is 0.5 hours, and the travel time from the position of task #5 to the position of task #8 is 1 hour. Note that travel times between tasks for which no arrows are drawn are assumed to be 1.5 hours or more.
[0106] Furthermore, in the second specific example, the initial position of each object 10 is not near the task. Therefore, it is necessary to consider the travel time from the initial position of each object 10 to the task closest to each object 10. The travel time from the initial position of object 10A to the position of task #4 is one hour. The travel time from the initial position of object 10B to the position of task #5 is one hour. The travel time from the initial position of object 10C to the position of task #1 is one hour. The travel time from the initial position of object 10D to the position of task #6 is one hour.
[0107] Furthermore, the expected task processing time for each task is known in advance, as shown in Figure 9. That is, the expected task processing time for task #1 is 1 hour. The expected task processing time for task #2 is 1 hour. The expected task processing time for task #3 is 1 hour. The expected task processing time for task #4 is 3 hours. The expected task processing time for task #5 is 3 hours. The expected task processing time for task #6 is 1 hour. The expected task processing time for task #7 is 1 hour. The expected task processing time for task #8 is 1 hour.
[0108] FIG. 10 shows the actual task processing time for each task. This actual task processing time is only known after object 10 processes the task. The actual task processing time for task #1 is 1 hour. The actual task processing time for task #2 is 1 hour. The actual task processing time for task #3 is 4 hours. The actual task processing time for task #4 is 2.5 hours. The actual task processing time for task #5 is 0.5 hours. The actual task processing time for task #6 is 5 hours. The actual task processing time for task #7 is 5 hours. The actual task processing time for task #8 is 5 hours.
[0109] Furthermore, in the second specific example, the trigger condition for performing the reallocation according to the first embodiment is set to "50% of the total number of objects 10 complete processing of all assigned tasks." Since there are four objects 10, when two objects 10 complete processing of all tasks assigned to them, these two objects 10 are rearranged to a group related to the other two objects 10. In other words, when two objects 10 complete processing of all tasks assigned to them, these two objects 10 support the other two objects 10. Note that rearrangement may also be performed when another object 10 completes processing of all tasks and there are unprocessed tasks.
[0110] The task allocation unit 120 allocates each task to each object 10 based on the travel time and the expected task processing time as follows: The task allocation unit 120 allocates tasks #1, #2, and #3 to object 10C. Therefore, tasks #1, #2, and #3 belong to group GrC. The task allocation unit 120 also allocates task #4 to object 10A. Therefore, task #4 belongs to group GrA. The task allocation unit 120 also allocates task #5 to object 10B. Therefore, task #5 belongs to group GrB. The task allocation unit 120 allocates tasks #6, #7, and #8 to object 10D. Therefore, tasks #6, #7, and #8 belong to group GrD.
[0111] 11 shows the state one hour later in the second specific example. Objects 10A to 10D each move to the position of the task to be processed first and start processing the task. Specifically, object 10A starts processing task #4. Object 10B starts processing task #5. Object 10C starts processing task #1. Object 10D starts processing task #6.
[0112] FIG. 12 shows the state 1.5 hours later in the second specific example. Object 10B finishes processing task #5 much earlier than the expected task processing time. As a result, object 10B completes processing all tasks for group GrB. At this point, only object 10B has completed the tasks for its own group, so the trigger condition is not satisfied. Therefore, object 10B does not assist other groups and waits. Also, object 10A is processing task #4. Object 10C is processing task #1. Object 10D is processing task #6.
[0113] FIG. 13 shows the state 3.5 hours later in the second specific example. Object 10D is processing task #6. Object 10C has completed processing tasks #1 and #2 and has begun moving to the final task #3. That is, object 10C completes processing task #1 after 2 hours, moves to the position of the next task #2 after 2.5 hours, and completes processing task #2 after 3.5 hours. Then, object 10C begins moving to the final task #3.
[0114] Furthermore, object 10B has been waiting for two hours since completing the processing of the tasks of group GrB. Furthermore, object 10A finishes processing task #4. As a result, object 10A completes the processing of all tasks of group GrA. As a result, the number of task-completed objects becomes two, and the trigger condition is satisfied. Therefore, the reallocation unit 150 performs a reallocation process. As a result, objects 10A and 10B are relocated to other groups. Specifically, the reallocation unit 150 assigns tasks of groups GrC and GrD, which are unprocessed groups, to objects 10A and 10B. In other words, the reallocation unit 150 assigns the tasks assigned to objects 10C and 10D to objects 10A and 10B. At this time, the reallocation unit 150 relocates objects 10A and 10B taking into consideration the travel time to the tasks and the expected task processing time.
[0115] At this point, as described above, object 10C has finished processing tasks #1 and #2 and has begun moving to the final task #3. Therefore, even if the task-completed object were to be relocated to group GrC, there is a high possibility that the task-completed object will no longer have any tasks to process, and so the relocation would be futile. Therefore, the reallocation unit 150 determines not to relocate the task-completed object to group GrC. Therefore, the reallocation unit 150 determines to relocate objects 10A and 10B to group GrD.
[0116] The reallocation unit 150 then determines to reallocate object 10A to task #7, which is the unprocessed task of group GrD and has the shortest travel time (i.e., the closest) from the position of object 10A. In other words, the reallocation unit 150 allocates task #7 to object 10A. The reallocation unit 150 also determines to reallocate object 10B to task #8, which is the unprocessed task of group GrD and has the shortest travel time (i.e., the closest) from the position of object 10B. In other words, the reallocation unit 150 allocates task #8 to object 10B. As a result, object 10A starts moving toward task #7. Furthermore, object 10B starts moving toward task #8.
[0117] FIG. 14 shows the state six hours later in the second specific example. Object 10C is processing task #3 of group GrC. Object 10A is processing task #7 of group GrD. Object 10B is processing task #8 of group GrD. Object 10D has finished processing task #6. At this point, there are no unprocessed tasks that have not yet started processing. Therefore, the reallocation unit 150 does not perform reallocation processing for object 10D. Therefore, object 10D waits at the position of task #6.
[0118] 15 shows the state after 9.5 hours in the second specific example. Object 10C has finished processing task #3 after 8 hours, so at this point it is waiting at the location of task #3. Also, object 10A has finished processing task #7 of group GrD. Also, object 10B has finished processing task #8 of group GrD. Therefore, processing of all tasks is completed.
[0119] In the second specific example, the condition for reallocation in the comparative example is set as follows: "As soon as object 10 finishes processing all tasks for which it is responsible, object 10 is immediately reallocated to the group that is expected to take the longest time to complete the tasks." In this case, when object 10B finishes processing task #5 after 1.5 hours (FIG. 12), object 10B can be reallocated to task #3, which requires the shortest travel time from its current location. In this case, after 3.5 hours (FIG. 13), object 10A finishes processing task #4 and completes processing the tasks of group GrA. Also, object 10C finishes processing tasks #1 and #2. Here, object 10B is processing the remaining task #3 of group GrC, so there are no more tasks for object 10C to process in group GrC. Therefore, reallocation processing is performed for objects 10A and 10C. In this case, object 10A can be reallocated to task #7 of group GrD, and object 10C can be reallocated to task #8 of group GrD. In this case, it takes more than 1.5 hours for object 10C to move from the position of task #2 to the position of task #8. Therefore, the start of processing task #8 in the comparative example is delayed compared to the first embodiment. Therefore, the completion of processing all tasks is delayed in the comparative example compared to the first embodiment. And, the movement time of object 10C increases in the comparative example. That is, in the comparative example, the overall processing time increases, and there is a risk that the movement time and movement distance will increase.
[0120] In contrast, the control system 1 according to the first embodiment is configured to assign tasks that have not yet been processed in other groups to objects that have completed processing all tasks in their assigned groups when the number of task-completed objects is equal to or greater than a predetermined number. This increases the likelihood that a task-completed object can be reassigned to a task close to the task-completed object. Therefore, the control system 1 according to the first embodiment can efficiently process all tasks.
[0121] As described above, the control system 1 according to the first embodiment is configured to assign tasks that have not yet been processed in other groups to an object that has completed processing all tasks in the assigned group when the task processing status satisfies a predetermined condition. This increases the likelihood that the object that has completed all tasks will be reassigned to a group that should be supported. Therefore, the control system 1 according to the first embodiment can efficiently execute the processing of the entire task.
[0122] Furthermore, the control system 1 according to the first embodiment is configured to assign tasks that have not yet been processed in other groups to objects that have completed all tasks in their assigned group when the number of task-completed objects is equal to or greater than a predetermined number. This predetermined number may be determined, for example, according to the ratio to the total number of objects 10. With this configuration, all tasks can be processed more efficiently than in the comparative example described above, where "once an object 10 has completed processing all of its tasks, that object 10 is immediately relocated to a group that is expected to take the longest time to complete the tasks." That is, in the first embodiment, task-completed objects that have reached a predetermined number or more are simultaneously relocated to unprocessed groups. This makes it possible to suppress an increase in the travel time (travel distance) of the objects 10 and thus suppress an increase in task processing time.
[0123] In particular, if the predetermined number is set to 50% of the total number of objects 10, the number of task-completed objects will be approximately the same as the number of unprocessed groups. Therefore, task-completed objects can be relocated to the unprocessed groups one by one. This reduces the processing time for tasks in each unprocessed group, thereby reducing the overall processing time for tasks.
[0124] Furthermore, the control system 1 according to the first embodiment is configured to perform control so that an object 10 that has completed processing all tasks of an assigned group waits in a predetermined state until a task is reassigned. This prevents the object 10 (task-completed object) from making unnecessary movements. Therefore, it is possible to prevent an increase in the movement time and movement distance of the object.
[0125] Furthermore, the control system 1 according to the first embodiment is configured to divide a plurality of tasks into a plurality of groups and assign each of the plurality of groups to a plurality of objects before the object 10 starts processing the task. As a result, the task assignment process can be performed only once at the initial stage. In other words, once the object 10 starts processing the task, the group configuration is not changed. Here, if the task assignment is performed multiple times to change the group configuration, the process of S110 will be performed multiple times, which may increase the calculation load and the calculation time. In contrast, the configuration according to the first embodiment described above makes it possible to reduce the calculation load and reduce the increase in calculation time in the control device 100 compared to when the task assignment is performed multiple times to change the group configuration.
[0126] Furthermore, the control system 1 according to the first embodiment is configured to divide a plurality of tasks into groups according to the estimated time required for each task. This makes it possible to suppress the imbalance in the estimated time required between groups. Therefore, it is possible to further suppress an increase in the overall processing time of the tasks.
[0127] (Embodiment 2) Next, a second embodiment will be described. The configuration of the control system 1 according to the second embodiment is substantially the same as the configuration of the control system 1 according to the first embodiment shown in FIG. 1, and therefore a description thereof will be omitted. The configuration of the control device 100 according to the second embodiment is substantially the same as the configuration of the control device 100 according to the first embodiment shown in FIG. 3, and therefore a description thereof will be omitted. In the second embodiment, the trigger condition described above is different from that in the first embodiment. In the second embodiment, the trigger condition is "a certain time has elapsed since the task completion object completed processing of the task it is responsible for."
[0128] 16 is a flowchart showing a control method executed by the control system 1 according to the second embodiment. The prior information acquisition unit 112 acquires prior information as in S102 (step S202). The task allocation unit 120 performs task allocation processing using the prior information as in S110 (step S210). The task processing execution unit 130 controls each of the multiple objects 10 to execute processing of the task of the assigned group as in S130 (step S230).
[0129] The task processing status acquisition unit 140 acquires task processing status information (step S232), similar to S132. The reallocation unit 150 determines whether the processing of all tasks has been completed using the task processing status information (step S234), similar to S134. If the processing of all tasks has been completed (YES in S234), the processing flow ends.
[0130] On the other hand, if the processing of all tasks has not been completed (NO in S234), the reallocation unit 150 determines whether a certain time has elapsed since the task completion object completed the processing of the assigned task (step S240). The "certain time" can be determined based on the characteristics of the task processing time. For example, if the actual task processing time is either a predetermined short time (e.g., 10 minutes) or a predetermined long time (e.g., 1 hour), the certain time can be set according to the length of the short time. If the actual task processing time is 10 minutes or 1 hour, the certain time can be set to 10 minutes.
[0131] If the certain time has not elapsed since the task completion object completed the processing of the task it was responsible for (NO in S240), the process flow returns to S232. Then, the processes of S232 to S240 are repeated. On the other hand, if the certain time has elapsed since the task completion object completed the processing of the task it was responsible for (YES in S240), the trigger condition for reallocation described above is satisfied. In this case, the reallocation unit 150 executes the reallocation process (step S250).
[0132] Specifically, the reallocation unit 150 assigns an unprocessed group to a task-completed object and assigns the unprocessed tasks in the unprocessed group. At this time, the reallocation unit 150 may reallocate the task-completed object to an unprocessed group having a large number of unprocessed tasks among the unprocessed groups. In other words, the reallocation unit 150 may assign the unprocessed tasks of an unprocessed group having a large number of unprocessed tasks to the task-completed object. Alternatively, the reallocation unit 150 may reallocate the task-completed object to an unprocessed group including many tasks whose actual task processing times were long.
[0133] Once the reallocation process is completed, the process flow returns to S230. Then, the task process execution unit 130 controls the task completion object to execute the task of the reallocated group (S230).
[0134] For example, in the example of FIG. 2, tasks #1 to #4, tasks #5 to #8, tasks #9 to #11, and tasks #12 to #14 are grouped into groups A, B, C, and D, respectively. Then, at time t=t1, object 10C completes processing of all tasks in group C. Furthermore, object 10B completes processing of tasks #8 and #7 in that order, and is processing task #6 at time t=t1. Furthermore, object 10D completes processing of task #14, and is processing task #13 at time t=t1.
[0135] Assume that the actual task processing time is "10 minutes" or "1 hour." In this case, object 10C waits for 10 minutes from time t=t1. Assume that the actual task processing time for task #6 is "10 minutes" and the actual task processing time for task #13 is "1 hour." In this case, when object 10C has waited for 10 minutes from time t=t1, object 10B has finished processing task #6 and is moving toward the last task #5. Meanwhile, at that time, object 10D is still processing task #13. Therefore, object 10C is relocated to task #12 in group D.
[0136] In contrast, in the above case, if object 10C is immediately relocated to another group at time t=t1 without waiting for the fixed time (10 minutes), object 10C may be relocated to task #5 of group B. In this case, when object 10C arrives at task #5, object 10B may have already finished processing task #6 and is currently processing task #5. In this case, the relocation of object 10C would be wasted. Therefore, by performing the reallocation process after a fixed time has passed since the task completion object completed processing of the task it was responsible for, it is possible to prevent such wasted relocation. Therefore, it is possible to efficiently process tasks.
[0137] In the second embodiment, the control system 1 is also configured to assign tasks that have not yet been processed in other groups to a task-completed object when the task processing status satisfies a predetermined condition. This increases the likelihood that an object that has completed all of its tasks will be reassigned to a group that should be supported. Therefore, the control system 1 according to the second embodiment can efficiently execute the processing of the entire task.
[0138] (Variation) The present invention is not limited to the above-described embodiment, and can be modified as appropriate without departing from the spirit of the present invention. For example, the order of the steps (processes) in the above-described flowchart can be modified as appropriate. Furthermore, one or more of the steps (processes) in the above-described flowchart can be omitted.
[0139] Tasks may also be distributed in a virtual space. In this case, a task may correspond to, for example, machining a workpiece such as metal using a machining machine such as a lathe. In this case, the virtual space may not be a coordinate space indicating a physical position, but may be a space indicating the state of the machining machine. In other words, the virtual space may be a space in which one or more states of the machining machine (e.g., lathe angle, screw tightening, etc.) are used as coordinate axes. In this case, the object itself may not move from its position in real space. In this case, the object may be, for example, a machining machine such as a lathe. In this case, the "state that can be changed in space" of the object is the state that is adjusted during machining by the machining machine. This state may differ for each task being processed. Therefore, each task corresponds to a different state of the object.
[0140] FIG. 17 is a diagram illustrating a virtual space in which tasks are distributed according to a modified example. When an object (such as a processing machine) processes a workpiece, the state x and state y of the object are adjusted, and a task related to processing the workpiece is executed in that state (x, y). For example, state x may be the lathe angle, and state y may be the tightness of a screw. The object also changes its state to process a different task. The time required to change the state corresponds to the movement time required to move the state in the virtual space. The time required to process a task in a certain state corresponds to the task processing time.
[0141] Then, suppose that object A is assigned task #1, which can be processed in state (x1, y1), task #2, which can be processed in state (x2, y2), and task #3, which can be processed in state (x3, y3). In this case, object A processes task #1 in state (x1, y1). After completing processing of task #1, object A changes its state to process task #2 in state (x2, y2). After completing processing of task #2, object A changes its state to process task #3 in state (x3, y3). This completes processing of the tasks assigned to object A.
[0142] At this time, suppose that task #4, which was assigned to another object B, is an unprocessed task. In this case, when the trigger condition described above is satisfied, object A changes its state to the state (x4, y4) corresponding to task #4, and can process task #4.
[0143] In the above-described embodiment, the task allocation unit 120 divides tasks into groups and assigns each of the groups to a corresponding one of the objects before the object starts processing the task. In other words, in the above-described embodiment, once the task allocation unit 120 divides tasks into groups, the group configuration is not changed while the object is processing the task. However, the control system 1 according to this embodiment is not limited to this configuration. The group configuration may be changed by regrouping the tasks while the object is processing the task. For example, if it is appropriate to consider that the actual processing time of unprocessed tasks in a certain group is longer (or shorter) than the expected processing time while the object is processing the task, the grouping may be performed again accordingly. However, in this case, it is necessary to compare the computational cost (computational load and computational time) required for grouping (task allocation processing) with the benefit of regrouping to determine whether to regroup the tasks.
[0144] In the above-described embodiment, task allocation is performed based on the predicted task processing time acquired in advance for each task, but this is not limited to this configuration. The present invention can also be applied when the predicted task processing time for each task is unknown. When the predicted task processing time for each task is unknown, task allocation may be performed by assuming that the predicted task processing time for all tasks is the same predetermined processing time.
[0145] Furthermore, the above-described embodiment does not take into consideration the difference between the predicted travel time and the actual travel time. However, the present invention can be applied even when the predicted travel time differs from the actual travel time, just as it can be applied to the difference between the predicted task processing time and the actual task processing time. Furthermore, the above-described embodiment does not describe that the position of an object changes while the object is processing a task. However, in the system according to this embodiment, the position (state) of the object may change while the object is processing a task. For example, if the object is a taxi and the task is to transport a taxi passenger, the object may transport the passenger and then process the next task from the destination.
[0146] The above-mentioned program includes a set of instructions (or software code) that, when loaded into a computer, causes the computer to perform one or more functions described in the embodiments. The program may be stored in a non-transitory computer-readable medium or a tangible storage medium. By way of example and not limitation, computer-readable media or tangible storage media include random-access memory (RAM), read-only memory (ROM), flash memory, solid-state drive (SSD) or other memory technologies, CD-ROM, digital versatile disk (DVD), Blu-ray® disk or other optical disk storage, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage device. The program may also be transmitted on a transitory computer-readable medium or communication medium. By way of example and not limitation, transitory computer-readable media or communication media include electrical, optical, acoustic, or other forms of propagated signals. [Explanation of symbols]
[0147] 1. Control System 10 Objects 12. Communications equipment 100 control device 112 Advance Information Acquisition Department 120 Task Allocation Department 130 Task Processing Execution Unit 140 Task processing status acquisition unit 150 Reallocation Division
Claims
1. a task allocation unit that divides a plurality of tasks distributed at positions in a space into a plurality of groups each including one or more tasks, and allocates each of the plurality of groups to a plurality of objects that can move in the space; a task processing execution unit that controls each of the plurality of objects to process the tasks of the group assigned to it, and controls a task completion object, which is an object that has completed processing all tasks of the assigned group, to wait at a position where it completed processing the tasks until a task is reassigned; a reallocation unit that allocates, to the task-completed object, an unprocessed task that is a task that has not been processed in another group, when the number of the task-completed objects is equal to or greater than a predetermined number that is equal to or greater than two; and the reallocation unit allocates the unprocessed task to the task-completed object having the shortest expected travel time from the waiting position to the unprocessed task, among the plurality of task-completed objects; Control system.
2. the task allocation unit divides the tasks into a plurality of groups and allocates each of the plurality of groups to each of the plurality of objects before the object starts processing the task; The control system of claim 1 .
3. the task allocation unit divides the plurality of tasks into the groups according to the estimated times required for the tasks; 3. A control system according to claim 1 or 2.
4. Dividing a plurality of tasks distributed at positions in a space into a plurality of groups each including one or more tasks, and assigning each of the plurality of groups to a plurality of objects that can move in the space; Controlling each of the plurality of objects to process the tasks of the group assigned to it, and controlling a task completion object, which is an object that has completed processing all tasks of the assigned group, to wait at the position where it completed processing the tasks until the task is reassigned; When the number of the task-completed objects is equal to or greater than a predetermined number of two or more, an unprocessed task, which is a task for which processing in another group has not been completed, is assigned to the task-completed object, and the unprocessed task is assigned to the task-completed object among the plurality of task-completed objects that has the shortest expected travel time from the waiting position to the unprocessed task. Control method.
5. a step of dividing a plurality of tasks distributed at positions in a space into a plurality of groups each including one or more tasks, and assigning each of the plurality of groups to a plurality of objects that can move in the space; a step of controlling each of the plurality of objects to process the tasks of the group assigned to it, and controlling a task-completed object, which is an object that has completed processing all tasks of the assigned group, to wait at a position where it completed processing the tasks until a task is reassigned; a step of allocating an unprocessed task, which is a task that has not been processed in another group, to the task-completed object when the number of the task-completed objects is equal to or greater than a predetermined number of two, wherein the unprocessed task is allocated to the task-completed object among the plurality of task-completed objects that has the shortest expected travel time from a waiting position to the unprocessed task; A program that causes a computer to execute the following.
Citation Information
Patent Citations
Mission re-planning for coordinated multivehicle task allocation
JP2014059860A
Task assignment program, task assignment method, and task assignment device
JP2016004328A
Task assignment device, method, and program
JP2017107385A
Using autonomous machines to perform tasks
JP2022509762A
System and method for managing mobile workers
US7283971B1