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. 9.2 Tank cleaning If a problem has vessels where tanks are modelled and there is more than one product defined, it is possible to place restrictions on which products may follow one another in the same tank. A cleaning table is given, containing entries with the following information: From product To product Cleaning time Cleaning cost Whenever the ‘to product’ is loaded into a tank where the last product discharged was ‘from product’, that tank must have been cleaned in-between for a total duration given by the cleaning time in the table. To clean tanks, Invent inserts cleaning actions into the vessel’s plan. These actions take place at sea, between port stays. Their properties are: Start time End time One or more records of: o The tank cleaned o The product cleaned from o The product cleaned to Only one set of tanks can be cleaned at one time, and must be completed before a new cleaning can be started. Different tanks can be cleaned between different products at the same time. Cleaning can not take place during port stays, but a cleaning in progress may be suspended during a port stay and continue afterwards, in another cleaning action. 9.3 Maintenance periods A number of maintenance periods may be included in the problem, each one specifying: The vessel The port where maintenance takes place A time interval for arrival A duration Invent is then required to ensure that the vessel has a port stay (with no actions) in the specified port, starting in the given interval, with the required duration. The vessel must be empty of goods at the arrival to this port stay. 10. Constraints There are a number of conditions, called constraints, that must be satisfied in order to make a plan legal. A number of these have already been mentioned above. Others are rather obvious; for instance, the time between two port stays for the same vessel must equal at least the sailing time between the ports. Below we list the non-obvious constraints that must or can be applied. 10.1 Single action for port storage It is not possible for two different vessels to load or discharge for the same port storage at the same time. The main reason for this is to avoid complications with defining the port storage’s state when one action is finished and the other continues. 10.2 Vessel/port compatibility One can define a table that lists combinations of vessel and port, where the vessel is not allowed to have a port stay in that port. 10.3 Arrival/departure limits; draft A table can be given that for a vessel/port combination gives the maximum weight that the vessel is allowed to carry when entering the port, and the maximum when exiting. Draft restrictions are a typical reason for such limits. 10.4 Locks It is possible to lock parts of the initial plan given to Invent, thereby ensuring that Invent does not change these parts during optimizing. The following can be locked: Arrival or departure time of a port stay Start or end time of an action A port stay may not be removed from the plan No port stay may be inserted between this port stay and the previous one in the same port No port stay may be inserted between this port stay and the previous one for the same vessel No cargo action may be inserted between this action and the previous one for the same port storage 10.5 Full vessel loads If this constraint is in effect, every cargo action must load or discharge a full vessel load (possibly minus what has been lost to boil-off). 10.6 Inter arrival gaps A port storage may specify an inter arrival gap, which is the smallest time allowed between one action for the storage is finished and the next one starts. The gap may be different in different time periods. 10.7 Number of actions in period A port storage can impose limits on the maximum number of cargo actions allowed for that storage during various time periods. 10.8 Port closure periods A port can have periods of time in which some operations are not allowed. The possible types of closure are: Arrival. A port stay is not allowed to start in the period. Departure. A port stay is not allowed to end in the period. Docking. A port stay is not allowed to take place, in full or in part, during the closure period. Operations. A cargo action may not start or end in the period. If there is a closure period during an action, operations are suspended over the period. This means that the action’s duration must be extended to include the closure time in addition to the ‘active’ time spent actually loading or discharging. 11. Objectives Invent’s goal is to produce a legal plan that is as good as possible. The notion of what is ‘good’ is defined by objectives. Each basic objective measures some aspect of a plan as a real number. For instance, one objective measures the total sailing cost of a plan. The basic objectives may then be combined in various ways to create the total objective, which Invent strives to improve. Objectives may be combined either using weights or by priority. A weighed objective is defined by listing a number of objectives along with a weight (a real number) for each. The value of the combined objective is defined as the sum of value * weight over the objectives. By using weights equal to 1, a weighed objective can be used to calculate a simple sum, e.g. the total income as a sum of different types of income. A priority objective is created by listing two or more objectives. If two plans have different values for the first objective, this determines which one is better. If the values are equal, one compares the values of the second objective instead, and so on. A priority objective can express e.g. “first try to eliminate stockout/overflow, then maximize profits”. The basic objectives are listed below. 11.1 Contract income Each contract can contain information about the cost of loading (if a purchase contract) or the income of discharging (for a sale contract). This objective sums the income for discharging under sale contracts and subtracts the cost of loading under purchase contracts, across all cargo actions in the plan. There are different cost structures that a contract may have: Free on board purchase (FOB). The contract contains a curve that gives the purchase price per unit as a function of time. Different price curves may apply depending on which destination port the goods will be delivered to. Weighted average sales price (WASP ). The purchase price is fixed within predefined intervals, e.g. weekly or monthly. The price in each interval is calculated as the average sale price obtained for all goods discharged and/or consumed at one or more consuming port storages within a defined period, multiplied by a ‘netback’ factor. If you don’t actually need this, you don’t want to know. Ex-ship sale. This is similar to a FOB contract, with a sale price curve that may depend on the origin port. 11.2 Stream income Each port storage may provide a curve for each product which describes the product’s price at that port storage over time. The objective measures the total value of the goods consumed in consuming port storages, minus the total value of goods produced in producing port storages. 11.3 Booking income Each booking can specify an income, which is added to this objective if the booking is serviced in the plan. The income is composed of two parts: a lumpsum, which is fixed, and a rate-based income, which is proportional to the quantity transported for the booking. 11.4 Port cost A table gives the port cost for each combination of vessel/port. This objective sums the port cost over all port stays in the plan. The objective may be adjusted with the options: Do not add port cost if the port stay is in the same port as the vessel’s previous port stay Do not add port cost for the first port stay in the vessel’s plan (which gives the initial state) 11.5 Sailing cost This objective sums the sailing cost from each port stay to the next for all vessels. 11.6 Service cost Each vessel may be given a service cost per hour, which is applied to the duration of each port stay in the plan. 11.7 Waiting cost If a vessel has more time between one port stay and the next than given by the calculated sailing time, the difference is termed waiting time. A cost per hour can be given to this time per vessel, and this objective sums up the cost. 11.8 Reduction cost A cost per quantity can be given for each port storage, which is applied to the quantity not produced/consumed in port storages during times when a reduced rate is used. The objective sums the cost over all port storages. 11.9 Relet cost Each booking may be assigned a relet cost, which is added to this objective when the booking is not serviced in the plan. 11.10Cleaning cost This objective sums the cost of all cleaning actions in the plan, as given in the cleaning table. 11.11Transported quantity This objective measures the total quantity of goods transported in the planning period, either by summing the total quantity loaded in cargo actions, or by summing the total quantity discharged. These values may differ when goods are loaded before the time horizon but discharged after, or if a vessel’s initial state includes cargo. 11.12Reduced quantity This objective measures the total quantity not produced/consumed in port storages during times when a reduced rate is used. 11.13Stockout/overflow quantity Invent may not be able to keep stock levels in port storages legal at all times. When the stock level in a producing storage hits the volume capacity limit, Invent will fix it there until the next load action creates room for more production. We can imagine either that production continues at the fully reduced level and the goods produced spill over the storage top, or that production is (illegally) stopped during the period. In either case, there is a surplus quantity, which this objective measures. The objective also adds the deficit quantity associated with stock at consumption storages hitting the minimum volume limit. 11.14Unmet contract quantity A contract may specify the minimum total quantity that should be loaded/discharged under the contract in certain time periods. If some of these limits are not met, this objective sums the total deficit. 11.15Missing number of actions A port storage can impose limits on the minimum number of cargo actions desired for that storage during various time periods. The objective sums up the number of missing actions that are required to meet these goals.