Options
All
  • Public
  • Public/Protected
  • All
Menu

Interface Job

A job.

Hierarchy

  • Job

Index

Properties

Optional deliveryTime

deliveryTime: undefined | number

Delivery time of a job, independent of the machine that it is scheduled on.

During the delivery time of a job, a machine is available again to process other jobs. However, no dependents of this job can start before the delivery time has elapsed.

In the computed Schedule, a separate JobFragment will be created to represent the delivery time. If splitting is JobSplitting.MULTIPLE_MACHINES, then this job fragment will be assigned to the machine specified by preAssignment (or simply the first machine if that field is undefined).

The default is no delivery time; that is, 0.

Optional dependencies

dependencies: number[]

Indices of the jobs that this job depends on.

Dependencies are finish-to-start; that is, a job cannot start before all job dependencies are fully completed (including any delivery time they may have).

The default is no dependencies; that is, the empty array.

Optional preAssignment

preAssignment: undefined | number

Index of the machine that this job must be assigned to.

If both this is set and splitting is JobSplitting.MULTIPLE_MACHINES, then this field only determines what machine the delivery time (if any) will be assigned to.

The default is no pre-assignment.

Optional releaseTime

releaseTime: undefined | number

The earliest possible start time for this job.

This constraint is in addition to dependencies.

The default is none; that is, an earliest possible start time of 0.

size

size: number

The processing requirement of a job (or, more succinctly, the job size).

The actual processing time of a job (or job fragment) on a machine with speed speed is Math.ceil(size / speed). This is the amount of time the machine is busy. In addition, a job may also have a delivery time. During that time, the machine is already available again and can process other jobs.

If the job size is 0, the corresponding ScheduledJob will contain no JobFragment for processing this job. However, if deliveryTime is greater than 0, there would still be a job fragment for the delivery time (which starts at time 0).

Jobs with both size and deliveryTime equal to 0 are explicitly allowed. They can be useful to specify a dependency between sets of jobs. For example, suppose A and B are disjoint sets of n and m jobs, respectively. Suppose each job in B depends on all jobs in A. However, instead of introducing m * n dependencies, it is easier to introduce a dummy job c with size and deliveryTime equal to 0 and with a dependency on each job in A. Moreover, each job in B depends on c. This way, only m + n dependencies are necessary to express the set-dependency.

Optional splitting

splitting: JobSplitting

Whether the job allows preemption or may be processed concurrently by more than one machine at a time.

The default is JobSplitting.PREEMPTION.

Generated using TypeDoc