US20210390487A1 - Genetic smartjobs scheduling engine - Google Patents
Genetic smartjobs scheduling engine Download PDFInfo
- Publication number
- US20210390487A1 US20210390487A1 US17/461,766 US202117461766A US2021390487A1 US 20210390487 A1 US20210390487 A1 US 20210390487A1 US 202117461766 A US202117461766 A US 202117461766A US 2021390487 A1 US2021390487 A1 US 2021390487A1
- Authority
- US
- United States
- Prior art keywords
- resource
- genome
- task
- job
- jobs
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06316—Sequencing of tasks or work
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/086—Learning methods using evolutionary algorithms, e.g. genetic algorithms or genetic programming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0631—Resource planning, allocation, distributing or scheduling for enterprises or organisations
- G06Q10/06311—Scheduling, planning or task assignment for a person or group
- G06Q10/063112—Skill-based matching of a person or a group to a task
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
- G06Q10/063—Operations research, analysis or management
- G06Q10/0639—Performance analysis of employees; Performance analysis of enterprise or organisation operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/109—Time management, e.g. calendars, reminders, meetings or time accounting
- G06Q10/1097—Time management, e.g. calendars, reminders, meetings or time accounting using calendar-based scheduling for task assignment
Definitions
- the field of the invention is scheduling system.
- a manager When a company has a series of tasks that need to be completed, a manager typically allocates employees towards each task.
- Computer scheduling systems for example Microsoft Outlook®, can be helpful to visualize such schedules.
- a scheduler could use a computer scheduling system to block off specific times of the day for employees to perform certain tasks, and assign specific employees to that task. Each employee would then have a calendar of tasks to do throughout each day, week, and month, which could be easily visualized and organized.
- the manager In order for a scheduler to assign specific employees to each task, however, the manager needs to manually track each employee's schedule and allocate each employee to the appropriate task.
- the scheduler not only needs to determine how to schedule and allocate tasks but also needs to establish priorities for each task in order to maximize efficiency. For example, a scheduler can instruct employees to prioritize speed over accuracy in a situation where a high level of precision is not required, and vice versa. Each task would then be allocated to employees and assigned task priorities that, over time, increase the overall efficiency of the system.
- the number of combinations of particular task allocation and task priorities is often far too numerous for people to test all the combinations in order to maximize efficiency.
- a large number of combinations can produce multiple possible combinations of task allocations and task priorities sufficient to complete the task.
- the step of selecting a combination of task allocation and task priority adds an undesirable variable because it introduces human judgment/human error into the system.
- U.S. Pat. No. 7,587,329 to Thompson teaches a computer system for managing a health clinic, where a manager could input a series of attributes into a computer that an on-duty nurse needs to have to accomplish a specific task. The system then matches available nurses with those requirements with the task in order to accomplish the task, and can send out schedules to each nurse, letting that nurse know what tasks to perform. Thompson's computer system, however, fails to enable a manager to input a series of attributes for resources, such as patient requirements for operating rooms, intensive care unit beds, or heart rate monitor machines.
- a task-orientated computer system allows a manager to calendar tasks that involve resources (e.g., people, equipment, tools, rooms, virtual rooms, computers, etc) by focusing on the attributes of the tasks and resources, rather than the just the resources themselves.
- resources e.g., people, equipment, tools, rooms, virtual rooms, computers, etc.
- a “resource” is any resource, whether physical or virtual, living or nonliving. Examples include a room, a building, a consumable item, a portable tool, a piece of equipment that is fixed to a location, a person, or an animal.
- Each resource typically has a series of unique and non-unique attributes that are associated with the resource. As the terms imply, unique attributes are attributes that are unique to that particular resource, and non-unique attributes are attributes that can be common by more than one resource.
- jobs refers to subsets of one or more tasks that are required to achieve an overall objective.
- FIG. 1 is a schematic of a method of determining a value score for a genome based on a task heuristic assigned to each job of the genome.
- FIG. 2 is a schematic of a method of determining a value score for a genome based on a task heuristic assigned to each task of the genome.
- FIG. 3 is a schematic of a method of recombining two genomes into a recombined genome and determining a value score for the recombined genome.
- FIG. 4 is a schematic of a method of randomly mutating a job in a genome and determining a value score for the mutated genome.
- FIG. 5 illustrates the recombination of two genomes based on randomly selected crossover points.
- FIG. 6 illustrates the recombination of two genomes with a task heuristic byte based on randomly selected crossover points.
- FIG. 7 illustrates the mutation of a genome based on randomly selected job.
- computing devices comprise a processor configured to execute software instructions stored on a tangible, non-transitory computer readable storage medium (e.g., hard drive, solid state drive, RAM, flash, ROM, etc.).
- the software instructions preferably configure the computing device to provide the roles, responsibilities, or other functionality as discussed below with respect to the disclose apparatus.
- the various servers, systems, databases, or interfaces exchange data using standardized protocols or algorithms, possibly based on HTTP, HTTPS, AES, public-private key exchanges, web service APIs, known financial transaction protocols, or other electronic information exchanging methods.
- Data exchanges preferably are conducted over a packet-switched network, the Internet, LAN, WAN, VPN, or other type of packet switched network.
- inventive subject matter is considered to include all possible combinations of the disclosed elements.
- inventive subject matter is also considered to include other remaining combinations of A, B, C, or D, even if not explicitly disclosed.
- FIG. 1 is a schematic of task scheduling engine 100 of determining a value score for a genome based on a task heuristic assigned to each job of the genome.
- the term “task” can also refer to available resources.
- the steps of FIG. 1 can determine a value score for the resources and associated resource heuristics based on a particular resource requirement.
- Task scheduling engine 100 identifies one or more jobs associated with an overall objective (step 102 ).
- an overall objective refers to any end goal achievable through the execution of one or more jobs.
- Tasks are any actions required to complete a job.
- a job can comprise multiple tasks. For example, in scheduling the production of a widget, each job is associated with the fabrication of a sub-component of the widget, and the fabrication of the subcomponents of the widget each comprise multiple tasks.
- Task scheduling engine 100 uses one or more predetermined job schedules associated with the overall task to determine which jobs are associated with the overall objective.
- task scheduling engine 100 uses machine learning techniques to analyze historical trends to predict what jobs are necessary to achieve the overall objective.
- task scheduling engine 100 can use a supervised learning classifier to infer a function from labeled training data (e.g., set of training examples).
- task scheduling engine 100 uses time-series forecasting to determine maximize the concurrent execution of jobs to minimize the amount of time to achieve the overall objective. It is contemplated that task scheduling engine 100 can use any technique known in the art to identify one or more jobs associated with the overall objective.
- Task scheduling engine 100 generates a population of tasks associated with the identified jobs (step 104 ). Tasks comprise any action required to complete a job. For example, task scheduling engine 100 can identify that a quality control step is required to complete the construction of an automobile motor and generate a population of tasks that are associated with the quality control step, such as checking raw power output, confirming proper power bands using a dynamometer, and verifying correct compressions levels in the cylinders.
- Task scheduling engine 100 compiles the jobs into a genome (step 106 ).
- Task scheduling engine 100 preferably compiles the jobs, which act as genes, into a genome randomly and/or subject to additional variables (e.g. shortest task first, highest priority, etc.).
- task scheduling engine 100 can compile a genome where jobs are grouped closer together on the genome based on shared traits, such as a manufacturing step shared by each job. By grouping similar jobs in closer proximity to one another in the genome, subsequent recombination or mutation of the genome will be less likely to create dramatic changes in related jobs.
- task scheduling engine 100 can compile a genome where the jobs are distributed in a way that attempts to minimize grouping based on similar traits in order to quicken the evolution of the genome.
- Task scheduling engine 100 associates a task heuristic byte with the genome (step 108 ).
- a task heuristic byte is a collection of different task heuristics (e.g., task priorities) that can be associated with each job.
- a task heuristic byte can contain the following task priorities in a manufacturing setting: shortest completion time, longest completion time, highest safety, lowest safety, highest cost, and lowest cost.
- task priorities are not binary in nature and can include additional qualifiers, such as “in the upper 50 th percentile” and “between the 25 th and 75 th percentile”. It is contemplated that the task priorities can comprise any qualifiers that add an additional variable affecting the execution of each job.
- Task scheduling engine 100 assigns a task heuristic from the task heuristic byte to each job of the genome (step 110 ).
- Task scheduling engine 100 preferably assigns a task heuristic byte to each job of the genome at random.
- task scheduling engine 100 limits and/or expands the assignable task heuristics based on the particular job. For example, task scheduling engine 100 can be programmed to not pick task heuristics associated with completion time if the job can only be executed by one machine with a substantially invariable completion time (e.g., an electroplating step requiring the same amount of time to complete regardless of the dimensions of the item).
- Task scheduling engine 100 sends instructions to one or more resources to execute each job in the genome (step 112 ). It is contemplated that task scheduling engine 100 executes each job directly in a fully automated system. For example, task scheduling engine 100 can execute each job/heuristic pair in the manufacturing of an automobile by sending instructions to one or more robots in an automated manufacturing plant. It is also contemplated that task scheduling engine 100 instructs one or more individuals to carry out each job/heuristic pair. For example, task scheduling engine 100 can instruct multiple machinists to carry out each job/heuristic associated with the manufacture of an automobile engine block in a manner designated by the task heuristic. However, task scheduling engine 100 is not limited to purely automated or purely user-based systems and can execute each job by any means or combination of means available.
- Task scheduling engine 100 determines a value score of the genome (step 114 ).
- a value score indicates the overall success of a genome in achieving one or more metrics, such as completion time, accuracy of the process, and production costs.
- Task scheduling engine 100 preferably determines a value score using a fitness function.
- a fitness function is a particular type of objective function that is used to summarize, as a single figure of merit, how close a given solution is achieving the set aims.
- FIG. 2 is a schematic of a method of determining a value score for a genome based on a task heuristic assigned to each task of the genome.
- Task scheduling engine 200 identifies one or more jobs associated with an overall objective (step 202 ). For example, in scheduling the production of a widget, each job is associated with the fabrication of a sub-component of the widget, and the fabrication of the subcomponents of the widget each comprise multiple tasks.
- Task scheduling engine 200 uses one or more predetermined job schedules associated with the overall task to determine which jobs are associated with the overall objective.
- task scheduling engine 200 uses machine learning techniques to analyze historical trends to predict what jobs are necessary to achieve the overall objective.
- task scheduling engine 100 can use a supervised learning classifier to infer a function from labeled training data (e.g., set of training examples).
- task scheduling engine 200 can use time-series forecasting to determine maximize the concurrent execution of jobs to minimize the amount of time to achieve the overall objective. It is contemplated that task scheduling engine 100 can use any technique known in the art to identify one or more jobs associated with the overall objective.
- Task scheduling engine 200 generates a population of tasks associated with the identified jobs (step 204 ). Tasks comprise any action required to complete a job. For example, task scheduling engine 200 can identify that a quality control step is required to complete the construction of an automobile motor and generate a population of tasks that are associated with the quality control step, such as checking raw power output, confirming proper power bands using a dynamometer, and verifying correct compressions levels in the cylinders.
- Task scheduling engine 200 associates a task heuristic byte with the population of tasks (step 206 ).
- a task heuristic byte is a collection of different task heuristics (e.g., task priorities) that can be associated with each task.
- a task heuristic byte can contain the following task priorities in a manufacturing setting: shortest completion time, longest completion time, highest safety, lowest safety, highest cost, and lowest cost. It is contemplated that the task priorities add an additional variable to each task and can add multiple variables in jobs comprising multiple tasks.
- Task scheduling engine 200 assigns a task heuristic from the task heuristic byte to each task of the population of tasks (step 208 ).
- Task scheduling engine 200 preferably assigns a task heuristic byte to each task associated with each job of the genome at random.
- task scheduling engine 200 limits and/or expands the assignable task heuristics based on the particular task. For example, task scheduling engine 200 can be programmed to not pick task heuristics associated with completion time if the task can only be executed by one machine with a substantially invariable completion time (e.g., an electroplating step requiring the same amount of time to complete regardless of the dimensions of the item).
- Task scheduling engine 200 compiles the jobs into a genome (step 210 ).
- Task scheduling engine 100 compiles the jobs, which act as genes, into a genome randomly or subject to additional variables.
- task scheduling engine 200 can compile a genome where jobs are grouped closer together on the genome based on shared traits, such as a manufacturing step shared by each job. By grouping similar jobs in closer proximity to one another in the genome, subsequent recombination or mutation of the genome will be less likely to create dramatic changes in related jobs.
- task scheduling engine 200 can compile a genome where the jobs are distributed in a way that attempts to minimize grouping based on similar traits in order to quicken the evolution of the genome.
- Task scheduling engine 200 sends instructions to one or more resources to execute each job in the genome (step 212 ). It is contemplated that task scheduling engine 200 executes each job directly in a fully automated system. For example, task scheduling engine 200 can execute each job/heuristic pair in the manufacturing of an automobile by sending instructions to one or more robots in an automated manufacturing plant.
- task scheduling engine 200 instructs one or more individuals to carry out each job/heuristic pair.
- task scheduling engine 200 can instruct multiple machinists to carry out each job/heuristic associated with the manufacture of an automobile engine block in a manner designated by the task heuristic.
- task scheduling engine 200 is not limited to purely automated or purely user-based systems and can execute each job by any means or combination of means available.
- Task scheduling engine 200 determines a value score of the genome (step 214 ).
- a value score indicates the overall success of a genome in achieving one or more metrics, such as completion time, accuracy of the process, and production costs.
- Task scheduling engine 200 preferably determines a value score using a fitness function.
- a fitness function is a particular type of objective function that is used to summarize, as a single figure of merit, how close a given solution is achieving the set aims.
- Once task scheduling engine 200 determines the value score of a genome the genome can be discarded, mutated, or recombined with other genomes.
- a value score can comprise multiple value sub-scores covering a variety of quantifiable traits.
- FIG. 3 is a schematic of a method of recombining two genomes into a recombined genome and determining a value score for the recombined genome.
- Task scheduling engine 300 selects a first genome and a second genome (step 302 ). It is contemplated that task scheduling engine 300 selects the first genome and the second genome based on their respective value scores. In some embodiments, task scheduling engine 300 selects the first genome and the second genome based on value scores meeting a similarity threshold. For example, task scheduling engine 300 can be programmed to select the two highest scores out of one hundred scores to be recombined. In another embodiment, task scheduling engine 300 selects the first genome and the second genome based their value scores meeting a dissimilarity threshold. For example, task scheduling engine 300 can select a first genome with the highest sub-score in overall completion time with a second genome with the highest sub-score in overall manufacturing accuracy.
- task scheduling engine 300 can choose genomes having the highest scores in different categories and meeting a dissimilarity threshold (e.g. tournament selection). It is also contemplated that task scheduling engine 300 can select more than two genomes for recombination. For example, task scheduling engine 300 can choose three genomes with the highest scores to be subsequently recombined at crossover points in a three-way crossover.
- a dissimilarity threshold e.g. tournament selection
- Task scheduling engine 300 randomly selects one or more crossover points (step 304 ).
- Crossover points are points in a task schedule between jobs that are mirrored in both a first and a second genome. For example, a first and second genome could require the same jobs to be performed in the same order but have a different combination of task heuristics associated with each of the jobs.
- Task scheduling engine 300 preferably selects one or more crossover points at random. Selecting the one or more crossover points at random increases the genetic variability in the recombined offspring of two genomes. Alternatively, task scheduling engine 300 selects one or more crossover points based on preset parameters. For example, task scheduling engine 300 can select from 5 different recombination sites on each genome in order to increase the genetic variability of the system while preventing groups of related jobs/genes from evolving separately.
- Task scheduling engine 300 recombines the first genome and the second genome at the one or more crossover points (step 306 ).
- the first genome and the second genome switch portions of the respective genomes at the one or more crossover points. For example, if a first genome comprising the jobs A 1 , B 1 , C 1 , and D 1 in that order is recombined with a second genome comprising the jobs A 2 , B 2 , C 2 , and D 2 in that order between jobs “A” and “B” and between jobs “C” and “D”, then the recombined genomes would produce a first recombined genome comprising A 1 , B 2 , C 2 , and D 1 and a second recombined genome comprising A 2 , B 1 , C 1 , and D 2 .
- task scheduling engine 300 uses position based crossover to recombine the first genome and the second genome using one or more pre-selected genes to be recombined into an offspring genome.
- Position based crossover uses a shared genome and crossover point format to limit variability in recombined genomes to the inherent characteristics of the genes themselves. For example, task scheduling engine 300 can select genes A 1 and C 1 from a first parent genome to be input into the offspring genome and the remaining genes, B 2 and D 2 can be filled by the second parent genome.
- Position based crossover allows task scheduling engine 300 to control gene expression in offspring genomes while ignoring dependencies for each job and avoiding additional steps to verify schedule viability.
- FIG. 4 is a schematic of a method of randomly mutating a job in a genome and determining a value score for the mutated genome.
- Task scheduling engine 400 randomly selects a genome (step 402 ).
- task scheduling engine 400 can be programmed to select genomes fitting one or more parameters.
- task scheduling engine 400 can be programmed to select a genome at random from a group of genomes that at least have value scores above the 50 th percentile.
- Task scheduling engine 400 randomly selects one or more jobs associated with one or more task heuristics (step 404 ).
- Task scheduling engine 400 can alternatively select one or more jobs based on one or more parameters. For example, task scheduling engine can be limited to only selecting jobs that can be associated with a variable completion time, which would exclude jobs that have an invariable completion time. It is preferred, however, that task scheduling engine 400 selects the one or more jobs at random.
- Task scheduling engine 400 mutates the one or more jobs by randomly changing the one or more task heuristics (step 406 ).
- Task scheduling engine 400 can alternatively mutate the one or more jobs subject to a parameter.
- task scheduling engine 400 can be programmed to avoid mutating task heuristics associated with overall manufacturing quality in the manufacture of goods that don't require strict quality control, such as intermediate products that will be heavily processed to a refined state in later steps.
- task scheduling engine 400 can apply a scheduling direction mutation task heuristic that causes task scheduling engine 400 to schedule jobs based either on the earliest due date going forwards or the latest due date going backwards.
- Task scheduling engine 400 determines a value score of the genome (step 408 ).
- the value score indicates the overall success of a genome in achieving one or more metrics, such as completion time, accuracy of the process, and production costs.
- Task scheduling engine 400 preferably determines a value score using a fitness function.
- a fitness function is a particular type of objective function that is used to summarize, as a single figure of merit, how close a given solution is achieving the set aims.
- Once task scheduling engine 400 determines the value score of a genome the genome can be discarded, further mutated, or further recombined with other genomes.
- a value score can comprise multiple value sub-scores covering a variety of quantifiable traits. It is contemplated that task scheduling engine 400 preferably determines a value score of each genome of a population of genomes after the entire population has been recombined and/or mutated.
- FIG. 5 illustrates the recombination of first genome 502 and second genome 504 based on randomly selected crossover points.
- First genome 502 and second genome 504 comprise any genome with identical ordering of jobs and distribution of tasks throughout the genome such that the two genomes are mirror images of each other except for the task heuristics assigned to each job or task.
- first genome 502 and second genome 504 can differ in the order that tasks associated with each job are carried out.
- job/gene 1 in first genome 502 and job/gene 1 ′ in second genome 504 can comprise the same tasks that are executed in different chronological orders.
- crossover points 506 occurs when recombination engine 500 selects crossover point 508 and crossover point 510 at random.
- Crossover points indicate points between jobs where two genomes exchange segments of their job schedules, which are represented as an ordered collection of genes in a genome.
- recombination engine 500 selects a crossover point between job 1 and job 2 and selects a second crossover point between job 3 and job 4 .
- Recombination 512 occurs when the job schedules, represented by first genome 502 and second genome 504 , are recombined at crossover points.
- first genome 502 and second genome 504 are recombined at crossover point 508 and crossover point 510 to create first recombined genome 514 comprising jobs 1 ′/ 2 / 3 / 4 ′ and second recombined genome 516 comprising jobs 1 / 2 ′/ 3 ′/ 4 .
- selection of crossover points 506 is not at random. Instead, selection of crossover points 506 are predetermined by an algorithm or by one or more users. For example, a user can program recombination engine 500 to avoid selecting crossover points in particular gene sequences in order to preserve groups of related jobs that should evolve together, such as interrelated jobs requiring specific manufacturing processes and/or special conditions to complete.
- crossover points 506 are preselected to associate particular jobs or sets of jobs to particular genes or gene groups.
- Conventional crossover point methods add undesirable variability that can cause genomes to be inefficient or impossible to execute.
- By preselecting the positions of crossover points 506 the number and composition of jobs associated with each genome is preserved, thereby adding predictability and efficiency to the overall task scheduling system.
- FIG. 6 illustrates the recombination of two genomes with a task heuristic byte based on randomly selected crossover points.
- First genome 602 and second genome 604 comprise any genome with identical orderings of jobs and distribution of tasks throughout the genome such that the two genomes are mirror images of each other except for the task heuristics assigned to each job or task.
- first genome 602 and second genome 604 can differ in the order that tasks associated with each job are carried out.
- job/gene 1 in first genome 602 and job/gene 1 ′ in second genome 604 can comprise the same tasks that are executed in different orders.
- Task heuristic byte 606 is coupled with every genome. Task heuristic byte 606 preferably assigns a task heuristic to each job in each genome at random. In some embodiments, task heuristic byte 606 assigns a task heuristic to each task of each job at random.
- Recombination engine 600 can alternatively be programmed to not assign particular task heuristics from task heuristic byte 606 to certain jobs and/or tasks. For example, recombination engine 600 can be programmed to avoid assigning task heuristics related to production speed where the production speed for a particular manufacturing step is invariable.
- task heuristic byte 606 comprises four task heuristics represented by “A”, “B”, “C”, and “D”.
- Recombination engine 600 selects one of the four task heuristics at random as assigns them to each job of first genome 602 and second genome 604 .
- crossover points 608 occurs when recombination engine 600 selects crossover point 610 and crossover point 612 at random.
- Crossover points indicate points between jobs where two genomes exchange segments of their job schedules, which are represented as an ordered collection of genes in a genome.
- recombination engine 600 selects a crossover point between job 1 and job 2 and selects a second crossover point between job 3 and job 4 .
- Recombination 614 occurs when the job schedules, represented by first genome 602 and second genome 604 , are recombined at crossover points.
- first genome 602 and second genome 604 are recombined at crossover point 610 and crossover point 612 to create first recombined genome 616 comprising jobs and associated task heuristics 1 ′A/ 2 A/ 3 A/ 4 ′B and second recombined genome 618 comprising jobs 1 B/ 2 ′D/ 3 ′C/ 4 D.
- selection of crossover points 608 is not at random. Instead, selection of crossover points 608 is predetermined by an algorithm or by one or more users. For example, a user can program recombination engine 600 to avoid selecting crossover points in particular gene sequences in order to preserve groups of related jobs with unique attributes that should evolve together, such as interrelated jobs requiring specific manufacturing processes and/or special conditions to complete. In a position based crossover method, a user can program recombination engine 600 to avoid recombining predetermined sets of genes that have been shown to exceed an efficiency threshold. For example, if an order of manufacturing jobs in a genome achieves quick manufacturing times with exception quality control, then program recombination engine 600 can be programmed to prevent genetic changes to the order and task heuristics assigned to the manufacturing jobs in the genome.
- FIG. 7 illustrates the mutation of a genome based on randomly selected job.
- Genome 702 is coupled with task heuristic byte 704 , which preferably assigns a task heuristic to each job and/or task at random.
- Mutation points indicate one or more jobs to be randomly mutated by changing the order of tasks and/or the task priorities associated with each job and/or task.
- mutation engine 700 selects job 2 as mutation point 708 .
- Mutation engine 700 randomly changes the task heuristic “A” associated with job 2 to “D”.
- An administrator at a large hospital needs to schedule an open heart surgery, more specifically, an aortic valve replacement (i.e., the “task”) for a patient that recently suffered a heart attack.
- the surgery requires one heart surgeon, one anesthesiologist, and at least three medical support staff, which include a surgical assistant, an equipment monitoring assistant, and a junior surgeon.
- the surgery also requires an operating room that can accommodate the size of the medical team during the four hour surgery, and that has the necessary equipment, tools, and consumables (e.g., human valve donor or a mechanical valve, blood transfusion machine, sufficient volume of blood for the transfusion, heart rate monitor, defibrillator, endoscopic video camera, surgical knives and other surgical tools, disinfectants, gauze, etc).
- the administrator can use the genetic algorithm-based methods and systems herein in order to find the best way to perform the surgery subject to particular priorities.
- the administrator enters the overall objective which is associated with multiple jobs into task scheduling engine 100 .
- the administrator designates task heuristics/task priorities that are relevant to the overall objective.
- the task attributes which are selected by the administrator, can include an urgency level, a specific date for the surgery, a “no-later-than” date for the surgery, the desired attributes of the necessary persons (e.g., type of surgeon, skill/experience level of the surgeon and staff, etc), and any other resources relevant to the task (e.g., heart donor, blood transfer, etc).
- task scheduling engine 100 randomly assigns task heuristics to each job of the genome. Task scheduling engine 100 then determines a value score for the genome after each job in the genome is executed, which indicates a degree of completion and quality of execution in preferred embodiments.
- task scheduling engine 100 can access a preloaded database to automatically determine the attributes needed to accomplish the task (task preferences and requirements), and then automatically determines what specific resources are available to satisfy those task attributes.
- Availability of resource is merely one of many different resource attributes and can be treated as either a preference or requirement.
- task scheduling engine 100 advantageously allows the administrator to rank task attributes by level of importance. For example, the administrator may wish to rank the date of the surgery as a higher importance than the availability of a particular piece of equipment.
- the flexibility provided by task scheduling engine 100 eases the administrator's burden of allocating resources in a complex organization such as a large hospital.
- task scheduling engine 100 allows the administrator to create dependencies between different, yet related tasks.
- the heart surgery patient may have multiple tasks that need to be performed before and after surgery (e.g., fasting before the surgery, allocating a clean-up crew for the surgery theatre, or a post-op recovery room for the patient).
- the existence of dependencies between different tasks can be inputted into task scheduling engine 100 as a task attribute of the present task to ensure that all related resources are available before scheduling the present task.
- Task scheduling engine 100 also allows the administrator to rank tasks according to a level of urgency. As used herein, the concept of ranking tasks is conceptually different from ranking task attributes. For example, the administrator may wish to assign an elective surgery a low urgency and an emergency surgery a high urgency, to ensure that task scheduling engine 100 assigns a task heuristic based on the emergency surgery priority. Task scheduling engine 100 can even be used to cancel tasks, when a higher importance task needs to be scheduled. For example, an emergency surgery (i.e., a “high priority task”) for an emergency room (“ER”) patient may supersede a previously scheduled elective surgery (i.e., a “low priority task”), causing a cascade effect that may delay the elective surgery a few hours or even a few days.
- a level of urgency is conceptually different from ranking task attributes. For example, the administrator may wish to assign an elective surgery a low urgency and an emergency surgery a high urgency, to ensure that task scheduling engine 100 assigns a task heuristic based on the emergency surgery priority.
- task scheduling engine 100 can be used to take into account patient preferences. For example, the patient may wish to exclude students from observing the surgery and may wish to wait for a human valve rather than a mechanical valve. These preferences can be entered into task scheduling engine 100 to determine which task heuristics can be assigned to particular jobs in the genome.
- recombination engine 300 can select two genomes with similar value scores. Preferably, recombination engine 300 can selects the two highest scoring genomes to recombine. Alternatively, recombination engine 300 can select the highest scoring genome for one metric and recombine it with a highest scoring genome for a different metric. For example, recombination engine 300 can select a first genome associated with the quickest manufacturing time for a widget and recombine it with a second genome with the highest level of quality control for the widget.
- Recombination example # 2 illustrates how the inventive methods and systems described herein go way beyond coordinating the availability of specific people or resources. Rather, recombination engine 300 automates the decision-making process to discover the most effective way of achieving an overall objective by using the principles of genetic recombination and evolution and related fitness functions.
- Coupled to is intended to include both direct coupling (in which two elements that are coupled to each other contact each other) and indirect coupling (in which at least one additional element is located between the two elements). Therefore, the terms “coupled to” and “coupled with” are used synonymously.
Landscapes
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Engineering & Computer Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Economics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Educational Administration (AREA)
- General Physics & Mathematics (AREA)
- Development Economics (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Game Theory and Decision Science (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Physiology (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Factory Administration (AREA)
Abstract
Description
- This application is a continuation of U.S. application Ser. No. 15/871,611, filed Jan. 15, 2018. U.S. Ser. No. 15/871,611 and all extrinsic references discussed herein are incorporated by reference in their entirety.
- The field of the invention is scheduling system.
- When a company has a series of tasks that need to be completed, a manager typically allocates employees towards each task. Computer scheduling systems, for example Microsoft Outlook®, can be helpful to visualize such schedules. For example, a scheduler could use a computer scheduling system to block off specific times of the day for employees to perform certain tasks, and assign specific employees to that task. Each employee would then have a calendar of tasks to do throughout each day, week, and month, which could be easily visualized and organized. In order for a scheduler to assign specific employees to each task, however, the manager needs to manually track each employee's schedule and allocate each employee to the appropriate task.
- Further, the scheduler not only needs to determine how to schedule and allocate tasks but also needs to establish priorities for each task in order to maximize efficiency. For example, a scheduler can instruct employees to prioritize speed over accuracy in a situation where a high level of precision is not required, and vice versa. Each task would then be allocated to employees and assigned task priorities that, over time, increase the overall efficiency of the system. However, the number of combinations of particular task allocation and task priorities is often far too numerous for people to test all the combinations in order to maximize efficiency. Additionally, a large number of combinations can produce multiple possible combinations of task allocations and task priorities sufficient to complete the task. However, the step of selecting a combination of task allocation and task priority adds an undesirable variable because it introduces human judgment/human error into the system.
- US2009/0315735 to Bhavani teaches a computer system for managing patient flow in a hospital, where a manager could tag specific patients, medical employees, and resources with RFID chips to determine where each patient, employee, and resource is, and allocate each resource accordingly as needed. For example, if there are too many patients waiting for an examination room, a patient could be automatically relocated to an examination room with a shorter line by sending a message to an available employee to redirect that patient. Bhavani, however, requires the system to manually track each patient, employee, and resource by a unique identifier.
- U.S. Pat. No. 7,587,329 to Thompson teaches a computer system for managing a health clinic, where a manager could input a series of attributes into a computer that an on-duty nurse needs to have to accomplish a specific task. The system then matches available nurses with those requirements with the task in order to accomplish the task, and can send out schedules to each nurse, letting that nurse know what tasks to perform. Thompson's computer system, however, fails to enable a manager to input a series of attributes for resources, such as patient requirements for operating rooms, intensive care unit beds, or heart rate monitor machines.
- Bhavani, Thompson, and all other extrinsic materials discussed herein are incorporated by reference to the same extent as if each individual extrinsic material was specifically and individually indicated to be incorporated by reference. Where a definition or use of a term in an incorporated reference is inconsistent or contrary to the definition of that term provided herein, the definition of that term provided herein applies and the definition of that term in the reference does not apply.
- Thus, there is still a need for scheduling systems enhanced with genetic algorithms to increase efficiency.
- A task-orientated computer system allows a manager to calendar tasks that involve resources (e.g., people, equipment, tools, rooms, virtual rooms, computers, etc) by focusing on the attributes of the tasks and resources, rather than the just the resources themselves.
- Among other things, the inventive subject matter provides apparatus, systems, and methods in which a genetic algorithm recombines and mutates task schedules with task heuristics in order to increase the overall efficiency of the system. As used herein, a “resource” is any resource, whether physical or virtual, living or nonliving. Examples include a room, a building, a consumable item, a portable tool, a piece of equipment that is fixed to a location, a person, or an animal. Each resource typically has a series of unique and non-unique attributes that are associated with the resource. As the terms imply, unique attributes are attributes that are unique to that particular resource, and non-unique attributes are attributes that can be common by more than one resource. For example, if the resource is a only available at particular times of the week (e.g. an individual or a machine that has limited availability), then the weekly availability of the resource is an attribute of the resource. As used herein “jobs” refers to subsets of one or more tasks that are required to achieve an overall objective.
- Various resources, features, aspects and advantages of the inventive subject matter will become more apparent from the following detailed description of preferred embodiments, along with the accompanying drawing figures in which like numerals represent like components.
-
FIG. 1 is a schematic of a method of determining a value score for a genome based on a task heuristic assigned to each job of the genome. -
FIG. 2 is a schematic of a method of determining a value score for a genome based on a task heuristic assigned to each task of the genome. -
FIG. 3 is a schematic of a method of recombining two genomes into a recombined genome and determining a value score for the recombined genome. -
FIG. 4 is a schematic of a method of randomly mutating a job in a genome and determining a value score for the mutated genome. -
FIG. 5 illustrates the recombination of two genomes based on randomly selected crossover points. -
FIG. 6 illustrates the recombination of two genomes with a task heuristic byte based on randomly selected crossover points. -
FIG. 7 illustrates the mutation of a genome based on randomly selected job. - It should be noted that while the following description is drawn to a computer-based scheduling system, various alternative configurations are also deemed suitable and may employ various computing devices including servers, interfaces, systems, databases, engines, controllers, or other types of computing devices operating individually or collectively. One should appreciate the computing devices comprise a processor configured to execute software instructions stored on a tangible, non-transitory computer readable storage medium (e.g., hard drive, solid state drive, RAM, flash, ROM, etc.). The software instructions preferably configure the computing device to provide the roles, responsibilities, or other functionality as discussed below with respect to the disclose apparatus. In especially preferred embodiments, the various servers, systems, databases, or interfaces exchange data using standardized protocols or algorithms, possibly based on HTTP, HTTPS, AES, public-private key exchanges, web service APIs, known financial transaction protocols, or other electronic information exchanging methods. Data exchanges preferably are conducted over a packet-switched network, the Internet, LAN, WAN, VPN, or other type of packet switched network.
- One should appreciate that the disclosed techniques provide many advantageous technical effects including facilitating the scheduling of events.
- The following discussion provides many example embodiments of the inventive subject matter. Although each embodiment represents a single combination of inventive elements, the inventive subject matter is considered to include all possible combinations of the disclosed elements. Thus if one embodiment comprises elements A, B, and C, and a second embodiment comprises elements B and D, then the inventive subject matter is also considered to include other remaining combinations of A, B, C, or D, even if not explicitly disclosed.
-
FIG. 1 is a schematic oftask scheduling engine 100 of determining a value score for a genome based on a task heuristic assigned to each job of the genome. As referenced herein, the term “task” can also refer to available resources. For example, the steps ofFIG. 1 can determine a value score for the resources and associated resource heuristics based on a particular resource requirement. -
Task scheduling engine 100 identifies one or more jobs associated with an overall objective (step 102). As defined herein, an overall objective refers to any end goal achievable through the execution of one or more jobs. Tasks are any actions required to complete a job. A job can comprise multiple tasks. For example, in scheduling the production of a widget, each job is associated with the fabrication of a sub-component of the widget, and the fabrication of the subcomponents of the widget each comprise multiple tasks. -
Task scheduling engine 100 uses one or more predetermined job schedules associated with the overall task to determine which jobs are associated with the overall objective. Alternatively,task scheduling engine 100 uses machine learning techniques to analyze historical trends to predict what jobs are necessary to achieve the overall objective. For example,task scheduling engine 100 can use a supervised learning classifier to infer a function from labeled training data (e.g., set of training examples). In another example,task scheduling engine 100 uses time-series forecasting to determine maximize the concurrent execution of jobs to minimize the amount of time to achieve the overall objective. It is contemplated thattask scheduling engine 100 can use any technique known in the art to identify one or more jobs associated with the overall objective. -
Task scheduling engine 100 generates a population of tasks associated with the identified jobs (step 104). Tasks comprise any action required to complete a job. For example,task scheduling engine 100 can identify that a quality control step is required to complete the construction of an automobile motor and generate a population of tasks that are associated with the quality control step, such as checking raw power output, confirming proper power bands using a dynamometer, and verifying correct compressions levels in the cylinders. -
Task scheduling engine 100 compiles the jobs into a genome (step 106).Task scheduling engine 100 preferably compiles the jobs, which act as genes, into a genome randomly and/or subject to additional variables (e.g. shortest task first, highest priority, etc.). For example,task scheduling engine 100 can compile a genome where jobs are grouped closer together on the genome based on shared traits, such as a manufacturing step shared by each job. By grouping similar jobs in closer proximity to one another in the genome, subsequent recombination or mutation of the genome will be less likely to create dramatic changes in related jobs. On the other hand,task scheduling engine 100 can compile a genome where the jobs are distributed in a way that attempts to minimize grouping based on similar traits in order to quicken the evolution of the genome. -
Task scheduling engine 100 associates a task heuristic byte with the genome (step 108). A task heuristic byte is a collection of different task heuristics (e.g., task priorities) that can be associated with each job. For example, a task heuristic byte can contain the following task priorities in a manufacturing setting: shortest completion time, longest completion time, highest safety, lowest safety, highest cost, and lowest cost. However, task priorities are not binary in nature and can include additional qualifiers, such as “in the upper 50th percentile” and “between the 25th and 75th percentile”. It is contemplated that the task priorities can comprise any qualifiers that add an additional variable affecting the execution of each job. -
Task scheduling engine 100 assigns a task heuristic from the task heuristic byte to each job of the genome (step 110).Task scheduling engine 100 preferably assigns a task heuristic byte to each job of the genome at random. In alternative embodiments,task scheduling engine 100 limits and/or expands the assignable task heuristics based on the particular job. For example,task scheduling engine 100 can be programmed to not pick task heuristics associated with completion time if the job can only be executed by one machine with a substantially invariable completion time (e.g., an electroplating step requiring the same amount of time to complete regardless of the dimensions of the item). -
Task scheduling engine 100 sends instructions to one or more resources to execute each job in the genome (step 112). It is contemplated thattask scheduling engine 100 executes each job directly in a fully automated system. For example,task scheduling engine 100 can execute each job/heuristic pair in the manufacturing of an automobile by sending instructions to one or more robots in an automated manufacturing plant. It is also contemplated thattask scheduling engine 100 instructs one or more individuals to carry out each job/heuristic pair. For example,task scheduling engine 100 can instruct multiple machinists to carry out each job/heuristic associated with the manufacture of an automobile engine block in a manner designated by the task heuristic. However,task scheduling engine 100 is not limited to purely automated or purely user-based systems and can execute each job by any means or combination of means available. -
Task scheduling engine 100 determines a value score of the genome (step 114). A value score indicates the overall success of a genome in achieving one or more metrics, such as completion time, accuracy of the process, and production costs. -
Task scheduling engine 100 preferably determines a value score using a fitness function. A fitness function is a particular type of objective function that is used to summarize, as a single figure of merit, how close a given solution is achieving the set aims. Oncetask scheduling engine 100 determines the value score of a genome, the genome can be discarded, mutated, or recombined with other genomes. -
FIG. 2 is a schematic of a method of determining a value score for a genome based on a task heuristic assigned to each task of the genome. -
Task scheduling engine 200 identifies one or more jobs associated with an overall objective (step 202). For example, in scheduling the production of a widget, each job is associated with the fabrication of a sub-component of the widget, and the fabrication of the subcomponents of the widget each comprise multiple tasks. -
Task scheduling engine 200 uses one or more predetermined job schedules associated with the overall task to determine which jobs are associated with the overall objective. Alternatively,task scheduling engine 200 uses machine learning techniques to analyze historical trends to predict what jobs are necessary to achieve the overall objective. For example,task scheduling engine 100 can use a supervised learning classifier to infer a function from labeled training data (e.g., set of training examples). In another example,task scheduling engine 200 can use time-series forecasting to determine maximize the concurrent execution of jobs to minimize the amount of time to achieve the overall objective. It is contemplated thattask scheduling engine 100 can use any technique known in the art to identify one or more jobs associated with the overall objective. -
Task scheduling engine 200 generates a population of tasks associated with the identified jobs (step 204). Tasks comprise any action required to complete a job. For example,task scheduling engine 200 can identify that a quality control step is required to complete the construction of an automobile motor and generate a population of tasks that are associated with the quality control step, such as checking raw power output, confirming proper power bands using a dynamometer, and verifying correct compressions levels in the cylinders. -
Task scheduling engine 200 associates a task heuristic byte with the population of tasks (step 206). A task heuristic byte is a collection of different task heuristics (e.g., task priorities) that can be associated with each task. For example, a task heuristic byte can contain the following task priorities in a manufacturing setting: shortest completion time, longest completion time, highest safety, lowest safety, highest cost, and lowest cost. It is contemplated that the task priorities add an additional variable to each task and can add multiple variables in jobs comprising multiple tasks. -
Task scheduling engine 200 assigns a task heuristic from the task heuristic byte to each task of the population of tasks (step 208).Task scheduling engine 200 preferably assigns a task heuristic byte to each task associated with each job of the genome at random. In alternative embodiments,task scheduling engine 200 limits and/or expands the assignable task heuristics based on the particular task. For example,task scheduling engine 200 can be programmed to not pick task heuristics associated with completion time if the task can only be executed by one machine with a substantially invariable completion time (e.g., an electroplating step requiring the same amount of time to complete regardless of the dimensions of the item). -
Task scheduling engine 200 compiles the jobs into a genome (step 210).Task scheduling engine 100 compiles the jobs, which act as genes, into a genome randomly or subject to additional variables. For example,task scheduling engine 200 can compile a genome where jobs are grouped closer together on the genome based on shared traits, such as a manufacturing step shared by each job. By grouping similar jobs in closer proximity to one another in the genome, subsequent recombination or mutation of the genome will be less likely to create dramatic changes in related jobs. On the other hand,task scheduling engine 200 can compile a genome where the jobs are distributed in a way that attempts to minimize grouping based on similar traits in order to quicken the evolution of the genome. -
Task scheduling engine 200 sends instructions to one or more resources to execute each job in the genome (step 212). It is contemplated thattask scheduling engine 200 executes each job directly in a fully automated system. For example,task scheduling engine 200 can execute each job/heuristic pair in the manufacturing of an automobile by sending instructions to one or more robots in an automated manufacturing plant. - It is also contemplated that
task scheduling engine 200 instructs one or more individuals to carry out each job/heuristic pair. For example,task scheduling engine 200 can instruct multiple machinists to carry out each job/heuristic associated with the manufacture of an automobile engine block in a manner designated by the task heuristic. However,task scheduling engine 200 is not limited to purely automated or purely user-based systems and can execute each job by any means or combination of means available. -
Task scheduling engine 200 determines a value score of the genome (step 214). A value score indicates the overall success of a genome in achieving one or more metrics, such as completion time, accuracy of the process, and production costs. -
Task scheduling engine 200 preferably determines a value score using a fitness function. A fitness function is a particular type of objective function that is used to summarize, as a single figure of merit, how close a given solution is achieving the set aims. Oncetask scheduling engine 200 determines the value score of a genome, the genome can be discarded, mutated, or recombined with other genomes. A value score can comprise multiple value sub-scores covering a variety of quantifiable traits. -
FIG. 3 is a schematic of a method of recombining two genomes into a recombined genome and determining a value score for the recombined genome. -
Task scheduling engine 300 selects a first genome and a second genome (step 302). It is contemplated thattask scheduling engine 300 selects the first genome and the second genome based on their respective value scores. In some embodiments,task scheduling engine 300 selects the first genome and the second genome based on value scores meeting a similarity threshold. For example,task scheduling engine 300 can be programmed to select the two highest scores out of one hundred scores to be recombined. In another embodiment,task scheduling engine 300 selects the first genome and the second genome based their value scores meeting a dissimilarity threshold. For example,task scheduling engine 300 can select a first genome with the highest sub-score in overall completion time with a second genome with the highest sub-score in overall manufacturing accuracy. In yet another embodiment,task scheduling engine 300 can choose genomes having the highest scores in different categories and meeting a dissimilarity threshold (e.g. tournament selection). It is also contemplated thattask scheduling engine 300 can select more than two genomes for recombination. For example,task scheduling engine 300 can choose three genomes with the highest scores to be subsequently recombined at crossover points in a three-way crossover. -
Task scheduling engine 300 randomly selects one or more crossover points (step 304). Crossover points are points in a task schedule between jobs that are mirrored in both a first and a second genome. For example, a first and second genome could require the same jobs to be performed in the same order but have a different combination of task heuristics associated with each of the jobs. -
Task scheduling engine 300 preferably selects one or more crossover points at random. Selecting the one or more crossover points at random increases the genetic variability in the recombined offspring of two genomes. Alternatively,task scheduling engine 300 selects one or more crossover points based on preset parameters. For example,task scheduling engine 300 can select from 5 different recombination sites on each genome in order to increase the genetic variability of the system while preventing groups of related jobs/genes from evolving separately. -
Task scheduling engine 300 recombines the first genome and the second genome at the one or more crossover points (step 306). The first genome and the second genome switch portions of the respective genomes at the one or more crossover points. For example, if a first genome comprising the jobs A1, B1, C1, and D1 in that order is recombined with a second genome comprising the jobs A2, B2, C2, and D2 in that order between jobs “A” and “B” and between jobs “C” and “D”, then the recombined genomes would produce a first recombined genome comprising A1, B2, C2, and D1 and a second recombined genome comprising A2, B1, C1, and D2. - In a preferred embodiment,
task scheduling engine 300 uses position based crossover to recombine the first genome and the second genome using one or more pre-selected genes to be recombined into an offspring genome. Position based crossover uses a shared genome and crossover point format to limit variability in recombined genomes to the inherent characteristics of the genes themselves. For example,task scheduling engine 300 can select genes A1 and C1 from a first parent genome to be input into the offspring genome and the remaining genes, B2 and D2 can be filled by the second parent genome. Position based crossover allowstask scheduling engine 300 to control gene expression in offspring genomes while ignoring dependencies for each job and avoiding additional steps to verify schedule viability. -
FIG. 4 is a schematic of a method of randomly mutating a job in a genome and determining a value score for the mutated genome. -
Task scheduling engine 400 randomly selects a genome (step 402). Alternatively,task scheduling engine 400 can be programmed to select genomes fitting one or more parameters. For example,task scheduling engine 400 can be programmed to select a genome at random from a group of genomes that at least have value scores above the 50th percentile. -
Task scheduling engine 400 randomly selects one or more jobs associated with one or more task heuristics (step 404).Task scheduling engine 400 can alternatively select one or more jobs based on one or more parameters. For example, task scheduling engine can be limited to only selecting jobs that can be associated with a variable completion time, which would exclude jobs that have an invariable completion time. It is preferred, however, thattask scheduling engine 400 selects the one or more jobs at random. -
Task scheduling engine 400 mutates the one or more jobs by randomly changing the one or more task heuristics (step 406).Task scheduling engine 400 can alternatively mutate the one or more jobs subject to a parameter. For example,task scheduling engine 400 can be programmed to avoid mutating task heuristics associated with overall manufacturing quality in the manufacture of goods that don't require strict quality control, such as intermediate products that will be heavily processed to a refined state in later steps. In one embodiment,task scheduling engine 400 can apply a scheduling direction mutation task heuristic that causestask scheduling engine 400 to schedule jobs based either on the earliest due date going forwards or the latest due date going backwards. -
Task scheduling engine 400 determines a value score of the genome (step 408). The value score indicates the overall success of a genome in achieving one or more metrics, such as completion time, accuracy of the process, and production costs.Task scheduling engine 400 preferably determines a value score using a fitness function. A fitness function is a particular type of objective function that is used to summarize, as a single figure of merit, how close a given solution is achieving the set aims. Oncetask scheduling engine 400 determines the value score of a genome, the genome can be discarded, further mutated, or further recombined with other genomes. A value score can comprise multiple value sub-scores covering a variety of quantifiable traits. It is contemplated thattask scheduling engine 400 preferably determines a value score of each genome of a population of genomes after the entire population has been recombined and/or mutated. -
FIG. 5 illustrates the recombination offirst genome 502 andsecond genome 504 based on randomly selected crossover points. -
First genome 502 andsecond genome 504 comprise any genome with identical ordering of jobs and distribution of tasks throughout the genome such that the two genomes are mirror images of each other except for the task heuristics assigned to each job or task. However,first genome 502 andsecond genome 504 can differ in the order that tasks associated with each job are carried out. For example, job/gene 1 infirst genome 502 and job/gene 1′ insecond genome 504 can comprise the same tasks that are executed in different chronological orders. - Selection of crossover points 506 occurs when
recombination engine 500 selectscrossover point 508 andcrossover point 510 at random. Crossover points indicate points between jobs where two genomes exchange segments of their job schedules, which are represented as an ordered collection of genes in a genome. In the depicted embodiment,recombination engine 500 selects a crossover point betweenjob 1 andjob 2 and selects a second crossover point betweenjob 3 andjob 4.Recombination 512 occurs when the job schedules, represented byfirst genome 502 andsecond genome 504, are recombined at crossover points. In the depicted embodiment,first genome 502 andsecond genome 504 are recombined atcrossover point 508 andcrossover point 510 to create firstrecombined genome 514 comprisingjobs 1′/2/3/4′ and secondrecombined genome 516 comprisingjobs 1/2′/3′/4. - In alternative embodiments, selection of crossover points 506 is not at random. Instead, selection of
crossover points 506 are predetermined by an algorithm or by one or more users. For example, a user can programrecombination engine 500 to avoid selecting crossover points in particular gene sequences in order to preserve groups of related jobs that should evolve together, such as interrelated jobs requiring specific manufacturing processes and/or special conditions to complete. - In a preferred embodiment where genomes are recombined using a position based crossover method, crossover points 506 are preselected to associate particular jobs or sets of jobs to particular genes or gene groups. Conventional crossover point methods add undesirable variability that can cause genomes to be inefficient or impossible to execute. By preselecting the positions of
crossover points 506, the number and composition of jobs associated with each genome is preserved, thereby adding predictability and efficiency to the overall task scheduling system. -
FIG. 6 illustrates the recombination of two genomes with a task heuristic byte based on randomly selected crossover points. -
First genome 602 andsecond genome 604 comprise any genome with identical orderings of jobs and distribution of tasks throughout the genome such that the two genomes are mirror images of each other except for the task heuristics assigned to each job or task. However,first genome 602 andsecond genome 604 can differ in the order that tasks associated with each job are carried out. For example, job/gene 1 infirst genome 602 and job/gene 1′ insecond genome 604 can comprise the same tasks that are executed in different orders. - Task
heuristic byte 606 is coupled with every genome. Taskheuristic byte 606 preferably assigns a task heuristic to each job in each genome at random. In some embodiments, taskheuristic byte 606 assigns a task heuristic to each task of each job at random.Recombination engine 600 can alternatively be programmed to not assign particular task heuristics from taskheuristic byte 606 to certain jobs and/or tasks. For example,recombination engine 600 can be programmed to avoid assigning task heuristics related to production speed where the production speed for a particular manufacturing step is invariable. - In the depicted embodiment, task
heuristic byte 606 comprises four task heuristics represented by “A”, “B”, “C”, and “D”.Recombination engine 600 selects one of the four task heuristics at random as assigns them to each job offirst genome 602 andsecond genome 604. - Selection of crossover points 608 occurs when
recombination engine 600 selectscrossover point 610 andcrossover point 612 at random. Crossover points indicate points between jobs where two genomes exchange segments of their job schedules, which are represented as an ordered collection of genes in a genome. In the depicted embodiment,recombination engine 600 selects a crossover point betweenjob 1 andjob 2 and selects a second crossover point betweenjob 3 andjob 4.Recombination 614 occurs when the job schedules, represented byfirst genome 602 andsecond genome 604, are recombined at crossover points. In the depicted embodiment,first genome 602 andsecond genome 604 are recombined atcrossover point 610 andcrossover point 612 to create firstrecombined genome 616 comprising jobs and associatedtask heuristics 1′A/2A/3A/4′B and secondrecombined genome 618 comprisingjobs 1B/2′D/3′C/4D. - In alternative embodiments, selection of crossover points 608 is not at random. Instead, selection of crossover points 608 is predetermined by an algorithm or by one or more users. For example, a user can program
recombination engine 600 to avoid selecting crossover points in particular gene sequences in order to preserve groups of related jobs with unique attributes that should evolve together, such as interrelated jobs requiring specific manufacturing processes and/or special conditions to complete. In a position based crossover method, a user can programrecombination engine 600 to avoid recombining predetermined sets of genes that have been shown to exceed an efficiency threshold. For example, if an order of manufacturing jobs in a genome achieves quick manufacturing times with exception quality control, thenprogram recombination engine 600 can be programmed to prevent genetic changes to the order and task heuristics assigned to the manufacturing jobs in the genome. -
FIG. 7 illustrates the mutation of a genome based on randomly selected job.Genome 702 is coupled with taskheuristic byte 704, which preferably assigns a task heuristic to each job and/or task at random. - Selection of
mutation point 708 occurs whenmutation engine 700 selectsmutation point 708 at random. Mutation points indicate one or more jobs to be randomly mutated by changing the order of tasks and/or the task priorities associated with each job and/or task. In the depicted embodiment,mutation engine 700 selectsjob 2 asmutation point 708.Mutation engine 700 randomly changes the task heuristic “A” associated withjob 2 to “D”. - The numerous advantages of the methods and systems described above can be further illustrated by way of working examples.
- Task Scheduling Example
- An administrator at a large hospital needs to schedule an open heart surgery, more specifically, an aortic valve replacement (i.e., the “task”) for a patient that recently suffered a heart attack. The surgery requires one heart surgeon, one anesthesiologist, and at least three medical support staff, which include a surgical assistant, an equipment monitoring assistant, and a junior surgeon. The surgery also requires an operating room that can accommodate the size of the medical team during the four hour surgery, and that has the necessary equipment, tools, and consumables (e.g., human valve donor or a mechanical valve, blood transfusion machine, sufficient volume of blood for the transfusion, heart rate monitor, defibrillator, endoscopic video camera, surgical knives and other surgical tools, disinfectants, gauze, etc).
- The administrator can use the genetic algorithm-based methods and systems herein in order to find the best way to perform the surgery subject to particular priorities. The administrator enters the overall objective which is associated with multiple jobs into
task scheduling engine 100. The administrator designates task heuristics/task priorities that are relevant to the overall objective. For example, the task attributes, which are selected by the administrator, can include an urgency level, a specific date for the surgery, a “no-later-than” date for the surgery, the desired attributes of the necessary persons (e.g., type of surgeon, skill/experience level of the surgeon and staff, etc), and any other resources relevant to the task (e.g., heart donor, blood transfer, etc). Once the administrator has entered the task heuristics intotask scheduling system 100,task scheduling engine 100 randomly assigns task heuristics to each job of the genome.Task scheduling engine 100 then determines a value score for the genome after each job in the genome is executed, which indicates a degree of completion and quality of execution in preferred embodiments. - Unlike the presently described scheduling system, conventional scheduling systems would merely compare availability of specific resources (i.e., specific people and specific resources), as for example availability of a specific surgeon or a particular heart valve. It would be up to the human administrator to determine the task requirements and what specific resources meet those requirements. In doing so, availability is treated as a preference or requirement.
- In contrast,
task scheduling engine 100 can access a preloaded database to automatically determine the attributes needed to accomplish the task (task preferences and requirements), and then automatically determines what specific resources are available to satisfy those task attributes. Availability of resource is merely one of many different resource attributes and can be treated as either a preference or requirement. - In one aspect,
task scheduling engine 100 advantageously allows the administrator to rank task attributes by level of importance. For example, the administrator may wish to rank the date of the surgery as a higher importance than the availability of a particular piece of equipment. The flexibility provided bytask scheduling engine 100 eases the administrator's burden of allocating resources in a complex organization such as a large hospital. - In another aspect,
task scheduling engine 100 allows the administrator to create dependencies between different, yet related tasks. For example, the heart surgery patient may have multiple tasks that need to be performed before and after surgery (e.g., fasting before the surgery, allocating a clean-up crew for the surgery theatre, or a post-op recovery room for the patient). The existence of dependencies between different tasks can be inputted intotask scheduling engine 100 as a task attribute of the present task to ensure that all related resources are available before scheduling the present task. -
Task scheduling engine 100 also allows the administrator to rank tasks according to a level of urgency. As used herein, the concept of ranking tasks is conceptually different from ranking task attributes. For example, the administrator may wish to assign an elective surgery a low urgency and an emergency surgery a high urgency, to ensure thattask scheduling engine 100 assigns a task heuristic based on the emergency surgery priority.Task scheduling engine 100 can even be used to cancel tasks, when a higher importance task needs to be scheduled. For example, an emergency surgery (i.e., a “high priority task”) for an emergency room (“ER”) patient may supersede a previously scheduled elective surgery (i.e., a “low priority task”), causing a cascade effect that may delay the elective surgery a few hours or even a few days. - In yet another aspect,
task scheduling engine 100 can be used to take into account patient preferences. For example, the patient may wish to exclude students from observing the surgery and may wish to wait for a human valve rather than a mechanical valve. These preferences can be entered intotask scheduling engine 100 to determine which task heuristics can be assigned to particular jobs in the genome. - Recombination Example
- Once the task scheduling example has been completed multiple times and created various genomes each associated with value scores based on their task heuristics,
recombination engine 300 can select two genomes with similar value scores. Preferably,recombination engine 300 can selects the two highest scoring genomes to recombine. Alternatively,recombination engine 300 can select the highest scoring genome for one metric and recombine it with a highest scoring genome for a different metric. For example,recombination engine 300 can select a first genome associated with the quickest manufacturing time for a widget and recombine it with a second genome with the highest level of quality control for the widget. - Over many cycles of recombination and subjecting genomes to fitness evaluations, the method achieving an overall objective is continuously refined to eventually yield the most effective solution based on the established task priorities.
Recombination example # 2 illustrates how the inventive methods and systems described herein go way beyond coordinating the availability of specific people or resources. Rather,recombination engine 300 automates the decision-making process to discover the most effective way of achieving an overall objective by using the principles of genetic recombination and evolution and related fitness functions. - As used herein, and unless the context dictates otherwise, the term “coupled to” is intended to include both direct coupling (in which two elements that are coupled to each other contact each other) and indirect coupling (in which at least one additional element is located between the two elements). Therefore, the terms “coupled to” and “coupled with” are used synonymously.
- It should be apparent to those skilled in the art that many more modifications besides those already described are possible without departing from the inventive concepts herein. The inventive subject matter, therefore, is not to be restricted except in the scope of the appended claims. Moreover, in interpreting both the specification and the claims, all terms should be interpreted in the broadest possible manner consistent with the context. In particular, the terms “comprises” and “comprising” should be interpreted as referring to elements, components, or steps in a non-exclusive manner, indicating that the referenced elements, components, or steps may be present, or utilized, or combined with other elements, components, or steps that are not expressly referenced. Where the specification claims refers to at least one of something selected from the group consisting of A, B, C . . . and N, the text should be interpreted as requiring only one element from the group, not A plus N, or B plus N, etc.
Claims (14)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/461,766 US20210390487A1 (en) | 2018-01-15 | 2021-08-30 | Genetic smartjobs scheduling engine |
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/871,611 US11107024B2 (en) | 2018-01-15 | 2018-01-15 | Genetic smartjobs scheduling engine |
| US17/461,766 US20210390487A1 (en) | 2018-01-15 | 2021-08-30 | Genetic smartjobs scheduling engine |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/871,611 Continuation US11107024B2 (en) | 2018-01-15 | 2018-01-15 | Genetic smartjobs scheduling engine |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20210390487A1 true US20210390487A1 (en) | 2021-12-16 |
Family
ID=67214010
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/871,611 Active US11107024B2 (en) | 2018-01-15 | 2018-01-15 | Genetic smartjobs scheduling engine |
| US17/461,766 Abandoned US20210390487A1 (en) | 2018-01-15 | 2021-08-30 | Genetic smartjobs scheduling engine |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US15/871,611 Active US11107024B2 (en) | 2018-01-15 | 2018-01-15 | Genetic smartjobs scheduling engine |
Country Status (1)
| Country | Link |
|---|---|
| US (2) | US11107024B2 (en) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11023813B2 (en) | 2019-10-09 | 2021-06-01 | Nmetric, Llc | Genetic algorithm with deterministic logic |
| CN110689155B (en) * | 2019-10-15 | 2022-09-06 | 上海海事大学 | Multi-constraint scheduling method of card collection reservation system considering congestion and emission |
| CN111652373B (en) * | 2020-05-29 | 2023-10-31 | 山东浪潮科学研究院有限公司 | A cloud robot task scheduling method, device, equipment and storage medium |
| CN112257296B (en) * | 2020-11-27 | 2021-06-25 | 西南交通大学 | Job Shop Scheduling Method with Cache Constraints Based on Improved Genetic Algorithm |
| CN113988497B (en) * | 2021-07-21 | 2025-03-21 | 西安电子科技大学广州研究院 | Electroplating line driving scheduling method, device and storage medium based on evolutionary algorithm |
| CN113723937B (en) * | 2021-11-02 | 2022-04-01 | 南京理工大学 | Test and issue project double-layer scheduling method based on heuristic rule genetic algorithm |
| CN114819678A (en) * | 2022-05-09 | 2022-07-29 | 安徽工程大学 | Visualization method for multi-mobile-robot operation along task point distribution |
Citations (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5524077A (en) * | 1987-07-24 | 1996-06-04 | Faaland; Bruce H. | Scheduling method and system |
| US20010053957A1 (en) * | 2000-06-14 | 2001-12-20 | Blair Douglas M. | Apparatus and method for providing sequence database comparison |
| US6823315B1 (en) * | 1999-11-03 | 2004-11-23 | Kronos Technology Systems Limited Partnership | Dynamic workforce scheduler |
| US20050044052A1 (en) * | 2002-02-27 | 2005-02-24 | Zhu Chun Bao | System, method and product for rostering using genetic alhgorithms |
| US7151973B1 (en) * | 2002-07-18 | 2006-12-19 | Oracle International Corporation | Methods and systems for scheduling and buffer balancing |
| US20070005522A1 (en) * | 2005-06-06 | 2007-01-04 | Wren William E | Resource assignment optimization using direct encoding and genetic algorithms |
| US20070093923A1 (en) * | 2005-10-24 | 2007-04-26 | Hans-Juergen Biegler | Systems and methods for production planning with sequence independent setup activities |
| US20080222061A1 (en) * | 2007-03-10 | 2008-09-11 | Hendra Soetjahja | Adaptive Multivariate Model Construction |
| US20080313135A1 (en) * | 2007-06-18 | 2008-12-18 | International Business Machines Corporation | Method of identifying robust clustering |
| US20110004625A1 (en) * | 2009-07-02 | 2011-01-06 | Palo Alto Research Center Incorporated | Multi-Interval Heuristics For Accelerating Target-Value Search |
| US20140289733A1 (en) * | 2013-03-22 | 2014-09-25 | Palo Alto Research Center Incorporated | System and method for efficient task scheduling in heterogeneous, distributed compute infrastructures via pervasive diagnosis |
| US9224121B2 (en) * | 2011-09-09 | 2015-12-29 | Sap Se | Demand-driven collaborative scheduling for just-in-time manufacturing |
| US20160335583A1 (en) * | 2015-05-14 | 2016-11-17 | Atlassian Pty Ltd | Systems and Methods for Scheduling Work Items |
| CN106156891A (en) * | 2016-07-08 | 2016-11-23 | 华南师范大学 | A kind of Scheduling method based on Pareto multiple target ant colony optimization algorithm |
| US20190043025A1 (en) * | 2017-08-02 | 2019-02-07 | Intuit Inc. | Genetic algorithms in blockchain space |
Family Cites Families (14)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5140530A (en) | 1989-03-28 | 1992-08-18 | Honeywell Inc. | Genetic algorithm synthesis of neural networks |
| US5319781A (en) | 1991-05-03 | 1994-06-07 | Bolt Beranek And Newman Inc. | Generation of schedules using a genetic procedure |
| US5848403A (en) | 1996-10-04 | 1998-12-08 | Bbn Corporation | System and method for genetic algorithm scheduling systems |
| US7587329B2 (en) | 2000-06-02 | 2009-09-08 | Drason Consulting Services, Llc | Method and system for optimizing employee scheduling in a patient care environment |
| US6957200B2 (en) | 2001-04-06 | 2005-10-18 | Honeywell International, Inc. | Genotic algorithm optimization method and network |
| US7774471B2 (en) * | 2006-06-15 | 2010-08-10 | Adaptive Computing Enterprises, Inc. | Optimized multi-component co-allocation scheduling with advanced reservations for data transfers and distributed jobs |
| SG133421A1 (en) * | 2005-12-13 | 2007-07-30 | Singapore Tech Dynamics Pte | Method and apparatus for an algorithm development environment for solving a class of real-life combinatorial optimization problems |
| US20070245300A1 (en) * | 2006-03-22 | 2007-10-18 | Benjamin Chan | Apparatus, system, and method for presenting project scheduling information in combination with workflow information |
| US20090315735A1 (en) | 2006-04-10 | 2009-12-24 | Bhavani Neeraj S | Patient flow management and analysis using location tracking |
| US8069127B2 (en) | 2007-04-26 | 2011-11-29 | 21 Ct, Inc. | Method and system for solving an optimization problem with dynamic constraints |
| US8655705B2 (en) | 2010-01-13 | 2014-02-18 | Lockheed Martin Corporation | Systems, methods and apparatus for implementing hybrid meta-heuristic inventory optimization based on production schedule and asset routing |
| CN103092683B (en) * | 2011-11-07 | 2017-12-26 | Sap欧洲公司 | For data analysis based on didactic scheduling |
| US20160179081A1 (en) | 2014-12-22 | 2016-06-23 | Siemens Aktiengesellschaft | Optimized Production Scheduling Using Buffer Control and Genetic Algorithm |
| US11379730B2 (en) * | 2016-06-16 | 2022-07-05 | The Aerospace Corporation | Progressive objective addition in multi-objective heuristic systems and methods |
-
2018
- 2018-01-15 US US15/871,611 patent/US11107024B2/en active Active
-
2021
- 2021-08-30 US US17/461,766 patent/US20210390487A1/en not_active Abandoned
Patent Citations (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5524077A (en) * | 1987-07-24 | 1996-06-04 | Faaland; Bruce H. | Scheduling method and system |
| US6823315B1 (en) * | 1999-11-03 | 2004-11-23 | Kronos Technology Systems Limited Partnership | Dynamic workforce scheduler |
| US20010053957A1 (en) * | 2000-06-14 | 2001-12-20 | Blair Douglas M. | Apparatus and method for providing sequence database comparison |
| US20050044052A1 (en) * | 2002-02-27 | 2005-02-24 | Zhu Chun Bao | System, method and product for rostering using genetic alhgorithms |
| US7151973B1 (en) * | 2002-07-18 | 2006-12-19 | Oracle International Corporation | Methods and systems for scheduling and buffer balancing |
| US20070005522A1 (en) * | 2005-06-06 | 2007-01-04 | Wren William E | Resource assignment optimization using direct encoding and genetic algorithms |
| US20070093923A1 (en) * | 2005-10-24 | 2007-04-26 | Hans-Juergen Biegler | Systems and methods for production planning with sequence independent setup activities |
| US20080222061A1 (en) * | 2007-03-10 | 2008-09-11 | Hendra Soetjahja | Adaptive Multivariate Model Construction |
| US20080313135A1 (en) * | 2007-06-18 | 2008-12-18 | International Business Machines Corporation | Method of identifying robust clustering |
| US20110004625A1 (en) * | 2009-07-02 | 2011-01-06 | Palo Alto Research Center Incorporated | Multi-Interval Heuristics For Accelerating Target-Value Search |
| US9224121B2 (en) * | 2011-09-09 | 2015-12-29 | Sap Se | Demand-driven collaborative scheduling for just-in-time manufacturing |
| US20140289733A1 (en) * | 2013-03-22 | 2014-09-25 | Palo Alto Research Center Incorporated | System and method for efficient task scheduling in heterogeneous, distributed compute infrastructures via pervasive diagnosis |
| US20160335583A1 (en) * | 2015-05-14 | 2016-11-17 | Atlassian Pty Ltd | Systems and Methods for Scheduling Work Items |
| CN106156891A (en) * | 2016-07-08 | 2016-11-23 | 华南师范大学 | A kind of Scheduling method based on Pareto multiple target ant colony optimization algorithm |
| US20190043025A1 (en) * | 2017-08-02 | 2019-02-07 | Intuit Inc. | Genetic algorithms in blockchain space |
Non-Patent Citations (1)
| Title |
|---|
| Barat "JOB SCHEDULING WITH GENETIC ALGORITHM" (2013)(https://library.ndsu.edu/ir/bitstream/handle/10365/22775/JOB%20SCHEDULING%20WITH%20GENETIC%20ALGORITHM.pdf?sequence=2) (Year: 2013) * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20190220792A1 (en) | 2019-07-18 |
| US11107024B2 (en) | 2021-08-31 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US20210390487A1 (en) | Genetic smartjobs scheduling engine | |
| Saadouli et al. | A stochastic optimization and simulation approach for scheduling operating rooms and recovery beds in an orthopedic surgery department | |
| Azadeh et al. | Scheduling prioritized patients in emergency department laboratories | |
| US20060053035A1 (en) | Healthcare personnel management system | |
| US20130339969A1 (en) | Scheduling and Decision System | |
| Zhao | Scheduling jobs with general truncated learning effects including proportional setup times: S. Zhao | |
| US20200373006A1 (en) | Medical information processing system | |
| AU2024202056A1 (en) | Genetic algorithm with deterministic logic | |
| Othman et al. | Multi-objective evolutionary for multi-skill health care tasks scheduling | |
| Clavel et al. | Operation planning of elective patients in an orthopedic surgery department | |
| González et al. | Resource optimization for elective surgical procedures using quantum-inspired genetic algorithms | |
| Bektur et al. | Artificial bee colony algorithm for operating room scheduling problem with dedicated/flexible resources and cooperative operations | |
| Jerbi et al. | Multi-objective mathematical programs to minimize the makespan, the patients’ flow time, and doctors’ workloads variation using dispatching rules and genetic algorithm | |
| Nino et al. | A simulation of variability-oriented sequencing rules on block surgical scheduling | |
| Abeidi et al. | A process improvement study in an emergency department using lean methodology | |
| Assaf et al. | Constraint-Based Optimization for Scheduling Medical Appointments. | |
| US20100127981A1 (en) | Method for the situation-adapted documentation of structured data | |
| Noor et al. | Integration of healthcare system with its experts for improving the life expectancy of medical devices: a review | |
| Saadani et al. | A linear mathematical model for patients' activities scheduling on hospital resources | |
| Mtonga et al. | Technology for improved operating room scheduling-a case of Kilimanjaro Christian Medical Center of Tanzania | |
| Sivasankaran | Mathematical Model for Staff Scheduling Problem in Hospital Management Using LINGO Solver | |
| Fei et al. | Evaluating alternative surgery plans with discrete-event simulation model | |
| Ajmi et al. | Mapping patient flow in the Jeanne de Flandres Hospital's operating rooms | |
| Didem Batur Sir et al. | Seniority-based surgery scheduling and team assignment | |
| Atisattapong et al. | Master Surgical Scheduling of Multi-Surgeon Surgical Schedules Using a Mixed-Integer Linear Programming Model and Genetic Algorithms |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: NMETRIC, LLC, TEXAS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:KOSKI, CHRISTINE;COOK, STEPHEN;REEL/FRAME:057332/0948 Effective date: 20180125 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |