Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
THRUST ALLOCATION IN DYNAMIC POSITIONING SYSTEMS
Document Type and Number:
WIPO Patent Application WO/2012/080241
Kind Code:
A1
Abstract:
A computer-implemented method and a generator for generating thruster settings for an over-actuated thrust allocation system are described. Said thruster settings are configured to control thrusters of at least one craft such that the craft is kept on a desired position or track. The method comprises; receiving a total desired thrust, preferably the total desired force and the total desired moment, associated with said desired position or track; calculating said thruster settings by executing a program including minimizing a cost function associated with said thrusters on the basis of said total desired thrust and one or more non-linear thruster constraints associated with the physical or operational limits of said thrusters; wherein said cost function and said one or more non-linear thruster constraints are modelled as a second order cone program comprising a linear cost function and one or more second-order convex cone constraints.

Inventors:
TJALLEMA ARJEN RENE (NL)
ROOS CORNELIS (NL)
Application Number:
PCT/EP2011/072598
Publication Date:
June 21, 2012
Filing Date:
December 13, 2011
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
BLUEWATER ENERGY SERVICES BV (NL)
TJALLEMA ARJEN RENE (NL)
ROOS CORNELIS (NL)
International Classes:
G05D1/02; B63H25/42
Foreign References:
US20050080522A12005-04-14
US20050080522A12005-04-14
US20100228409A12010-09-09
Other References:
YANG LIU ET AL: "A New Method for Control Allocation Based on Second-Order Cone Program", INTELLIGENT COMPUTATION TECHNOLOGY AND AUTOMATION (ICICTA), 2010 INTERNATIONAL CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, 11 May 2010 (2010-05-11), pages 26 - 31, XP031715610, ISBN: 978-1-4244-7279-6
JOHANSSON B ET AL: "Untripped SUV rollover detection and prevention", DECISION AND CONTROL, 2004. CDC. 43RD IEEE CONFERENCE ON, IEEE, PISCATAWAY, NJ, USA, vol. 5, 14 December 2004 (2004-12-14), pages 5461 - 5466, XP010796491, ISBN: 978-0-7803-8682-2
THOR I FOSSEN ET AL: "A Survey of Control Allocation Methods for Ships and Underwater Vehicles", CONTROL AND AUTOMATION, 2006. 14TH MEDITERRANEAN CONFERENCE ON, IEEE, PI, 1 June 2006 (2006-06-01), pages 1 - 6, XP031057165, ISBN: 978-0-9786720-1-0, DOI: DOI:10.1109/MED.2006.235844
FOSSEN: "A Survey of Control Allocation Methods for Ships and Underwater Vehicles", NORWEGIAN UNIVERSITY OF SCIENCE AND TECHNOLOGY, 2006
LIU ET AL.: "A new method for control allocation based on second order cone program", ICICTA, 2010, pages 26 - 31, XP031715610
N. DARMARKAR: "A new polynomial-time algorithm for linear programming", COMBINATORICA, vol. 4, no. 4, 1984, pages 373 - 395, XP000747276
Attorney, Agent or Firm:
VISSCHER, Erik Henk et al. (XK Amsterdam, NL)
Download PDF:
Claims:
CLAIMS

1. Computer-implemented method for generating thruster settings for an over-actuated thrust allocation system, said thruster settings controlling a plurality of thrusters of at least one floating structure or vessel such that said floating structure or vessel is kept on a desired position or track, the method comprising:

receiving a total desired thrust as input, preferably the total desired force and the total desired moment,

associated with said desired position or track;

calculating said thruster settings by executing a program including minimizing a cost function associated with the power consumption of at least part of said plurality of thrusters on the basis of said total desired thrust and one or more non-linear thruster constraints associated with the physical or operational limits of said plurality of thrusters;

wherein said thrust allocation system is modelled as a second order cone program comprising said cost function, one or more linear constraints and one or more second-order convex cone constraints.

2. Method according to claim 1, wherein said at least one craft comprises n thrusters wherein n > 3 and/or wherein said craft is associated with a coordinate system, each of said plurality of thrusters being positioned at a position px,py relative to the origin of said coordinate system.

3. Method according to claims 1 or 2 further comprising :

outputting said thruster settings to a thruster control system.

4. Method according to any of claims 1-3, wherein said cost function comprises a quadratic function of the surge and sway components of the thrust delivered by at least part of said thrusters.

5. Method according to any of claims 1-4, wherein said one or more non-linear thruster constraints may comprise a non-linear maximum thrust output constraint, preferably said non-linear maximum thrust output constraint being defined by:

wherein :

i is the thruster number;

n is the total number of thrusters;

Fi is the delivered thrust for thruster i (kN); Fmax,i is the maximum thrust for thruster i (kN);

6. Method according to any of claims 2-5, wherein the minimization of said cost function is defined by the

expression :

wherein : and wherein:

Wi is the weighting factor for thruster i;

( i is a constant used in the cost function (slkW IkN) req is the required total thrust (kN)

Pmax,i is the maximum power for thruster i (kW)

Fmax,i is the maximum thrust for thruster i (kN)

Fx,i is the thrust in x-direction by thruster i (kN)

Fy,i is the thrust in y-direction by thruster i (kN)

Fx, req is the required total thrust in x-direction (kN)

Fy,req is the required total thrust in y-direction (kN)

Px,i is the x-position of thruster i (m)

Py,i is the y-position of thruster i (m)

Mreq is the required total moment (kNm)

7. Method according to claims 5 or 6, wherein non-linear constraint is modelled as a second order cone constraint defined by:

F

eUA≤i≤n

F

wherein :

8. Method according to claim 7, wherein said second order cone program comprises at least one linear cost

function, and, optionally, at least 2n+2 linear constraints and at least 2 second-order convex cone constraints,

preferably said second order cone program being defined by:

herein :

is a variable to be minimized by the optimization algorithm

9. Method according to any of claims 2-8, wherein said cost function is further associated with a first virtual thruster positioned at the origin of said coordinate system, configured to have a lower preference than at least part of said thrusters, such that during the execution of said minimization program, excess thrust that cannot be delivered by said thrusters is allocated to said first virtual thruster.

10. Method according to claim 9, wherein said cost function further comprises a second virtual thruster,

positioned away from the origin of said coordinate system, configured to have a lower preference than said first virtual thruster, such that priority is given to satisfying the required moment during the execution of said minimization program.

11. Method according to any of claims 1-10, wherein said one or more non-linear thruster constraints comprises a non-azimuthing constraint related to at least one of said thrusters, the non-azimuthing constraint configured to impose substantially zero thrust in longitudinal or traverse

direction for at least one of said thrusters.

12. Method according to any of claims 1-11, wherein said one or more non-linear thruster constraints comprises a directional constraint on the angle of the force delivered by at least one thruster, said directional constraint being configured to model the directional limitations of a rudder on the delivered thrust, preferably said directional constraints being configured as: tan <G„

F

\ F J tan(-«,nax) wherein amax is the maximum rudder angle.

13. Method according to claim 12, wherein the directional limitation of the at least one of the thrusters is modelled by transforming said second-order cone constraint into a modified second-order cone with an elliptical shape.

14. Method according to any of claims 1-13, wherein said one or more non-linear thruster constraints comprises a rate of change constraint related to physical limitations of at least one of the thrusters, said rate of change constraint configured to limit the rates of change in the force or moment setting of the at least one of the thrusters, preferably said rate of change constrain being defined as: wherein Fit is the delivered thrust for thruster i in the present time step and is Fit_1 is the delivered thrust for thruster i in the previous time step and wherein Fmax is the maximum change in thrust in one time step.

15. A generator for generating thruster settings for use in an over-actuated thrust allocation system, said

thruster settings controlling thrusters of at least one floating structure or vessel such that said floating structure or vessel is kept on a desired position or track, said

generator comprising:

means for receiving a total desired thrust, preferably the total desired force and the total desired moment, associated with said desired position or track;

a processor for calculating said thruster settings by executing a program including minimizing a cost function associated with said thrusters on the basis of said total desired thrust and one or more non-linear thruster constraints associated with the physical or operational limits of said thrusters ;

wherein said cost function and said one or more nonlinear thruster constraints are modelled as a second order cone program comprising a linear cost function and at least one second-order convex cone constraint.

16. Dynamic positioning controller for use in a floating structure or vessel comprising:

a position controller configured for receiving a desired position and a measured position of said floating structure or vessel and for determining on the basis of said desired and measured position a total desired thrust;

a thruster settings generator according to claim 15, wherein said generator is further configured to output said thruster settings to a thruster control system; and,

a position sensor configured to measure the position of said floating structure or vessel and to send a measured location to said position controller.

17. A computer program product, implemented on computer-readable non-transitory storage medium, the computer program product configured for, when run on a computer, executing the method steps according to any of claims 1-14.

Description:
Thrust Allocation in Dynamic Positioning Systems

Field

The invention generally relates to thrust allocation in dynamic positioning systems. In particular, though not necessarily, to a method and a generator for generating thruster settings for a thrust allocation system, a dynamic positioning system using such generator and a computer product program using such method.

Background

Dynamic positioning (DP), in general, relate to systems capable of actively controlling the position of a vessel. DP systems integrate a number of systems on a vessel to accurately manoeuvre a vessel. A DP system tracks

variables such as the position of the vessel, environmental forces, and determine the thrust needed to obtain desired heading and position. In recent years, the improvement of positioning technology and computing systems has allowed for sophisticated and precise dynamic positioning systems.

The recent expansion of oil and gas exploration industry has prompted the need for reliable DP systems that can actively control a vessel's position in harsh ocean environments. Gradually replacing or assisting traditional anchor leg mooring systems, DP systems can response rapidly to weather and have the ability to work in any water depth.

When a ship is operating at sea, it is exposed to wind, waves, current and possibly other external forces. A DP system controls a ship' s position by counteracting these forces with the ships propellers or any other means to generate a force (or generally/interchangeably referred to as thrusters). To counteract those forces, a DP system typically operates as a combined feedback and feed-forward control system. First, the DP system compares the desired position and the actual position to calculate the position error. The wind force is then added as a feed-forward signal. Based on the position error and wind force, a required force and moment is determined. Then, a thrust allocation algorithm determines optimal thruster settings to satisfy these force and moment requirements. This last step, i.e. the translation from required total force and moment to thruster settings, is generally referred to as a "thrust allocation" or "thrust optimization" problem.

In modern vessels where DP system controls a relatively large number of thrusters, the DP feedback control system is usually over-actuated with far more than three degrees of freedom. In an over-actuated system, no unique thruster setting to deliver the required force and moment exists. Therefore, an optimal solution out of a set can be chosen. To find an optimal solution, a thrust allocation and optimization algorithm is included in DP systems, acting as an interface between a position controller and the thruster controllers, to select optimal solutions (i.e., thruster settings) for a given required force and moment.

Typically, the thrust allocation problem includes linear and non-linear constraints imposed by the physical limits and characteristics of the thrusters. For example, the thrust allocation algorithm must account for the maximum thrust capacity (i.e., as a constraint on the optimization problem) of an individual thruster to produce correct results. Therefore, thrust allocation algorithms that solve the thrust allocation problem may not find the optimal solution.

Furthermore the algorithms can be computationally expensive, especially when methods use linearization and iterative loops.

Known thrust allocation concepts and optimization methods used therein are described in US2005/0080522 and the article by Fossen et . Al . in "A Survey of Control Allocation Methods for Ships and Underwater Vehicles" (Norwegian

University of Science and Technology, 2006) . These known methods are suitable for incorporating common linear

constraints of the optimization problem but cannot efficiently deal with non-linear constraints, which are inherent to physical limitations of the thruster system of a vessel. US Patent Application Publication (No.

US2010/0228409) describes a way of dealing with a nonlinear optimization problem in the context of a method for landing a spacecraft. Similarly, the article by Liu et al. with title "A new method for control allocation based on second order cone program" ICICTA 2010, IEEE, p. 26-31 provides a mathematical description of the a SOCO method for use in flight control systems. These documents illustrate that a method for dealing with a first non-linear optimization problem cannot be readily applied to a different, but related second order non-linear optimization problem.

Hence, there is a need in the art for methods and systems for thrust allocation in dynamic positioning systems that accommodate non-linear constraints in a way that allows for efficient numerical methods. Moreover, there exists a need for an optimization method for thrust allocation, which may handle thruster constraints without linearization or iterative loops, in order to find optimal solutions to the thrust allocation problem.

Summary

It is an object of the embodiments disclosed herein to perform thrust allocation with relatively lower

computational costs while being able to incorporate non-linear constraints of the system appropriately. In one aspect the disclosure relates to a computer-implemented method for generating thruster settings for an over-actuated thrust allocation system said thruster settings controlling thrusters of at least one craft such that said craft is kept on a desired position or track. The method may comprise: receiving a total desired thrust, preferably the total desired force and the total desired moment, associated with said desired position or track; calculating said thruster settings by executing a program including minimizing a cost function associated with said thrusters on the basis of said total desired thrust and one or more non-linear thruster constraints associated with the physical or operational limits of said thrusters; wherein said thrust allocation system is modeled as a second order cone program comprising an objective function, one or more linear constraints and one or more second-order convex cone constraints.

Hence, modelling the non-linear, over-actuated thruster allocation problem as a second order cone program wherein non-linear constraints are formulated as a second- order cone constraint provides an improved model of the thrust allocation problem which at the same time requires less computational effort. The method allows real-time generation of optimal thruster settings using a desired total thrust in terms of surge, sway and jaw thrust.

According to one aspect, said at least one craft comprises n thrusters wherein n > 3 and/or wherein said craft is associated with a coordinate system, said thrusters being positioned at positions p x , p y relative to the origin of said coordinate system.

According to another aspect, the method further comprises outputting said thruster settings to a thruster control system.

According to yet another aspect, the cost function is related to the power consumption of at least part of said thrusters .

In one embodiment, said cost function comprises a quadratic function of the surge and sway components of the thrust delivered by at least part of said thrusters.

In yet another embodiment, said one or more nonlinear thruster constraints may comprise a non-linear maximum thrust output constraint, preferably said non-linear maximum thrust output constraint being defined by:

wherein n is the number of thrusters.

In a further embodiment, the minimization of said objecti function is defined by the expression: wherein :

In a yet further embodiment, said non-linear constraint is modelled as a second order cone constraint defined by:

F„

V,\≤i≤n

F

wherein :

In some embodiments, said second order cone program comprises at least one linear objective function, at least 2n+2 linear constraints and at least 2 second-order convex cone constraints, preferably said second order cone program being defined by:

According to one embodiment, said cost function is further associated with a first virtual thruster positioned at the origin of said coordinate system, configured to have a lower preference than at least part of said thrusters, such that during the execution of said minimization program, excess thrust that cannot be delivered by said thrusters is allocated to said first virtual thruster.

According to another aspect, said cost function further comprises a second virtual thruster, positioned away from the origin of said coordinate system, configured to have a lower preference than said first virtual thruster, such that priority is given to satisfying the required moment during the execution of said minimization program.

According to yet another aspect, said one or more non-linear thruster constraints comprises a non-azimuthing constraint related to at least one of said thrusters, the non- azimuthing constraint configured to impose substantially zero thrust in longitudinal or traverse direction for the at least one of said thrusters.

In several embodiments, said one or more non-linear thruster constraints comprises a directional constraint on the angle of the force delivered by at least one of the thrusters related to at least one thrusters including a rudder, said directional constraint configured to model the rudder' s directional limitations on the delivered thrust.

In some embodiments, the directional limitation of the at least one of the thrusters is modelled by transforming said second-order cone constraint into a modified second-order cone with an elliptical shape.

According to one embodiment, wherein said one or more non-linear thruster constraints comprises a rate of change constraint related to physical limitations of at least one of the thrusters, said rate of change constraint configured to limit the rates of change in the force or moment setting of the at least one of the thrusters.

According to one aspect, the disclosure relates to a generator for generating thruster settings for use in an over- actuated thrust allocation system, said thruster settings controlling thrusters of at least one craft such that said craft is kept on a desired position or track. Said generator comprises means for receiving a total desired thrust,

preferably the total desired force and the total desired moment, associated with said desired position or track; a processor for calculating said thruster settings by executing a program including minimizing a cost function associated with said thrusters on the basis of said total desired thrust and one or more non-linear thruster constraints associated with the physical or operational limits of said thrusters; wherein said cost function and said one or more non-linear thruster constraints are modelied as a second order cone program comprising a linear objective function and at least one second-order convex cone constraint.

According to a further aspect, this disclosure relates to a dynamic positioning controller. Said dynamic positioning controller comprises a position controller configured for receiving a desired position and a measured position and for determining on the basis of said desired and measured position a total desired thrust; a thruster settings generator according to embodiments disclosed herein, wherein said generator is further configured to output said thruster settings to a thruster control system; and, a position sensor configured to measure the position of the craft and to send a measured location to said position controller.

According to yet a further aspect, this disclosure relates to a computer program product, implemented on

computer-readable non-transitory storage medium, the computer program product configured for, when run on a computer, executing the method steps according embodiments described herein .

The invention will further be illustrated with reference to the attached drawings, which schematically show embodiments according to the invention. It will be understood that the invention is not in any way restricted to these specific embodiments.

Brief description of the drawings

FIG. 1 depicts various degrees of freedom for the movement of a ship according to an exemplary embodiment of the disclosure .

FIGS. 2a-c depict various exemplary propulsion layouts according to some embodiments of the disclosure.

FIG. 3 depicts a system diagram of a dynamic positioning system according to one exemplary embodiment of the disclosure. FIG. 4 depicts a control diagram of a dynamic positioning feedback system according to one illustrative embodiment of the disclosure.

FIG. 5 depicts positions of exemplary dummy thrusters of a ship according to one illustrative embodiment of the disclosure .

FIG. 6 depicts the differences between an azimuthing thruster and a propeller with rudder according to one

illustrative embodiment of the disclosure.

FIG. 7 depicts a test methodology for comparing the performance improvement of a dynamic positioning system described according to one illustrative embodiment of the disclosure as compared to a known standard system.

FIGS. 8a-f depict various test results from a case study illustrating the differences in performance using a dynamic positioning system described according to one

exemplary embodiment of the disclosure.

FIGS. 9a-f depict various test results from another case study illustrating the differences in performance using a dynamic positioning system described according to one

exemplary embodiment of the disclosure.

Detailed description When a ship, a vessel or a floating structure such as a drilling rig is operating at sea, a Dynamic Positioning (DP) system may use thrusters to counteract external forces such as wind, waves, current or other external forces. A DP system may actively control a ship' s position by counteracting these forces with the ship's thrusters, propellers and rudders, or other means to generate a force. DP systems may control a ship's position in three degrees of freedom: surge, sway and yaw. To illustrate, FIG. 1 depicts various degrees of freedom for the movement of a ship according to an exemplary

embodiment of the disclosure. Surge and sway are related to the position of the ship, while yaw is the heading of the ship . A DP system may control the position of a ship, a vessel or a floating structure at least in part by means of feedback control. One of the inputs for the feedback system may be the ship's actual position. A ship's position and heading shown in diagram 100 may be measured by position reference systems 316 and heading reference 318 respectively (with details as described in relation to FIG. 3) , using, for instance, satellite navigation systems and/or gyrocompasses. The ship's position may be measured by, for instance, Global Positioning Systems (GPS) or Differential Global Positioning Systems (DGPS) or any suitable positioning system. Then, the DP system may compare the ship's measured position to the desired position to calculate a position error. The DP system may use the position error and measured wind force to

determine the required force and moment to position the ship and obtain the desired position. After commands are provided to the thrusters to reposition the ship, the new position of the ship may then be used as an input back to the feedback control system for further processing.

To obtain desired position and heading, a dynamic positioning system controls the thrusters of a ship to deliver the required thrust and moment. In general, ships equipped with DP systems may be fitted with main propellers, tunnel thrusters, azimuth thrusters, propellers with rudders, etc. The different kinds of force and/or momentum generating thrusters may be positioned at various parts of the ship.

Additionally, these thrusters may be limited by different sets of physical constraints. In general, a constraint may be defined as a condition on one or more variables of a system so that the values these variables can take are restricted. For instance, azimuth thrusters can be rotated to provide thrust in any direction. However, the direction in which thrust may be delivered for a propeller with a rudder is more limited than an azimuth thruster. A combination of different types of thrusters as well as the positioning of said thrusters allows a ship to be positioned effectively. FIGS. 2a-c depict various exemplary propulsion layouts according to some embodiments of the disclosure. For illustrations of this disclosure, the x-axis in the diagrams represent the sway direction, and the y-axis represent the surge direction. Note however that the x-axis may also represent the surge

direction, and the y-axis may represent the sway direction in some embodiments .

In one embodiment, offshore support vessel 270 shown in diagram 200 includes twin tunnel thrusters 204 and 206 forward, retractable azimuth thruster 208 forward, and twin azimuth thrusters 210 and 211 aft. In another embodiment, cable lay/repair vessel 280 depicted in diagram 240 includes triple tunnel thrusters 212, 214 and 216 forward, tunnel thruster 218 aft, and twin screw main propellers with active rudders 214 and 216. In yet another embodiment, semi- submersible drill ship 290 depicted in diagram 260 includes (six) azimuth thrusters 220, 222, 224, 226, 228, and 230.

Diagrams 200, 240 and 260 are merely exemplary, other

configurations and layouts are possible depending on the purpose and design of the ship/vessel.

Besides thrusters, a DP system generally includes other system components and modules. FIG. 3 depicts a system diagram of dynamic positioning system 300 according to one exemplary embodiment of the disclosure. System 300 comprises dynamic position operator 310, control elements 302 (which includes bridge console 304 and processor 306) , position reference systems 316, heading reference systems 318,

environmental reference systems 312, power generation 314 and thrusters and propulsion systems 308.

To effectively position a vessel in the ocean, a typical DP system includes position reference systems 316 and heading reference systems 318 for measuring the actual position and heading of a ship so that it could be provided as input to the DP feedback loop. Position reference systems 316 may include (D)GPS, lasers, hydroacoustics , taut wires, and/or microwaves systems, etc. Heading reference systems 318 may include gyrocompasses, combined sensors, and/or magnetic compass systems. Measured signals and data and/or derived signals and data, at systems 316 and 318 may be transmitted to processor 306 for further processing. In some embodiments, a DP system may also include environmental reference systems 312, comprising e.g. wind sensors. Environmental reference systems 312 may also be used as inputs to a DP feed-forward system such that the thrusters may be used to counteract any measured and/or expected environmental forces on a ship. Any signals and data

collected by environmental reference systems 312 may also be transmitted to processor 306 for further processing.

In some embodiments, a DP system includes dynamic positioning operator 310, which may be a human operator responsible for monitoring the status of the DP system, its components, and/or any relevant external data sources. Dynamic positioning operator 310 may locally or remotely control and access other parts of the DP system via control elements 302, which includes bridge console 304 and processor 306.

Typically, control elements 302 may be a terminal computer system (e.g., bridge console 304) that comprises devices that can receive input from a user, such a buttons, switches, indicators, alarms and/or display screens. Communications from other modules/components of the ship's DP system may be transmitted to, processed and/or manipulated by processor 306.

In some embodiments, dynamic positioning algorithms and methods may be implemented in part on processor 306. In certain embodiments, the techniques in the disclosure may be hardcoded into dedicated specialized hardware devices, and/or implemented in computer executable instructions stored in a computer readable medium in processor 306. Processor 306 may include at least one of: a communication bus, data

memory/storage, and input/output devices.

The typical system 300 may include power generation systems 314. Exemplary implementations of power generation systems 314 may include (diesel) engines, alternators, switch boards, power management systems, power distribution systems, uninterruptable power supplies, etc. Processor 306 and/or control elements 302 may access, control, and/or communicate with power generation systems 314. For example, processor 306 may be able to control power generation systems 314 with control commands. In another example, power generation systems 314 may transmit reporting messages to processor 306 to indicate current status (e.g., warnings, failures, etc.). In some embodiments, power generation systems 314 is connected to thrusters and propulsion systems 308 (which may include main propulsion, rudders, tunnel thrusters, azimuth thrusters, and/or thruster control) such that power may be delivered.

Thrusters and propulsion systems 308 may in turn be

communicably connected to processor 306 such that processor 306 may transmit commands to the thrusters (e.g., such as thruster settings determined by the DP system) .

To dynamically position a ship, processor 306 may include an implementation of a feedback control loop to correct the position error of the ship. FIG. 4 depicts a control diagram of a dynamic positioning feedback system according to one exemplary embodiment of the disclosure. The feedback control loop includes position controller 302, thrust allocation 304, thrusters 306, hydro-dynamics 308 and position measurement 310.

Position controller 302 may determine forces in surge and sway directions and a moment in yaw direction, which are required for position keeping. For instance, position

controller 302 may calculate an error between the desired position and the actual position. The position error may then be used to calculate the required force and momentum of the ship for reaching the desired position. To determine required total force and moment, position controller 302 may utilize measurements/data from position reference systems 316, heading reference systems 318 and/or environmental reference systems 312. The determined force and momentum required may need to be delivered by the available thrusters on the ship.

In general, DP systems are installed on a ship that has a large number of thrusters. The large number of

thrusters allows for redundancy and flexibility in the system. Different types of thrusters and different combinations thereof may be used. Commonly used types of thrusters include one or more azimuthing thrusters, tunnel thrusters and/or main propellers with rudders. Except for tunnel thrusters, all these types of thrusters have two degrees of freedom: the amount of thrust delivered and the direction in which this thrust is delivered. Three equilibrium equations may be available, in surge, sway and yaw direction. The degrees of freedom (n) in the thrust allocation problem depend at least in part on thruster configuration of a ship. If n > 3, the system is called over-actuated. If n < 3, the system is called under-actuated. In other words: if n = 3 a unique solution to the thrust allocation problem exists, if n > 3 a set of solutions exists. As nearly all DP systems have far more than three degrees of freedom, the vast majority of DP systems is over-actuated.

In an over-actuated system no unique solution for the thrust allocation problem exists, therefore the optimal solution out of a set of solutions may be chosen. This gives the opportunity for thrust allocation 304 to select the thrust allocation solution that may be the most favorable with respect to factors such as power consumption, thruster wear, and/or other constraints/costs. A thrust allocation algorithm in the thrust allocation process 304 is for this reason included in DP systems, which may act as an interface between position controller 302 and thrusters 306 . Once the required force and moment are calculated by position controller 302 , thrust allocation 304 may be used to determine optimal

thruster settings for generating the required force and momentum.

In some embodiments, thrust allocation 304 has the objective to find a thruster setting that satisfies the required total surge, sway and jaw thrust, while consuming a minimum amount of power. Furthermore a number of constraints may need to be satisfied in this process. One constraint may be thruster saturation: the thrust that is allocated to each thruster may not exceed the thruster' s capability.

Furthermore the direction in which azimuthing thrusters deliver their thrust may be limited due to obstructions and interaction effects. To prevent wear and tear of thrusters, and because of physical limitations, the rate at which rpm, pitch and azimuth angles are changed may be possible

constraints in a DP system. After settings are provided to thrusters 306, the ship may be disturbed by environmental forces at hydro ¬ dynamics process 308. The actual position may then be

measured by position measurement 310 and may be provided back to the beginning of the feedback control loop for further processing .

To find an optimal thrust allocation solution with respect to power consumption, a cost function C may be

defined. In optimization problems, the cost and benefits of a system may be arranged in a cost function. Typically, in the context of thrust allocation the cost may relate to the power consumed by the thrust allocation system, however other cost variables e.g. speed may also be used. Cost functions may take many different forms. For purposes of illustration, one of the possible cost functions is discussed in this disclosure, however it is understood that one skilled in the art may employ other types of cost functions.

The allocation algorithm minimizes this cost function to find the optimal solution. In some embodiments the "cost" for using a thruster may be represented by the thruster' s power consumption. Generally, a quadratic relation between delivered thrust and consumed power may be assumed for this purpose :

P

max, / 1 1 "2

C= ∑ w. (1)

F 2 .

max, i

wherein:

/ = thruster number

n = total number of thrusters

w. = weighting factor to define thruster preference

P mtlx i = maximum consumed power of thruster i

F max i = maximum delivered thrust force of thruster i

F t = actual delivered thrust force of thruster i

By introducing constants a ir this cost function may be simplified to: max,

Three linear constraints may be added to the optimization problem, to assure that the required surge, sway and yaw thrust will be delivered:

∑ x, i x, req

n

∑ F . = F (3)

_ , J y, req

n

F M

y, i χ , ι χ, ι y, i z,req

wherein :

F = required total surge thrust

F y . req = required total sway thrust

M z = required total yaw moment

p x , = longitudinal position of thruster i

p , = transverse position of thruster i

To include constraints (3), the delivered thrust of each thruster may be split into a surge and a sway component. The cost function may then change to:

(4)

wherei :

F , = actual longitudinal thrust of thruster i

F„ , = actual transverse thrust of thruster i

To account for the maximum thrust that each thruster can deliver, an additional non-linear constraint may be added to the problem:

II ill max,/

The optimization problem in its simplest form can then be stated as:

(6)

A conventional method for solving this thrust allocation problem is by use of Lagrange multipliers. In this approach a constrained optimization problem is converted into an unconstrained problem, the Lagrangian, which is of the · form :

L(x,A,v) = f 0 (x) + £ A , (x) Vj f j (x) (7)

Where f Q (x) is the cost function to be minimized, λ ί is the Lagrange multiplier associated with the i th inequality constraint f,(x)≤0 and v } is the Lagrange multiplier associated with the j th equality constraint f j x) = 0.

Azimuthing thrusters or propeller-rudder combinations are capable of delivering thrust in both longitudinal and transverse direction. This means that per thruster two variables may be present in the optimization problem, being the x- and y- component of the total thrust (or alternatively: the total thrust and its direction) . To include the nonlinear constraint defined by expression (5), which limits the total delivered thrust of each thruster, the vector sum of the x- and y-components of thrust may need to be determined. This cannot be handled by equation (7), as only linear combinations of equality and. inequality can be included. Hence,

optimization by a Lagrange type optimization method could result in solutions with overloaded thrusters. This may be solved by iterative methods, but these are relatively

complicated and require a large number of computations.

A very well-studied, well-known and much used optimization problem is the so-called linear optimization (LO) problem, on which the method of Lagrange multipliers as described above can be applied. It amounts to minimizing a linear function subject to linear constraints. The best known form of it is its so-called standard form: min{c T x Ax = b,x≥o}, (8)

Where Ae R mxn , CGR" kl'"

and , and where x is a vector whose n coordinates x j are the (unknown) variables that need to be found. Note that the vector equation Ax = b

a 7 x = b a j' h represents m linear equations 3 1 , where J is the > row b '^'

of A and J the >' coordinate of The inequality means that all coordinates of x should be nonnegative. So it is a short-hand notation for the " linear inequalities X 1 ,≥0, \≤j≤n

Usually the (linear) equality constraints Ax=b together with the (linear) inequality constraints x>0 admit multiple solutions. The LO problems as defined by expression (8) amounts to finding the (or better: a) vector x satisfying these constraints for which the (also linear) so-called objective function c'x is minimal (in power optimization problems this objective function is usually referred to as the cost function) .

There exist very efficient numerical methods for solving the LO problem (8), even for very large values of m and n . One conventional method is the Simplex method. Though the Simplex method behaves very satisfactory in practice, it has drawbacks.

For example, instances of the LO problem with n variables as defined by expression (8) exist for which conventional methods such as the Simplex method may need as much as 2" iterations. In other words, the time that the

Simplex method needs to solve such LO problem may grow exponentially fast with the number of variables. Hence, other methods have been developed for which the number of iterations grows less fast, preferably polynomially fast. In 1984

Karmarkar proposed a new polynomial method that not only could compete with the Simplex method (see N. Darmarkar, "A new polynomial-time algorithm for linear programming,

Combinatorica, 4(4) : 373-395, 1984, which is hereby

incorporated in this application) , but also in many cases was more efficient than the Simplex method, not seldom by a factor in the order of hundreds.

Karmarkar' s method gave rise to the field of so- called interior-point methods for LO problems. These methods could naturally be extended to non-linear optimization problems of a special type. To describe these special nonlinear optimization problems, the concept of a convex cone needs to be introduced.

A subset K of K is a cone if K is closed under multiplication with non-negative scalars. Note that the set

R" + of non-negati.ve vectors m TO" sati,sfies t,hi.s property.

This set is also convex, which means that if any two vectors x and y in the set are taken, then also the line segment connecting x and y lies in the set. In other words, a cone may be convex if: x eK,0<l<l = Xx + (\ - X)y& (9)

Using this definition, the standard form of linear optimization problems defined by expression (8) can be reformulated as follows: minj .v: ,lv = />..v£ .:·';].

(10) where + is a convex cone. A generic cone

R"

optimization problem is obtained by replacing + by a general convex cone ^ min jc 7 * : Ax - b,x e Κ| (11)

+ is referred to as a linear cone, because it is determined by the linear inequality x - ® .

There exist also non-linear cones. In the context of the thrust allocation problem, on particular important example of such cone is the so-called second-order cone, or Lorentz cone. This cone is defined by the following expression:

One may easily verify that this is indeed a cone, and that this cone is convex. Cone optimization problems of the form defined by expression (11) in which ^ is a direct product of linear cones and second-order cones, are called Second-Order Cone Optimization (SOCO) problems. Any such problem can be solved very efficiently by a suitable interior point method, in polynomial time

Hence, when confronted with a non-linear optimization problem, it may be advantageous to examine whether a conic optimization model can be formulated for the given non-linear problem. The non-linearity associated with the problem however makes this a non-trivial and unpredictabl exercise .

An associated conic optimization model may or may not be possible to formulate and - if possible - its form cannot simply be derived from other conic optimization models This is because the conic optimization model is fully determined by the characteristics of the given optimization problem, e.g. the non-linear optimization problem associated with the dynamic positioning system of a vessel as defined by equation (6) and discussed with reference to Fig. 1-3. This non-linear optimization problem is characterized by a complex system of different types of thrusters which may have different limitations.

Hence, one aspect of the invention relates to the fact that the inventors have been able to transform the nonlinear thrust allocation problem associated with a dynamic positioning system for use in a vessel or a floating structur into a second-order cone optimization problem, which is adjustable for different dynamic positioning systems on different vessels or floating structures. Implementation of the second-order cone optimization problem on a computer enables a fast algorithm for determining an optimal solution for real-time applications in a thrust allocation problem.

According to one embodiment of the disclosure, the non-linear constraint defined by expression (5) is

incorporated into the optimization problem as a second-order cone constraint. Second-order cone optimization (SOCO) problems may be solved relatively efficiently by a suitable interior-point method, in polynomial time. However, as will be shown below, finding a conic optimization model or

formulation for the thrust allocation problem in the context of a vessel's dynamic position system is non-trivial.

First, the thrust allocation model (6) may be written as follows:

min £w,a |i < :∑ F, = F m/ ,∑gp, = 1 < / (13) where :

y,.req - .,

There may be a set of non-linear constraints: I IIIEΊIIΙ<Fmax,/ '\ <i <n 1

In certain embodiments, each of these non-linear constraints may be written as a second-order cone constraint using the Lorentz cone (or any suitable convex cone) :

F,

e L 3 , l < < « (14)

F

Next the non-linear cost function may be

modelled/reformulated. Note that any cone optimization problem has a linear objective function. The non-linear objective function can be modelled by introducing a new variable T , and by adding the following two constraints to the constraints in the problem: (15) When τ is minimized, any optimal solution will satisfy constraints (15), and hence the problem is still equivalent to the problem in (6). Constraints (15) are equivalent to the single second-order cone constraint:

The thrust allocation may then be formulated as:

Problem (17) can be solved as a SOCO problem, except for the coefficients in the first second-order constraint. The problem is modeled such that it is suitable to optimize using the SOCO method. The coefficients are calculated separately, before the optimization is performed. This can be solved by introducing new vector variables G, , according to: and rewriting the problem as follows:

(19) In this way a problem with a linear objective function, with 2n+2 linear constraints, and 2 second-order cone constraints is formulated. This way expression (6) is reformulated as a SOCO problem, such that it can be solved efficiently using any suitable interior-point methods.

Methods described herein using the SOCO formulation may be at least partially implemented on a processor 306 or in a remote server (not shown) that is communicatively connected to processor 306.

In a DP system, a number of further limitations may be put on the thrust allocation algorithm, thus the methods described herein may be appropriately extended. For example, physical limits and/or operational procedures of the thrusters (i.e., in the thrusters and propulsion system 306, power generation 314) or the ship itself may introduce further limitations on the thrust allocation problem. The thrust allocation problem defined by expression (19) may be extended with additional constraints to accommodate those limitations.

In some embodiments, if the thrust demand exceeds the DP system's capability, either no solution will be found by the thrust allocation algorithm or the determined solution is meaningless because it isn't a working solution. To ensure that the algorithm finds a working solution, one or more

"dummy" thrusters may be added to the allocation algorithm. The effect of the "dummy" thruster is described below.

A dummy thruster may be defined as a virtual thruster with very large maximum thrust and very high power

consumption. The high power consumption may give this virtual thruster a low preference, such that the allocation algorithm may not make use of this thruster unless the other, real, thrusters are not capable of delivering the required force and moment. In this way, the allocation algorithm may be able to find a solution even if infeasible combinations of surge, sway and yaw thrust are requested, by allocating the excess thrust to the dummy thruster.

In some embodiments, if the requested force and moment exceed the DP system 300' s capability, one of the three directions (surge, sway, and yaw) may be prioritized. In certain embodiments, the heading may have the highest

priority, as losing the ship's heading will generally worsen the situation. FIG. 5 depicts a schematic 500 comprising a ship 502 and one or more dummy thrusters 512,514 according to one embodiment of the disclosure. To ensure that the thruster allocation algorithm gives the highest priority to satisfying the required yaw moment (i.e., heading of a ship), a carefully created dummy thruster may be used. For instance, in one embodiment a (first) dummy thruster 514 may be positioned in the origin of the ship's coordinate system. In contrast to the real thrusters 504, 506, 508 and 510 (all of which are positioned away from the origin as marked by the x- and y- axis), dummy thruster 514 cannot deliver any yaw thrust.

Consequently, the real thrusters would be prioritized within the optimization process to provide for the required yaw thrust. Dummy thruster 514 in this case may only deliver a virtual surge and/or sway force to ensure that the allocation algorithm finds a solution to the problem.

In certain circumstances first dummy thruster 514 at the origin may not be sufficient. For example, if the required yaw moment is bigger than the maximum yaw moment that can be delivered by the real thrusters (i.e. thrusters 504, 506, 508 and 510) , then no solution may be found by the allocation process. In that case at least a further (second) dummy thruster 512 positioned away from the origin may be

introduced, such that it may deliver a virtual yaw moment if the required yaw moment exceeds the yaw capacity of the real thrusters .

By assigning a higher (virtual) power consumption to the second dummy thruster 512 away from the origin than that of a first dummy thruster 514 at the origin, the optimization process would allocate yaw thrust to the second dummy thruster 512 if the real thrusters are not capable of satisfying the required yaw moment. In other words, if the required thrust cannot be delivered, surge and sway thrust may be allocated to a first dummy thruster 514 in the origin and the real

thrusters are used to deliver the required yaw moment. If the required yaw moment cannot be delivered by the real thrusters, the real thrusters may deliver their maximum yaw moment and the excess yaw thrust is allocated to dummy thruster 512. In some embodiments, non-azimuthing thrusters are used in a DP system. Accordingly, the SOCO model as stated in (14) may need to be modified, such that thrusters that are not capable of delivering thrust in any direction may be properly modelled. To include non-azimuthing thrusters, such as tunnel thrusters and shaft propellers, an additional linear

constraint is added, which imposes zero thrust in longitudinal or transverse direction (seen as simple linear constraints below) .

F.(\) = F . = 0 (20) l ' X, l

F.(2) = F . = 0 (21) i y, i

In some embodiments, DP systems are used in combination with a shaft propeller with rudder to generate both longitudinal and transverse forces. A shaft propeller on itself may deliver thrust in longitudinal direction, where the maximum thrust in forward direction will normally be larger than in reverse direction. When the propeller is delivering forward thrust, a rudder may deflect the thrust vector, such that the longitudinal thrust decreases in favour of transverse thrust. The use of a rudder (e.g., propeller with rudder 604) will in general have two effects on the thrust that is delivered by the main propeller. It may deflect the thrust and decrease the total delivered thrust. FIG . 6 depicts the differences between azimuthing thruster 602 and propeller with rudder 604 according to one embodiment of the disclosure. The thrust capability of propeller with rudder 604 is

schematically drawn in FIG . 6, in comparison with the

capability of azimuthing thruster 602.

To model the use of rudders (e.g., propeller with rudder 604) , the direction in which thrust can be delivered is limited by the limiting the angle of the thrust vector (seen as examples of more complex linear constraints) : tan -i wherein a max is the maximum rudder angle.

The use of these directional constraints may impose that only forward thrust can be delivered by the propeller- rudder combination, as the arc between a max and -a max excludes the reverse direction.

If the allocation algorithm cannot find a satisfying solution when a propeller-rudder combination delivers forward thrust, the model may be re-run with the propeller configured such that it can only deliver reverse thrust.

The thrust degradation due to the use of a rudder ma be modeled by transforming the "cone" that limits the maximum thrust (i.e., constraint (14)), into an elliptical shape. The maximum thrust in the longitudinal direction is modeled to be larger than the maximum thrust in the transverse direction. Transformation of the conical shape into an elliptical cone may be achieved by multiplying the transverse or longitudinal force component with a coefficient, which may represent the ratio between the axes of the ellipse.

In some embodiments, the directions in which azimuthing thrusters in DP systems work may be restricted if there are obstructions in the thruster' s outflow. Thus, "forbidden zones" may be defined where thrusters are not allowed to provide thrust. For instance, forbidden zones may be implemented in the thrust allocation algorithm in the same way as maximum rudder angles are implemented. In certain embodiments, the method may be limited to one forbidden zone per thruster.

Differences in thruster output may be obtained by adjusting the propeller's pitch or speed, and/or by rotating a thruster unit (in case of an azimuthing thruster) . These actions generally take some time to perform, which means that the difference of delivered thrust between two time-steps may be limited. The thrust allocation method may be configured to choose any feasible thruster setting, without taking this delay into consideration. Thus, the thruster' s physical limitation of change rate may be included in the method, such that the allocation process selects a thruster setting which is feasible during the present time-step.

Different limitations may be included. In one embodiment the maximum change of thrust may be taken into account. In another embodiment the maximum change of di_LeCtion may be taken into account. The thrust in the previous time step is denoted as F' ~ ' =(^'^,^ 2 ' _1 )ε9ϊ 2 . To limit the maximum change of thrust, the difference in thrust between the previous and the current time step is defined to be:

Wherein Fi* is the delivered t irust for thruster i in the present time step (in kN) and wherein Fi t_1 is the delivere thrust (in kN) for thruster i in previous time step,

The maximum rate of change may then be included adding constraint:

IMI≤I JI (24)

This constraint is non-linear, as it limits the vector sum of the surge and sway thrust of a thruster, similar to the constraint defined by expression (5). Therefore it may be implemented in the algorithm as a cone: e L 3 (25)

AF„

To model restricted change in direction, the angle between thrust vectors F t_1 and F may be limited by angle

(F'-') F

ra " *fi - (26) This inequality can be rewritten as:

' (27) cos ?

This holds if and only if:

So adding the constraint defined by expression (28) to the allocation algorithm will limit the change of direction between two time steps for each thruster to a maximum angle of

To assess the performance of the SOCO thrust allocation method, two cases have been studied: day-to-day seastate (case 1) and survival seastate (case 2) . FIG . 7 depicts a test methodology for comparing the performance improvement of a dynamic positioning system described

according to one exemplary embodiment of the disclosure as compared to a known standard system. In the day-to-day seastate, a significant wave height of 2.0 meters is simulated and in the survival seastate a significant wave height of 8.7 meters is simulated. Time-traces of requested surge, sway and yaw thrust have been used for this purpose. The time-traces have been obtained from a simulation program (in DP simulation process 702 ) which contains DP software as installed on known operational DP systems. Thrust allocation using the SOCO method (process 710 ) was also implemented for comparison.

Time traces of thrust demand (process 704 ) , delivered thrust (process 706 and process 712 ) was recorded for

comparison. For illustration, the difference (improvement comparison 716 ) for case 1 and 2 (performance process 708 and performance process 714 ) have been provided in this

disclosure, as seen in plots displayed in FIGS . 8a-f and 9a-f . FIGS. 8a-f depict various test results from a case study (day-to-day seastate, 2.0 m waves, case 1) illustrating the differences in performance using a dynamic positioning system described according to one exemplary embodiment of the disclosure. Case 1 (day-to-day seastate, as seen in FIGS. 8a- f) shows that the difference between thrust demand and delivered thrust for the SOCO method is very small, except for an occasional event where the demand varies rapidly.

Plot 804 in graph 802 represents the difference in surge required and surge delivered using a known thrust allocation method. Plot 808 in graph 806 represents the difference in surge required and surge delivered using the SOCO method described in this disclosure. Plot 812 in graph 810 represents the difference in sway required and sway delivered using a known thrust allocation method. Plot 816 in graph 814 represents the difference in sway reguired and sway delivered using the SOCO method described in this disclosure. Plot 820 in graph 818 represents the difference in yaw required and yaw delivered using a known thrust allocation method. Plot 824 in graph 822 represents the difference in sway required and sway delivered using the SOCO method described in this disclosure.

In the existing method much larger differences are observed, mainly for the yaw direction. However, as this case studies mild day-to-day conditions, both allocation methods will be suitable for maintaining a vessel in position, so a reduction of the difference between demanded and delivered thrust provides less benefit in such situation (as compared to more severe sea conditions) . The benefit of the SOCO method in benign circumstances is that the power consumption may be decreased/optimized, while the DP performance may slightly improve compared to existing methods. Table 1 compares the thrust of the existing method to the SOCO method, which shows that a thrust saving of over 6% is achieved. Table 1 - Thrust saving case 1

FIGS. 9a-f depict various test results from another case study (survival seastate, 8.7 m waves) illustrating the differences in performance using a dynamic positioning system described according to one embodiment of the disclosure. Plot 904 in graph 902 represents the difference in surge required and surge delivered using a known thrust allocation method. Plot 908 in graph 906 represents the difference in surge required and surge delivered using the SOCO method described in this disclosure. Plot 912 in graph 910 represents the difference in sway required and sway delivered using a known thrust allocation method. Plot 916 in graph 914 represents the difference in sway required and sway delivered using the SOCO method described in this disclosure. Plot 920 in graph 918 represents the difference in yaw required and yaw

delivered using a known thrust allocation method. Plot 924 in graph 922 represents the difference in yaw required and yaw delivered using the SOCO method described in this disclosure.

In the survival seastate case the difference between demanded and delivered thrust is larger, as the seastate is high and the vessel is operating near its DP capability. The time-traces show that the difference is much smaller for the SOCO method, especially for the yaw direction (compare plot 920 and plot 924) . This may provides a major improvement in positioning performance, as the yaw direction is the most important of the three.

The time-traces in FIGS. 9a-f contain a period in which the thrust demand exceeds the DP system' s capability, around t = 6000 seconds. During this period the SOCO method performs much better than the existing method, as the difference between demanded and delivered thrust is much smaller, and the period with significant difference is much shorter. This may provides a large improvement on DP

capability, as the vessel may better operate in more severe weather conditions by applying the SOCO thrust allocation algorithm. Moreover, by using the SOCO method described in this disclosure, a vessel's DP performance can be improved by a simple change in software, without requiring changes in hardware .

As shown in the case studies, the SOCO method allows significant improvement in its dynamic behavior, in particular its dynamic response to peaks in thrust demand, when compared with an existing allocation method. As the dynamic behavior of the vessel in peak demands limits the maximum seastate in which the ship can operate, improvement thereof is an

important feature. Improvements in the dynamic behavior at peak demands may increase the capability of the DP system significantly. Based on the case studies, an increase of capability of at least 5% may be achieved.

The difference in thrust consumption in survival seastate case is shown in Table 2. As expected the consumed thrust is much higher for the SOCO method, as the DP system may be fully utilizing the thruster capabilities to counteract the high environmental loads.

Table 2 - Thrust saving case 2

Comparison of the method described in this disclosure with an existing method for thrust allocation shows that the SOCO method may be capable of decreasing the difference between required and delivered thrust significantly, especially when the DP system is pushed to its maximum

capability. When operating on lower thrust levels, the required thrust is much smoother, which will decrease thruster wear and tear. Furthermore, the thrust delivered in yaw direction matches the required thrust much better, which will in practice provide a better heading control and therefore less chance of drift-off events.

Hence, the case studies show that the benefits of the new thrust allocation method are twofold. In benign

environmental conditions the thrust consumption may be

reduced. Moreover, in severe weather conditions the DP

capability can be increased such that the vessel can operate in more severe conditions. Based on the case studies a reduction of thrust consumption of over 6% may be achieved and an increase of the DP capability of at least 5% may be

achieved .

While the disclosure generally relates to a ship operating at sea, it is understood that the method can be applied to crafts or vessels (crafts may include vessels) that are motorized by machinery that can deliver force and momentum to move the craft or vessel. Other examples of marine

crafts/vessels may include Remotely Operated Vehicles (ROVs) , Autonomous Underwater Vehicles (AUVs), etc.

It is understood that any feature described in relation to any one embodiment may be used alone, or in combination with other features described, and may also be used in combination with one or more features of any other of the embodiments, or any combination of any other of the embodiments. One embodiment of the invention may be

implemented as a program product for use with a computer system. The program (s) of the program product define

functions of the embodiments (including the methods described herein) and can be contained on a variety of computer-readable storage media. Illustrative computer-readable storage media include, but are not limited to: (i) non-writable storage media (e.g., read-only memory devices within a computer such as CD-ROM disks readable by a CD-ROM drive, flash memory, ROM chips or any type of solid-state non-volatile semiconductor memory) on which information is permanently stored; and (ii) writable storage media (e.g., floppy disks within a diskette drive or hard-disk drive or any type of solid-state random- access semiconductor memory) on which alterable information i stored. Moreover, the invention is not limited to the embodiments described above, which may be varied within the scope of the accompanying claims without departing from the scope of the invention.