Patent Publication Number: US-2023161308-A1

Title: Watercraft servicing system

Description:
FILED 
     This specification relates to systems for servicing watercrafts, for example, for providing electrical power to watercrafts. 
     BACKGROUND 
     Powering waterborne vessels, such as boats, ships, and hovercrafts, using electrical power provides a number of advantages, including, for example, reducing air and water pollutions, reducing noise, and requiring fewer and less costly maintenance. Further, electricity can be a renewable energy resource, and thus powering waterborne vessels with renewable electrical power can support energy sustainability and security, and reduce carbon footprints for operating the waterborne vessels. 
     However, powering waterborne vessels with batteries can be challenging for long-distance ocean or waterway transits. High capacity batteries are heavy to carry, causing battery-powered long transits to be inefficient. Additionally, batteries typically require long recharging times, which can cause delays in shipping schedules when recharging is performed in port. 
     SUMMARY 
     This specification describes techniques, methods, systems, and other approaches for servicing watercrafts, for example, for providing electrical power to watercrafts on their navigation routes. The watercrafts can be battery-powered waterborne vessels, such as boats, ships, and hovercrafts, along their travel routes. 
     In one innovative aspect, this specification describes a system for servicing watercraft. The system includes one or more waterborne platforms. Each waterborne platform includes an electric power supply, a driving system for moving the waterborne platform in a body of water, a watercraft interfacing system configured to at least supply electric power to an electrically-powered watercraft, and a control interface configured to exchange data with a controller. The controller is configured to: receive input data, determine respective destination locations for the waterborne platforms to supply electric power to the electrically-powered watercraft, and send control data that includes data indicating the destination locations to the waterborne platforms. 
     In some implementations of the system, the electrical power supply includes a renewable energy source. The driving system can be powered at least in part by a renewable energy source. For example, the renewable energy source can include one or more wind turbines. 
     In some implementations of the system, the waterborne platform further includes a conversion system configured to reconfigure the wind turbine between a first mode and a second mode. When operating in the first mode, the wind turbine is configured to convert wind power to electric power. When operating in the second mode, the wind turbine is configured to function as a wind sail to propel the first waterborne platform. 
     In some implementations of the system, the waterborne platform further includes a battery recharging system configured to recharge a battery. The watercraft interfacing system of the waterborne platform can include a battery exchange system configured to exchange batteries with the electrically-powered watercraft. 
     In some implementations of the system, the waterborne platform is further configured to support aquaculture in the body of water. 
     In some implementations of the system, the system comprises a plurality of waterborne platforms including the first waterborne platform, and the controller is configured to determine respective destination location for each of the plurality of waterborne platforms, and send respective control data to each of the plurality of waterborne platforms. 
     In some implementations of the system, the destination locations for the plurality of waterborne platforms are arranged along one or more shipping routes in the body of water. 
     This specification also describes a controller for sending control data to one or more waterborne platforms. The controller includes one or more computers and one or more storage devices storing instructions that when executed by the one or more computers cause the one or more computers to: obtain input data, determine, based on the input data, the respective control data for each respective waterborne platform in the one or more waterborne platforms, and sends the respective control data to each of the waterborne platforms. The respective control data includes data indicating a respective target location for the respective waterborne platform. 
     In some implementations of the controller, wherein the input data includes data indicating a respective current location of each of the one or more electrically-powered watercrafts. The input data can further include respective navigation task information for each of the one or more electrically-powered watercrafts. The respective navigation task information can include a respective destination location, and optionally, one or more stop locations, for the respective electrically-powered watercraft. 
     In some implementations of the controller, the input data includes data indicating shipping route information of the body of water. The input data can also include data indicating one or more of: weather information, wind information, or wave properties information. 
     In some implementations of the controller, the input data includes data indicating, for each of the one or more waterborne platforms, a respective current location, a respective current power generation status, and a battery inventory status. 
     In some implementations of the controller, to determine the respective control data for each of the waterborne platforms comprises, the controller optimizes an objective function with respect to the respective target locations for the one or more waterborne platforms. The objective function can include one or more of: a component that measures an energy expenditure, a component indicating an energy harvesting efficiency for the waterborne platforms, a component indicating a cost, or a component indicating an incentive for one or more desired shipping routes. 
     This specification also describes a method for controlling one or more waterborne platforms. The method is implemented by the controller as described above. 
     This specification also describes a method for servicing watercrafts. The method is performed by a waterborne platform. The waterborne platform receives control data that includes data indicating a destination location of the first waterborne platform, moves to the destination location, harvests electric power from the renewable energy source, and supplies a portion of the electric power to an electrically-powered watercraft. 
     Among other advantages, implementations of the techniques provided by this specification may reduce environmental impacts of watercrafts while improving operational efficiency, energy efficiency, and safety. 
     By receiving electrical energy from one or more waterborne platforms, a watercraft, e.g., a marine vessel such as a cargo ship, can transit across oceans primarily using electricity from batteries. Charging the batteries at sea can improve operational efficiency since the marine vessel can continue to travel along shipping routes while charging from the watercraft. This can reduce recharging and/or refueling time required in port and can increase availability of land-based refueling stations. 
     In some cases, the watercraft carrying the batteries can recharge from photovoltaic, tidal, and/or wind-powered charging stations arranged on one of the waterborne platforms. Thus, the watercraft can be powered using a sustainable energy source, improving energy efficiency and reducing environmental impacts. 
     Because the batteries of the watercraft can be regularly recharged during transit, the batteries can be smaller than would be necessary for powering the watercraft for an entire voyage. Thus, the batteries can be lighter and can occupy a smaller volume of space in the marine vessel. Lighter, smaller batteries can enable the watercraft to travel at faster speeds and carry more cargo. Carrying lighter and smaller batteries can also improve safety of the marine vessel due to a reduced risk of fire and explosion caused by thermal runaway. 
     The waterborne platforms can be controlled to move to their respective destination locations. The system can determine, in real time and dynamically, optimal destination locations for the waterborne platforms to service a plurality of watercrafts. For example, the destination locations can be selected according to one or more of: the current locations of the watercrafts, the navigation route information of the watercrafts, the battery status of the watercrafts, the weather information, the wave information, the energy generation status of the waterborne platforms, the location and status of protected marine life, and so on. The system can determine the optimal destination locations of the waterborne platforms to achieve one or more objectives, such as minimizing energy expenditure of the watercrafts, minimizing navigation time of the watercrafts to complete the respective navigation tasks, maximizing energy harvesting potentials of the waterborne platforms, to incentivize the watercrafts to avoid regions of protected marine life, and so on. These features of the system described herein provide further improvements on energy efficiency, operational efficiency, environmental protection, and flexibility to incentivize desirable navigation routes for the watercrafts. 
     The details of one or more embodiments of the subject matter of this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG.  1 A  shows an example system for servicing watercrafts. 
         FIG.  1 B  shows components of an example waterborne platform for servicing watercrafts. 
         FIG.  2    is a flow diagram of an example process for controlling waterborne platforms configured to service watercrafts. 
         FIG.  3    is a flow diagram of an example process for a waterborne platform to service watercrafts. 
         FIG.  4    shows an example computer system for implementing certain operations described in this specification. 
     
    
    
     Like reference numbers and designations in the various drawings indicate like elements. 
     The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit the implementations described and/or claimed in this document. 
     DETAILED DESCRIPTION 
       FIG.  1 A  shows an example of an example system  100  for servicing watercrafts. In particular, the system  100  is configured to provide electricity to one or more electrically-powered watercrafts  130  navigating in a body of water. The system  100  includes one or more waterborne platforms  120  for supplying electricity to the watercrafts  130  and a controller  110  for providing control data to the waterborne platforms  120 . 
     The operations of the controller  110  can be implemented as computer programs on one or more computers in one or more locations. For example, the controller  110  can be implemented by computers located in one or more locations that are off-board the waterborne platforms  120 , such as being located in a centralized location. In another example, the controller  110  can be partially or completely implemented by computers located on one or more of the waterborne platforms  120 . The controller  110  can exchange data with the waterborne platforms  120 . In some implementations, the controller  110  can further exchange data with one or more of the watercrafts  130 . 
     An example of the waterborne platform  120  is described with reference to  FIG.  1 B . In general, referring to  FIG.  1 A  and  FIG.  1 B , the waterborne platform  120  at least includes an electric power supply  122 , a driving system  124  for moving waterborne platform in the body of water, a watercraft interfacing system  126  configured to at least supply electric power to the electrically-powered watercraft  130 , and a control interface  128  configured to exchange data with the controller  110 , while the controller  110  is configured to receive input data  110   a , determine respective destination locations for the waterborne platforms  120  to supply electric power to the watercrafts  130 , and send control data  110   b  that includes data indicating the destination location to the respective waterborne platform  120 . 
     In some implementations, the electrical power supply  122  of the waterborne platform  120  includes a renewable energy source, and optionally, the driving system  124 , such as the electrical motor  124   a  configured to drive the propellers  124   b , of the waterborne platform  120  can be powered by the renewable energy source. In one example, the renewable energy source includes one or more wind turbines  122   a.    
     In one particular example, the waterborne platform further includes a conversion system  124   d  configured to reconfigure the wind turbine  122   a  between a first mode and a second mode. When operating in the first mode, i.e., wind turbine mode, the wind turbine  122   a  is configured to convert wind power to electric power. When operating in the second mode, the wind turbine  122   a  is configured to function as a wind sail to propel the waterborne platform  120 . Reconfiguration of the wind turbine  122   a  can be performed according to conditions such as waterborne platform location, wind condition, power status of the waterborne platform  120 , and whether the waterborne platform  120  is navigating. For example, when the waterborne platform  120  needs to navigate to the destination location and the wind conditions are suitable, the conversion system can convert the wind turbine  122   a  to the second (wind sail) mode to function as a wind sail to propel the waterborne platform  120 . This conversion capability can maximize the utility of wind power. The conversion system can be implemented by one or more actuation systems configured to relocate and/or rotate the blades of the wind turbine  122   a.    
     Alternatively or in addition, the electrical power supply  122  of the waterborne platform  120  can include other renewable energy sources such as one or more solar panels  122   b  and a wave energy generator  122   c . In some implementations, the waterborne platform  120  is configured to store batteries  122   d  in a bottom portion of the waterborne platform. The batteries  122   d  can be rechargeable batteries that can be charged by the power supply of the waterborne platform  120 . 
     The watercraft interfacing system  126  of the waterborne platform  120  can include a battery exchange system  126   a  configured to exchange batteries with the electrically-powered watercraft. For example, when the watercraft  130  is docked at a specific location next to the waterborne platform  120 , one or more actuators of the battery exchange system  126   a  can mechanically swap a battery  132  loaded on the watercraft  130  with a fully charged battery  122   d  of the waterborne platform  120 . 
     Alternatively or additionally, the watercraft interfacing system  126  of the waterborne platform  120  can include a battery recharging system, e.g., a recharge port  126   b , configured to recharge the battery  132  when the watercraft  130  is docked at next to the waterborne platform  120 . 
     In some implementations, the recharge port  126   b  can be configured on a mechanical element that can be controlled to extend from and withdraw back to the waterborne platform  120 . For example, the recharge port  126   b  can be configured on a retractable boom  126   e , e.g., a telescopic arm controlled by actuators. When the waterborne platform  120  receives control data including a command for the waterborne platform  120  to recharge the battery  132  of a nearby watercraft  130 , the driving system  124  of the waterborne platform  120  can move the waterborne platform  120  to a predetermined short distance away from the nearby watercraft  130 , and the watercraft interfacing system  126  of the waterborne platform  120  can control the telescopic arm to extend from the waterborne platform  120  to connect the recharge port  126   b  with a connection port of the watercraft  130  to recharge the battery  132 . 
     In some implementations, the retractable boom can be configured to retract and extend in response to motion, so that forces are not transmitted. 
     In some implementations, the driving system  124  of the waterborne platform  120  can move the waterborne platform  120  along with the watercraft  130  during battery recharging, so the watercraft  130  does not need to be anchored during recharging. In particular, the waterborne platform  120  can maintain distance with the watercraft  130  by controlling the driving system  124  based on real-time measurement of a distance between the first waterborne platform  120  and the watercraft  130 . The distance measurements can be obtained by distance sensor of the waterborne platform  120 . 
     After recharging is completed, the watercraft interfacing system  126  of the waterborne platform  120  can control the boom to withdraw back to the waterborne platform, and thus disconnect the recharge port  126   b  from the connection port of the watercraft  130 . 
     In some implementations, the watercraft interfacing system  126  further includes cargo exchange system  126   c  configured to exchange cargo with the electrically-powered watercraft  130 . The cargo exchange system  126   c  can include actuators for mechanically moving cargos, and a sensing device, such as a camera or a scanner, for recognizing the cargo to be exchanged. Thus, in addition to providing electricity, the waterborne platform  120  can further service the watercrafts as a cargo storage transfer center. In some implementations, the watercraft interfacing system  126  of the waterborne platform  120  further includes a data link  126   d  configured to exchange data with the electrically-powered watercraft  130 . 
     In some implementations, the waterborne platform  120  further includes an anchor  124   c  configured to secure the waterborne platform to an anchored location (e.g., the destination location determined by the controller  110 ), when the waterborne platform is not moving. 
     In some implementations, the waterborne platform  120  further includes a sensor system  129  for obtaining parameters of the environment. For example, the sensor system  129  can include an acoustic sensor  129   a , configured to sense acoustic signals, e.g., from marine life such as whales. The sensed acoustic signal can help in determining optimal destination locations of the waterborne platforms to incentivize the watercrafts to use navigation routes that have minimum impact on protected marine species. In another example, the sensor system  129  can include a wave sensor  129   b  for measuring wave conditions. The measurement data generated by the wave sensor  129   b  can help in determining optimal destination locations of the waterborne platforms to avoid regions with unfavorable wave conditions. 
     In some implementations, the waterborne platform  120  is further configured to support aquaculture in the body of water. For example, waterborne platform  120  can further include a marine aquaculture system that cultivates the growth of aquatic life, such as fish. Marine aquaculture systems have already been in existence and deployed in offshore locations. For example, a marine aquaculture system can include a submerged cage configured to maintain and store the aquatic cargo, such as salmon, in the open ocean and allow the cargo to move freely and be monitored. By combining a watercraft-servicing platform with the marine aquaculture system, an efficient, multi-purpose system can be formed. In some implementations, one or more of the watercrafts  130  can be service crafts for the marine aquaculture system. For example, these watercrafts can be used to transport the aquatic cargo, or the feed, maintenance equipment, and inspectors for the aquatic cargo. The watercrafts  130  can also be configured to perform one or more of: feeding, harvesting, or monitoring of the aquaculture. By integrating the marine aquaculture system with the watercraft-servicing components of the waterborne platform  120 , the system  100  can provide electricity to the watercrafts  130  while the watercrafts  130  are servicing the marine aquaculture system. 
     The waterborne platforms  120  can be controlled to move to their respective destination locations according to the control data  110   b  received by the control interface  128  from the controller  110 . The control interface  128  can be equipped with one or more of: a wireless, a cellular, or a satellite data links. 
     The controller  110  is configured to determine respective destination locations for the waterborne platforms  120  according to the input data  110   a  received from the waterborne platforms  120 , and optionally, from one or more of the waterborne platforms  130 . In some implementations, the controller  110  can further receive the input data  110  from other data source, such as the internet. 
     The input data  110  can include position and route information for the watercrafts  130 . For example, the input data  110  can include a respective current location of each watercrafts  130  and/or the respective navigation task information of each watercrafts  130 . The navigation task information can include, for example, a respective destination location, and optionally one or more stop locations for the respective watercraft. 
     The input data  110  can include electrical power usage information for the watercraft  130 . For example, the input data  100  can include a respective current power level for each watercraft. The input data  100  can further include respective power consumption information for each watercraft, such as data on power consumption per unit distance for one or more speeds of the watercraft. 
     The input data  110  can include data indicating shipping route information of the body of water. For example, the input data  100  can include a map of the usual shipping route distribution in the body of water. In some implementations, the shipping route information includes seasonal trends of the shipping route distribution, including, for example, an indicator of how busy a particular shipping route is during a specified time frame. 
     The input data  110  can include additional environmental information such as weather information, wind information, or wave properties information. In some implementations, the input data  110  includes data indicating locations of protected marine life, such as protected marine life being observed and reported by one or more of the waterborne platforms  120 . 
     The input data  110  can include data indicating a respective current location of each waterborne platform  120 . The input data  110  can further include data indicating a respective current power generation status and/or a battery inventory status for each waterborne platform. 
     The controller  110  can determine, based on the input data  110   a , in real time and dynamically, optimal destination locations for the waterborne platforms to service a plurality of watercrafts. For example, the destination locations for the waterborne platforms  120  can be arranged along one or more shipping routes in the body of water. 
     In some implementations, the destination locations can be selected according to one or more optimization criteria. For example, the controller  110  can determine, based on the input data  110   a , the respective control data  110   b  for each of the waterborne platforms  120  by optimizing an objective function with respect to the respective target locations for the one or more waterborne platforms  120 . 
     The controller  110  can use any suitable algorithm to solve the optimization problem. Examples of the optimization process includes: Newton&#39;s method, sequential quadratic programming, gradient descent, conditional gradient method, simultaneous perturbation stochastic approximation (SPSA), and so on. In some implementations, a machine-learning model can be used to generate the destination locations based on the input data  110   a . The machine-learning model can be trained using data collected in the past, and can include one or more of: a linear regression model, a linear discriminant model, a logistic regression model, a support-vector machine model, a decision tree model, a k-nearest neighbor&#39;s model, or a neural network model. 
     In some implementations, the destination locations for the waterborne platforms  120  are optimized for energy efficiency. That is, the objective function includes a component that measures an energy expenditure. The energy expenditure can include the energy required for one or more of the electrically-powered watercrafts  130  to each complete a respective navigation task conditioned on the waterborne platforms being located at the respective target locations. In determining the destination locations of the waterborne platforms for optimizing energy efficiency, the controller  110  can take into consideration the current locations, navigation task information, and electrical power usage information of the watercraft  130 . Alternatively or additionally, the controller  110  can take into consideration the shipping route information of the body of water. For example, the controller  110  can designate more waterborne platforms at locations close to the busiest shipping routes, so that the watercrafts on these routes can have easy access to one or more waterborne platforms. 
     In some implementations, the energy expenditure includes a weighted sum of energy required for each of a plurality of the electrically-powered watercrafts  120  to complete a respective navigation task conditioned on the waterborne platforms being located at the respective target locations. The weighted sum can include weighting coefficients assigned to each of the plurality of electrically-powered watercrafts. 
     In some implementations, the destination locations for the waterborne platforms  120  are optimized for energy harvesting efficiency of the waterborne platforms  120 . That is, the objective function can include a component indicating an energy harvesting efficiency for the waterborne platforms. 
     In some implementations, the destination locations for the waterborne platforms  120  can be optimized for minimizing a cost for the watercrafts  130  to complete their respective navigation tasks. For example, each watercraft may have a cost associated with unit navigation time or distance. The cost component of the objective function can be used to minimize a weighted total cost for the watercrafts. The objective function can include a component indicating a cost for the watercrafts conditioned on the destination locations of the waterborne platforms. 
     In some implementations, destination locations for the waterborne platforms  120  are optimized for incentivizing the watercrafts to use desired shipping routes or avoid particular shipping routes. For example, the controller  110  can select the destination locations for the waterborne platforms to be stationed away from a certain region, e.g., a region that is known for a protected marine species to be present. 
       FIG.  2    is a flow diagram illustrating an example process  200  for controlling waterborne platforms configured to service watercrafts. For convenience, the process  200  will be described as being performed by a system of one or more computers located in one or more locations. For example, the controller  110  of the system  100  of  FIG.  1 A , appropriately programmed in accordance with this specification, can perform the process  200  to control the waterborne platforms configured to service watercrafts. 
     In step  210 , the controller receives input data. In step  220 , the controller determines the respective destination locations for the waterborne platforms. In step  230 , the controller sends respective control data to each of the waterborne platforms, where the control data including data indicates the destination locations of the waterborne platforms. Details of the steps in the process  200  have been described with reference to  FIG.  1    and  FIG.  2   , and are not repeated herein. 
       FIG.  3    is a flow diagram illustrating an example process  300  for a waterborne platform to service watercrafts. For convenience, the process  300  will be described as being performed by the waterborne platform  120  described in  FIG.  1 A  and  FIG.  1 B . 
     In step  310 , the waterborne platform receives control data from a controller. The control data includes data indicating a destination location for the waterborne platform. In step  320 , the waterborne platform moves to the destination location, e.g., by using a driving system of the waterborne platform. In step  330 , the waterborne platform harvests electric power from a renewable energy source, e.g., by using one or more of a wind turbine, a solar panel, and/or a wave energy generator. In step  340 , the waterborne platform supplies supplying a portion of the harvested electric power to an electrically-powered watercraft, e.g., by swapping rechargeable batteries with the watercraft or by supplying a charging port to the watercraft. Certain details of the steps in the process  300  have been described with reference to  FIG.  1    and  FIG.  2   , and are not repeated herein. 
       FIG.  4    shows an example computer system  400  that can be used to perform certain operations described above, for example, to perform the operations of the controller  110  in the system  100  of  FIG.  1   . The system  400  includes a processor  410 , a memory  420 , a storage device  430 , and an input/output device  440 . Each of the components  410 ,  420 ,  430 , and  440  can be interconnected, for example, using a system bus  450 . The processor  410  is capable of processing instructions for execution within the system  400 . In one implementation, the processor  410  is a single-threaded processor. In another implementation, the processor  410  is a multi-threaded processor. The processor  410  is capable of processing instructions stored in the memory  420  or on the storage device  430 . 
     The memory  420  stores information within the system  400 . In one implementation, the memory  420  is a computer-readable medium. In one implementation, the memory  420  is a volatile memory unit. In another implementation, the memory  420  is a non-volatile memory unit. 
     The storage device  430  is capable of providing mass storage for the system  400 . In one implementation, the storage device  430  is a computer-readable medium. In various different implementations, the storage device  430  can include, for example, a hard disk device, an optical disk device, a storage device that is shared over a network by multiple computing devices (for example, a cloud storage device), or some other large-capacity storage device. 
     The input/output device  440  provides input/output operations for the system  400 . In one implementation, the input/output device  440  can include one or more network interface devices, for example, an Ethernet card, a serial communication device, for example, a RS-232 port, and/or a wireless interface device, for example, a 502.11 card. In another implementation, the input/output device can include driver devices configured to receive input data and send output data to other input/output devices, for example, keyboard, printer and display devices  460 . Other implementations, however, can also be used, such as mobile computing devices, mobile communication devices, set-top box television client devices, etc. 
     Although an example processing system has been described in  FIG.  4   , implementations of the subject matter and the functional operations described in this specification can be implemented in other types of digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. 
     This specification uses the term “configured” in connection with systems and computer program components. For a system of one or more computers to be configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination of them that in operation cause the system to perform the operations or actions. For one or more computer programs to be configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by a data processing apparatus, cause the apparatus to perform the operations or actions. 
     Embodiments of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, that is, one or more modules of computer program instructions encoded on a tangible non-transitory storage medium for execution by, or to control the operation of, data processing apparatus. The computer storage medium can be a machine-readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them. Alternatively or in addition, the program instructions can be encoded on an artificially-generated propagated signal, for example, a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. 
     The term “data processing apparatus” refers to data processing hardware and encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can also be, or further include, special purpose logic circuitry, for example, an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). The apparatus can optionally include, in addition to hardware, code that creates an execution environment for computer programs, for example, code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. 
     A computer program, which may also be referred to or described as a program, software, a software application, an app, a module, a software module, a script, or code, can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages; and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data, for example, one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, for example, files that store one or more modules, sub-programs, or portions of code. A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a data communication network. 
     In this specification the term “engine” is used broadly to refer to a software-based system, subsystem, or process that is programmed to perform one or more specific functions. Generally, an engine will be implemented as one or more software modules or components, installed on one or more computers in one or more locations. In some cases, one or more computers will be dedicated to a particular engine; in other cases, multiple engines can be installed and running on the same computer or computers. 
     The processes and logic flows described in this specification can be performed by one or more programmable computers executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by special purpose logic circuitry, for example, an FPGA or an ASIC, or by a combination of special purpose logic circuitry and one or more programmed computers. 
     Computers suitable for the execution of a computer program can be based on general or special purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a central processing unit for performing or executing instructions and one or more memory devices for storing instructions and data. The central processing unit and the memory can be supplemented by, or incorporated in, special purpose logic circuitry. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, for example, magnetic, magneto-optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, for example, a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, for example, a universal serial bus (USB) flash drive, to name just a few. 
     Computer-readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, for example, EPROM, EEPROM, and flash memory devices; magnetic disks, for example, internal hard disks or removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. 
     To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on a computer having a display device, for example, a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, for example, a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, for example, visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user&#39;s device in response to requests received from the web browser. Also, a computer can interact with a user by sending text messages or other forms of messages to a personal device, for example, a smartphone that is running a messaging application and receiving responsive messages from the user in return. 
     Data processing apparatus for implementing machine learning models can also include, for example, special-purpose hardware accelerator units for processing common and compute-intensive parts of machine learning training or production, that is, inference, workloads. 
     Machine learning models can be implemented and deployed using a machine learning framework, for example, a TensorFlow framework, a Microsoft Cognitive Toolkit framework, an Apache Singa framework, or an Apache MXNet framework. 
     Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, for example, as a data server, or that includes a middleware component, for example, an application server, or that includes a front-end component, for example, a client computer having a graphical user interface, a web browser, or an app through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, for example, a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), for example, the Internet. 
     The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, a server transmits data, for example, an HTML page, to a user device, for example, for purposes of displaying data to and receiving user input from a user interacting with the device, which acts as a client. Data generated at the user device, for example, a result of the user interaction, can be received at the server from the device. 
     While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any features or of what may be claimed, but rather as descriptions of features specific to particular embodiments. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a subcombination or variation of a subcombination. 
     Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products. 
     Thus, particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous.