The Invent model
2009-03-23
Invent version 0.5.2
1. Introduction
Invent is a software application for solving maritime inventory problems. A problem contains a number of ports with storages that produce and consume goods. A fleet of vessels is available to transport goods between the storages. In addition, the problem can contain bookings, which represent discrete amounts of goods that should be transported independently of the storages. For this problem, Invent produces a plan that aims to keep stock at the storages within the legal limits while minimizing operations costs and maximizing income.
This document describes the range of problems and situations that Invent can model.
2. Time
Invent represents a point in time as a whole number of minutes since January 1. 2000, 00:00 UTC. All durations must be (rounded to) a whole number of minutes.
If less precision is desired, Invent can use a coarser time granularity, e.g. one hour.
The time format in input/output files is based on ISO 8601: “2008-03-12 12:56” (UTC).
A period start and time horizon are usually given to define the period that Invent should plan for.
3. Products and cargo
An Invent model can contain several types of goods, called products. Each product is defined by the following:
· A name
· A unit
· Weight (MT) per unit
· Volume (m3) per unit
For instance, a product may be “Rocks”, which is measured in the unit “m3”, with weight 5 MT/m3 and volume 1 m3/m3. Another possible product is “Socks”, measured in “pairs”, at 0.00003 MT/pair and 0.0001 m3/pair.
A certain quantity of a certain product is called a cargo. A cargo has the following attributes:
· Product
· Quantity
· Weight (MT)
· Volume (m3)
So, a cargo might be 3 units of the product Rocks. Using the data above, we can calculate the cargo’s weight as 15 MT and the volume as 3 m3.
Normally, a product has a fixed weight and volume per unit. However, it is also possible to define a product with variable weight or volume per unit. Then, different weights or volumes per unit can be given for cargoes produced at different sources, and the weight and volume per unit of cargoes can vary through mixing in vessels and at delivery sites.
A collection of cargoes is called a cargo set. At most one cargo for each product may be present in a cargo set. Cargo sets can be added and subtracted in the natural way. Thus <1 unit Rocks and 3 units Stones> plus <1 unit Rocks and 2 units Socks> equals <2 units Rocks, 3 units Stones, 2 units Socks>.
4. Vessels
Vessels are used for transporting goods. The following attributes are given for a vessel:
· Name
A number of other attributes can be given for a vessel as well; we will mention these where appropriate instead of giving a full list here. The same principle applies to other objects.
4.1 Vessel storage
Each vessel has one vessel storage, where goods are stored. Its attributes are:
· Name
· Weight capacity (MT), possibly infinite
· Volume capacity (m3), possibly infinite
At any time, the goods stored in a vessel storage can be represented as a cargo set. The total weight and volume of this cargo set cannot exceed the storage’s capacity.
As a simple approximation of storage in tanks or cargo holds, one can restrict a vessel storage so that it may not contain more than a certain number of different products at any one time.
4.2 Tanks
To model in more detail how a vessel stores goods, one can define a vessel storage with tanks. Each tank has the following attributes:
· Name
· Volume capacity (m3)
When a vessel storage has tanks, Invent will distribute the goods transported over the tanks. Each tank can hold only one cargo, i.e. just one product, at any one time, and no more than its volume capacity.
5. Ports
Ports are where the vessels dock to load and discharge goods, among other things. A port is defined by:
· Name
· A location (see below)
5.1 Port storage
A port can contain one or more port storages, where goods are produced, consumed and stored. A port storage can be producing or consuming, but not both.
Each port storage consists of one or more tanks, and for each tank, the following are given:
· Name
· Product
· Volume capacity
· Lower volume limit
· Nominal production/consumption rate profile
· Reduced production/consumption rate profile
Each tank holds a single product, which may not change during the planning period. A vessel may only load or discharge this product from/to the tank. The content of the tank is at all times a cargo of that product, with a volume no more than the tank’s volume capacity and not less than the lower volume limit.
The contents of a port storage tank changes through production or consumption. This production/consumption is given as a rate (units/hour) that can vary with time according to a given profile. The production/consumption is added both during loading/discharge and while no vessel is loading or discharging.
One may also give a reduced rate profile. This gives Invent the opportunity to reduce the production/consumption rate in some time periods if this can help make a feasible or better plan. At all times, Invent will choose a rate between the nominal and the reduced rate. Normally, there is a cost associated with reducing the rate.
5.2 Contracts
By default, Invent is free to manage port storages as it wants to, as long as the stock levels are kept legal. But it is also possible to assign contracts to port storages, in order to exercise more control over storage management.
At the moment, Invent requires either that the problem contains no contracts, or that contracts are always used, with at least one contract for each port storage.
A contract contains the following data:
· Name
· Type (sale or purchase)
· Product
· Nominal volume interval
· One or more storages
· One or more time slots
· One or more period limits, giving the following:
o Total quantity interval
o Start and end of time period
o Destination (or origin) storages that can receive (or deliver) product
When contracts are in use, they restrict the legal solutions as follows:
· Each loading or discharge at a port storage must be associated with a contract. The contract product must match, and the storage must be listed in the contract.
· The volume of each loading/discharge under the contract must fall inside the nominal interval.
· The time interval spent in each loading/discharge under the contract must fall inside one of the contract’s time slots.
· For each period limit, the total quantity shipped from/to the origin/destination storages in the time period should lie within the given quantity interval. If no origin/destination storages are given, the limit covers all origins/destinations.
5.3 Locations and sailing times
Each port has a location. A location is basically defined by an ID string. It may also have positional data such as latitude and longitude, but these are not used by Invent.
The sailing time between locations, and thereby between ports, is given by a table. Each entry in the table contains:
· Vessel
· From location
· To location
· A minimum weight
· A maximum weight
· The distance
· The sailing time
· The sailing cost
The entry defines the sailing distance, time and cost when the given vessel sails between the given locations while the total weight in its storage is between the weights given. Thus it is possible to model that sailing is faster or less expensive when in ballast than when laden, or one can model different sailing routes that are available depending on the laden quantity. If the minimum and maximum weights are omitted from an entry, the entry is valid for all weights.
If there is no entry for a (vessel, from, to) combination, then that sailing is not allowed.
6. Bookings
A booking represents a request for transportation that is not related to port storages. It contains a number of visits, which have the following attributes:
· Type. Either Load or Discharge
· Product. The product to load/discharge
· Port where the loading/discharge takes place
· Laydays. The earliest time that loading/discharge may start
· Cancelling. The latest time that loading/discharge may start
· Minimum quantity loaded/discharged
· Maximum quantity loaded/discharged
· Minimum/maximum volume loaded/discharged
· Minimum/maximum weight loaded/discharged
The booking is serviced when the plan contains cargo actions that cover all the visits, loading and discharging total amounts that fall within the quantity limits.
The normal type of booking, a simple booking, has two visits—one Load and one Discharge—with matching product and quantity limits. To service this booking, a vessel must pick up a cargo matching the specifications at the Load visit and deliver an identical cargo at the Discharge visit.
Another type of booking is the onesided booking, which contains only one Load or Discharge visit. A vessel serving this booking must match it either against another onesided booking that is similar but opposite, or against goods loaded/discharged at a port storage.
7. Transportation plans
The output from Invent is a plan for transporting goods between port storages (and visits). Each vessel in the problem receives a vessel plan, which consists of a chronological sequence of port stays and actions.
7.1 Port stays
A port stay describes a time interval during which a vessel is docked in a particular port. It is defined by the following:
· The vessel docking
· The port being visited
· The arrival time
· The departure time
As a special case, a port stay may give a location instead of a port. This is chiefly used to indicate a vessel’s starting position that is a point at sea.
7.2 Cargo actions
Each port stay in a port may contain one or more actions that describe events taking place while the vessel is docked. The common type is a cargo action, which describes goods being loaded or discharged. It has the following attributes:
· Type: load/discharge
· The vessel performing the action
· The start time
· The end time
· A cargo set representing the goods transferred
· Where the goods is loaded from or discharged to. This can be a port storage or a visit in the port.
The time required to complete a cargo action can be controlled in a number of ways:
· A visit can specify a fixed required time.
· A port can specify a fixed duration applicable to all actions in that port.
· For each port/vessel/product combination, a load speed and discharge speed (in units/h) can be given. If the speed is given, the duration is computed as the quantity divided by the speed.
· Each vessel and port can provide load and discharge speeds for each product. The actual speed is then determined as the highest speed provided by either port or vessel, but limited to the maximum speed allowed by both port and vessel.
8. The initial state
As a starting point for planning, Invent must know the state of vessels and port storages at the start of the planning period. Thus the following are part of the problem specification:
· For each port storage, an initial time is given, together with the stock levels of the storage at that time. Invent will not plan any actions for the storage before its initial time.
· An initial plan is given. For each vessel, it contains a vessel plan with at least one port stay. As a minimum, this may be a port stay either at sea or in a port, with no cargo actions. The port stay defines the vessel’s starting location and time, as well as the initial state of its storage. Invent will never change this port stay or insert any earlier port stays.
The initial plan for a vessel may also contain more than one port stay, detailing some of the vessel’s operations. Invent will keep these port stays in the plan, but may move them in time and insert other port stays in-between, unless this is explicitly forbidden.
9. Additional model elements
Invent supports more things.
9.1 Boil-off
Boil-off describes a vessel storage where some of the goods in the storage continually boils off and disappears. It is intended to model transport of LNG. For each vessel, the following can be given:
· A boil-off rate while sailing laden
· A boil-off rate while sailing in ballast
· A boil-off rate while idling in port
All rates are expressed in m3/hour. As the time spent loading/discharging usually is small compared to the time spent sailing, we assume that no product boils off during load/discharge.
As an option, boil-off can be computed using nominal sailing times instead of actual times. That is, boil-off between port stays is regarded taking place only during the standard sailing time between the ports, even if longer time is actually used, and there is no boil-off during idling in port.
Boil-off can only be used when the problem contains just one single product, and vessel load/discharge quantities are restricted to full vessel loads.