Ship movement prediction

By clustering historical itinerary data, determining representative itineraries and predicting, the problem of inaccurate prediction of future ship movement routes in the prior art is solved, and efficient calculation and abnormal detection are achieved.

CN119452389APending Publication Date: 2025-02-14WISETECH GLOBAL (LICENSING) PTY LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202380025768.1
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2022-02-11
Filing Date
2023-02-10
Publication Date
2025-02-14

AI Technical Summary

Technical Problem

The prior art is difficult to accurately predict the future moving routes of ships, and there are difficulties in efficiently processing large amounts of ship data in computation.

Method used

By clustering historical itinerary data, representative or average itinerary is determined as common routes, and the closest representative itinerary is selected based on the current ship location for prediction.

Benefits of technology

More accurate ship movement prediction is achieved, reducing computational complexity, able to efficiently process large amounts of data, and support anomaly detection.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119452389A_ABST
    Figure CN119452389A_ABST
Patent Text Reader

Abstract

The present disclosure relates to a method performed by a processor for predicting ship movement. The processor creates historical travel data by: receiving historical location data indicative of a historical location of a vessel; marking a stop point indicating a port where the ship stops in the historical position; splitting the historical position data of the ship into a sequence of historical positions between the stop points; and clustering the sequence of historical locations to determine representative sequences, each representative sequence representing one of a plurality of clusters. The processor then predicts future ship movement by receiving a current geographic location of a current travel of the tracked ship; selecting one of the representative sequences closest to the geographic location; and predicting a future movement of the tracked vessel traveling along a selected one of the representative journeys.
Need to check novelty before this filing date? Find Prior Art

Description

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS

[0002] This application claims priority to Australian Provisional Patent Application No. 2022900286 filed on February 11, 2022, the contents of which are incorporated herein by reference in their entirety. Technical Field

[0003] The present disclosure relates to prediction of vessel movements. Background Art

[0004] Large numbers of ships, such as cargo ships, are constantly transporting goods around the world. To ensure that these ships operate safely and efficiently, it is important to monitor their positions over time, which is called tracking. One existing tracking solution is based on the Automatic Identification System (AIS). AIS is a marine communication device. It uses a very high frequency (VHF) radio broadcast system to transmit data. Ships equipped with AIS (shipborne AIS) and shore-based stations (non-shipborne AIS) can use AIS to send and receive identification information. This identification information can be displayed on electronic charts, computer monitors, chart plotters, or compatible navigation radars.

[0005] AIS increases navigation safety and improves environmental protection by aiding efficient vessel navigation. One purpose of AIS is to aid situational awareness and therefore provide a means of helping to avoid collisions. To this end, AIS data from one vessel is received by all vessels within VHF communication range of the sending vessel. Receiving vessels can display all received AIS data on one screen to provide real-time situational awareness of nearby vessels without the need for a data network connection.

[0006] In addition to location-specific processing and display, AIS data can also be received at various stations on land and saved for further use. Specifically, the data can be transmitted to a server where the AIS data from a number of different receiving stations are collated into a single data set of global ship positions.

[0007] While this data set enables the precise position of each vessel to be determined in real time, it does not provide any indication of future movements, such as which of multiple possible routes a vessel will follow.

[0008] Using current methods, it is difficult to determine which route a vessel is on. Additionally, current methods cannot detect anomalies where a vessel deviates from a commonly used route. One difficulty in addressing these issues is that most routes are not formally defined, except in busy areas such as the English Channel. Additionally, there may be variations due to weather and other conditions. Current methods based on AIS data have difficulty predicting vessel movements. As a result, anomaly detection is unreliable. That is, anomalies are detected in most cases (with high false positives) because alternative but valid routes are not known in advance.

[0009] Additionally, there is Satellite AIS (S-AIS), however, most ships are not equipped with S-AIS transceivers; this means that the ship can only connect to AIS when it is close to a port, within range of a Terrestrial AIS (T-AIS) transmitter. Furthermore, the S-AIS satellite has a limited frequency band, with only a few channels, so only a few ships can connect to it in the first place.

[0010] Therefore, the AIS data will have many dots at the beginning, followed by a long period of no dots, and then many dots at the end, resulting in inaccurate predicted shipping routes.

[0011] Another problem with AIS data is the sheer number of data points available. Therefore, processing all of this data efficiently is computationally difficult. Specifically, when the results of the analysis are to be applied to the current vessel position, it is important that the processing is completed within a reasonable time frame.

[0012] Therefore, there is a need for more accurate ship tracking that accurately predicts ship movements and is also computationally efficient, as the data available on ship movements is voluminous and can easily lead to computational overload.

[0013] Any discussion of documents, acts, materials, devices, articles or the like contained in this specification is not to be taken as an admission that any or all of these form part of the prior art base or were common general knowledge in the field relevant to the present disclosure as they existed before the priority date of each of the appended claims.

[0014] Throughout this specification, the word "comprise" or variations such as "comprises" or "comprising" will be understood to imply the inclusion of stated elements, integers or steps, or groups of elements, integers or steps, but not the exclusion of any other elements, integers or steps, or groups of elements, integers or steps. Summary of the invention

[0015] The present disclosure provides a method for improved ship movement prediction, such as anomaly detection. The method clusters historical itineraries to determine representative or average itineraries, which can be interpreted as common routes. Then, given the current position of the ship, it can be estimated which routes the ship will take. More specifically, the disclosed method first splits the data into itineraries between stops. The advantage is that clustering is computationally efficient due to the existence of many optimization algorithms, which means that even very large data sets, such as the historical positions of thousands of ships, can be processed relatively quickly. In addition, route selection enables accurate anomaly detection, which is another technical advantage. In addition, actions can be triggered by departure time determination, such as automatic control of cranes, trucks, trains and other port equipment.

[0016] A method for predicting ship movement, the method comprising:

[0017] To create historical trip data, do the following:

[0018] receiving historical position data indicating historical positions of a plurality of vessels;

[0019] identifying, in the historical locations, docking points indicating ports where the plurality of vessels docked;

[0020] splitting the historical position data of each of the plurality of ships into a plurality of sequences of historical positions between the stop points, each of the plurality of sequences representing one of a plurality of historical trips of the corresponding ship;

[0021] Clustering the plurality of sequences of the historical positions to determine a plurality of representative sequences, each representative sequence representing one of a plurality of clusters;

[0022] To predict future ship movements:

[0023] receiving a current geographic location of the tracked vessel's current itinerary;

[0024] selecting one of the plurality of representative sequences that is closest to the geographic location;

[0025] Future movement of the tracked vessel along a selected one of the plurality of representative trips is predicted.

[0026] In some embodiments, the method includes, during creation of the historical travel data:

[0027] storing each of the plurality of sequences as a separate record on a database;

[0028] The clustering is performed by performing a query on the database for one or more stops to retrieve a record storing a sequence comprising the one or more stops of the query and clustering the sequence retrieved from the database.

[0029] In some embodiments, the database is a relational database.

[0030] In some embodiments, the method further comprises filtering the historical location data during the creation of the historical travel data by:

[0031] determining information content in time differences between the historical positions in each of the plurality of sequences; and

[0032] One or more sequences with high information content in the plurality of sequences are selected for the clustering.

[0033] In some embodiments, determining the information content includes determining an entropy of the historical locations.

[0034] In some embodiments, the method further comprises selecting one or more historical trips among the plurality of historical trips having a smaller variation in time differences between the historical locations.

[0035] In some embodiments, the method further comprises determining each representative sequence by calculating a centroid mean of the sequence of historical positions in each of the plurality of clusters.

[0036] In some embodiments, the clustering includes determining similarity by regularizing the historical positions of the first sequence to determine a best match with the historical positions of the second sequence.

[0037] In some embodiments, the method further comprises performing a comparison between the prediction and the updated geographic location, and determining an anomaly in the vessel's movement based on the comparison.

[0038] In some embodiments, the method further comprises generating a user interface representing a selected one of the plurality of representative sequences.

[0039] In some embodiments, the vessel motion prediction comprises a prediction that the tracked vessel will follow the selected one of the plurality of representative sequences.

[0040] In some embodiments, the stop is one or more of a ship origin and a ship destination.

[0041] In some embodiments, the method further includes filtering the historical location data by one or more of a vessel origin and a vessel destination to select a historical location associated with each of the plurality of historical trips.

[0042] In some embodiments, the method further comprises using corresponding stops of said one or more of the vessel origin and the vessel destination.

[0043] In some embodiments, the method further comprises triggering an event in a logistics application based on the prediction.

[0044] In some embodiments, the vessel movement is predicted by a first software system, and the method further comprises generating, by the first software system, an event to notify a second software system of the predicted vessel movement.

[0045] In some embodiments, the method further includes triggering, by the event, an action performed by the second software system.

[0046] In some embodiments, predicting the future movement of the vessel comprises calculating a probability of the future movement.

[0047] In some embodiments, the probability indicates a weight associated with the selected one of the plurality of representative trips.

[0048] In some embodiments, the weight indicates a number of sequences in the cluster that are represented by the selected one of the plurality of representative trips.

[0049] In some embodiments, the method further comprises storing the received historical location data as a plurality of data records on a relational database, the plurality of data records comprising one record for each of the historical locations.

[0050] In some embodiments, identifying the plurality of historical trips includes creating a field value indicating a trip identifier for each of the records in the relational database to indicate an association between a data record and one of the plurality of historical trips.

[0051] In some embodiments, clustering includes creating a field value indicating an association between a trip identifier and a cluster identifier to indicate which trip belongs to which cluster, and determining the plurality of representative sequences includes: based on one cluster identifier, querying the relational database for historical positions associated with the trip identifier associated with the one cluster identifier, and averaging the returned sequences indicated by the trip identifier to determine one of the plurality of representative sequences.

[0052] In some embodiments, executing the method includes running a first service and a second service, wherein the first service is configured to perform the steps of receiving the historical location data, identifying stops, and splitting the historical location data into the multiple sequences, the first service further storing the multiple sequences on a database; and the second service is configured to retrieve the sequences from the database for the clustering of the sequences.

[0053] A software which, when executed by a computer, causes the computer to perform the above method.

[0054] A computer system for predicting vessel movement, comprising:

[0055] a data storage area configured to store historical position data indicating historical positions of a plurality of vessels;

[0056] A processor configured to create historical trip data by:

[0057] identifying, in the historical locations, docking points indicating ports where the plurality of vessels docked;

[0058] splitting the historical position data of each of the plurality of ships into a plurality of sequences of historical positions between the stop points, each of the plurality of sequences representing one of a plurality of historical trips of the corresponding ship;

[0059] Clustering the plurality of sequences of the historical positions to determine a plurality of representative sequences, each representative sequence representing one of a plurality of clusters;

[0060] The processor is further configured to predict future vessel movement by:

[0061] receiving a current geographic location of the tracked vessel's current itinerary;

[0062] selecting one of the plurality of representative sequences that is closest to the geographic location;

[0063] Future movement of the tracked vessel along a selected one of the plurality of representative trips is predicted.

[0064] The optional features provided above in relation to the method are also optional features in relation to the software and system. BRIEF DESCRIPTION OF THE DRAWINGS

[0065] An example will now be described with reference to the following figures:

[0066] Figure 1 An example shipping scenario is illustrated.

[0067] Figure 2 The sequence of historical locations is illustrated.

[0068] Figure 3 A number of sequences are illustrated, indicated by lines passing through the historical locations.

[0069] Figure 4 Geographically similar sequences with different sampling are illustrated.

[0070] Figure 5 An example implementation of dynamic time warping (DTW) is shown.

[0071] Figure 6 The index grid corresponding to the position during DTW is illustrated.

[0072] Figure 7 An example implementation of a windowed DWT is described.

[0073] Figure 8 Example pseudocode illustrating the DTW barycentric averaging (DBA) algorithm.

[0074] Fig. 9 The output of the DBA algorithm is illustrated.

[0075] Fig.10 The current position of the ship from different representative sequences of historical positions is illustrated.

[0076] Fig.11 The predicted paths are illustrated.

[0077] Fig.12 Illustrate computer network.

[0078] Fig.13 A method for predicting ship movements is described.

[0079] Fig.14 Example ports are illustrated. DETAILED DESCRIPTION

[0080] As stated above, current methods for ship monitoring are generally inaccurate. Therefore, the present disclosure provides methods that can accurately predict the movement of ships. More specifically, the disclosed method can create representative itineraries based solely on data collected from ships over time, and select one of those representative itineraries for the current position of the ship. This enables a more accurate prediction of the path traveled. If data for this particular ship is collected over time (which is usually the case), a comparison of the special trajectory with the common route can determine whether there are any anomalies in the trajectory of this ship. Such anomalies can be detected even under conditions where the ship turns off the positioning transmitter for a period of time during the voyage. In addition, the number of ships that are usually tracked is huge, which means that if the computational complexity of the tracking software is not carefully considered, the computer system that tracks these ships may easily be overwhelmed. Therefore, the method provided in the present disclosure relies on clustering of the itineraries (i.e., the geometry of the trajectory) of the ship. This clustering is computationally efficient and therefore reduces the overall burden on the computer system used.

[0081] Shipping scene

[0082] Figure 1 An example shipping scenario 100 is illustrated, which includes a first port 101 and a second port 102. A plurality of ships travel between the first port 101 and the second port 102 while the plurality of ships repeatedly transmit their positions, such as their GPS positions, via AIS. The positions of all the ships are received by a computer system, such as described below with reference to Fig.12 The computer system described. The computer system stores positions over time to build a collection of historical positions. Of course, over time this collection can become large because many ships submit their positions relatively frequently, such as fast moving ships submitting every 2 seconds at most. Therefore, if an estimated 17,000 cargo ships transmit every 2 seconds, this equates to 255 billion data points. If each GPS position uses 6 bytes, this equates to about 1.5 terabytes of historical tracking data needing to be stored for one year.

[0083] To store this large amount of data, a relational database such as SQL can be used, but it should be noted that other databases can also be employed. Other examples include using the parquet format (https: / / parquet.apache.org / ) on a distributed data storage system like S3, which may be less complex and generally more efficient if the data set is large (terabytes).

[0084] In an example of a relational database, there might be a table that holds all the tracking data. Each record includes fields for longitude, latitude, origin, destination, timestamp, and vessel identifier (ID). The database engine can then search the records efficiently. For example, the database can search for all records with the same origin and destination. Based on the timestamp, the database can then determine which records belong to the same trip. In this way, the database can add another field that holds the generated trip ID to more efficiently retrieve all records for a particular trip. Trip IDs can also be assigned in real time, that is, instead of obtaining the entire data set at once (which is also possible), the database receives positions transmitted from the vessel, thereby building the database over time.

[0085] As mentioned above, the database includes records of multiple trips. A trip is defined as a movement from one port to another port. In this sense, for some trips, the first port 101 may be a starting port (or simply referred to herein as "starting point"), and the second port 102 may be a destination port (or simply referred to herein as "destination"). For other trips, the second port 102 may be the starting point, while the first port 101 is the destination.

[0086] exist Figure 1 , multiple trips are indicated by dashed lines. As an example, example trip 103 is highlighted in bold. More specifically, the points indicate the geographic locations (or simply referred to as "locations" in this article) of multiple ships over time. These locations can be provided at regular intervals (e.g., every hour), or at irregular intervals (e.g., every 30-60 minutes), but it should be noted that a higher frequency (e.g., every 5 minutes) will improve accuracy. The location can be determined by a global positioning system (GPS) sensor onboard the ship. In some examples, the GPS sensor determines the location, and the radio communication device sends the location to the server in real time. In this context, real-time means that the GPS sensor sends the location before the next location is determined. That is, for example, the GPS sensor sends the location once every minute. In another example, the GPS sensor records the location on a data storage area, and then uploads the location to the server in batches when the ship is located at or near the port. For some methods disclosed herein, it is not important whether the location data is current or historical and outdated.

[0087] It should be noted that multiple itineraries between starting point 101 and destination 102 may be selected for various reasons. For example, seasonal changes may make certain waterways impassable due to, for example, ice cover. In other cases, channels may move due to the movement of sand, thereby changing routes over time. In yet another example, there may be ocean currents that change the specific advantages of one route over another during a specific time period. In addition, there may also be weather events such as hurricanes that temporarily change the route or cause the captain to choose a route different from the route normally selected. Climate change may also affect the route. More specifically, for example, in the case of ice melting due to climate change, new waterways may be opened in the Arctic region. In addition, the rise in ocean water levels caused by melting glaciers may increase the clearance of ships in areas where the sea water was previously too shallow. This will allow more efficient routes to be discovered.

[0088] These factors are difficult to consider automatically. Therefore, the present disclosure provides a data-driven method that automatically finds routes between ports and can regularly update these routes. In this way, the routes are dynamic and can react to changes in the environment. Route updates are also automatic and do not require human intervention, which makes the method less prone to error. In addition, more data points can be considered, which may exceed the capabilities of the human brain.

[0089] Itinerary and sequence

[0090] As mentioned above, scenario 100 includes multiple trips. Figure 1 Each trip in is represented by a dotted line, but each trip can also be considered as a subset of the geographical locations associated with the trip. In this sense, this subset associated with a trip is also associated with a corresponding origin and a corresponding destination. This may be useful for filtering trips, location subsets, or locations, as further described below.

[0091] In another aspect, each trip is represented by a sequence of historical locations. A sequence is Figure 2 103. A sequence is an ordered list of historical positions sorted by the timestamps of the historical positions between the origin and the destination. Multiple trips between the same origin and destination produce multiple separate sequences. More specifically, a computer receives historical position data including multiple historical positions as data records, for example from an AIS. Individual records do not usually indicate the trip to which they belong. That is, there is usually no trip ID in the data record that enables a computer system to easily assign the data record to a specific trip.

[0092] Therefore, the computer system first groups the data records by the ship identifier, which is usually included in the data record. Each ship ID also has a destination port, so each received data record can be associated with the destination port. In another example, the data record is in the past, and the current ship is heading to a different destination. Therefore, the current ship destination is not applicable to the historical location. In this case, the computer system can query the sequence of the destination ports of the ship with the associated timing information. The computer system can then retrospectively assign a destination to each of the historical locations.

[0093] Now, the computer system can further group the historical locations by destination port. Thus, the historical locations are grouped by vessel ID and destination port, thereby determining multiple sets of historical locations. In one example, these grouping operations are effectively implemented as SQL statements. Since each location has a timestamp, the computer system can now sort the locations in each set into a sorted list, which is described above as a sequence of historical locations.

[0094] In some instances, a vessel may travel to the same destination port during multiple different trips, and it may be desirable to separate these trips into separate sequences. Thus, the computer system may first group the historical locations by vessel ID, and then sort the locations by the timestamp of each vessel ID. The computer system may then iterate over the locations to determine if the destination port changes over time from one location to the next. In response to a change in the destination port, the computer system starts a new sequence, i.e., splits the sequence, so that a different sequence may be created in response to the change in the destination port. In this way, the historical locations of different trips are stored as separate sequences even when the destination port is the same. In this way, the computer system identifies multiple historical trips of multiple ships represented by corresponding sequences of historical locations in the historical location data.

[0095] In yet another example, particularly where manually entered destination ports are unreliable, the computer system may automatically determine the destination port based on port coordinates from a data provider. The computer system then identifies call points in the historical locations indicating ports where multiple ships have docked.

[0096] For example, the sequence of ships has 12 historical positions:

[0097] oooooooooooo

[0098] The computer system finds two stops in this sequence. One at position 4 and one at position 9:

[0099] oooo(Port A)ooooo(Port B)ooo

[0100] Thus, there is one segment from event 5 to event 9, representing the ship's voyage between ports A and B. A "segment" is also a "sequence" in the sense that a segment is a type of sequence that is part of a longer position record, where there may be more than one segment-sequence (or simply "segment") in the same record. In other words, the computer system treats the positions between port A and port B as a sequence, and assigns port B as the destination port of the sequence. The other two segments (one from index 1 to 4 and the other from index 10 to 12) are discarded as incomplete. That is, the starting point at index 1 is not necessarily the starting point of the ship's voyage. It may be located in the middle of the voyage. And, the last event at index 12 may be the current position of the ship. The current position may be in the middle of the ocean.

[0101] The method described is very efficient since the number of ports is generally negligible compared to the number of AIS events during a ship's voyage. A number of steps are then performed to classify the resulting tracks.

[0102] Figure 3 The resulting multiple sequences are illustrated as lines passing through the historical positions. In other words, Figure 3 The points connected by lines in belong to the same sequence. The computer system now determines the similarity between the sequences of historical positions. Figure 3 In the example of , sequence 301 is relatively dissimilar to sequence 302, while sequence 302 is relatively similar to sequence 303.

[0103] Screening sequence

[0104] In some instances, the number of fragments is impractical. Therefore, for each such fragment, the computer system evaluates the following metrics to filter the fragments, for example by selecting only the highest fragments based on these metrics. The metrics are such as the number of events, the length of the path (in kilometers), the Z score of the length, the average timestamp increment between two adjacent events, the Z score of the average, the average speed of the fragment and its Z score, the average distance entropy, the average timestamp increment entropy, etc. In one example, the computer system does not discard any fragments at this time. The computer system only calculates the various metrics of the fragments. The fragments and their metrics are then saved to a database.

[0105] The second stage is to calculate common routes. For each existing port pair A and B, the computer system queries the database for the top N segments currently ranked by the distribution entropy of the timestamp increment. It has been found that, on average, entropy is the best predictor of quality segments. Another option may be to use Z scores in addition to entropy or individually. For example, a Z score close to 0 indicates a useful segment.

[0106] Entropy is the information entropy defined by Shannon in Information Theory. This produces good results because Shannon used the concept of "surprise" when referring to information.

[0107] More specifically, AIS data providers provide data at a fixed resolution. For example, there may be one event per ship per hour. Some AIS data has a geographical "Bermuda Triangle" where data for all or most ships is missing. In an example where two points are 1 hour apart, a segment might be the following ("o" is the AIS position and "" spaces are missing data values):

[0108] <Port A>ooo oo oo ooooooooo oo<Port B>

[0109] This fragment has low entropy. An example of a fragment with high entropy is obviously the following fragment:

[0110] <Port A>ooooooooooooooooooooooooooooooooooooooooooo<Port B>

[0111] It has no "surprises". The timestamp increments are evenly distributed. Another example of high entropy is

[0112] <Port A>oooooooooo<Port B>

[0113] The timestamp increments are significantly larger. But the distribution remains uniform. Switching data providers and getting higher or lower resolution does not affect the entropy value. On average, the predictions for good segments are the ones with higher entropy (or if reinterpreted to fit the problem at hand, the ones where the AIS events are evenly distributed over the timeline). This can be done by Or by using the Python method scipy.stats.entropy to calculate the Shannon entropy.

[0114] The computer system can fit any type of discrete digital sequence S of length l n [x], similar to a probability density function. The nth value is scaled as follows: n = S(n) / sum(S). In order to obtain an entropy value that is scaled to 1.0 independent of the sequence length, the logarithm with base l is chosen in the entropy formula. Shannon's formula uses log2 because it is used to determine channel capacity based on binary coding (0,1).

[0115] In one example: The timestamp differences (of the times between GPS coordinates) are distributed as:

[0116] 1hr-1hr-15hrs-1hr-1hr-1hr. (Length 6)

[0117] The computer scales each data point by the sum of the series, yielding

[0118] [1 / 20,1 / 20,15 / 20,1 / 20,1 / 20,1 / 20,1 / 20]

[0119] Entropy is calculated as

[0120] H(X)=-(1 / 20*log6(1 / 20)*5+15 / 6*log6(15 / 20))=0.58

[0121] Now compare this to a uniform distribution 1hr-1hr-1hr-1hr-1hr of length 5 -> [1 / 5,1 / 5,1 / 5,1 / 5,1 / 5]:

[0122] H(X)=-(1 / 5*log5(1 / 5)*5)=1.0

[0123] Clearly, the second distribution is more uniform than the first (in fact, completely uniform), which is what we want. The computer calculates the entropy of all path segments like this, and then, for example, removes every segment with an entropy < 0.8 (or any other acceptable threshold).

[0124] In another example, the base of the logarithm is the time length of the sequence, and the computer system treats each existing position as a "1" value in the distribution and each missing position as a "0" value in the distribution. Therefore, for the example sequence of <Port A>ooooooo<Port B>, there are seven existing data points and one missing data point. This means that the time length is 8, and the entropy is calculated as -7Log8(1 / 7)*1 / 7=0.94. In other words, the computer system treats the position sequence as a probability distribution and then applies the entropy calculation function to the probability distribution. The computer system then takes the sequence with the highest entropy (e.g., the first 10 or the first 100) or all sequences above a threshold.

[0125] Next, the computer system performs DTW (see below) to generate a similarity matrix, and feeds this similarity matrix to HDBSCAN (see below) and obtains clusters of fragments. Finally, the computer system feeds each such cluster to calculate the DTW centroid (see below), thereby obtaining a single "average" route per cluster.

[0126] Similarity measure

[0127] It should be noted that the distances between historical positions are usually not the same along a sequence or across different sequences. Reasons include that the timing of sending position updates is not always periodic, but can vary or be random. In addition, some positions may be lost in the vessel's transmission, for example due to poor radio reception. In addition, changes in the vessel's speed may also cause the distances between subsequent positions to differ. Finally, there may be an offset between two sequences, this is because most AIS transmitters are not synchronized with the vessel starting the journey, so the timestamp of the first position of a sequence is essentially random.

[0128] These reasons make it difficult to determine the similarity between two sequences. Figure 4 Three sequences 401, 402 and 403 are illustrated. All three sequences are relatively similar. Similarity in this example means that the historical positions of the sequences are approximately located on the same path. In other words, the historical positions of the first sequence are at a shorter distance from the path defined by the historical positions of the second sequence.

[0129] The path defined by the historical positions is a line that passes through these positions. However, in computer implementations, such lines are usually difficult to represent using discrete data. In one example, a computer system determines a parameter representation, such as a polynomial or spline approximation of the historical positions. Then, the computer system can calculate the minimum distance of each historical position of another sequence based on the parameter representation, and calculate the mean square error as an indication of similarity. In other words, a small error indicates a high similarity.

[0130] In other examples, the historical positions are not approximated by a parametric representation, since such a representation may be difficult to apply to all possible shapes of trips. Alternatively, different sampling of the sequences artificially increases the distance between the sequences. Figure 4 The problem is described. The sampling mode of the first sequence 401 and the second sequence 402 is the same. Therefore, each position of the first sequence 401 is very close to the closest point in the second sequence 402 (that is, the distance is shorter), which causes the similarity to be higher. However, the sampling modes of the second sequence 402 and the third sequence 403 are extremely different. Therefore, the position of the second sequence 402 is not too close to the position of the third sequence 403. Due to the different sampling of such positions over time, the similarity between the first sequence 401 and the second sequence 402 will be significantly higher than the similarity between the second sequence 402 and the third sequence 403. However, in fact, the sequences should have the same similarity because the distances of the two sequences 401, 403 from the second sequence 402 are approximately the same. This shows that the difference between the positions of the sequences may cause a large error in the calculated similarity.

[0131] The above problem does not occur in an abstract setting, because the similarity of paths can usually be checked by integrating the distances of the paths. However, in a computer implementation, the paths are sampled at discrete points, which are the historical positions in this application. Once the historical positions are "anchor points" defining the path in computer memory, it is difficult to accurately calculate the similarity as described above. Therefore, the problem of calculating the similarity of a sequence of historical positions is a technical problem rooted in computer technology.

[0132] One solution is to match the first sequence to the second using Dynamic Time Warping (DTW), for example by using the tslearn library https: / / tslearn.readthedocs.io / en / stable / index.html. DTW is a method that computes the optimal match between two given sequences (e.g., time series) according to certain restrictions and rules:

[0133] ● Every index from the first sequence matches one or more indexes from the other sequence, and vice versa;

[0134] ● The first index from the first sequence matches the first index from the other sequence (but it does not have to be the only match)

[0135] The last index from the first sequence matches the last index from the other sequence (but it doesn't have to be the only match)

[0136] ●The mapping of indices from the first sequence to indices from the other sequence and vice versa is monotonically increasing, i.e., if j>i is an index from the first sequence, then there should not be two indices l>k in the other sequence such that index i matches index l and index j matches index k, and vice versa.

[0137] The best matching is the one that satisfies all restrictions and rules and has the smallest cost, where the cost is calculated as the sum of the absolute differences between the values ​​of each pair of matching indexes.

[0138] The absolute difference between two locations can be a distance measure, such as geographic distance. The distance can be calculated using a spherical ground projected onto a flat surface:

[0139]

[0140] in:

[0141] Δφ and Δλ are the differences (in radians) between latitude and longitude, respectively. φ m is used to determine cos(φ m) method. To convert latitude or longitude to radians, use 1° = (π / 180) radians. Since only relative distances are used in DWT, the square root can be omitted to improve computational efficiency. In another example, the distance is expressed as the Haversine formula:

[0142]

[0143] in is the latitude of point 1 and the latitude of point 2 (in radians), and λ1, λ2 are the longitude of point 1 and the longitude of point 2 (in radians).

[0144] In yet another example, the distance can be calculated as the Euclidean distance, which is more efficient but less accurate. However, in most cases, the Euclidean distance is still accurate enough. The Euclidean distance is expressed as:

[0145]

[0146] The coordinates between points p are (p1,p2), and the coordinates between points q are (q1,q2). These coordinates may be angles, such as longitude and latitude, which means that absolute distances are incorrect. However, the relative distances used in this article are still correct.

[0147] Haversine, L1 (Manhattan), L2 (Euclidean), and some other metrics are available in the scipy python package (https: / / www.scipy.org / ). The common route uses scipy as a general statistical toolkit, hdbscan for the clustering route, and tslearn for DTW and DTW centroid. All three packages use numpy, which allows the packages to work well together. For example, different spatial metrics from scikit can be used for hdbscan.

[0148] Figure 5 An example implementation is shown where DTW[i,j] is the distance between s[1:i] and t[1:j] that best aligns.

[0149] Attention

[0150] DTW[i,j]:=cost+minimum(DTW[i-1,j],

[0151] DTW[i,j-1],

[0152] DTW[i-1,j-1])

[0153] It is specified that the cost between two arrays of length i and j is equal to the distance between the tails + the minimum of the costs among the arrays of length i-1, j, i, j-1, and i-1, j-1.

[0154] In other words, the two sequences define an index grid, where the index of the first sequence is represented by the x-axis of the grid and the index of the second sequence is represented by the y-axis of the grid. A "1" at the i / j-th position in the grid indicates that the i-th point of the first sequence is mapped to the j-th point of the second sequence. Finally, all points of the first sequence are mapped to at least one point of the second sequence, and vice versa.

[0155] Figure 6 A graphical representation of a grid is illustrated, which is essentially an adjacency matrix that satisfies the above requirements. It can be seen that some points in the first sequence map to multiple points in the second sequence, shown as horizontal repetitions of "1" entries. Other points in the second sequence map to multiple points in the first sequence, shown as vertical repetitions of "1" entries. Since each point in the first sequence maps to at least one point in the second sequence and the mapping is monotonic, the mapping (i.e. Figure 6 The "1" entries in ) define a path through the grid.

[0156] The number of possible mappings is exponential in the number of points in each sequence. So, for example, in Figure 6 In , the first sequence has 21 points and the second sequence has 30 points. Therefore, the number of possible mappings is about 5E39. A computer using a graphics processing unit is capable of 12 floating point operations per second. Assuming that a path can be calculated in a single floating point operation, the computer will need 4E26 seconds, which is about 1E19 years, about a trillion times longer than the age of the universe. This is obviously a technical problem, meaning that a simple software implementation is impractical on current computer hardware. Therefore, the present disclosure provides implementation details that can overcome this obstacle.

[0157] Specifically, the DTW algorithm used in this paper reduces this computational burden to a few seconds, noting that since the corresponding ships travel long distances and update their positions every few seconds, a typical sequence contains hundreds of data points. Therefore, the improvement in processing time is clearly a practical advantage of the proposed method.

[0158] One possible problem with the above algorithm is that it will match one element in the array with an unlimited number of elements in the other array (as long as the tail can match at the end), which will result in an overly curved mapping, such as the following array:

[0159] a=[1,2,3]

[0160] b=[1,2,2,2,2,2,2,2,...,5]

[0161] To minimize the distance, element 2 in array a will match all 2s in array b, which causes array b to be severely distorted. To avoid this, you can add a window constraint to limit the number of elements that an element can match. Figure 7 The windowed DWT is illustrated.

[0162] One difference is that now each element is constrained to match elements in the range iw and i+w. w:=max(w,abs(nm)) guarantees that all indices can be matched. An example implementation of DTW is the fastdtw project on pypi.org, accessible from: https: / / pypi.org / project / fastdtw / . Again, using a relational database such as SQL can greatly improve the computational efficiency of this approach because the location of a trip can be retrieved in a single query based on the trip ID. Therefore, all historical locations of the trip are essentially cached in RAM and can therefore be accessed immediately without resorting to slower persistent memory bus hardware.

[0163] In yet another example, the computer system uses Sakoe-Chiba strips in DTW, which also provides good optimization. There is an intuitive explanation for why this optimization step works well. If we compare two trajectories, both of which start at port A and end at port B, it does not make much sense to map the first point of the first trajectory to the last point of the second trajectory. The first point of the first trajectory should be similar to some of the first n points of the second trajectory. Therefore, the Sakoe-Chiba strips eliminate insufficient comparisons.

[0164] Using any of the above methods, the computer system stores the similarity measures in a similarity matrix, where each point in the similarity matrix is ​​a similarity measure between a pair of sequences.

[0165] Clustering

[0166] Once a similarity metric, such as the DTW error, can be calculated between any two sequences, the metric can be used to cluster sequences that are similar according to the determined similarities into multiple sequence clusters by executing a clustering algorithm, such as k-means clustering or density-based spatial clustering with noise (DBSCAN). It should be noted that the clustering below assumes that each sequence is a data point for the purpose of clustering. Therefore, the clustering algorithm does not "see" that each sequence has multiple locations ordered by corresponding timestamps. Only the underlying DTW algorithm (or other possible alternatives) can directly access the locations and provide a single distance metric to the clustering algorithm. Therefore, the term "path" used below does not refer to the path of a ship, but to the path between two data points (each representing a sequence).

[0167] DBSCAN is a nonparametric density-based clustering algorithm: given a set of sequences in DTT distance space, it groups sequences that are tightly packed together (sequences with many close neighbors) and marks sequences that are alone in low-density regions (whose nearest neighbors are too far away) as outliers.

[0168] Let ε be a parameter that specifies the neighborhood radius (expressed in DWT distance) of a sequence. For DBSCAN clustering, sequences are divided into core sequences, (density) reachable sequences, and outliers as follows:

[0169] A sequence p is a core sequence if at least minPts sequences are within the DWT distance ε of sequence p (including p). The minPts parameter can be set relatively low, or even to 1, since there should be no noisy sequences, and even a single sequence can be used as a cluster in the next step below.

[0170] A sequence q is directly reachable from a core sequence p if it is within distance ε from p. A sequence is said to be directly reachable from a core sequence only.

[0171] If there exists a path p1, ..., p n , where p1 = p and p n =q, and each p i+1 All from p i Directly reachable, then sequence q is reachable from p. Note that this means that the initial sequence and all sequences on the path must be core sequences, with the possible exception of q.

[0172] All sequences that are not reachable from any other sequence are outliers or noise sequences.

[0173] Now, if p is a core sequence, it forms a cluster together with all sequences (core or non-core) reachable from it. Each cluster contains at least one core sequence; non-core sequences can be part of a cluster, but they form the "edge" of the cluster because they cannot be used to reach more sequences.

[0174] Reachability is not a symmetric relation: by definition, only core sequences can reach non-core sequences. The reverse is not true, so a non-core sequence may be reachable but no sequence can be reached from it. Therefore, the concept of connectivity needs to be further introduced to formally define the scope of clusters discovered by DBSCAN. Two sequences p and q are density-connected if there exists a sequence o such that both p and q are reachable from o. Density connectivity is symmetric.

[0175] Next, the cluster satisfies two properties:

[0176] ●All sequences within a cluster are density-connected to each other.

[0177] ●If a sequence is reachable from a certain sequence density of the cluster, then it is also part of the cluster.

[0178] DBSCAN uses two parameters: ε and the minimum number of sequences required to form a dense region (minPts). It starts with an arbitrary starting sequence that has not been visited. The ε neighborhood of this sequence is searched, and if it contains enough sequences, a cluster is started. Otherwise, the sequence is marked as noise. It should be noted that this sequence may be found later in an ε environment of sufficient size of a different sequence and thus become part of a cluster.

[0179] If a sequence is found to be a dense part of a cluster, then its ε neighborhood is also part of the cluster. Therefore, all sequences found within the ε neighborhood are added, and when all sequences are also dense, their own ε neighborhood is also added. This process continues until all density-connected clusters are found. Next, new unvisited sequences are retrieved and processed to discover another cluster or noise.

[0180] DBSCAN can be used with any distance function (as well as similarity functions or other predictions). Therefore, the distance function (dist) can be considered an additional parameter and can be set to the above geographic distance. Here, the distance function can be the DTW algorithm.

[0181] The DBSCAN algorithm can be abstracted into the following steps:

[0182] 1. Find the sequences in the ε neighborhood of each sequence and identify the core sequences with more than minPts neighbors.

[0183] 2. Find the connected components of the core sequence on the neighborhood graph and ignore all non-core sequences.

[0184] 3. Assign each non-core sequence to the neighboring cluster if it is an ε neighbor, otherwise assign it to noise.

[0185] The algorithm can be used pseudocode As shown below:

[0186]

[0187] The RangeQuery can be implemented using database indexes for better performance, or using a slow linear scan.

[0188] DBSCAN visits each sequence in the database, possibly multiple times (e.g., as a candidate for different clusters). However, for practical considerations, the time complexity is dominated by the number of regionQuery calls. DBSCAN executes exactly one such query for each sequence, and if an index structure that executes neighbors in O(log n) is used, an overall average running time complexity of O(n log n) is obtained. For example, 100log 100 = 460 and 1000log 1000 = 6907, which are modest increases over linear growth, indicating that clustering is computationally efficient because the complexity does not rise exponentially.

[0189] The above method can be further improved by using HDBSCAN. H stands for hierarchical. DBSCAN uses two parameters: minimum cluster size and a constant distance threshold. The computer system first finds suitable values ​​for these two parameters. On the other hand, HDBSCAN only uses the minimum cluster size, and is therefore more advanced than DBSCAN.

[0190] Clustering that uses fewer parameters (and therefore makes fewer assumptions) is more beneficial to us because it reduces the number of error sources. In the case of DBSCAN, both ε and cluster size may be suboptimal. In the case of HDBSCAN, only cluster size may be suboptimal.

[0191] The computational complexity of the above algorithm can be further reduced by ranking the sequences between two ports by multiple metrics, such as entropy and path category. Then, the computer system can select only the top ranked sequences instead of performing DTW on the entire set. This significantly reduces the computational complexity. After selecting the best candidate, the next optimization is in stage 2 using DTW and Sakoe-Chiba band optimization.

[0192] Similarly, the HDBSCAN clustering algorithm is computationally efficient and uses DTW, which is also an efficient algorithm. Afterwards, DTW queries the SQL database, which has been highly optimized for computational efficiency. This example combination of three technical solutions SQL, DTW and HDBSCAN produces a particularly efficient computer implementation because each software program is built on the basis of the advantages of the underlying program. In this particular instance, HDBSCAN is built on the basis of DTW's efficient distance calculation, and DTW calculations are built on the basis of efficient query and retrieval of SQL databases. In such instances, itineraries can be stored by adding the trip ID field value to each of the historical location records. Then, HDBSCAN can query the database for two trip IDs, and then call DTW to calculate the distance between the two trip IDs. Therefore, when compared with other clustering algorithms described with reference to clustering "points", each point is now represented by a trip ID representing a sequence indicating a trip. Once clustering is complete, the computer system can assign a cluster ID to each cluster, such as by enumeration or automatic increment. Then, the computer system stores the cluster ID as another field with each location record. In other examples, the computer system uses another data table that stores the trip ID as a record, and for each trip ID record, the computer system stores the cluster ID. In this way, the database reflects which trip belongs to which cluster.

[0193] It should be noted that it is not necessary to use exactly these software programs, as other databases (relational databases, graph databases, CouchDB, Hadoop, etc.) combined with other distance metrics and other clustering algorithms may produce similar advantages.

[0194] Representative Itineraries

[0195] The result of clustering is a set of sequences in each cluster. Next, the computer system can determine a representative sequence (or "trip") of the set of sequences in a cluster. In this way, the representative sequence represents the cluster, and the computer system repeats the process to determine multiple representative trips for the corresponding cluster. In one example, the representative trip is the average of the points of the multiple sequences in the cluster.

[0196] The mean of the points can also be calculated with the help of Dynamic Time Warping (DWT), which is an available technique provided in various scientific papers and software libraries. Figure 6, the computer system can start with a longer sequence to retain more data points, which is the second sequence here. For each point of the second sequence, the computer system calculates the average of that point and all points in the first sequence that map to that point. Therefore, for the first point of the second sequence, only one "1" entry is indicated at 601. Therefore, the computer system calculates the average of the first point of the second sequence and the first point of the first sequence. The result is the first point of the representative or average sequence.

[0197] For the sixth point of the second sequence indicated at 602, there are three points in the first sequence mapped to that point. Therefore, the computer system calculates the average of these three points of the first sequence and the sixth point of the second sequence to calculate the sixth point of the representative or average sequence. This process is repeated until all points of the representative sequence are calculated. In another example, the computer system calculates the centroid (or geometric center of gravity) of the points mapped together in order to calculate a natural time series average. The centroid can minimize the sum of the squared Euclidean distances between itself and each point mapped together.

[0198] In the case where there are more than two sequences in a cluster, the computer system starts with two randomly selected sequences, calculates the average as described above, then selects another random sequence and calculates the average between the previously calculated average sequence and the other randomly selected sequence. Instead of randomly selecting sequences, the computer system can start with the longest sequence and continue in order of decreasing length until all sequences are incorporated into the average sequence.

[0199] Another possible way to further optimize the averaging operation is by using DTW barycentric averaging (DBA). DBA iteratively refines the average sequence (starting from the center point of the sequence) and follows an expectation maximization scheme:

[0200] 1. Assuming the average sequence is fixed, find the best multiple alignment of the sequence collection relative to the average sequence by aligning each sequence individually to the average sequence.

[0201] 2. Now assume that M is fixed and update the average sequence to the best average sequence consistent with M.

[0202] Figure 8 illustrates the example pseudocode for the DBA algorithm, and Fig. 9 The output of the DBA algorithm is illustrated. In this example, clustering identifies four clusters, and therefore the DBA algorithm calculates four representative sequences 901, 902, 903, 904. The computer system stores those representative sequences on the data storage area. Although these sequences do not need to be recalculated, it may be useful to periodically update the sequences to take into account any changes in shipping routes.

[0203] In an example computer implementation, the computer system will query a cluster ID from the database. This can be a query for a trip record table, rather than a query for a location record table. Therefore, the query returns all trip IDs stored together with the one cluster ID. The computer system can then retrieve the sequence (i.e., the historical location list) of each of these trip IDs to calculate the average value of the trip ID as described above. Once the representative sequence is calculated, the computer system stores it in the database. For example, since the representative sequence is also a historical location sequence, the representative sequence can be efficiently stored in the same table with the historical location, with a new and unique trip ID. There may also be another table that associates the trip ID with the cluster ID, so that for each cluster, the computer system can efficiently retrieve the representative trip from the database by using a query to the cluster ID (possibly in a JOIN statement between the location table and the cluster to the trip table).

[0204] Predicting Ship Movements

[0205] It should be noted that the previous description relies on historical tracking data including historical positions. Therefore, for tracking current ships, the historical data is of limited use. However, as described above, the historical data is used to calculate representative sequences of corresponding clusters, thereby finding common shipping routes.

[0206] These representative sequences can be used to track the current vessel.More specifically, the computer system receives the current geographic location of the current itinerary of the vessel being tracked. Fig.10 The current position 1001 in different representative sequences is illustrated. It should be noted that based on the current position, it is not known which route the tracked vessel will take. Fig.10 As can be seen in , there are four routes that all lead to the same port. However, each of the four routes has a different travel time and will therefore produce a different estimated arrival time.

[0207] The computer system can now determine the similarity between the current position 1001 and a plurality of representative sequences. For example, the computer system can calculate the geographic distance between each point of the current position and each of the sequences. The computer system then selects the sequence with the minimum distance. Other search algorithms can also be used, such as Monte Carlo search or divide and conquer or dichotomy. The result is the minimum distance between the current position 1001 and each of the representative sequences.

[0208] Next, the computer system selects one of the plurality of representative sequences 901 , 902 , 903 , 904 that is similar to the geographic location 1001 based on the similarity (eg, distance) between the determined geographic location and the plurality of representative sequences 901 , 902 , 903 , 904 . Fig.11 Explained Fig.10A scene in which a representative sequence 901 has been selected and is now shown as a solid line, which can be presented to the user in a user interface. It should be noted that Fig.11 Now the current position 1001 is shown, along with the predicted future path 901 that the vessel will take. Based on the current position alone, it would be impossible to predict the path. The best that can be predicted is that the path from the current position 1001 to the destination is a straight line. Fig.11 It can be seen that the straight line is inaccurate compared to the actual prediction 901.

[0209] In this sense, the computer system predicts the future movement of the tracked vessel along the selected sequence 901, which is Fig.10 One of the multiple representative sequences shown in .

[0210] In an example of an embodiment utilizing a relational database, the computer system may query the database for a list of cluster IDs, then query the database for the position record of the representative sequence of the cluster ID for each cluster ID, calculate the distance from the retrieved sequence to the current position, and store the distance associated with the cluster ID. The computer system repeats these steps for each cluster ID, then selects the cluster ID with the smallest distance.

[0211] In another example, each cluster ID may store an origin and a destination. In this way, the computer system can query only those clusters that have the same origin and destination as the current vessel. This will significantly reduce the computational burden, as not all clusters need to be matched with the current location.

[0212] The determination of the predicted path may be implemented using a statistical confidence value indicating the confidence in the predicted path. Confidence may be calculated at multiple levels. For example, Fig.10 In , the confidence value may be negatively correlated with the distance from the current position 1001 to the selected path 901. Thus, if the distance is zero, the confidence is 100%. Conversely, if the distance is greater than zero and below a maximum threshold, the confidence is between 100% and 0%. Thus, there may be multiple paths with confidence values ​​greater than 0%. Fig.11 In the example of , there is a second path 902 that is a worse match than path 901 but still within the threshold distance. Therefore, the second path 902 can be reported as a low confidence alternative solution. In addition, it can be seen that the current position 1001 is not completely on the first path 901, so the confidence of the first path is less than 100%. The confidence can be reported by the first path 901 or the ETA calculated and reported as described below.

[0213] The confidence value may have further influencing factors. For example, during clustering, if all sequences therein are relatively close to each other (low DTW distance), the confidence value may rise closer to 100%. Conversely, if the clustered sequences are dispersed, the confidence decreases. In addition, a higher confidence value may be assigned to a cluster in which there are a large number of sequences. This cluster confidence can be combined with the selection confidence above to calculate an overall confidence, for example by multiplying the two confidence values.

[0214] predict

[0215] Based on the selected sequence or route 901, the computer system can now calculate an estimated time of arrival (ETA). For example, the computer system can calculate the length of route 901 and determine the speed of the vessel to estimate the ETA. In addition, each route can have an associated typical travel time that can be used to calculate the ETA.

[0216] Anomaly Detection

[0217] As described above, a useful application of the method disclosed herein is ship anomaly detection. More specifically, as described herein, a computer system selects a representative itinerary (i.e., a sequence) that is similar to the geographic location of the tracked vessel. Next, the computer system determines the distance of the vessel from the representative itinerary. If the updated geographic location is far away from the representative itinerary, an anomaly is detected. This may occur if an updated ship position is available, but the distance between the position and the representative itinerary is greater than a threshold distance (e.g., 1 nautical mile). Therefore, the computer system calculates the distance between the current geographic location and the selected representative itinerary. In response to the distance being determined to be greater than the threshold, an anomaly is detected. Therefore, the computer system can generate an alert on a user interface or send an alert message, such as an email and SMS. It can also automatically initiate a rescue or assistance operation, which may be useful, for example, if the anomaly occurs in an area where the risk of the ship being hijacked by pirates is higher.

[0218] Computer Implementation

[0219] Fig.12 A computer network 1200 is illustrated that includes a first computer system 1201 and a second computer system 1211. The first computer system 1201 includes a processor 1202, a non-transitory program memory 1203, and a data memory 1204, the data memory being either transient, such as a random access memory (RAM), or non-transitory, such as a hard drive. The processor 1202 executes program code stored on the program memory 1203, the program code causing the processor 1202 to perform the methods described herein, such as Fig.13The method 1300 shown and described below. The program code stored on the memory 1203 can also be referred to as a first software system. More specifically, for example, the method disclosed herein is implemented in a programming language, then compiled into a binary form and installed on the program memory 1203. Therefore, the steps previously described as being performed by the server are performed by the processor 1202 of the first computing system 1201. In other words, the first computing system 1201 is an example implementation of the above-mentioned server.

[0220] The first computer system 1201 further includes a communication port for receiving position data from a position data receiver 1206, which in turn receives position data from a vessel 1207 via wireless communication. As described above, the vessel 1207 may carry a GPS sensor and wirelessly transmit GPS coordinates to the receiver 1206. Other sensors may also be used, such as the Global Navigation Satellite System (GLONASS), BeiDou, or Galileo. Positions determined by satellite navigation using these systems may be improved by assistive technologies such as assisted GPS. Other non-satellite-based positioning systems, such as inertial navigation systems or dead reckoning, may also be used for position determination.

[0221] In another example, the geolocation data includes data from an automatic identification system (AIS), which can be transmitted from each vessel to a ground receiver (T-AIS) or a satellite (S-AIS). The data from the various different receivers can be aggregated and provided via the Internet. In this way, the processor 1202 can receive location data via the Internet, such as by invoking an API call of an AIS data provider, such as MarineTraffic.com, Vesselfinder.com, or Spire Global, Inc.

[0222] The processor 1202 receives the geographic location data generated by the receiver 1206 through the communication port 1205, which may be a wide area network (WAN) or local area network (LAN) interface. In other examples, for example, the processor 1202 receives the location data from a database 1208 storing historical location data, such as the recorded locations of all available vessels over the past year.

[0223] Fig.13 A method 1300 for predicting ship movements is illustrated. The method has two parts: a first part 1301 for creating historical trip data and a second part 1302 for predicting future ship movements using the historical trip data.

[0224] In the first part 1301, the processor 1202 receives 1303 historical position data indicating the historical positions of a plurality of ships, such as AIS data recorded over a certain period of time (e.g., a year, a month, a week, or a different period of time). This has been described above with reference to Figure 1 The processor 1202 then identifies 1304 in the historical locations the docking points indicating the ports where the plurality of ships docked. This has been described above with reference to Figure 2 and 3 Described in more detail.

[0225] The processor 1202 then splits 1305 the historical position data of each of the multiple ships into multiple sequences of historical positions between the stops. Each of the multiple sequences represents one of the multiple historical trips of the corresponding ship. Basically, the processor 1202 breaks down a relatively large data set into smaller pieces so that each of the data pieces can be used separately. More specifically, the processor 1202 breaks down the historical position data into multiple historical trips. This may involve splitting the data set into a subset of each of the multiple ships. Therefore, for example, the historical data can be AIS data, and each data point can have a tag indicating the name of the ship. Therefore, the processor 1202 can iterate all ship names and store the historical positions associated with the ship in a separate data subset. Although this has reduced the size of each subset, each subset can contain the historical position data of multiple trips of a ship. This is because the AIS data does not contain a trip identifier or other data indicating an individual trip. This may also be the case with the historical position data of other non-AIS data. In other words, the historical position data can be a completely unordered and unstructured set of positions, each of which has a tag and a timestamp of the ship name. Processor 1202 first splits the data set by ship name, and then further splits the subset into individual trips. This is done as described above by identifying the stop points and splitting the data set at the stop points to produce historical trips.

[0226] Splitting the data set may include storing smaller split data sets separately by copying from the original data set or by marking individual data points in the original data set by subset identifiers. For example, each data point may be stored in a relational database, and the database may include a vessel identifier column and a trip identifier column. The value in the vessel identifier column may be a ship name provided in the historical position data. The processor 1202 may maintain a counter that is incremented each time the processor 1202 identifies a stop, and then assigns the counter value to all historical locations until the next stop is identified (i.e., setting the value of the trip identifier in the database). In this way, the processor 1202 splits the data set by assigning different trip identifiers to the position data points.

[0227] Processor 1202 may determine similarities between historical position sequences, for example by using DTW, as described above with reference to Figure 4 Next, the processor 1202 clusters 1306 similar historical position sequences into a plurality of sequence clusters according to the determined similarities, and finally, for the first portion 1301, determines 1307 a plurality of representative sequences based on the plurality of trip clusters. Fig. 9 As described, each representative sequence represents one of the multiple clusters.

[0228] In the second part 1302, the processor 1202 may then predict future vessel movements based on the representative sequences. More specifically, the processor 1202 receives 1308 a current geographic location of the tracked vessel's current trip and may determine similarities between the geographic location and a plurality of representative sequences. The processor 1202 may then determine similarities between the determined geographic location and the plurality of representative sequences. Fig.11 Based on the similarities between the plurality of representative itineraries described, one of the plurality of representative sequences with a similar geographic location is selected 1309. Finally, the processor 1202 predicts 1310 the future movement of the tracked vessel along the selected one of the plurality of representative itineraries.

[0229] Tracking data output

[0230] Once the processor 1202 has determined the tracking data, for example by determining a predicted route that the vessel may follow, the processor 1202 may generate an event to notify the second computer system 1211 of the determined route. The second computer system also includes a second processor 1212, a second program memory 1213, a second data memory 1214, and a second database 1218. The program code installed on the second program memory 1213 may also be referred to as a second software system. The second processor 1212 may provide an API that the processor 1202 may call, for example by calling a web-API function at SecondComputerSystem.com / api / vesselDeparted? vesselID=123. The web location SecondComputerSystem.com may be replaced by an Internet Protocol (IP) address. As can be seen in this example, the API function call contains the vessel ID, which in this case is 123. The API function call is an event generated by the processor 1202 when determining the predicted route.

[0231] It is also possible that the first computer system 1202 exposes an API and the second processor 1212 calls an update request function. After determining the predicted route 901, the processor 1202 generates an event in the form of a response to the update request. That is, the generated event can be a change in the value of a return variable.

[0232] In response to receiving the tracking data, for example, via an API, the second computer system 1211 may perform an action, which is then referred to as being triggered by an event generated by the processor 1202 of the first computer system 1201 .

[0233] Although Fig.12 An example computer network with two different hardware systems is illustrated, but it should be noted that the described method can also be performed on the same hardware system so that the two software systems communicate with each other. In this sense, the first software system generates an event that triggers an action of the second software system. For example, the first computer system 1201 and the second computer system can be implemented in a cloud computing environment with a dynamically changing number of computing and storage instances. The API calls provided below can also be replaced by function calls or inter-process communications, or by storing files with trace data on a non-transitory data storage 1204.

[0234] Action Trigger

[0235] Fig.14 An example port 1400 is illustrated, which includes a ship 1401 docked at a berth 1402. In this example, the ship 1401 is a container ship transporting a batch of containers 1403. The port 1400 further includes a gantry crane 1404 and a pair of trucks, such as an example truck 1405. Once the ship 1401 is docked, the gantry crane 1404 loads the container 1403 onto the truck 1405 to transport it from the port 1400 to the interior. There may also be an intermediate storage area. It may be quite typical that the cargo of a large container ship with a load capacity of 18,000 twenty-foot equivalent containers (TEUs) is distributed to 19 container trains (74 TEUs each), 32 barges (97 TEUs each) and 1,1260 trucks (1.6 TEUs per truck on average). This shows that the process of changing containers to the next mode of transportation in the shortest time is a major technical challenge because the containers need to be moved in an optimal manner.

[0236] The port controller 1406 performs port control based on the tracking data generated by the processor 1202. It is also possible that the port controller 1406 performs Fig.13The method 1300 in FIG. 1300 and generates tracking data, such as a predicted route or ETA. The determination of the route and / or ETA of the vessel triggers a series of actions. These actions can also be timed based on the departure time or ETA. For example, the gantry crane 1404 is remotely controlled by the port controller 1406, and the port controller 1406 generates a control signal for the gantry crane 1404 to move the gantry crane 1404 to the berth 1402 so that it arrives at the ETA, that is, at the same time or slightly earlier than the estimated arrival time of the vessel 1401.

[0237] Similarly, trucks 1405 may be remotely controlled, and port controller 1406 generates control signals to control trucks 1405 to arrive at berth 1402 at the ETA. In the case of a large number of trucks (e.g., more than 1,000), port controller 1406 may generate a large number of control signals. There may also be a mapping between specific containers and specific trucks, and port controller 1406 may have information about where the containers are stored on ship 1401. Therefore, port controller 1406 can determine the order or sequence in which trucks receive containers when they are unloaded from the ship. Similarly, port controller 1406 will generate control signals for trucks accordingly. Port controller 1406 can also generate signals that will be provided to truck drivers to inform them when they arrive at berth 1402.

[0238] While the above examples show that the automatic control of port equipment is technically very complex, it should be noted that a typical port unloads multiple ships at the same time, which further complicates the use of the equipment. It should also be noted that an accurate estimate of the arrival time enables the triggering of port actions. In other words, previous estimates were very inaccurate, so the automatic control of port equipment would lead to technical difficulties, such as increased wear and fuel consumption due to increased vehicle movement and also hindering the operation of other ships. However, with more accurate arrival time estimates, port equipment can be automatically controlled for all expected ships at the same time, thereby optimizing the entire operation of the port. In this sense, wear and fuel consumption are reduced. In addition, the time required to unload the cargo from the ship to the truck and then leave the port from the ground is also reduced, for example, because the equipment is ready immediately at the estimated arrival time.

[0239] By optimizing port operations, berths can also be scheduled in advance. This means that ships can plan their journeys more accurately, which also means that waiting time is reduced. This will significantly reduce the fuel consumption of idling engines during waiting. In addition, if a ship receives notification that a berth is not yet available, it can reduce its travel speed, further reducing fuel consumption.

[0240] Although Fig.14The examples are described with reference to cranes, ships, and trucks, but it will be appreciated that other types of port equipment may also be automatically controlled by the port controller 1406 and triggered by determining a predicted route. For example, the ship may be a bulk carrier, such as a bulk carrier used to transport coal, oil, grain, or chemicals. Such a ship requires bulk cargo equipment and may require trains to transport the bulk cargo inland. These equipment and trains may be remotely controlled by the port controller 1406 and triggered by determining a predicted route.

[0241] In another example, the second software system is a cargo management system that tracks a large number of transports, containers or transports on a multi-mode transport route. In this case, the first software system can create an event to update the current state of the transport, container or transport in the second software system. For example, the state of a transport, container or transport can be changed by the action triggered by the first software system through the second software system to indicate that the ship currently transporting the current transport, container or transport has left the port of origin. In addition, the ETA at the destination port can be stored in association with the transport, container or transport. In addition, the second software system can calculate the ETA at the final delivery destination by adding the estimated duration of another mode of transport to the ETA at the destination port.

[0242] Those skilled in the art will appreciate that many changes and / or modifications may be made to the above embodiments without departing from the broad general scope of the present disclosure. Therefore, the embodiments of the present disclosure should be considered in all aspects as illustrative and not restrictive.

Claims

1. A method for predicting ship movement, the method comprising: To create historical trip data, do the following: receiving historical position data indicating historical positions of a plurality of vessels, identifying in the historical locations docking points indicating ports where the plurality of ships docked, splitting the historical position data of each of the plurality of vessels into a plurality of sequences of historical positions between the stop points, each of the plurality of sequences representing one of a plurality of historical trips of the corresponding vessel, and Clustering the plurality of sequences of the historical positions to determine a plurality of representative sequences, each representative sequence representing one of a plurality of clusters; as well as To predict future ship movements: receiving the current geographical location of the tracked vessel's current itinerary, selecting one of the plurality of representative sequences that is closest to the geographic location, and Future movement of the tracked vessel along a selected one of the plurality of representative trips is predicted.

2. The method according to claim 1, wherein the method comprises during the creation of the historical travel data: storing each of the plurality of sequences as a separate record on a database; The clustering is performed by performing a query on the database for one or more stops to retrieve a record storing a sequence comprising the one or more stops of the query and clustering the sequence retrieved from the database. The method according to claim 2 , wherein the database is a relational database.

4. The method according to any one of the preceding claims, wherein the method further comprises filtering the historical location data during the creation of the historical trip data by: determining information content in time differences between the historical positions in each of the plurality of sequences; and One or more sequences with high information content in the plurality of sequences are selected for the clustering. The method of claim 4 , wherein determining the information content comprises determining an entropy of the historical locations. 6 . The method according to claim 4 , further comprising selecting one or more historical trips among the plurality of historical trips having a smaller variation in time differences between the historical locations.

7. The method according to any one of the preceding claims, wherein the method further comprises determining each representative sequence by calculating a centroid mean of the sequences of the historical positions in each of the plurality of clusters.

8. A method according to any one of the preceding claims, wherein the clustering comprises determining similarity by regularizing the historical positions of a first sequence to determine the best match with the historical positions of a second sequence.

9. A method according to any one of the preceding claims, wherein the method further comprises making a comparison between the prediction and the updated geographical position, and determining anomalies in the movement of the vessel based on the comparison.

10. The method of any preceding claim, further comprising generating a user interface representing a selected one of the plurality of representative sequences.

11. A method according to any one of the preceding claims, wherein the vessel motion prediction comprises a prediction that the tracked vessel will follow the selected one of the plurality of representative sequences.

12. A method according to any one of the preceding claims, wherein the stop is one or more of a ship origin and a ship destination.

13. The method according to any one of the preceding claims, wherein the method further comprises filtering the historical location data by one or more of a vessel origin and a vessel destination to select a historical location associated with each of the plurality of historical trips.

14. The method of claim 14, wherein the method further comprises using corresponding stops of the one or more of the vessel origin and the vessel destination.

15. The method of any preceding claim, further comprising triggering an event in a logistics application based on the prediction.

16. A method according to any preceding claim, wherein the vessel movement is predicted by a first software system, and the method further comprises generating an event by the first software system to notify a second software system of the predicted vessel movement.

17. The method of claim 17, further comprising triggering, by the event, an action performed by the second software system.

18. A method according to any preceding claim, wherein predicting the future movement of the vessel comprises calculating a probability of the future movement.

19. The method of claim 19, wherein the probability indicates a weight associated with the selected one of the plurality of representative trips.

20. The method of claim 20, wherein the weight indicates a number of sequences in the cluster represented by the selected one of the plurality of representative trips.

21. The method of any preceding claim, further comprising storing the received historical location data on a relational database as a plurality of data records, the plurality of data records comprising one record for each of the historical locations.

22. The method of claim 22, wherein identifying the plurality of historical trips comprises creating a field value indicating a trip identifier for each of the records in the relational database to indicate an association between a data record and one of the plurality of historical trips.

23. The method according to any one of claims 22 to 23, wherein Clustering includes creating a field value indicating an association between a trip identifier and a cluster identifier to indicate which trip belongs to which cluster, and Determining the plurality of representative sequences comprises: Based on a cluster identifier, querying the relational database for historical locations associated with the trip identifier associated with the cluster identifier, and The returned sequences indicated by the run identifiers are averaged to determine one of the plurality of representative sequences.

24. A method according to any one of the preceding claims, wherein performing the method comprises running a first service and a second service, The first service is configured to perform the steps of receiving the historical location data, identifying stops, and splitting the historical location data into the plurality of sequences, the first service further storing the plurality of sequences on a database; and The second service is configured to retrieve the sequences from the database for the clustering of the sequences.

25. Software which, when executed by a computer, causes the computer to perform a method according to any preceding claim.

26. A computer system for predicting vessel movement, the computer system comprising: a data storage area configured to store historical position data indicating historical positions of a plurality of vessels; A processor configured to create historical trip data by: identifying, in the historical locations, docking points indicating ports where the plurality of vessels docked; splitting the historical position data of each of the plurality of vessels into a plurality of sequences of historical positions between the stop points, each of the plurality of sequences representing one of a plurality of historical trips of the corresponding vessel; Clustering the plurality of sequences of the historical positions to determine a plurality of representative sequences, each representative sequence representing one of a plurality of clusters; The processor is further configured to predict future vessel movement by: receiving a current geographic location of the tracked vessel's current itinerary; selecting one of the plurality of representative sequences that is closest to the geographic location; Future movement of the tracked vessel along a selected one of the plurality of representative trips is predicted.