Delft University of Technology
FACULTY MECHANICAL, MARITIME AND MATERIALS ENGINEERING
Department Marine and Transport Technology Mekelweg 2 2628 CD Delft the Netherlands Phone +31 (0)15-2782889 Fax +31 (0)15-2781397 www.mtt.tudelft.nl
This report consists of 36 pages and 1 appendices. It may only be reproduced literally and as a whole. For commercial purposes only with written authorization of Delft University of Technology. Requests for consult are
Specialization: Production Engineering and Logistics Report number: 2013.TEL.7772
Title: Modeling of a liquid bulk terminal
Author: P.F. van der Hammen
Title (in Dutch) Modelleren van een gas/vloeistofterminal
Assignment: Programming Assignment
Confidential: no
Initiator (university): dr.ir. J.A. Ottjes
Supervisor: dr. ir. J.A. Ottjes
Content
CONTENT ... 1PREFACE ... 2
SUMMARY ... 2
1
INTRODUCTION ... 3
1.1
ASSIGNMENT DESCRIPTION ... 3
2
SIMULATION OF THE TERMINAL ... 5
2.1
THE TERMINAL SYSTEM ... 5
2.2
THE SIMULATED SYSTEM ... 5
2.3
OBJECTIVE OF THE SIMULATION ... 6
2.3
PROCESS DESCRIPTION ... 6
2.4
ELEMENTS ... 7
2.4.1
Jetty ... 7
2.4.2
Ship ... 9
2.4.3
Ship Generator ... 9
2.4.4
Weather ... 9
2.4.5
Product ... 9
2.4.6
Animation ... 11
2.5
QUEUES ... 11
2.6
DISTRIBUTIONS ... 11
2.6.1
Exponential Distribution ... 11
2.6.2
Normal Distribution ... 11
2.6.3
Erlang-‐k Distribution ... 11
2.6.4
Uniform Distribution ... 12
2.7
ASSIGNMENT METHODS ... 12
2.7.1
First In First Out (FIFO) ... 12
2.7.2
Advanced ... 12
2.8
PARAMETERS ... 13
2.9
ASSUMPTIONS ... 14
3
GENERAL USER INTERFACE ... 15
3.1
INPUT PARAMETERS ... 15
3.2
INPUT PRODUCTS ... 16
3.3
SIMULATION ... 18
4
MODEL VERIFICATION ... 20
4.1
CALCULATIONS AND REASONING ... 20
4.2
DEMO RUN CASE ... 23
4.2.1
Parameters ... 23
4.2.2
Results ... 24
4.2.3
Evaluation ... 25
REFERENCES ... 26
APPENDIX A: PROCESS DESCRIPTION LANGUAGE (PDL) ... 27
Preface
The report in front of you is a result of my simulation assignment for the master Production Engineering and Logistics at the faculty Mechanical, Maritime and Materials Engineering (3mE) of the Delft University of Technology.
The assignment is a substitute for a literature assignment performed in the 2nd year of the
master program. It seeks to present the students with the possibility to build some skills in the field of discrete simulations. Things learned during this assignment can be useful in future assignments such as the MSc project or after graduation.
As the preferred language of the section is the English the report is written in English. The code for the simulation however is written in my native language: Dutch.
Finally I’d like to thank Dr. Ir. J. Ottjes for guiding me in the process to this final result. It took some hard work as I concurrently unofficially started off with my MSc project. As the report is now finished I’m grateful for the things I’ve learned during the development of the simulation.
Pieter van der Hammen
Delft, 22 April 2013
Summary
In this report a simulation program has been developed to model the berth and mooring processes of a liquid bulk terminal. The goal of the simulation was to find a minimum for the demurrage of the terminal. The demurrage was minimized as a function of the number of jetties, number and type of connections and the assignment method of ships to jetties. By analyzing the system, defining the different elements and their processes, and transform them into a model, the simulation was build. As assignment methods First-‐In-‐First-‐Out and Shortest Job First were selected. In order to verify the simulation, reasoning and hand calculations were used.
1
Introduction
The simulation program build for this assignment represents the berth and mooring processes of a liquid bulk terminal.
A liquid bulk terminal is a terminal where liquids or gasses such as LNG, Gasoline and Petroleum etc. are imported, exported and stored. They are a small but vital chain in the logistic chain of these liquid products.
Major costs for terminal exploiters are the demurrage costs of ships. When a ship has to wait longer than contractually agreed before it can be served at a jetty, the terminal has to reimburse the costs made.
The berth and mooring processes define for a large part the amount of demurrage of a terminal. Events that influence these processes, such as arrival patterns of ships, behave stochastically and therefore to optimize demurrage costs, simulation can be used. With addition of a planning algorithm demurrage can be further decreased.
The program for the simulation that is used is TOMAS Delphi. TOMAS (Tool for Object-‐Oriented Modeling and Simulation) is a simulation package i.a. used at the Delft University of Technology to perform discrete simulations.
The brief introduction of the report will wrap up with a description of the assignment. Following the assignment description, the simulation of the terminal is discussed. In chapter three the general user interface of the simulation program is discussed. A verification of the model and a test case are explained in chapter four.
1.1 Assignment Description
The modelling system involves the import and export of resource products and finished products from a chemical plant in gaseous and liquid gas
Example materials: naphtha, LPG by about 30 derivatives. This example is arbitrary. The model should generally configurable for all similar systems.
Global input is the total tonnage of product that is made per year. This flow is divided between the imported products and the export products. For example; 10 Mt/year, 4 Mt/year
naphtha and 6 Mt/year LPG, processed into 10/Ep Mt/year finished product, with Ep as the number of finished products.
All values must be parameterized in the model input. This i.a. applies to:
The resource products and relative flow, to be referred to g1, f1, g2, f2, etc. The end products and relative flow to identify with p1, f1, p2, f2 etc. Number of jetties.
At the jetty the products that can be pumped + pump capacities.
Customers with demand for finished products with characteristic ship size (it follows the average inter-‐arrival time of customer ships).
Inter Arrival Distribution of ships per customer and also the resource product supply.
Arriving vessels and also ships underway which is to predict the arrival time should be allocated to a jetty. A minimum of two algorithms required for this assignment:
Simple, e.g. based on FIFO.
Advanced, e.g. with provisional allocation and recalculated after every relevant event (arrival or completion ship, disruption (fog, storm, etc.)) and taking into account future ships.
Application of the model
The model should be a realistic case plan, minimizing the demurrage as a function of: The number of jetties (as little as possible least costs).
The product range per jetty (as small as possible least costs).
2
Simulation of the Terminal
The simulation model is a representation of the unloading and loading of ships in a liquid bulk terminal. The simulation takes place in broader environment, thus to understand the situation of the simulation a brief description of the terminal system is given. Afterwards the system of the simulation is described by a description of the processes, its elements and distributions. The assumptions made to create the model and the assignment methods to tactically assign ships to a jetty finalize the chapter.
2.1 The Terminal System
A liquid bulk terminal is a system to handle liquids or gasses. The liquid arrives and leaves the terminal by water, rail, road or pipe and is stored at the terminal. From the terminal storage area it is further transported to a factory. In the factory the resource product is processed and a final product is created. The final product goes back to the storage area and is retrieved when needed.
The system is illustrated by Figure 2
Figure 2: Representation of the terminal system
2.2 The Simulated System
Because simulating an entire liquid bulk terminal would be too extensive, the simulation is restricted to the loading and unloading of ships.
A terminal has a number of jetties, each containing a range of connections (pipes to and from the factory) for specific products. Per jetty only one ship can be operated at a time.
Import of raw materials takes place by pumping the product from the ship into a storage tank. Each ship has its specific pump capacity.
Export of a product is done in reverse order and is pumped from a storage tank to the ship. Each product has a given pump capacity available at that time. From a storage tank, several ships are loaded simultaneously and the capacity available per ship is evenly distributed.
The circle in Figure 3 illustrates the focus area of the simulated system within the terminal system.
Figure 3: Representation of a terminal system with the area of focus for the simulation
2.3 Objective of the simulation
To determine an optimal design for the terminal lay out a few choices have to be made. The decision of the number of jetties and more specific the number and type of connections a jetty will have is very important in that process. The decisions made are a major influence on the amount of demurrage. To find an optimal design for the terminal these parameters should therefore be examined with their respect to demurrage.
By performing multiple runs of the simulation with different configurations for the amount and lay out of the jetties, an optimum with respect to the demurrage can be examined. The objective of the simulation is therefore to find that optimum.
Furthermore the assignment method of assigning ships to a jetty can influence the demurrage. To examine the improvements that can be made by using a planning algorithm, the simulation offers two assignment methods; First-‐In-‐First-‐Out (FIFO) and an advanced assignment method.
2.3 Process Description
Different elements and their processes can describe a system. An overview of the interrelations and interactions between these elements for the simulated system are represented in Figure 4.
Figure 4: Process model of a liquid bulk terminal
The most important element with a process in the simulation is the jetty. Within the figure the physical process is described by the (un)loading square. A ship that carries a product enters the system and the jetty handles the product by (un)loading it from the ship to or from the storage
area. Before the jetty can perform its physical process it first have to make a decision which ship to serve. Therefore it first goes idle and waits until there is a ship available. After that it checks if the product carried by the ship suits his product assortment, if so the ship is assigned to the jetty.
The processes for the different elements are further described in the ‘Elements’ part of the chapter.
2.4 Elements
As described earlier, the model is built on elements and their interactions and interrelations. To create the simulation these elements are defined in element classes. An overview of the different element classes: Jetty Ship Ship Generator Weather Product Animation
The Jetty, Ship Generator, Weather and Animation are element classes with a process and the Product and Ship element classes are not. A ship is still an element class because it is an order to a jetty to unload or load the ship. The product is an element because it has certain attributes and is handled by the other elements through the system. Also, products are assigned to a jetty’s assortment.
In the rest of the chapter the element classes are described in more detail.
2.4.1 Jetty
The first element with a process is the jetty. Unloading and loading of the ships are the processes that take place at the jetty. Its number and type of connections give the constraints of the jetty. Keep in mind that a connection is dedicated to a certain product. In a way not connections, but products are assigned to the jetties. As the product elements define a connection, the assortment queue with products represents the constraints.
The assignment of connections to the jetty can be done manually or automatically. Manually the user himself chooses which connections apply to which jetty. Automatically the connections are divided over the jetties in a way that the total flow per jetty is as evenly as possible distributed. When this is the case the availability of the jetties should be the highest, resulting in the lowest demurrage. The fair distribution over the jetties can be done by sorting the connections by flow and adding the connection with the highest flow left, to the jetty with the lowest total flow.
The time it takes for a jetty to serve a ship is defined by the size of the ship and the available pump capacity. When a product is imported the pump capacity is defined by the ship, when a product is exported the pump capacity is defined the connection and the number of connections used for that specific product at that moment. The handling time in hours is the volume in dead weight tonnage (DWT) divided by the pump capacity in tonnage/hour.
AssortimentQueue van Jetty vullen vanuit ProductQueue D:= 1e6, i:= 0, j:= 0
SetLength(Index, AantalJetties) // de index array houdt de totale flow van de jetty bij.
Eerst worden alle jetties afgegaan en worden de eerste producten van hoog naar laag toegevoegd. Repeat newConnection := ProductQueue.Element(i) Aansluitingen := newConnection.Aansluitingen nrAansluiting:= 1 repeat JettyQueueElement:= JettyQueue.Element(j) newConnection.EnterQueue(JettyQueueElement.AssortimentQueue) Index[j] := (newConnection.Flow / newConnection.Aansluitingen) inc(j)
inc(nrAansluiting)
until (nrAansluiting > Aansluitingen) or (j > (AantalJetties – 1))
Bepalen of er nog aansluitingen van het product te verdelen zijn
if (nrAansluiting > Aansluitingen) then inc(i) else begin
n:= j – 2
Anders in reverse order de aansluitingen aan jetties toevoegen
repeat
JettyQueueElement:= JettyQueue.Element(n)
newConnection.EnterQueue(JettyQueueElement.AssortimentQueue) Index[n] := Index[n] + (newConnection.Flow / newConnection.Aansluitingen) dec(n)
inc(nrAansluiting)
until (nrAansluiting > Aansluitingen) inc(i)
until j > (AantalJetties – 1)
Bepalen of er nog producten zijn die aan jetties toegevoegd moeten worden
if TotaalAantalAansluitingen > AantalJetties then begin repeat
newConnection := ProductQueue.Element(i) Aansluitingen := newConnection.Aansluitingen l:= 1
Shell Sort JettyQueue zo dat de jetty met kleinste flow vooraan in de rij komt te staan. Het product met de grootste flow kan dan aan het eerste element van de rij (de jetty met de kleinste totale flow) toegevoegd worden.
Sort JettyQueue. (Shell Sort)
Voorste element van de JettyQueue selecteren
JettyQueueElement:= JettyQueue.Element(0)
Aansluiting:= JettyQueueElement.AssortimentQueue.Length
Bepalen of het aantal aansluitingen niet het mazimum overschrijdt en zo niet, aansluiting toevoegen aan assortiment queue.
if Aansluiting < MaxAansluitingenJetty then begin
2.4.2 Ship
The ships that arrive and leave the terminal have characteristics, but not a process in itself. As earlier described it is an element class because it gives the order to a jetty to start a load or unload process. The characteristics given to a ship that is created by a ship generator are:
Product. The product is drawn from the product assortment of the terminal. The possibility of a certain product drawn is defined by its flow relatively to the total terminal flow.
Capacity. The ship capacity is determined by the distribution of the different ship types and their specific capacities.
Sailing time. The time it takes to sail to the jetty.
Docking and Undocking time. The time it takes to dock or undock a ship.
2.4.3 Ship Generator
To generate ships with an inter arrival time according to a given distribution a ship generator element has to be created. It creates ships with all its attributes discussed earlier. For the simulation two separate generators for the raw materials and finished products are used. This is done because they represent two different ship type distributions.
2.4.4 Weather
The terminal is influenced by weather conditions. In order to simulate this effect an element class with a process is build. As weather conditions above a certain threshold result in an interruption of all the jetty processes, the process of the weather element is to pause and restart the jetty element class process.
To determine when and how long the jetty process has to be interrupted the weather element makes use of normal distributions. The means of the distributions are given as input parameters.
2.4.5 Product
Another element that has no process is the product. The product is carried by a ship and handled by a jetty with a suitable connection. Characteristics of the product are:
Type. Defines what product needs to be handled.
Resource product or a finished product. Defines if the product is imported (resource) or exported (finished).
Flow. The total flow of a product in Mt/year
Number of connections. Defines the number of jetties at which the product is available. Pump capacity. This is the total pump capacity of the product that is divided over his
connections. This pump capacity only counts when a product is loaded onto a ship, when De flow aan de totale flow van de jetty toevoegen en er een groot getal D aan toevoegen
zodat de jetty achteraan de rij wordt gesorteerd en niet twee keer hetzelfde product krijt toegewezen.
Index[0] := Index[0] + (newConnection.Flow / newConnection.Aansluitingen) + D inc(l)
else begin
Index[0] := Index[0] + D until l > Aansluitingen
Het getal D weer van de flow aftrekken zodat de daadwerkelijke flow overblijft. for y := 0 to AantalJetties -‐ 1 do begin
if Index[y] > D then begin Index[y] := Index[y] – D inc(i)
a ship is being unloaded the pump capacity is defined by the ships pump capacity. It is therefore independent of the number of connections working at that time.
For the batch simulation, the user does not define the amount of connections. This is because the parameter is varied during the simulation. By assigning the spare connection to the product with the highest flow per connection, the assignment of the number of connections per product is done. If the connections are divided over the jetties in the way earlier explained, this will result in the lowest yearly flow per jetty with that number of connections.
Process Description Language for the assignment of a connection to a product:
Proces voor toewijzen aantal connecties per product in batch process
Elk product moet ten minste 1 aansluiting krijgen.
AantalProducten:= ProductQueue.Length for i := 0 to (AantalProducten -‐ 1) do begin myProduct:= ProductQueue.Element(i) myProduct.Aansluitingen:= 1
Als het aantal jetties groter dan 1 is, dan moeten de extra aansluitingen verdeeld worden anders maakt het niet uit en blijft het bij 1 aansluiting per product. Een tweede aansluiting kan namelijk toch niet aan een andere jetty teogevoegd worden.
if AantalJetties > 1 then begin Aansl:= 0
RestAansluitingen:= AantalAansluitingen -‐ AantalProducten
Bij een enkele overgebleven aansluiting wordt deze altijd aan het product met de grootste flow toegevoegd.
if RestAansluitingen = 1 then begin myProduct:= ProductQueue.Element(0) myProduct.Aansluitingen:= 2
inc(Aansl)
Bij meer dan 1 overgebleven aansluitingen moeten deze verdeeld worden over de producten met de grootste flow per aansluiting
if RestAansluitingen > 1 then begin i:= 0
Repeat
ProductQueue wordt gesorteerd op flow per aansluiting van hoog naar laag. Zo wordt er aan het product met de hoogste flow een extra aansluiting toegevoegd en gaat zijn flow per aansluiting omlaag.
ProductQueue Sorteren (Shell Sort) myProduct:= ProductQueue.Element(i)
if myProduct.Aansluitingen < AantalJetties then begin myProduct.Aansluitingen:= myProduct.Aansluitingen + 1 inc(Aansl)
i:= 0 else i:= i + 1
2.4.6 Animation
To draw the animation during the simulation an element class Animation is created. Its process is to draw the ships in the ship queue, jetties etc.
2.5 Queues
There are three general queues:
TerminalWaitingQueue where ships are waiting to be processed by a jetty. JettyQueue, which contains the jetties
ProductQueue that contains the complete product assortment of the terminal.
Furthermore a jetty has an assortment queue and a ship queue. The assortment queue is filled with products and they sum up the assortment of the jetty. When a ship is in the TerminalWaitingQueue and the jetty has to select a ship, the products of the assortment queue are compared with the product the ship is carrying. The ship queue is the queue where dedicated ships for the jetty are waiting. This queue is only used when an advanced assignment method is chosen.
2.6 Distributions
To describe the arrival patterns of the ships in the system, three different kinds of distributions are used: exponential, normal and an Erlang-‐k distribution. It is the users choice what will best fit his description of the inter arrival times. Furthermore normal and uniform distributions are used to describe behaviours as the ship capacities and sailing times etc.
2.6.1 Exponential Distribution
To describe a random arrival process the most common way to do that is with a Poisson process. A Poisson process is a stochastic process which counts the number of events and the time that these events occur in a given time interval. The time between each pair of consecutive events has an exponential distribution and each of these inter-‐arrival times is assumed to be independent of other inter-‐arrival times.
2.6.2 Normal Distribution
The central limit theorem states that, given certain conditions, the mean of a sufficiently large number of independent random variables, will be approximately normally distributed. The theorem implies that a Poisson distribution can be approximated by a normal distribution for a large number of variables. Because the simulation has a great number of ships arriving, a normal distribution could be used to describe the arrival times of ships in the simulation.
Apart from the usage in the arrival patterns the normal distribution is used to describe the behaviour of the capacities of the ships. The mean of the distributions is the arithmetic mean of the minimum and maximum. The minimum and maximum are chosen as the three-‐sigma interval and therefore the standard deviation is the difference between the mean and the minimum or maximum ((mean – minimum) / 3) divided by three.
Also the weather process makes use of a normal distribution. The user and its information about the weather characteristic of the terminal determine the mean. The standard deviation is determined by the mean divided by three. This is because it is chosen that the minimum of zero is three sigma’s away from the mean.
2.6.3 Erlang-‐k Distribution
Where a Poisson process describes events that occur independently with an average rate, an Erlang-‐k distribution describes the time between k events happening. When describing the inter arrival time between two ships, an Erlang-‐2 distribution will suit the description.
2.6.4 Uniform Distribution
The sailing, docking and undocking time use uniform distributions between a minimum and a maximum. The user defines the minimum and maximum and the chance of a time occurring within that interval is all equally likely.
2.7 Assignment Methods
When ships arrive they have to be assigned to a jetty. The way that is done can have a great influence on the total demurrage of the terminal. For the simulation two type of assignment methods are used: First In First Out (FIFO) and an advanced method.
2.7.1 First In First Out (FIFO)
The FIFO method is easily described by the fact that the first ship that arrives will be the first ship that is available for a jetty. This is a much uncontrolled process and could result in high demurrage costs.
2.7.2 Advanced
Because FIFO does not take into account parameters that influence the handling time of a ship, a more tactical assignment approach can be taken to improve the total demurrage of a terminal. The advanced assignment method chosen in the simulation is based on fact that if you do the shortest jobs in a queue first the total waiting time of the elements will be the shortest. This is a scheduling technique analogue to the ‘shortest job first’ algorithm used in operating systems.
How it works: when a ship enters the system the advanced assignment method first measures the total handling time of the jetties where the ship could be handled. Then it selects the jetty with the shortest handling time and sorts the jetty’s ship queue according to the shortest to largest handling time of a ship.
The problem could arise that when a lot of ships with short handling times are arriving, a ship with a long handling time has to wait for a long time, because every time a ship with a shorter handling time is sneaking in first. Solution of this problem could be the use of a ‘highest response ratio next’ algorithm. Here ships get a higher priority when they are waiting longer, which prevents ships waiting indefinitely. The result is that a ship with a long waiting time is able to compete with a ship just arriving with a short handling time.
Another method is to set a maximum waiting time and add the ship that surpasses that threshold to the front of the queue. The choice of the maximum waiting time is very important here, because if the maximum waiting time is set too low it will result in more demurrage, but setting it to high could result in a single ship waiting for a very long time.
2.8 Parameters
The parameters that can be altered by the user to represent the system are: Duration of the simulation. By default set on a year.
Number of jetties. Will define for a large amount the demurrage.
Advanced (Shortest Job First) Assignment Method
Bepalen of Advanced methode geselecteerd is
If Advanced then begin k := 0
MinServiceTime:= 1e12
Jetty selecteren waar schip aan ShipQueue toegevoegd kan worden. Assortiment queues worden vergeleken met product en de service tijd per jetty wordt bepaald.
For i:= 0 to (JettyQueue.Length -‐ 1) do begin JettyElement:= JettyQueue.Element(i)
For j:= 0 to (JettyElement.AssortimentQueue.Length -‐ 1) do begin Assortiment:= JettyElement.AssortimentQueue.Element(j) if newShip.Product = Assortiment.Soort then begin
Service time bepalen door eerst de werktijd die de jetty nog te gaan heeft toe te voegen en dan per element in de ShipQueue de verwachte handling time toe te voegen.
ServiceTime:= 0 + JettyElement.WorkTimeLeft
for int := 0 to JettyElement.ShipQueue.Length -‐ 1 do begin ShipElement:= JettyElement.ShipQueue.Element(int)
ServiceTime:= ServiceTime + (ShipElement.Inhoud/ShipElement.PumpCapacity)
Bepalen jetty met kleinste service time
if ServiceTime < MinServiceTime then begin k:= i
MinServiceTime:= ServiceTime
Jetty selecteren met de kleinst service time
JettyElement:= JettyQueue.Element(k)
newShip.EnterQueue(JettyElement.ShipQueue)
Sorteren Jetty.ShipQueue zodat de ‘shortest job first’ in de rij komt te staan
Shell Sort Jetty.ShipQueue
N := JettyElement.ShipQueue.Length gap := N div 2
repeat repeat
gapDone:= True
for int := 0 to ((N-‐1) -‐ gap) do begin
if ((Inhoud(int) / PumpCapacity(int)) < (Inhoud(int + gap) / PumpCapacity(int + gap)) then begin
temp = JettyElement.ShipQueue.Element(int)
JettyElement.ShipQueue.Element(int) = JettyElement.ShipQueue.Element(int + gap)
JettyElement.ShipQueue.Element(int + gap) = temp gapDone := False
until gapDone gap := gap div 2 until gap = 0
The maximum amount of connections per jetty. Together with the number of jetties defines the maximum amount of products to be handled within the terminal.
Number of products.
Yearly flow per products. The total yearly throughput of a product that is handled by the terminal.
The amount of connections per product. Increases the amount of jetties where a product can be handled.
The pump capacity of a connection.
The capacities of the different type of ships. By default the average freight rate assessment (AFRA) standard is used. This is an assessment that classifies tankers of different sizes.
The pump capacity of the ships.
The distribution of the type of ships. The percentages of a ship type. For instance the user could choose that 50% of the ships arriving with a resource product are of Long Range 1 size.
The weather characteristics. Here the user has to find information on the statistic of the local weather of the terminal. The averages of the fog, lightning and storm days can be entered as an input. Furthermore the user can select if the weather should be taken into account in the simulation of the system.
The type of assignment method. FIFO or an advanced method.
The minimum and maximum sailing, docking and undocking time. The maximum and minimum set a boundary for the uniform distribution. The times specific times are drawn from the distribution.
The types of distribution for inter arrival times. Exponential, Normal or Erlang-‐k.
2.9 Assumptions
Finally to fit the model for use a few assumptions are made.
In general:
All transport takes place by water.
There is always enough storage capacity for resource products. There are always enough finished products available.
Total import equals the total export in tons. A ship carries only a single product.
Ships are not loaded and unloaded in the same berth process. A jetty can only handle one ship at a time.
Distributions:
The arrival process of the ship is described by a Poisson process The weather characteristics are described by a normal distribution
Times for sailing to the jetty, to dock and to undock are uniformly distributed.
3
General User Interface
The general user interface (GUI) of the simulation represents the interface in which the user is able to interpret and modify the simulation. Two different types of simulations can be chosen: single or batch. A single run performs a simulation for a single set up. A batch run performs a set of simulations in which the amount of connections and jetties are varied. A batch simulation can be used to examine an optimal terminal lay out for a certain product assortment.
For every type the interface for the input of parameters and products, and the output of the simulation are given.
3.1 Input Parameters
For the single and batch run practically the same parameters and interface is used. Because they are similar only the single run input parameter interface is discussed. The numbers correspond with the red squares in Figure 6.
1. The buttons here are from left to right: to go back to the screen where you can choose to perform a single or a batch run. Next to that are the two buttons to open or save a list with input parameters. The button on the far right is to close the simulation program.
2. Here from top to bottom the length of the simulation, number of jetties, maximum connections of a jetty, the number of raw material and finished product are defined.
3. The minimum and maximum times that it takes to sail to the jetty, to dock and to undock the ship can be entered here.
4. The distributions of the different ship types for the raw materials can be put in on the left. The distribution for the finished product can be put in on the right. By default the distribution raw materials is 50/50 Medium Range and Long Range 1. For the finished product that is 50/50 General Purpose and Barge.
5. The capacities for the different ship types are defined here. For a standard the AFRA-‐ standard is used. To adjust the capacities the checkbox below has to be checked.
6. In the top radio box the distribution for the inter arrival times can be chosen. In the bottom radio box the assignment method is chosen.
7. Here the characteristics for the weather are entered. First the frequency and the average duration for a storm are chosen. The number of days per month that fog or lightning is happening are entered in the tow columns on the right. Average duration of a lightning and fog period are entered in the last column
8. The user can now perform a demo run, where a pre-‐defined product list is used, or enter a product list themselves.
Figure 6: Interface to enter the system parameters.
To ensure that the simulation will not give any errors, the inputs from the user are checked for conversion errors etc. before going on to the next screen.
3.2 Input Products
If a user has chosen to enter their product list, a window of Figure 8 pops up.
1. Again there are the options to go back to the previous screen. This enables the user to modify the parameters without having to restart the whole simulation program. Furthermore the product list can be saved, or a saved list can be opened.
2. If the user wants to enter the product and assign the jetty connections manually, it can check the checkbox on the top. A drop down box will appear where a jetty can be selected. The boxes below will show the amount of possible connections the jetty has left and the type of connections already assigned to the jetty. The button at bottom empties the part of the product list assigned to the jetty
3. From top to bottom: first the name of the product can be filled in. Second the yearly flow of the product can be entered. Below the edit box of the flow the number of connections for the product can be entered. If the manually add connections is checked the number of connections is always one. The box is then grey and cannot be altered. When the product is a raw material the raw material product is checked and then no pump capacity has to be filled in. If the product is a finished product the pump capacity in tons per hour can be entered for the product.
The boxes in the bottom show the amount of raw materials and finished product with their total flow so far. If the flow of the raw materials does not equal the flow of finished product yet, the text in red will inform the user of the problem. The same will happen if the total amount of connections is smaller than the amount of jetties.
The left button on the bottom adds the product to the product list. Every time a user wants to add a product to the list the inputs are checked for conversion errors etc. to prevent errors during simulation.
The right button brings the user to the simulation. To restrict the user to start a simulation before all conditions are met, the button is only enabled when everything is ok.
4. Here the product list is listed in a memo box. It gives the number and parameters entered for the products, thus the type, resource or not, flow, connections, and pump capacity. The upper button on the bottom removes the last product added to the list. The bottom button clears the whole list.
3.3 Simulation
When all products and parameters are entered the user comes to a screen where he can start the simulation (Figure 10).
1. On the top left the big button starts the simulation. The three buttons next to that pause resume or stop the simulation. The memo box below the buttons show some input parameters and the results from the simulation.
The results of the simulation represent: Mean waiting time.
Max demurrage. This can be for instance really high when using an advanced assignment method. If so, some repercussions earlier discussed have to be taken. Total demurrage. Basic result that has to be minimized.
Amount of ships demurrage over 24 hr. Gives an indication how many ships have to wait really long to be served by a jetty. Maybe your total demurrage is low, but if the amount of long waiting ships is still high it can’t be a good thing for your terminal business.
Mean waiting queue length. Can’t have too many ships having to wait in line.
2. Here the graphs are shown. There are five graphs, which show the average demurrage, the utilization rate of a jetty, the average waiting queue length, the demurrage per ship and the amount of weather standby per day.
The average demurrage and the average length of the waiting queue give an indication on how the demurrage increases or decreases over time. The utilization graph shows how busy a jetty is over the amount of time. If the flows are fairly distributed over the jetties their utilization should be fairly distributed as well.
To see if there are any extreme events with high demurrage the chart of demurrage per ship is shown. The graph of the weather standby is used to see the influence of weather standby on the demurrage. When the chart is used with the demurrage per ship for instance the user can examine how the demurrage is affected the days after the weather standby happened.
With the two checkboxes on the bottom the animation and graphs can be made visible or invisible. When they are not visible the speed of the simulation will increase.
3. Here an animation is made which shows ships waiting in the TerminalWaitingQueue, the jetties when they are working or idle. It gives an indication if for instance one jetty is idle all the time or if the ship queue is filling up out of proportions. It is an easy and simple way to see if there are any problems.
During the setup of a batch run the user is, after he entered the product list for the terminal, transferred to the screen of Figure 9. Here he can choose to run a batch simulation with the product list he just created or create different batch files with different product lists first. If the user just wanted to make a batch file and not run the simulation the user can close the simulation by clicking on the button on the right.
Figure 10: Interface during simulation of a single run
4 Model Verification
To perform a verification of the simulation model, results of different simulation runs are compared to hand calculations and reasoning.
Where verification is a check if a simulation program works according it specifications, validation examines if the simulation program describes the reality in a proper manner. Since there is no data from reality available to validate the model and the simulation is used for educational purpose only, no validation of the simulation has been performed.
To check the performance of the model a demo batch run is done and evaluated.
4.1 Calculations and Reasoning
To verify the model with calculations a hand simulation is done and compared to the results of the simulation program. The simulation is run with:
2 jetties.
1 resource product and 1 finished product, with both a flow of 10 Mt/year.
One type of ship is used for resource product. Capacity is 50,000 DWT and 1,500 t/hr. One type of ship is used for finished product. Capacity is 2,500 DWT and 1,500 t/hr. The first 50 ships that arrive in the system are analyzed.
No weather influence is taken into account.
These constant parameters are used so that the jetties performance of selecting a ship and handling it can be investigated without stochastic influences of ship sizes etc.
The results from the simulation are:
As you can see the calculations by hand and the simulation match perfectly. Differences in ship numbers is because of the fact that in the results of the simulations, the ship number that is finished is used, and in the hand calculations the ship numbers that arrived. Because a ship with a resource product has a longer handling time, already a few ships with finished products are handled before that ship is finished, hence the ships with finished products show up earlier in the simulation result.
From reasoning you can say that if in the model an extra jetty is added, the total demurrage should decrease. When performed in the model we can indeed see that the demurrage time decreases. Results are shown in Figure 14 and Figure 13: for 1 jetty the total demurrage is 489.82 hour and for 4 jetties the total demurrage is 79.89 hour.