TCPSPSuite
|
A TCPSPSuite instance is described by a JSON file. The two most important aspects of an instance are its resources and its jobs. Jobs are the building blocks of an instance. The TCPSPSuite will schedule each defined job exactly once. The output (i.e., the optimized solution of an instance) consists of an assignment of a start time to every job.
In a TCPSP instance, each job is associated with a certain quantity of one or more resources. The job requires these quantities while it is being executed. The resource specification in an instance file allows to specify costs for the consumption of resources.
Additionally, an instance has an id field uniquely identifying this instance, and may have an additional field containing arbitrary key-value mappings. These mappings are not used by TCPSPSuite but may be used to tag instances, for example supply information on how the instance was generated.
Before listing the possible objects and their attributes, we provide a full (although somewhat minimal) example. This instance consists of three jobs and one resource. Job 0
must be run for 15 time steps between time step 0 and 41 and takes 2.5 units of resource 0
during that time. Job 1
must be run for 2 time steps between time steps 0 and 48, consuming 5 units of resource 0
, and job 2
must be run for 5 time steps between time steps 0 and 56, requiring 10 units of resource 0
. Additionally, job 2
can only be started as soon as job 1
was started, no earlier.
The costs of a solution are the maximum amount of resource 0
that is used times 10.
This is the corresponding instance file:
Each job has these attributes:
successors (Required): An (optionally empty) map of job IDs to lag attributes. Every entry in this map describes one job the execution of which depends on this job. The lag attributes are:
This would indicate that job 23
can start at the earliest 100 time steps after job 42
was started.
Now suppose that job 42
is started at time step 0, and job 23
is started at time step 150, even though the time lag from job 42
would have allowed to start 23
at time step 100 already. Thus, 23
was started 50 time steps later than possible with regard to 42
. Thus, the duration of job 23
is extended by 50 * 0.5 = 25
time steps.
Now, the duration extension of job 23
would be computed as above and amount to 25 time steps. However, the max_recharge
attribute limits the duration extension to 10 time steps, and therefore job 23
's duration is only extended by 10 time steps.
usages (Required): A map from resource IDs to a number. Every resource defined in the instance must be present. The mapped-to number indicates how much of the resprective resource this job requires during execution. Example:
This defines two resources with IDs 0
and 1
(see below for details on resources) and states that job 42
requires one unit of resource 0
and 3.1415 units of resource 1
while executing.
drain_factor
s.Each resource has these attributes:
This defines a resource 0
which has availability of 10 units in the interval [1,5)
, availability of 2.5 units in the interval [5,10)
, and zero units available everywhere else. If availability
is not given, zero units are available.
This defines a resource 0
with costs 3 * x^1 + 5 * x^2
, where x
is the maximum amount that the usage of resource 0
exceeds its availability.
investment_costs
.