Machine learning to reduce the resources required to generate solutions for multi-node problems.

Machine learning models identify zero and non-zero nodes in multi-node problems, significantly reducing the computational burden and time needed to solve complex logistics chain issues.

JP2026525213APending Publication Date: 2026-07-29ORACLE INT CORP
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
ORACLE INT CORP
Filing Date
2024-06-26
Publication Date
2026-07-29

AI Technical Summary

Technical Problem

Solving large-scale multi-node problems, such as multi-stage inventory optimization, is computationally intensive and requires significant time, energy, and computing power, making existing methods impractical for complex logistics chains with thousands of nodes.

Method used

Utilizing machine learning models, particularly graph neural networks and transformers, to identify zero and non-zero nodes in multi-node problems, allowing for a subset of nodes to be processed using a guaranteed service model, reducing the complexity and computational resources needed to generate solutions.

Benefits of technology

Reduces the time and computational power required to solve complex multi-node problems by several orders of magnitude, enabling efficient generation and distribution of solutions across computing systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026525213000001_ABST
    Figure 2026525213000001_ABST
Patent Text Reader

Abstract

In embodiments, the method may include accessing a multinode problem by a computing system. A multinode problem may include multiple nodes, each having one or more node features. The method may include providing each node, each having its respective node features, to a machine learning model by the computing system. The method may include using the machine learning model by the computing system to determine a subset of nodes from the multiple nodes, at least partially based on their respective node features. The method may include calculating one or more solutions to the multinode problem by the computing system, at least partially based on the subset of nodes. The method may include storing one or more solutions to the multinode problem in computer memory by the computing system.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Cross - Reference to Related Applications This application claims the benefit and priority of U.S. Patent Application No. 18 / 343,292, filed on June 28, 2023, entitled "MACHINE LEARNING TO REDUCE RESOURCES FOR GENERATING SOLUTIONS TO MULTI - NODE PROBLEMS", which is hereby incorporated by reference in its entirety.

[0002] Technical Field This disclosure relates to the technical field of computing systems and to improving the efficiency of computing systems when generating solutions to multi - node problems.

Background Art

[0003] Background[[ID=- 21]] This disclosure generally relates to improving efficiency in performing resource - intensive computations. More specifically, this disclosure relates to generating solutions to multi - node problems.

Summary of the Invention

Means for Solving the Problems

[0004] Summary In embodiments, the method may include a computing system accessing a multinode problem. The multinode problem may include a plurality of nodes, each having one or more node features. The method may include the computing system providing each node, each having its respective node features, to a machine learning model. The method may include the computing system using the machine learning model to determine a subset of nodes from the plurality of nodes, at least partially based on their respective node features. The method may include the computing system calculating one or more solutions to the multinode problem, at least partially based on the subset of nodes. The method may include the computing system storing one or more solutions to the multinode problem in computer memory.

[0005] In some embodiments, a subset of nodes among a plurality of nodes may include non-zero nodes. In some embodiments, providing each node and each node feature may further include generating an embedding vector which may include one or more dimensions corresponding to each node feature.

[0006] In some embodiments, determining a subset of nodes may further include the computing system using a machine learning model to determine the minimum value associated with each of the multiple nodes. Determining a subset may further include the computing system using a machine learning model to determine the probability that the minimum value associated with each of the multiple nodes is the value associated with each node in the optimal solution. Determining a subset also includes the computing system identifying a subset of nodes, where each node in the subset is identified as non-zero and characterized by a probability greater than or equal to a predetermined threshold.

[0007] In some embodiments, the machine learning model may include a graph neural network. The multinode problem can represent a multistage inventory optimization problem. In some embodiments, a computer system can utilize a guaranteed service model to compute one or more solutions to the multinode problem. The machine learning model may be trained at least in part on a historical dataset that may contain multiple solutions to the multinode problem. In some embodiments, one or more solutions to the multinode problem may be provided to a second computing system.

[0008] In embodiments, the computing system may include one or more processors. The computing system may also include non-temporary computer-readable media that, when executed by one or more processors, may contain instructions that cause the computing system to perform actions. Actions may cause the computing system to access a multi-node problem. A multi-node problem may include multiple nodes, each having one or more node features. The computing system can then provide each node, each having its respective node features, to a machine learning model. The computing system can then use the machine learning model to determine a subset of nodes from the multiple nodes, at least partially based on their respective node features. The computing system can then compute one or more solutions to the multi-node problem, at least partially based on the subset of nodes. The computing system can store one or more solutions to the multi-node problem in computer memory.

[0009] In some embodiments, the machine learning model includes an embedded module. A subset of the nodes among the multiple nodes may include non-zero nodes. The multi-node problem can represent a multi-stage inventory optimization problem. The computing system can utilize a guaranteed service model to compute one or more solutions to the multi-node problem. In some embodiments, the historical dataset may include multiple solutions to the multi-node problem.

[0010] In an embodiment, a non-temporary computer-readable storage medium can store a set of instructions. When the instructions are executed by one or more processors of the computing system, they can cause the computing system to perform an action. The action may include the computing system accessing a multi-node problem. A multi-node problem may include multiple nodes, each having one or more node features. The action may include the computing system providing each node, each having its respective node features, to a machine learning model. The action may include the computing system using the machine learning model to determine a subset of nodes from the multiple nodes, at least partially based on their respective node features. The action may include the computing system calculating one or more solutions to the multi-node problem, at least partially based on the subset of nodes. The action may include the computing system storing one or more solutions to the multi-node problem in computer memory.

[0011] In some embodiments, a subset of nodes among multiple nodes may include non-zero nodes. Determining a subset of nodes may further include, by the computing system, using a machine learning model, determining the minimum value associated with each of the multiple nodes. Determining a subset of nodes may also include, by the computing system, using a machine learning model, determining the probability that the minimum value associated with each of the multiple nodes is the value associated with each node in the optimal solution. Determining a subset of nodes may also include, by the computing system, identifying a subset of nodes, where each node in the subset is identified as non-zero and characterized by a probability greater than or equal to a predetermined threshold. In some embodiments, the computer system can utilize a guaranteed service model to compute one or more solutions to a multi-node problem. The machine learning model may include embedded modules. [Brief explanation of the drawing]

[0012] [Figure 1] This is a simplified diagram of a logistics chain according to one embodiment. [Figure 2] This figure illustrates a simplified multi-node problem according to one embodiment. [Figure 3] This figure illustrates a system and process for identifying a zero node according to one embodiment. [Figure 4] This figure illustrates a system for identifying a subset of nodes according to one embodiment. [Figure 5] This is a flowchart of a method for generating a solution to a multi-node problem according to one embodiment. [Figure 6] This block diagram illustrates one pattern for implementing a cloud infrastructure system as a service, following at least one embodiment. [Figure 7]This block diagram illustrates another pattern for implementing a cloud infrastructure system as a service, following at least one embodiment. [Figure 8] This block diagram illustrates another pattern for implementing a cloud infrastructure system as a service, following at least one embodiment. [Figure 9] This block diagram illustrates another pattern for implementing a cloud infrastructure system as a service, following at least one embodiment. [Figure 10] A block diagram showing an exemplary computer system according to at least one embodiment. [Modes for carrying out the invention]

[0013] Detailed explanation The ability to collect and perform computations on large datasets provides opportunities to address problems that were previously impossible or impractical to solve. The larger the dataset, the higher the computational cost of finding a solution to the problem. As the world becomes more complex, datasets representing real-world problems grow in size. Managing these datasets can itself be problematic; collecting, sorting, and remembering ever-expanding datasets can present significant challenges. Performing computations on these datasets can present even more significant challenges.

[0014] Certain classes of problems (e.g., NP-hard problems) are known to be extremely difficult to solve. Even simpler, scaled-down versions of these problems may be practically unsolvable due to processor speed, processing power availability, time, energy, and other constraints. As NP-hard problems grow in size, their complexity (and therefore the computational resources required to generate solutions) can increase exponentially. Unfortunately, many real-world problems can be NP-hard problems. While solving them can be beneficial, techniques for generating solutions more efficiently may be the first requirement.

[0015] Examples of such real-world NP-hard problems can be found in modern supply chains. As the number of products offered expands and the size of supply chains increases, supply chain and associated logistics problems become more complex year by year. Computer-generated solutions can be used to address logistics chain problems. However, the increasing complexity of logistics chains presents associated problems that can require so much time, energy, and / or computing power that solving these problems becomes impractical. Despite the ever-increasing availability of computing power in both individual processors and cloud computing, there are still logistics problems that require weeks, months, or even longer to solve.

[0016] These logistics problems can be represented by multi-node problems such as the multi-stage inventory optimization problem (MEIO). The MEIO problem represents the supply chain as a network of nodes. Each node can be associated with a location within the supply chain (e.g., supplier, warehouse, retailer, etc.) and an inventory item. The value associated with a node can represent the quantity of the inventory item at that location. Each node can also include one or more decision variables (or "node characteristics"). Node characteristics can include the number of subsequent nodes, the number of preceding nodes, the distance to the source, the demand average, the demand variance, the lead time average, the lead time variance, the local holding cost, the service level ratio, and other such variables.

[0017] One way to solve these problems can be the guaranteed service model algorithm (GSM). The GSM algorithm can provide an optimal solution for the MEIO problem, but GSM still requires a large amount of computing power and time even when solving relatively small MEIO problems. The complexity of the MEIO problem can increase exponentially as the number of nodes increases linearly. The computing power and / or time required to solve these problems can also increase exponentially with the complexity of these problems. For example, a small problem with 50 nodes can take several hours to solve when running the GSM algorithm. However, a problem with 500 nodes can take more than 10 days to solve. However, modern supply chain networks can have thousands of nodes. For example, a very small network of one warehouse providing only 100 items and 10 retailers would have a network of 1100 nodes. Even in such a small network, running GSM for just a few iterations can be very time-consuming. Solving MEIO can require tens of thousands of iterations and thus can require a large amount of time, energy, and / or computing power.

[0018] Since the complexity of the MEIO problem increases exponentially with the linear increase in the number of nodes, reducing the number of nodes in the problem can reduce the complexity and the time and computing power required to generate a solution. To reduce the number of nodes, nodes can be removed from the MEIO problem. Since nodes correspond to inventory items for each location, there can be two ways to remove nodes from the MEIO problem. The first way can be to remove a location. However, removing a location from the supply chain can be impractical or impossible.

[0019] However, in an optimized solution for the MEIO problem, not all nodes may be non-zero. For example, in an optimized solution, some locations may maintain a zero count of inventory items while still satisfying demand across the logistics chain. These pairs of locations and zero items can be made into zero nodes. Solving the GSM for the MEIO problem provides zero nodes (and non-zero nodes), but as described above, it can require a large amount of time, energy, and computing power. Therefore, there is a need for a technique to identify zero and non-zero nodes in an optimized solution for the MEIO problem without first solving the MEIO problem.

[0020] In an embodiment, one or more machine learning models (MLMs) can be used to identify zero and / or non-zero nodes. For example, a graph neural network (GNN) and / or a transformer can be employed in a single MLM. The MLM can then be trained using an optimized solution for the MEIO problem that has been solved using the GSM algorithm. In at least some of the solved MEIO problems, one or more nodes can be zero nodes. The MLM can be trained to identify zero and non-zero nodes included in the MEIO problem, at least partially based on the node features of each node.

[0021] When a new MEIO problem is created, presumably representing a logistics chain, each node in the MEIO problem can be characterized by its associated node features. Each node can then be analyzed using MLM to determine its importance to its neighbors, its influence on other nodes in the logistics chain, its minimum inventory level (or value), and its probability. The probability can represent the probability that the minimum inventory level determined by MLM is the same as the inventory appearing at that node in the optimized solution.

[0022] When MLM analyzes all nodes, it can compare the probability of each node to a threshold (e.g., 90%). Each non-zero node with a probability above the threshold may be included in a subset of nodes. This subset of nodes can then be processed using GSM to generate one or more solutions. Since the subset of nodes excludes any zero nodes, the time required to run GSM can be reduced by several orders of magnitude. Thus, the computational power and time required to generate solutions for complex supply chain logistics can be reduced. Furthermore, the generated solutions can be sent to other computing systems to make the associated calculations more efficient.

[0023] Figure 1 shows a simplified diagram of a logistics chain 100 according to one embodiment. The multinode problem 100 can represent a simple logistics chain. The multinode problem may include a hub 102, intermediate points 104 and 106, and terminals 108-112. Hub 102 may be the route of the logistics chain. Hub 102 can supply one or more stock items to intermediate points 104 and 106. Thus, hub 102 may be the "predecessor" of intermediate points 104 and 106, and intermediate points 104 and 106 may be called the "successor" to hub 102.

[0024] Intermediate point 104 can supply one or more stock items to terminal 108 and / or terminal 110. Therefore, intermediate point 104 may be a preceding node to terminals 108 and 110, and terminals 108 and 110 may be subsequent nodes to intermediate point 104. Similarly, intermediate point 106 can supply one or more stock items to terminal 112 and may be a preceding node to terminal 112. In this case, terminal 112 may be a subsequent node to intermediate point 106.

[0025] One or more inventory items can flow through the logistics chain from hub 102 to terminals 108-112. The multi-node problem 100 can represent only the locations in the logistics chain where one or more inventory items are held and / or delivered. For example, each of hub 102, intermediate points 104-106, and terminals 108-112 holds a certain quantity of each of the one or more inventory items and can receive and / or release one or more inventory items partly due to the actions of other locations in the logistics chain. A node in the logistics chain can be defined as a specific quantity of inventory items held at a particular location.

[0026] Figure 2 shows a simplified multi-node problem 200 according to one embodiment. In the multi-node problem 200, the locations included in the logistics chain 100 in Figure 1 can be represented by three inventory items. Thus, each location can be associated with three nodes in the multi-node problem 200. For example, node H-1 can be associated with hub 102 and inventory item 1. Node H-2 can be associated with hub 102 and inventory item 2. Node H-3 can be associated with hub 102 and inventory item 3. Similarly, a node labeled "M1" can represent the midpoint 104 and its respective inventory item. For example, node M1-1 can represent the midpoint 104 and inventory item 1, node M1-2 can represent the midpoint 104 and inventory item 2, and so on. A node labeled "M2" can represent the midpoint 106 and its respective inventory item in a similar manner. A node labeled "T1" can represent the end point 108 and its respective inventory item. A node labeled T2 can represent terminal 110 and its respective stock item, and a node labeled T3 can represent terminal 112 and its respective stock item.

[0027] In the multi-node problem 200, each node can be characterized by a specific value based on the amount of inventory items each node can hold. For example, node H1-1 can be characterized by 5, which means that hub 102 holds 5 units of inventory item 1. Node M1-1 can be characterized by 10, which means that midpoint 104 holds 10 units of inventory item 1. Node M1-2 can be characterized by 7, which means that midpoint 104 holds 7 units of inventory item 2. The specific values ​​in the multi-node problem can represent theoretical values, estimates of what each node should hold, what each node currently holds, average inventory levels, or other such values.

[0028] To improve the efficiency of the logistics chain 100, an optimal inventory level for each node can be determined. This optimal inventory level can be based on one or more node characteristics. For each node, the node characteristics may include the number of following nodes, the number of preceding nodes, distance to the route, average demand, demand variance, average lead time, lead time variance, holding costs, and service level ratio. Other factors, such as industry-specific requirements, may also be considered. Some node characteristics may depend on other nodes (e.g., distance to the route, number of following / preceding nodes, etc.).

[0029] One way to find the optimal inventory is to solve the multi-node problem using the GSM algorithm. Then, a specific value associated with each node can represent the optimized inventory level. In other words, each node maintains an inventory level that satisfies the demands of each other node in the multi-node problem. However, even simple multi-node problems, such as Multi-Node Problem 200, rapidly increase in complexity. As the number of nodes and the connections between nodes ("arcs") increase linearly, the computation time required to solve the GSM algorithm increases exponentially.

[0030] While the multinode problem 200 can have a total of 18 nodes, modern logistics chains can have thousands or even millions of nodes. Solving a multinode problem for such a large-scale logistics chain using GSM can take years or even longer, making it impractical to use GSM. Dedicating greater computing resources to solving the multinode problem might reduce the time somewhat, but it could also lead to greater costs.

[0031] In some solutions to a multinode problem, there may be one or more nodes with an optimal inventory level of zero. If these zero nodes can be identified, the complexity of the multinode problem can be reduced by eliminating the problem so that it includes only a subset of nodes with an optimized inventory level greater than zero. This subset of nodes can then be provided to a computing device to which a General Symmetry Model (GSM) is applied to solve the multinode problem containing only that subset of nodes. In general, a GSM may need to have already been applied to all nodes in the multinode problem in order to find the zero and / or non-zero nodes of the optimized solution. A method for determining the zero and / or non-zero nodes for a given multinode problem before applying a GSM can allow the GSM to consider only a subset of nodes. Thus, the solution calculation time can be reduced exponentially, saving time and computational power. The solution generated using the subset of nodes can then be provided to other computing devices performing the related calculations, saving even more time and computational power.

[0032] Figure 3 shows a system 300 and process 301 for identifying a zero node, according to one embodiment. System 300 may include a computing system 302. Computing system 302 may be a single computing device or multiple computing devices. In some embodiments, computing system 302 may be a cloud computing system. Thus, some or all of the components shown in computing system 302 may be distributed across one or more computing devices. Computing system 302 may include a machine learning model (MLM) 304. The MLM 304 may include a graph neural network (GNN) 306 and a transformer neural network (TNN) 308. Computing system 302 may also include a guaranteed service model (GSM) module 310 configured to generate optimized solutions to multi-node problems (e.g., and MEIO). Computing system 302 may also include a solution database 320. The solution database 320 can store solutions to multi-node problems generated by computing system 302.

[0033] In step 303, process 301 includes training MLM304 with historical solutions 332. Historical solutions 332 may include one or more solutions to a multinode problem. One or more solutions may include optimized solutions to the MEIO problem generated using the GSM algorithm. Training MLM304 may include training MLM304 to identify nodes as zero and / or non-zero nodes.

[0034] For example, an optimized solution to the MEIO problem may include one or more zero nodes. MLM304 can identify one or more node features associated with the zero nodes in the historical solution 312. One or more node features may include the number of successor nodes, the number of successor nodes, the distance to the route, average demand, demand variance, average lead time, lead time variance, holding cost, and service level ratio. Other relevant factors, such as industry-specific requirements, may also be considered.

[0035] In step 305, process 301 includes accessing a multinode problem 314. The multinode problem 314 may be a MEIO problem and / or may represent a logistics chain. The multinode problem 314 can have any number of nodes and arcs and can therefore be of any level of complexity. The multinode problem 314 may require an impermissible amount of time and / or computational power (and associated energy) to solve using GSM.

[0036] In step 307, process 301 may include providing an embedding vector 316 to the MLM 304. Each of the embedding vectors 316 can represent a specific node in the multinode problem 314. For example, with respect to the multinode problem 200 in Figure 2, nodes T1-3 and their associated node features can be represented as embedding vectors among the embedding vectors 316. Any embedding vector 316 can have any number of dimensions based on the number of node features associated with a particular node. Continuing with the example of nodes T1-3, the number of subsequent nodes can be zero, since T1-3 represents the terminal 108 in Figure 1. Once all nodes in the multinode problem 314 are embedded as one of the embedding vectors 316, the embedding vector 316 can be provided to the MLM 304.

[0037] The embedding vector 316 can initially be provided to the GNN306 in the MLM304. The GNN306 can use the embedding vector 316 to determine the influence each node has on all other nodes represented by the embedding vector 316. The GNN306 can also consider the importance of each node to all other nodes represented by the embedding vector 316. For example, relating to Figure 2, when considering node T1-1, the GNN306 can determine that node M1-1 is not important to node T1-1 because T1-1 is not connected to node M1-1. After considering all nodes represented by the embedding vector 316, the GNN306 can generate an output representing the causal relationships ("edges") between some or all of the nodes in the multinode problem 314. The output may include a unique representation of each node.

[0038] The output can then be provided to the TNN308 within the MLM304. The TNN308 can function as a binary classification model. The TNN308 can sort the unique representations of each node output by the GNN306. In some embodiments, the TNN308 can sort the output based on the hierarchy associated with the logistics chain represented by the multinode problem 314. For example, relating to Figure 1, the TNN308 can sort the output by ranking the terminals 108-112 as first-rank, the intermediates 104-106 as second-rank, and the hub 102 as third-rank. In some embodiments, the TNN308 can sort the output in any other relevant way. The TNN308 can then determine the importance of each node holding inventory compared to other nodes. The TNN308 can, at least in part, determine the possible minimum inventory level for each node based on the importance of a particular node holding inventory. The possible minimum inventory can be either zero or non-zero. In some embodiments, a node may be associated with a specific value. In other embodiments, a node may be identified only as non-zero.

[0039] Nodes can also be associated with probabilities. A probability can represent the likelihood (e.g., a 90% probability) that the minimum stock for a particular node is zero or non-zero in the optimized solution to the multi-node problem. If the probability of a particular node being a non-zero node exceeds a certain level (e.g., 85%), that particular node may be included in a subset 318 of nodes. In some embodiments, a subset 318 of nodes may include only nodes that are not zero nodes.

[0040] In step 309, process 301 includes providing a subset 318 of nodes by the MLM 304. The MLM 304 can output information indicating that each node in the multinode problem 314 is either zero or non-zero. The subset 318 of nodes may include only non-zero nodes. In some embodiments, the subset 318 of nodes may be substantially smaller than the nodes in the multinode problem 314. The subset 318 of nodes can then be combined with the multinode problem 314 such that all zero nodes identified by the MLM 304 are removed from the multinode problem 314. Because the zero nodes are removed from the multinode problem 314, the complexity of the multinode problem 314 can be reduced. Thus, the computational power, energy, and time required to solve the multinode problem can be reduced.

[0041] In step 311, process 301 includes solving the multi-node problem 314 using a subset of nodes via the GSM module 310. The GSM module 310 may be a hardware or software component of a computing system 302 configured to apply the GSM module 310 to the multi-node problem. Since the subset of nodes 318 may contain substantially fewer nodes than the complete multi-node problem 314, the time required for the GSM module 310 to solve the multi-node problem can be significantly reduced. The GSM module 310 can output a solution to the multi-node problem 314 without considering zero nodes identified by the MLM 304. The solution may or may not correspond to an optimized solution to the complete multi-node problem 314 solved using the GSM.

[0042] The solution can then be stored in the solution database 320. The solution database 320 can be accessed by one or more other computing systems performing the relevant calculations. Thus, efficiency is not only achieved by computing system 302 by reducing the time required to solve the GSM for the multi-node problem 314, but it can also be made possible for other computing systems to achieve similar efficiency.

[0043] Figure 4 shows a system 400 for identifying a subset of nodes 418, according to one embodiment. System 400 may be similar to some or all of the systems 300 described in relation to Figure 3. Some or all of system 400 may be run by or with a machine learning model such as MLM 304. Thus, some or all of the components shown in Figure 4 may be trained, at least in part, with an optimized solution to a multi-node problem (e.g., the MEIO problem). System 400 may include an embedded module 404, a GNN 406, and a TNN 408. The embedded module 404 may be a component of the MLM or a separate computing structure (either physical or logical). In some embodiments, the embedded module 404 may include a user interface configured to accept values ​​associated with node features 402. In other embodiments, the embedded module 404 may be able to automatically identify node features after accessing data associated with the multi-node problem.

[0044] Node feature 402 may include one or more node features associated with each of a plurality of node features. Each node in a plurality of nodes may have one or more of the node features 402. Node feature 402 may include the number of successor nodes, the number of successor nodes, the distance to the route, average demand, demand variance, average lead time, lead time variance, holding cost, and service level ratio. Other relevant features, such as industry-specific requirements, may also be considered. In some embodiments, each node feature may be weighted as more or less important.

[0045] The embedding module 404 can generate an embedding vector for each node of a group of nodes. An embedding vector can represent each of the node features associated with a particular node. The embedding vector may have dimensions equal to the number of node features associated with that particular node. For example, if a particular node is associated with three node features, the embedding vector may have three dimensions.

[0046] The embedding module 404 can provide the GNN406 with embedding vectors associated with multiple nodes. The GNN406 may be similar to the GNN306 in Figure 3. The GNN406 can initially represent each of the embedding vectors as a graph or other representation. In some embodiments, the graph or other representation can be provided by the embedding module. The graph can represent the edges between some or all of the nodes in a multi-node problem.

[0047] GNN406 can utilize an attention mechanism. The attention mechanism can enhance some dimensions of the embedding vector and reduce others. The attention mechanism can include queries and references. Queries may include dimensions of the embedding vector representing the node features of a particular node. References may be some or all dimensions of the embedding vector representing corresponding node features associated with different nodes. In other words, the attention mechanism of GNN406 can compare the node features of a particular node with some or all of the other nodes in a multi-node problem.

[0048] Through the attention mechanism, GNN406 can determine the influence each node has on all other nodes represented by the embedding vectors. GNN306 can also consider the importance of each node to all other nodes represented by the embedding vectors. For example, relating to Figure 2, when considering node T1-1, GNN406 can determine that node M2-1 is not important to node T1-1 because T1-1 is not connected to node M2-1. After applying the attention mechanism to each of the embedding vectors, GNN406 can generate an output representing the ("edges") between some or all of the nodes in the multi-node problem. The output may include a unique representation of each node.

[0049] The output is then provided to the TNN408, which may include a multi-head attention layer and / or a masked multi-head attention layer (collectively, the "layer"). Using the layer, the TNN408 can determine whether a node needs to hold inventory in the optimized solution. To this end, the TNN408 can sort the unique representations of multiple nodes. In some embodiments, the TNN408 can sort multiple nodes by their location in the logistics chain. For example, multiple nodes can be sorted from the furthest downstream (e.g., terminal 108 in Figure 1) to the furthest upstream (e.g., 102). Each hierarchy (e.g., terminals 108-112 in Figure 1) can be further sorted by the number of direct neighboring nodes associated with each node (e.g., terminals 108 and 110 each have one direct neighboring node, and terminal 112 has no direct neighboring nodes).

[0050] When multiple nodes are sorted, the layer can determine the importance of holding the inventory associated with each node. The layer can examine multiple nodes simultaneously and combine the results to determine importance in parallel by assigning a single importance level to each node. TNN408 then combines the importance assigned to the sorted nodes so that the sorted list of nodes includes the importance of holding the inventory associated with each node.

[0051] Next, TNN408 can minimize a function for finding the minimum inventory level for each node in a multi-node system. In some embodiments, this function may be a softmax loss function. In other embodiments, other logistic functions may be applied. The result may be the minimum inventory level associated with each node and / or the probability associated with each node. The probability can represent the likelihood that an optimized solution to a multi-node problem involving nodes will determine the same minimum inventory level for that node. In some embodiments, all nodes in a multi-node system may have the same probability. In other embodiments, the probability of each node may be independent of the other probabilities.

[0052] Next, TNN408 can assign each node in a multi-node dataset to either zero or non-zero based on a minimum inventory level determined by minimizing a function. In other words, TNN408 can provide a binary output for a multi-node dataset, where each node is either zero or non-zero. The probability of each non-zero node can then be compared to a given threshold (e.g., 90%). The given threshold may be configurable to provide a specific level of confidence in the output. For example, a particular node may be identified as a non-zero node with a 95% probability. In other words, the probability that a particular node is non-zero in the optimized solution to a multi-node problem may be 95%. Because the probability exceeds the exemplary given threshold (90%), the particular node may be included in the subset 418 of nodes. If another node is identified as a zero node with a 92% debt, that other node may not be included in the subset 418 of nodes. Yet another node is identified as a non-zero node with an 85% probability and can therefore be excluded from the subset 418 of nodes. Therefore, the subset 418 of nodes may include only non-zero nodes that have a certain probability of being non-zero in the optimized solution. In other embodiments, the subset 418 of nodes includes all nodes that are not identified as zero nodes and have a certain threshold. Those skilled in the art will recognize many different possibilities and configurations.

[0053] Next, using a subset of 418 nodes, the multi-node problem can be solved using the GSM algorithm. Depending on how selective the given parameters are, the computing resources, time, and / or energy required to solve the multi-node problem can be significantly reduced. For some multi-node problems, a relatively low threshold (e.g., 70%) may be chosen, resulting in greater efficiency in the computing problem. For others, a higher threshold (e.g., 90%) may be chosen to produce higher accuracy, but still provide significant efficiency.

[0054] Figure 5 shows a flowchart of method 500 for generating a solution to a multinode problem according to one embodiment. Method 500 can be executed by one or more computing systems, such as computing system 302 in Figure 3. Method 500 can be used to partially solve a multinode problem by determining the zero nodes included in the optimized solution to the multinode problem before solving the multinode problem. In step 502, method 500 includes accessing the multinode problem by a computing system. A multinode problem may include a plurality of nodes, each having one or more node features. A multinode problem can represent a logistics chain, such as logistics chain 100 in Figure 1 and / or multinode problem 200 in Figure 2. One or more node features may be similar to node feature 412 in Figure 4. In some embodiments, a multinode problem may be a MEIO problem.

[0055] In step 504, method 500 includes providing each node and each node feature to a machine learning model (MLM). An embedding vector can be generated for each node and its associated node feature of a plurality of nodes. Thus, the embedding vector can represent a node by each of the node features associated with that node. The embedding vector may have dimensions corresponding to the number of node features associated with that node.

[0056] The embedding vector can be generated by an embedding module such as the embedding module 404 in Figure 4 or other such devices or computer programs. In some embodiments, the embedding module may include a user interface configured to accept values ​​associated with one or more node features. In other embodiments, the embedding module can access multiple nodes and automatically determine one or more node features associated with each node. In some embodiments, the embedding module may be included in the MLM. In other embodiments, the embedding module may be separate from the MLM.

[0057] In step 506, method 500 includes determining a subset of nodes by a computing system based at least partially on the characteristics of each node. The computing system may determine the subset of nodes using an MLM. The MLM may be similar to MLM304 in Figure 3 and / or some or all of the components of system 400 in Figure 4. Thus, the MLM may include a GNN (e.g., GNN406) and / or a TNN (e.g., TNN408). The GNN can receive embedding vectors and, based on the characteristics of each node, generate a unique representation of each node in a plurality of nodes. To this end, the GNN can determine the importance of holding inventory for each node compared to some or all of the other nodes in the plurality of nodes. The GNN can also determine the influence that a node may have on some or all of the other nodes in the plurality of nodes. The GNN can then provide the TNN with a unique representation of each node.

[0058] Next, the TNN can sort multiple nodes (or their unique representations). In some embodiments, the multiple nodes are sorted according to where each node is associated in the logistic chain. For example, the multiple nodes can be sorted from the furthest downstream (e.g., terminal 108 in Figure 1) to the furthest upstream (e.g., 102). Each hierarchy (e.g., terminals 108-112 in Figure 1) can be further sorted by the number of direct neighbor nodes associated with each node (e.g., terminals 108 and 110 each have one direct neighbor node, and terminal 112 has no direct neighbor nodes).

[0059] A TNN can determine the importance of each node holding inventory compared to other nodes. The TNN can then determine the minimum value associated with each of the nodes. This minimum can be determined by minimizing a function (e.g., a softmax loss function or another suitable function). The minimum can then be associated with the minimum inventory level associated with each node in the optimal solution.

[0060] A TNN can generate binary outputs for each node in a group of nodes, at least partially based on the minimum value. These binary outputs can be zero or non-zero. In other words, if a particular node is the zero node in the optimal solution, the TNN can identify that particular node as the zero node. Conversely, if another node is a non-zero node in the optimal solution, the TNN can identify that other node accordingly.

[0061] The TNN can also assign a probability that the minimum value associated with each node is the same inventory level associated with the node in the optimal solution. This probability can then be compared to a given threshold (e.g., 90%). Nodes identified as non-zero and characterized by a probability greater than or equal to the given threshold may be included in a subset of nodes. In other words, zero nodes can be excluded from the subset of nodes.

[0062] In step 508, method 500 includes calculating one or more solutions to a multi-node problem based at least partially on a subset of nodes. The computing system can provide a dynamic programming algorithm, such as the GSM algorithm, to calculate one or more solutions. In some embodiments, the computing system can utilize only a subset of nodes to calculate one or more solutions (e.g., the optimal solution for each node in a subset of nodes). Since the subset of nodes may be smaller than the total number of nodes in the multi-node problem, the computing system can exponentially reduce the time required to find one or more solutions. Thus, the computing system can utilize less computing power and / or energy and achieve greater efficiency.

[0063] In step 510, method 500 includes storing one or more solutions to the multinode problem in computer memory. In some embodiments, the computer memory may be a solution database, such as the solution database 320 in Figure 3. One or more solutions can be accessed by other computing systems that perform the associated calculations. Thus, other computing systems can also use less time, computing power, and / or energy when calculating solutions to the multinode problem.

[0064] In some embodiments, the MLM can be trained on a historical dataset, such as the historical dataset 312 in Figure 3. The historical dataset may contain one or more solutions to the MEIO problem previously solved using the GSM algorithm. In some embodiments, the MLM can be retrained using one or more solutions. One or more solutions used to retrain the MLM may include rewards or other feedback to tailor the MLM model to a specific use case (e.g., healthcare, human resources, etc.).

[0065] Stylized description As mentioned above, Infrastructure as a Service (IaaS) is a specific type of cloud computing. IaaS can be configured to provide virtualized computing resources over a public network (e.g., the internet). In the IaaS model, a cloud computing provider can host infrastructure components (e.g., servers, storage devices, network nodes (e.g., hardware), deployment software, platform virtualization (e.g., hypervisor layer), etc.). In some cases, the IaaS provider can also supply a wide range of services associated with these infrastructure components (exemplary services include billing software, monitoring software, logging software, load balancing software, and clustering software, etc.). Therefore, since these services can be policy-driven, IaaS users may be able to implement policies that promote load balancing to maintain application availability and performance.

[0066] In some cases, IaaS customers can access resources and services over a wide area network (WAN), such as the internet, and install the rest of their application stack using the cloud provider's services. For example, a user can log into the IaaS platform and create virtual machines (VMs), install operating systems (OS) on each VM, deploy middleware such as databases, create storage buckets for workloads and backups, and even install enterprise software on those VMs. The customer can then use the provider's services to perform various functions, including balancing network traffic, troubleshooting application issues, monitoring performance, and managing disaster recovery.

[0067] In most cases, the cloud computing model requires the participation of a cloud provider. A cloud provider may, but does not have to be, a third-party service specializing in providing IaaS (e.g., granting, leasing, or selling). An entity could also choose to deploy a private cloud and become its own provider of infrastructure services.

[0068] In some cases, an IaaS deployment is the process of placing a new application or a new version of an application onto a prepared application server. An IaaS deployment may also include the process of preparing the server (e.g., installing libraries, daemons, etc.). This is often managed by the cloud provider under the hypervisor layer (e.g., servers, storage, network hardware, and virtualization). Therefore, the customer can be responsible for handling (OS), middleware, and / or application deployment (e.g., on self-service virtual machines that can be spun up on demand).

[0069] In some cases, IaaS provisioning can represent acquiring the computers or virtual hosts to be used, and furthermore, installing the necessary libraries or services for them. In most cases, deployment does not include provisioning, and provisioning may need to be performed first.

[0070] In some cases, IaaS provisioning presents two distinct challenges. Firstly, there is the initial challenge of provisioning an initial set of infrastructure before anything is executed. Secondly, there is the challenge of evolving the existing infrastructure after everything has been provisioned (e.g., adding new services, modifying services, removing services, etc.). In some cases, these two challenges can be addressed by enabling the declarative definition of infrastructure configuration. In other words, the infrastructure (e.g., what components are needed and how they interact) can be defined by one or more configuration files. Thus, the overall topology of the infrastructure (e.g., which resources depend on which and how each resource works together) can be described declaratively. In some cases, once the topology is defined, it is possible to generate workflows that create and / or manage the various components described in the configuration files.

[0071] In some examples, infrastructure can consist of many interconnected elements. For instance, there may be one or more virtual private clouds (VPCs), also known as core networks (e.g., potential on-demand pools of configurable and / or shared computing resources). In some examples, there may also be one or more inbound / outbound traffic group rules provisioned to define how inbound and / or outbound network traffic is configured and one or more virtual machines (VMs). Other infrastructure elements such as load balancers and databases can also be provisioned. Infrastructure can evolve incrementally as more infrastructure elements are desired and / or added.

[0072] In some cases, sequential deployment techniques can be employed to enable the deployment of infrastructure code across various virtual computing environments. In addition, the techniques described can enable infrastructure management within these environments. In some cases, a service team may write code that is desirable to be deployed to one or more, but often numerous, different generation environments (e.g., geographically diverse locations, sometimes even worldwide). However, in some cases, the infrastructure to which the code is deployed must be configured first. In some cases, provisioning can be performed manually, resources can be provisioned using provisioning tools, and / or code can be deployed using deployment tools after the infrastructure has been provisioned.

[0073] Figure 6 is a block diagram 600 showing an exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 602 may be communicably coupled to a secure host tenancy 604 which may include a virtual cloud network (VCN) 606 and a secure host subnet 608. In some examples, the service operator 602 may use one or more client computing devices, which may be portable handheld devices (e.g., iPhone®, mobile phones, iPad®, computing tablets, personal digital assistants (PDAs)) or wearable devices (e.g., Google® Glass head-mounted display, etc.) that run software such as Microsoft Windows® Mobile and / or a wide range of mobile operating systems such as iOS®, Windows Phone®, Android, BlackBerry 8, Palm OS, and are capable of using the Internet, email, short message service (SMS), BlackBerry®, or other communication protocols. Alternatively, a client computing device could be a general-purpose personal computer, including, for example, personal computers and / or laptop computers running various versions of Microsoft Windows®, Apple Macintosh®, and / or Linux® operating systems. A client computing device could also be a workstation computer running any of the wide range of commercially available UNIX® or UNIX-like operating systems, including, but not limited to, various GNU / Linux operating systems such as Google Chrome OS.Alternatively, or in addition, the client computing device may be any other electronic device, such as a thin client computer that can communicate via a network with access to the VCN606 and / or the Internet, an Internet-enabled game system (e.g., a Microsoft Xbox® game console with or without a Kinect® gesture input device), and / or a personal messaging device.

[0074] VCN606 may include an LPG610 that can be communicatively coupled to SSH VCN612 via a local peering gateway (LPG) 610 included in Secure Shell (SSH) VCN612. SSH VCN612 may include an SSH subnet 614, and SSH VCN612 may be communicatively coupled to control plane VCN616 via an LPG610 included in control plane VCN616. Furthermore, SSH VCN612 may be communicatively coupled to data plane VCN618 via an LPG610. Control plane VCN616 and data plane VCN618 may be included in a service tenancy 619 owned and / or operated by an IaaS provider.

[0075] The control plane VCN616 may include a control plane demilitarized zone (DMZ) layer 620 that operates as a perimeter network (e.g., part of the corporate network between the corporate intranet and the external network). DMZ-based servers can help limit liability and keep breaches contained. In addition, the DMZ layer 620 may include a control plane application layer 624 that may include one or more load balancer (LB) subnets 622, an application subnet 626, and a control plane data layer 628 that may include a database (DB) subnet 630 (e.g., a front-end DB subnet and / or a back-end DB subnet). The LB subnet 622 included in the control plane DMZ layer 620 can be communicatively coupled to the application subnet 626 included in the control plane application layer 624 and an internet gateway 634 that may be included in the control plane VCN616, and the application subnet 626 can be communicatively coupled to the DB subnet 630, a service gateway 636, and a network address translation (NAT) gateway 638 included in the control plane data layer 628. The control plane VCN616 may include a service gateway 636 and a NAT gateway 638.

[0076] The control plane VCN616 may include a data plane mirror application layer 640, which may include an application subnet 626. The application subnet 626 included in the data plane mirror application layer 640 may include a virtual network interface controller (VNIC) 642 capable of running compute instance 644. Compute instance 644 may be communicatively coupled to the application subnet 626 of the data plane mirror application layer 640, which may be included in the application subnet 626 of the data plane application layer 646.

[0077] The data plane VCN618 may include a data plane application layer 646, a data plane DMZ layer 648, and a data plane data layer 650. The data plane DMZ layer 648 may include an LB subnet 622 that can be communicatively coupled to the application subnet 626 of the data plane application layer 646 and the internet gateway 634 of the data plane VCN618. The application subnet 626 may be communicatively coupled to the service gateway 636 and the NAT gateway 638 of the data plane VCN618. The data plane data layer 650 may also include a DB subnet 630 that can be communicatively coupled to the application subnet 626 of the data plane application layer 646.

[0078] The Internet gateway 634 of the control plane VCN616 and data plane VCN618 can be communicatively coupled to a metadata management service 652, which can be communicatively coupled to the public internet 654. The public internet 654 can be communicatively coupled to the NAT gateway 638 of the control plane VCN616 and data plane VCN618. The service gateway 636 of the control plane VCN616 and data plane VCN618 can be communicatively coupled to a cloud service 656.

[0079] In some examples, the service gateway 636 of the control plane VCN616 and data plane VCN618 can make application programming interface (API) calls to the cloud service 656 without going through the public internet 654. API calls from the service gateway 636 to the cloud service 656 can be unidirectional. The service gateway 636 can make API calls to the cloud service 656, and the cloud service 656 can send the requested data to the service gateway 636. However, the cloud service 656 does not have to initiate an API call to the service gateway 636.

[0080] In some examples, a secure host tenancy 604 can connect directly to a service tenancy 619, which may otherwise be isolated. A secure host subnet 608 can communicate with an SSH subnet 614 via an LPG 610, which can enable bidirectional communication through a system that would otherwise be isolated. By connecting the secure host subnet 608 to the SSH subnet 614, the secure host subnet 608 gains access to other entities within the service tenancy 619.

[0081] The control plane VCN616 can enable users of the service tenancy 619 to configure or otherwise provision desired resources. Desired resources provisioned in the control plane VCN616 can be deployed or otherwise used in the data plane VCN618. In some examples, the control plane VCN616 can be isolated from the data plane VCN618, and the data plane mirror application layer 640 of the control plane VCN616 can communicate with the data plane application layer 646 of the data plane VCN618 via a VNIC 642 which may be included in the data plane mirror application layer 640 and the data plane application layer 646.

[0082] In some cases, a user or customer of the system can make requests, such as create, read, update, or delete (CRUD) operations, through the public internet 654, and the public internet 654 can communicate the requests to the metadata management service 652. The metadata management service 652 can communicate the requests to the control plane VCN 616 through the internet gateway 634. The requests can be received by the LB subnet 622, which is included in the control plane DMZ layer 620. The LB subnet 622 can determine that the request is valid, and in response to this determination, the LB subnet 622 can send the request to the application subnet 626, which is included in the control plane application layer 624. If the request is validated and a call to the public internet 654 is required, the call to the public internet 654 can be sent to the NAT gateway 638, which can make calls to the public internet 654. Metadata that may be desired to be stored by the request can be stored in the DB subnet 630.

[0083] In some examples, the data plane mirror application layer 640 facilitates direct communication between the control plane VCN616 and the data plane VCN618. For example, it may be desirable that configuration changes, updates, or other appropriate modifications be applied to resources contained in the data plane VCN618. The control plane VCN616 can perform configuration changes, updates, or other appropriate modifications to resources by communicating directly with the resources contained in the data plane VCN618 via VNIC642.

[0084] In some embodiments, the control plane VCN616 and data plane VCN618 may be included in the service tenancy 619. In this case, the system user or customer does not have to own or operate either the control plane VCN616 or the data plane VCN618. Instead, the IaaS provider may own the control plane VCN616 and the data plane VCN618, or operate them, and both may be included in the service tenancy 619. This embodiment can enable network isolation that can prevent a user or customer from interacting with resources of other users or other customers. This embodiment can also enable the system user or customer to store databases privately without having to rely on the public internet 654, which may not have the desired level of threat prevention for storage.

[0085] In another embodiment, the LB subnet 622 included in the control plane VCN616 may be configured to receive signals from the service gateway 636. In this embodiment, the control plane VCN616 and the data plane VCN618 may be configured to be invoked by the IaaS provider's customer without calling the public internet 654. The IaaS provider's customer may prefer this embodiment because the database used by the customer can be controlled by the IaaS provider and stored in a service tenancy 619 that can be isolated from the public internet 654.

[0086] Figure 7 is a block diagram 700 showing another exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 702 (e.g., service operator 602 in Figure 6) may be communicatively coupled to a secure host tenancy 704 (e.g., secure host tenancy 604 in Figure 6), which may include a virtual cloud network (VCN) 706 (e.g., VCN606 in Figure 6) and a secure host subnet 708 (e.g., secure host subnet 608 in Figure 6). VCN706 may include an LPG710, which may be communicatively coupled to the SSH VCN712 via a local peering gateway (LPG) 610 (e.g., LPG610 in Figure 6), which is included in the Secure Shell (SSH) VCN712 (e.g., SSH VCN612 in Figure 6). SSH VCN712 may include SSH subnet 714 (e.g., SSH subnet 614 in Figure 6), and SSH VCN712 may be communicably coupled to control plane VCN716 (e.g., control plane VCN616 in Figure 6) via LPG710 included in control plane VCN716. Control plane VCN716 may be included in service tenancy 719 (e.g., service tenancy 619 in Figure 6), and data plane VCN718 (e.g., data plane VCN618 in Figure 6) may be included in customer tenancy 721, which may be owned or operated by a user or customer of the system.

[0087] The control plane VCN716 may include a control plane DMZ layer 720 (e.g., control plane DMZ layer 620 in Figure 6) which may include an LB subnet 722 (e.g., LB subnet 622 in Figure 6), a control plane application layer 724 (e.g., control plane application layer 624 in Figure 6) which may include an application subnet 726 (e.g., application subnet 626 in Figure 6), and a control plane data layer 728 (e.g., control plane data layer 628 in Figure 6) which may include a database (DB) subnet 730 (e.g., similar to DB subnet 630 in Figure 6). The LB subnet 722 included in the control plane DMZ layer 720 can be communicatively coupled to the application subnet 726 included in the control plane application layer 724 and the Internet gateway 734 (e.g., Internet gateway 634 in Figure 6) which may be included in the control plane VCN 716. The application subnet 726 can be communicatively coupled to the DB subnet 730, the service gateway 736 (e.g., service gateway 636 in Figure 6), and the Network Address Translation (NAT) gateway 738 (e.g., NAT gateway 638 in Figure 6) included in the control plane data layer 728. The control plane VCN 716 may include the service gateway 736 and the NAT gateway 738.

[0088] The control plane VCN 716 may include a data plane mirror application layer 740 (e.g., the data plane mirror application layer 640 in Figure 6) which may include an application subnet 726. The application subnet 726 included in the data plane mirror application layer 740 may include a virtual network interface controller (VNIC) 742 (e.g., VNIC 642) capable of running a compute instance 744 (e.g., similar to compute instance 644 in Figure 6). The compute instance 744 facilitates communication between the application subnet 726 of the data plane mirror application layer 740 and the application subnet 726 included in the data plane mirror application layer 746 (e.g., the data plane application layer 646 in Figure 6) via the VNIC 742 included in the data plane mirror application layer 740 and the VNIC 742 included in the data plane application layer 746.

[0089] The Internet gateway 734 included in the control plane VCN 716 can be communicatively coupled to a metadata management service 752 (e.g., metadata management service 652 in Figure 6), which can be communicatively coupled to the public internet 754 (e.g., public internet 654 in Figure 6). The public internet 754 can be communicatively coupled to a NAT gateway 738 included in the control plane VCN 716. The service gateway 736 included in the control plane VCN 716 can be communicatively coupled to a cloud service 756 (e.g., cloud service 656 in Figure 6).

[0090] In some examples, the data plane VCN718 may be included in a customer tenancy 721. In this case, the IaaS provider can provide a control plane VCN716 for each customer, and the IaaS provider can configure a unique compute instance 744 included in a service tenancy 719 for each customer. Each compute instance 744 can enable communication between the control plane VCN716 included in the service tenancy 719 and the data plane VCN718 included in the customer tenancy 721. The compute instance 744 can enable resources provisioned in the control plane VCN716 included in the service tenancy 719 to be deployed or otherwise used in the data plane VCN718 included in the customer tenancy 721.

[0091] In another example, an IaaS provider's customer may have a database residing in customer tenancy 721. In this example, control plane VCN 716 may include a data plane mirror application layer 740, which may include application subnet 726. The data plane mirror application layer 740 may reside in data plane VCN 718, but does not have to. That is, the data plane mirror application layer 740 may have access to customer tenancy 721, but does not reside in data plane VCN 718, nor does it have to be owned or operated by the IaaS provider's customer. The data plane mirror application layer 740 may be configured to make calls to data plane VCN 718, but does not have to be configured to make calls to any entity included in control plane VCN 716. The customer may want to deploy or otherwise use resources in data plane VCN 718 that are provisioned in control plane VCN 716, and the data plane mirror application layer 740 can facilitate the deployment or other use of the resources desired by the customer.

[0092] In some embodiments, a customer of the IaaS provider can apply filters to the data plane VCN718. In this embodiment, the customer can determine what the data plane VCN718 can access and can restrict access from the data plane VCN718 to the public internet 754. The IaaS provider may not be able to apply filters or otherwise control the data plane VCN718's access to any external network or database. The application of filters and controls by the customer to the data plane VCN718 included in the customer tenancy 721 can help isolate the data plane VCN718 from other customers and the public internet 754.

[0093] In some embodiments, the cloud service 756 can access services that may not exist on the public internet 754, the control plane VCN 716, or the data plane VCN 718 via a call from the service gateway 736. The connection between the cloud service 756 and the control plane VCN 716 or the data plane VCN 718 may not be live or continuous. The cloud service 756 may reside on different networks owned or operated by the IaaS provider. The cloud service 756 may be configured to receive calls from the service gateway 736 and not to receive calls from the public internet 754. Some cloud services 756 may be isolated from other cloud services 756, and the control plane VCN 716 may be isolated from cloud services 756 that may not be in the same region as the control plane VCN 716. For example, the control plane VCN 716 may be located in "Region 1", and the cloud service "Deployment 6" may be located in Region 1 and "Region 2". If a call to deployment 6 is made by a service gateway 736 included in the control plane VCN716 located in region 1, the call can be sent to deployment 6 in region 1. In this example, the control plane VCN716 or deployment 6 in region 1 does not have to be communicatively coupled to deployment 6 in region 2, nor does it have to communicate with deployment 6 in region 2 in any other way.

[0094] Figure 8 is a block diagram 800 showing another exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 802 (e.g., service operator 602 in Figure 6) may be communicatively coupled to a secure host tenancy 804 (e.g., secure host tenancy 604 in Figure 6), which may include a virtual cloud network (VCN) 806 (e.g., VCN606 in Figure 6) and a secure host subnet 808 (e.g., secure host subnet 608 in Figure 6). VCN806 may include an LPG810 (e.g., LPG610 in Figure 6), which may be communicatively coupled to SSH VCN812 (e.g., SSH VCN612 in Figure 6). SSH VCN812 may include SSH subnet 814 (e.g., SSH subnet 614 in Figure 6), and SSH VCN812 may be communicatively coupled to control plane VCN816 (e.g., control plane VCN616 in Figure 6) via LPG810 included in control plane VCN816, and may be communicatively coupled to data plane VCN818 (e.g., data plane 618 in Figure 6) via LPG810 included in data plane VCN818. Control plane VCN816 and data plane VCN818 may be included in service tenancy 819 (e.g., service tenancy 619 in Figure 6).

[0095] The control plane VCN816 may include a control plane DMZ layer 820 (e.g., control plane DMZ layer 620 in Figure 6) which may include a load balancer (LB) subnet 822 (e.g., LB subnet 622 in Figure 6), a control plane application layer 824 (e.g., control plane application layer 624 in Figure 6) which may include an application subnet 826 (e.g., similar to application subnet 626 in Figure 6), and a control plane data layer 828 (e.g., control plane data layer 628 in Figure 6) which may include a DB subnet 830. The LB subnet 822 included in the control plane DMZ layer 820 can be communicatively coupled to the application subnet 826 included in the control plane application layer 824 and the Internet gateway 834 (e.g., Internet gateway 634 in Figure 6) which may be included in the control plane VCN 816. The application subnet 826 can be communicatively coupled to the DB subnet 830 included in the control plane data layer 828, the service gateway 836 (e.g., the service gateway in Figure 6), and the Network Address Translation (NAT) gateway 838 (e.g., NAT gateway 638 in Figure 6). The control plane VCN 816 may include the service gateway 836 and the NAT gateway 838.

[0096] The data plane VCN818 may include a data plane application layer 846 (e.g., data plane application layer 646 in Figure 6), a data plane DMZ layer 848 (e.g., data plane DMZ layer 648 in Figure 6), and a data plane data layer 850 (e.g., data plane data layer 650 in Figure 6). The data plane DMZ layer 848 may include an LB subnet 822 that can be communicatively coupled to the trusted application subnet 860 and the untrusted application subnet 862 of the data plane application layer 846, as well as the internet gateway 834 included in the data plane VCN818. The trusted application subnet 860 may be communicatively coupled to the service gateway 836 included in the data plane VCN818, the NAT gateway 838 included in the data plane VCN818, and the DB subnet 830 included in the data plane data layer 850. The untrusted application subnet 862 may be communicatively coupled to the service gateway 836 included in the data plane VCN818, and the DB subnet 830 included in the data plane data layer 850. The data plane data layer 850 may include a DB subnet 830 that can be communicatively coupled to a service gateway 836 included in the data plane VCN 818.

[0097] The untrusted application subnet 862 may include one or more primary VNICs 864(1)-(N) that can be communicatively coupled to tenant virtual machines (VMs) 866(1)-(N). Each tenant VM 866(1)-(N) may be communicatively coupled to each application subnet 867(1)-(N) that may be included in each container output VCN 868(1)-(N) that may be included in each customer tenancy 870(1)-(N). Each secondary VNIC 872(1)-(N) facilitates communication between the untrusted application subnet 862 included in the data plane VCN 818 and the application subnets included in the container output VCN 868(1)-(N). Each container output VCN 868(1)-(N) may include a NAT gateway 838 that can be communicatively coupled to the public internet 854 (e.g., public internet 654 in Figure 6).

[0098] The Internet gateway 834 included in the control plane VCN816 and data plane VCN818 can be communicatively coupled to a metadata management service 852 (e.g., the metadata management system 652 in Figure 6), which can be communicatively coupled to the public internet 854. The public internet 854 can be communicatively coupled to a NAT gateway 838 included in the control plane VCN816 and data plane VCN818. The service gateway 836 included in the control plane VCN816 and data plane VCN818 can be communicatively coupled to a cloud service 856.

[0099] In some embodiments, the data plane VCN818 may be integrated with the customer tenancy 870. This integration may be useful or desirable for the IaaS provider's customers, for example, if they may want support for executing code. The customer may provide code to execute, which may be destructive, communicate with other customer resources, or have undesirable effects. In response, the IaaS provider can decide whether or not to execute the code provided to the IaaS provider by the customer.

[0100] In some examples, an IaaS provider's customer may request that temporary network access to the IaaS provider be granted and that functionality be added to the data plane application layer 846. The code that performs this functionality may run in VM866(1)~(N) and may not be configured to run elsewhere on the data plane VCN818. Each VM866(1)~(N) may be connected to one customer tenancy 870. Each container 871(1)~(N) contained within VM866(1)~(N) may be configured to run the code. In this case, a double isolation may exist (for example, the container 871(1)~(N) that runs the code may be contained in at least one VM866(1)~(N) that is in the non-trusted application subnet 862), which can help prevent damage to the IaaS provider's network or the networks of different customers by incorrect or otherwise undesirable code. Containers 871(1)-(N) can be communicatively coupled to customer tenancy 870 and may be configured to send or receive data to or from customer tenancy 870. Containers 871(1)-(N) do not need to be configured to send or receive data to or from any other entities in the data plane VCN818. Upon completion of code execution, the IaaS provider may disable or otherwise discard containers 871(1)-(N).

[0101] In some embodiments, the trusted application subnet 860 can execute code owned or operated by the IaaS provider. In this embodiment, the trusted application subnet 860 can be communicatively coupled to the DB subnet 830 and may be configured to perform CRUD operations in the DB subnet 830. The non-trusted application subnet 862 can be communicatively coupled to the DB subnet 830, but in this embodiment, the non-trusted application subnet may be configured to perform read operations in the DB subnet 830. Containers 871(1)~(N), which may be included in each customer's VM866(1)~(N) and can execute code from the customer, do not have to be communicatively coupled to the DB subnet 830.

[0102] In other embodiments, the control plane VCN816 and the data plane VCN818 do not have to be directly communicatively coupled. In this embodiment, direct communication between the control plane VCN816 and the data plane VCN818 is not required. However, communication can be performed indirectly by at least one method. An LPG810 can be established by the IaaS provider to facilitate communication between the control plane VCN816 and the data plane VCN818. In another example, the control plane VCN816 or the data plane VCN818 can make a call to a cloud service 856 via a service gateway 836. For example, a call from the control plane VCN816 to the cloud service 856 may include a request for a service that can communicate with the data plane VCN818.

[0103] Figure 9 is a block diagram 900 showing another exemplary pattern of an IaaS architecture according to at least one embodiment. A service operator 902 (e.g., service operator 602 in Figure 6) may be communicatively coupled to a secure host tenancy 904 (e.g., secure host tenancy 604 in Figure 6), which may include a virtual cloud network (VCN) 906 (e.g., VCN606 in Figure 6) and a secure host subnet 908 (e.g., secure host subnet 608 in Figure 6). VCN906 may include an LPG910 (e.g., LPG610 in Figure 6), which may be communicatively coupled to an SSH VCN912 (e.g., SSH VCN612 in Figure 6). SSH VCN912 may include SSH subnet 914 (e.g., SSH subnet 614 in Figure 6), and SSH VCN912 may be communicatively coupled to control plane VCN916 (e.g., control plane VCN616 in Figure 6) via LPG910 contained within control plane VCN916, and may be communicatively coupled to data plane VCN918 (e.g., data plane VCN618 in Figure 6) via LPG910 contained within data plane VCN918. Control plane VCN916 and data plane VCN918 may be contained within service tenancy 919 (e.g., service tenancy 619 in Figure 6).

[0104] The control plane VCN916 may include a control plane DMZ layer 920 (e.g., control plane DMZ layer 620 in Figure 6) which may include an LB subnet 922 (e.g., LB subnet 622 in Figure 6), a control plane application layer 924 (e.g., control plane application layer 624 in Figure 6) which may include an application subnet 926 (e.g., application subnet 626 in Figure 6), and a control plane data layer 928 (e.g., control plane data layer 628 in Figure 6) which may include a DB subnet 930 (e.g., DB subnet 830 in Figure 8). The LB subnet 922 included in the control plane DMZ layer 920 can be communicatively coupled to the application subnet 926 included in the control plane application layer 924 and the Internet gateway 934 (e.g., Internet gateway 634 in Figure 6) which may be included in the control plane VCN 916. The application subnet 926 can be communicatively coupled to the DB subnet 930 included in the control plane data layer 928, the service gateway 936 (e.g., the service gateway in Figure 6), and the Network Address Translation (NAT) gateway 938 (e.g., NAT gateway 638 in Figure 6). The control plane VCN 916 may include the service gateway 936 and the NAT gateway 938.

[0105] The data plane VCN918 may include a data plane application layer 946 (e.g., data plane application layer 646 in Figure 6), a data plane DMZ layer 948 (e.g., data plane DMZ layer 648 in Figure 6), and a data plane data layer 950 (e.g., data plane data layer 650 in Figure 6). The data plane DMZ layer 948 may include a trusted application subnet 960 (e.g., trusted application subnet 860 in Figure 8) and an untrusted application subnet 962 (e.g., untrusted application subnet 862 in Figure 8) of the data plane application layer 946, as well as an LB subnet 922 that can be communicatively coupled to an internet gateway 934 included in the data plane VCN918. The trusted application subnet 960 may be communicatively coupled to a service gateway 936 included in the data plane VCN918, a NAT gateway 938 included in the data plane VCN918, and a DB subnet 930 included in the data plane data layer 950. The non-trusted application subnet 962 may be communicatively coupled to the service gateway 936 included in the data plane VCN 918 and the DB subnet 930 included in the data plane data layer 950. The data plane data layer 950 may include the DB subnet 930, which may be communicatively coupled to the service gateway 936 included in the data plane VCN 918.

[0106] The untrusted application subnet 962 may include primary VNICs 964(1) to (N) that can be communicatively coupled to tenant virtual machines (VMs) 966(1) to (N) residing within the untrusted application subnet 962. Each tenant VM 966(1) to (N) can execute code in its respective container 967(1) to (N) and can be communicatively coupled to an application subnet 926 that may be included in the data plane application layer 946, which may be included in the container output VCN 968. Each secondary VNIC 972(1) to (N) facilitates communication between the untrusted application subnet 962 included in the data plane VCN 918 and the application subnet included in the container output VCN 968. The container output VCN may include a NAT gateway 938 that can be communicatively coupled to the public internet 954 (e.g., public internet 654 in Figure 6).

[0107] The Internet gateway 934 included in the control plane VCN916 and data plane VCN918 can be communicatively coupled to a metadata management service 952 (e.g., the metadata management system 652 in Figure 6), which can be communicatively coupled to the public internet 954. The public internet 954 can be communicatively coupled to a NAT gateway 938 included in the control plane VCN916 and data plane VCN918. The service gateway 936 included in the control plane VCN916 and data plane VCN918 can be communicatively coupled to a cloud service 956.

[0108] In some examples, the pattern shown by the architecture of block diagram 900 in Figure 9 can be considered an exception to the pattern shown by the architecture of block diagram 800 in Figure 8, and may be desirable for the IaaS provider's customers when the IaaS provider cannot communicate directly with the customers (e.g., in an unconnected region). Each container 967(1)-(N) contained within VM966(1)-(N) for each customer is accessible by the customer in real time. Each container 967(1)-(N) can be configured to make calls to each secondary VNIC 972(1)-(N) contained within the application subnet 926 of the data plane application layer 946, which may be contained within the container output VCN968. The secondary VNICs 972(1)-(N) can send calls to the NAT gateway 938, which can send calls to the public internet 954. In this example, containers 967(1)-(N), which can be accessed by customers in real time, can be isolated from the control plane VCN916 and from other entities included in the data plane VCN918. Containers 967(1)-(N) can also be isolated from resources from other customers.

[0109] In another example, a customer can invoke cloud service 956 using containers 967(1) to (N). In this example, the customer can execute code in containers 967(1) to (N) that requests services from cloud service 956. Containers 967(1) to (N) can send this request to secondary VNICs 972(1) to (N), which can send this request to the NAT gateway, which can send this request to the public internet 954. The public internet 954 can send this request to LB subnet 922, which is included in control plane VCN 916, via internet gateway 934. In response to determining that the request is valid, the LB subnet can send the request to application subnet 926, which can send this request to cloud service 956 via service gateway 936.

[0110] It should be understood that the IaaS architectures 600, 700, 800, and 900 shown in the figures may have components other than those shown. Furthermore, the embodiments shown in the figures are only some examples of cloud infrastructure systems that may incorporate one embodiment of this disclosure. In some other embodiments, the IaaS system may have more or fewer components than shown, may combine two or more components, or may have different configurations or arrangements of components.

[0111] In one embodiment, the IaaS system described herein may include the provision of a set of applications, middleware, and database services delivered to the customer in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner. Oracle Cloud Infrastructure (OCI), offered by the assignee, is an example of such an IaaS system.

[0112] Figure 10 shows an exemplary computer system 1000 in which various embodiments can be implemented. Any of the above computer systems can be implemented using system 1000. As shown in the figure, computer system 1000 includes a processing unit 1004 that communicates with a number of peripheral subsystems via a bus subsystem 1002. These peripheral subsystems may include a processing acceleration unit 1006, an I / O subsystem 1008, a storage subsystem 1018, and a communication subsystem 1024. The storage subsystem 1018 includes a tangible computer-readable storage medium 1022 and system memory 1010.

[0113] The bus subsystem 1002 provides a mechanism that enables various components and subsystems of the computer system 1000 to communicate with each other as intended. Although the bus subsystem 1002 is schematically shown as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. The bus subsystem 1002 can be any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, and a local bus using one of a wide range of bus architectures. For example, such architectures may include industry standard architecture (ISA) buses, microchannel architecture (MCA) buses, extended ISA (EISA) buses, video electronics standards (VESA) local buses, and peripheral interconnect (PCI) buses, which can be implemented as mezzanine buses manufactured according to the IEEEP1386.1 standard.

[0114] A processing unit 1004, which can be implemented as one or more integrated circuits (e.g., conventional microprocessors or microcontrollers), controls the operation of the computer system 1000. One or more processors may be included in the processing unit 1004. These processors may include single-core or multi-core processors. In one embodiment, the processing unit 1004 can be implemented as one or more independent processing units 1032 and / or 1034, each containing a single-core or multi-core processor. In another embodiment, the processing unit 1004 can also be implemented as a quad-core processing unit formed by integrating two dual-core processors onto a single chip.

[0115] In various embodiments, the processing unit 1004 can execute a wide range of programs in response to program code and can maintain multiple concurrently running programs or processes. At any given time, some or all of the program code to be executed may reside in the processor 1004 and / or the storage subsystem 1018. Through appropriate programming, the processor 1004 can provide the various functions described above. The computer system 1000 may further include a processing acceleration unit 1006, which may include a digital signal processor (DSP), a dedicated processor, and the like.

[0116] The I / O subsystem 1008 may include user interface input devices and user interface output devices. User interface input devices may include pointing devices such as keyboards, mice or trackballs, touchpads or touchscreens integrated into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, voice input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may include motion sensing devices and / or gesture recognition devices such as Microsoft Kinect® motion sensors that enable user control and interaction with input devices such as Microsoft Xbox® 360 game controllers through a natural user interface using gestures and voice commands. User interface input devices may also include eye gesture recognition devices such as Google Glass® blink detectors that detect the user's eye movements (e.g., blinks when taking a picture and / or selecting a menu) and translate those eye gestures into input to an input device (e.g., Google Glass®). In addition, user interface input devices may also include voice recognition sensing devices that enable users to interact with voice recognition systems (e.g., Siri® Navigator) through voice commands.

[0117] User interface input devices may include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, gamepads and graphics tablets, and audio / visual devices such as speakers, digital cameras, digital video cameras, portable media players, webcams, image scanners, fingerprint scanners, barcode readers, 3D scanners, 3D printers, laser rangefinders, and eye-tracking devices. In addition, user interface input devices may include, for example, medical imaging input devices such as computed tomography, magnetic resonance imaging, oscillating tomography, and medical ultrasound imaging devices. User interface input devices may also include, for example, audio input devices such as MIDI keyboards and digital musical instruments.

[0118] User interface output devices may include non-visual displays such as display subsystems, indicator lights, or audio output devices. Display subsystems may also include flat panel devices such as cathode ray tubes (CRTs), liquid crystal displays (LCDs), or plasma displays, projection devices, touchscreens, etc. Generally, the use of the term “output device” is intended to include all possible types of devices and mechanisms for outputting information from computer system 1000 to a user or another computer. For example, user interface output devices may include, but are not limited to, a wide range of display devices that visually convey text, graphics, and audio / video information, such as monitors, printers, speakers, headphones, car navigation systems, plotters, audio output devices, and modems.

[0119] The computer system 1000 may include a storage subsystem 1018 that provides a tangible, non-temporary, computer-readable storage medium for storing software and data constructs that provide the functionality of the embodiments described in this disclosure. The software may include programs, code modules, instructions, scripts, etc., that provide the above-described functionality when executed by one or more cores or processors of the processing unit 1004. The storage subsystem 1018 may also provide a repository for storing data used in accordance with this disclosure.

[0120] As shown in the example in Figure 10, the storage subsystem 1018 may include various components, including system memory 1010, a computer-readable storage medium 1022, and a computer-readable storage medium reader 1020. System memory 1010 can store program instructions that can be loaded and executed by the processing unit 1004. System memory 1010 can also store data used during the execution of instructions and / or data generated during the execution of program instructions. Various different types of programs, including but not limited to client applications, web browsers, middle-tier applications, relational database management systems (RDBMS), virtual machines, containers, etc., can be loaded into system memory 1010.

[0121] System memory 1010 can also store an operating system 1016. Examples of operating systems 1016 may include Microsoft Windows®, Apple Macintosh®, and / or Linux operating systems, a wide range of commercially available UNIX® or UNIX-like operating systems (including, but not limited to, a wide range of GNU / Linux operating systems, Google Chrome® OS, etc.), and / or mobile operating systems, such as a wide range of versions of iOS, Windows® Phone, Android® OS, BlackBerry® OS, and Palm® OS operating systems. In certain embodiments in which computer system 1000 runs one or more virtual machines, the virtual machines, along with their guest operating systems (GOS), can be loaded into system memory 1010 and run by one or more processors or cores of processing unit 1004.

[0122] The system memory 1010 can have various configurations depending on the type of computer system 1000. For example, the system memory 1010 may be volatile memory (such as random access memory (RAM)) and / or non-volatile memory (such as read-only memory (ROM) or flash memory). Different types of RAM configurations, including static random access memory (SRAM) and dynamic random access memory (DRAM), may be provided. In some embodiments, the system memory 1010 may include a basic input / output system (BIOS) that includes basic routines that help to communicate information between elements within the computer system 1000, such as during startup.

[0123] The computer-readable storage medium 1022 may represent a storage medium for temporarily and / or more permanently holding and storing computer-readable information (including instructions executable by the processing unit 1004 of the computer system 1000) used by the computer system 1000, in addition to remote, local, fixed, and / or removable storage devices.

[0124] The computer-readable storage medium 1022 may include, but is not limited to, any suitable medium known or used in the art, such as volatile and non-volatile, removable and non-removable media, used in any method or technique for storing and / or transmitting information (including storage and communication media). This may include tangible computer-readable storage media such as RAM, ROM, electronically erasable programmable ROM (EEPROM), flash memory or other memory technologies, CD-ROM, digital multipurpose disk (DVD) or other optical storage, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage devices, or other tangible computer-readable media.

[0125] For example, the computer-readable storage medium 1022 may include a hard disk drive that reads and writes to a non-removable non-volatile magnetic medium, a magnetic disk drive that reads and writes to a removable non-volatile magnetic disk, and an optical disk drive that reads and writes to a removable non-volatile optical disk such as a CD-ROM, DVD, Blu-ray® disc, or other optical media. The computer-readable storage medium 1022 may include, but is not limited to, Zip® drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVD discs, digital videotapes, etc. The computer-readable storage medium 1022 may also include SSDs based on non-volatile memory such as flash memory-based solid-state drives (SSDs), enterprise flash drives, solid-state ROMs, etc., and SSDs based on volatile memory such as solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs. Disk drives and their associated computer-readable media can provide non-volatile storage for computer-readable instructions, data structures, program modules, and other data for computer system 1000.

[0126] Machine-readable instructions executable by one or more processors or cores of the processing unit 1004 can be stored in a non-temporary computer-readable storage medium. The non-temporary computer-readable storage medium may include physically tangible memory or storage devices, including volatile memory storage devices and / or non-volatile storage devices. Examples of non-temporary computer-readable storage media include magnetic storage media (e.g., disks or tapes), optical storage media (e.g., DVDs, CDs), various types of RAM, ROM, or flash memory, hard drives, floppy disk drives, removable memory drives (e.g., USB drives), or other types of storage devices.

[0127] The communication subsystem 1024 provides interfaces to other computer systems and networks. The communication subsystem 1024 functions as an interface for sending and receiving data between the computer system 1000 and other systems. For example, the communication subsystem 1024 can enable the computer system 1000 to connect to one or more devices via the Internet. In some embodiments, the communication subsystem 1024 may include radio frequency (RF) transceiver components for accessing radio voice and / or data networks (e.g., the use of advanced data network technologies such as cellular technology, 3G, 4G, or EDGE (Enhanced Data Speed ​​for Global Evolution)), WiFi® (IEEE 802.11 family standards, or other mobile communication technologies, or any combination thereof), Global Positioning System (GPS) receiver components, and / or other components. In some embodiments, the communication subsystem 1024 may provide wired network connectivity (e.g., Ethernet®) in addition to, or instead of, the wireless interface.

[0128] In some embodiments, the communication subsystem 1024 may also receive input communications in the form of structured data feeds and / or unstructured data feeds 1026, event streams 1028, event updates 1030, etc., on behalf of one or more users who can use the computer system 1000.

[0129] For example, the communication subsystem 1024 can be configured to receive data feeds 1026 in real time from users of social networks and / or other communication services, such as web feeds like Twitter® feeds, Facebook® updates, Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party information sources.

[0130] In addition, the communication subsystem 1024 may also be configured to receive data in the form of a continuous data stream, which may include an event stream 1028 of real-time events and / or event updates 1030, which may have no explicit termination and may be inherently continuous or unrestricted. Examples of applications that generate continuous data may include, for example, sensor data applications, financial tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, and automotive traffic monitoring.

[0131] The communication subsystem 1024 can also be configured to output structured data feeds and / or unstructured data feeds 1026, event streams 1028, event updates 1030, etc., to one or more databases that can communicate with one or more streaming data source computers connected to the computer system 1000.

[0132] The computer system 1000 can be one of various types, including handheld portable devices (e.g., iPhone® mobile phones, iPad® computing tablets, PDAs), wearable devices (e.g., Google Glass® head-mounted displays), PCs, workstations, mainframes, kiosks, server racks, or other data processing systems.

[0133] Due to the constantly changing nature of computers and networks, the description of computer system 1000 shown in the figure is intended only as a specific example. Many other configurations are possible, having more or fewer components than the system shown in the figure. For example, customized hardware may be used, and / or certain elements may be implemented in hardware, firmware, software (including applets), or a combination thereof. Furthermore, connections to other computing devices, such as network input / output devices, may be used. Based on the disclosures and teachings provided herein, those skilled in the art will understand other ways and / or methods for carrying out various embodiments.

[0134] While specific embodiments have been described, various modifications, changes, alternative configurations, and equivalents are also included within the scope of this disclosure. The embodiments are not limited to operation within a particular data processing environment, but can freely operate within multiple data processing environments. Furthermore, while the embodiments have been described using a specific set of transactions and steps, it will be clear to those skilled in the art that the scope of this disclosure is not limited to the described set of transactions and steps. Various features and aspects of the above embodiments can be used individually or in combination.

[0135] Furthermore, while embodiments have been described using specific combinations of hardware and software, it should be recognized that other combinations of hardware and software are also within the scope of this disclosure. Embodiments can be implemented using hardware alone, software alone, or a combination thereof. The various processes described herein may be implemented on the same processor or on different processors in any combination. Thus, although components or services are described as being configured to perform certain operations, such configurations can be achieved, for example, by designing electronic circuits to perform the operations, by programming programmable electronic circuits (such as microprocessors) to perform the operations, or by any combination thereof. Processes may communicate using a variety of techniques, including, but not limited to, conventional techniques for inter-process communication, and different pairs of processes may use different techniques, or pairs of the same process may use different techniques at different times.

[0136] Therefore, the specification and drawings should be considered illustrative rather than restrictive. However, it is clear that additions, subtractions, deletions, and other modifications and changes can be made without departing from the broader intent and scope set forth in the claims. Thus, specific embodiments of the disclosure have been described, but these are not intended to be limiting. Various modifications and equivalents are included in the following claims.

[0137] In the context describing the embodiments disclosed (particularly in the context of the subsequent claims), the terms “a, an” and “the” and similar reference subjects should be interpreted as encompassing both singular and plural, unless otherwise indicated herein and unless the context clearly contradicts the interpretation. The terms “comprising,” “having,” “including,” and “containing” should be interpreted as open-ended terms (i.e., meaning “not limited, but including”) unless otherwise specified. The term “connected” should be interpreted as being contained within, attached to, or joined to one another, in part or as a whole, even if there is an intermediary. Unless otherwise indicated herein, the enumeration of value ranges is intended merely as a way of referring individually to each distinct value within that range, and each distinct value is incorporated herein as if it were individually enumerated herein. All methods described herein may be performed in any suitable order, unless otherwise indicated herein or unless it is clearly inconsistent with the context. The use of any examples or exemplary language provided herein (e.g., "etc.") is intended solely to clarify embodiments and, unless otherwise requested, does not limit the scope of this disclosure. Nothing in this disclosure, nor any unrequested element, should be construed as indicating that it is essential to the practice of this disclosure.

[0138] Disjunctive language, such as the phrase "at least one of X, Y, or Z," is intended to be understood, unless otherwise specified, in the context of its general use to indicate that an item, term, etc., may be any one of X, Y, or Z, or any combination thereof (e.g., X, Y, and / or Z). Therefore, such disjunctive language is not generally intended, nor should it be, to be interpreted as suggesting that a particular embodiment requires the presence of each of X, Y, or Z.

[0139] This specification describes preferred embodiments of the Disclosure, including the best known mode for carrying out the Disclosure. Those skilled in the art will be able to see variations of these preferred embodiments by reading the foregoing description. Those skilled in the art can appropriately adopt such variations, and the Disclosure may be carried out in ways other than those specifically described herein. Accordingly, the Disclosure includes all variations and equivalents of the subject matter described in the claims appended herein, as permitted by applicable law. Furthermore, unless otherwise indicated herein, any combination of the elements described above in all possible variations is incorporated herein.

[0140] All references cited herein, including publications, patent applications, and patents, are incorporated by reference to the same extent as they would be incorporated in whole herein, with each reference specifically indicated as being incorporated by reference.

[0141] While the above specification has described aspects of the disclosure with respect to specific embodiments, those skilled in the art will recognize that the disclosure is not limited thereto. The various features and aspects of the above disclosure can be used individually or in combination. Furthermore, the embodiments can be used in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of this specification. Accordingly, the specification and drawings should be considered illustrative rather than limiting.

Claims

1. A computing system accesses a multi-node problem involving multiple nodes, each node having one or more node features, The computing system provides each node, each possessing its own node characteristics, to a machine learning model. The computing system determines a subset of the plurality of nodes based at least partially on the characteristics of each node using the machine learning model, The computing system calculates one or more solutions to the multi-node problem based at least partially on a subset of the nodes. A method comprising storing the one or more solutions to the multinode problem in computer memory of the computing system.

2. The method according to claim 1, wherein a subset of the plurality of nodes includes non-zero nodes.

3. The method according to claim 1 or 2, wherein providing each node and each node feature further comprises generating an embedding vector having one or more dimensions corresponding to each node feature.

4. Determining a subset of the aforementioned nodes is: The computing system uses the machine learning model to determine the minimum value associated with each of the plurality of nodes, The computing system uses the machine learning model to determine the probability that the minimum value associated with each of the plurality of nodes is the value associated with each node in the optimal solution. The method according to any one of the preceding claims, further comprising the computing system identifying a subset of the nodes, each node in the subset of the nodes being identified as non-zero and characterized by a probability greater than or equal to a predetermined threshold.

5. The method according to any one of the preceding claims, wherein the machine learning model includes a graph neural network.

6. The method according to any one of the preceding claims, wherein the multinode problem represents a multistage inventory optimization problem.

7. The method according to any one of the prior claims, wherein calculating the one or more solutions to the multinode problem utilizes a guaranteed service model.

8. The method according to any one of the prior claims, wherein the machine learning model is trained at least in part on a historical dataset containing multiple solutions to a multinode problem.

9. The method according to any one of the preceding claims, wherein one or more solutions to the multinode problem are provided to a second computing system.

10. A computing system, One or more processors, The system comprises a non-temporary computer-readable medium containing instructions, and when the instructions are executed by the one or more processors, the system receives The computing system allows each node to access a multi-node problem involving multiple nodes, each having one or more node features. The computing system performs the operation of providing each node, each having its own node characteristics, to a machine learning model, The computing system performs the operation of determining a subset of the plurality of nodes based at least partially on the characteristics of each node using the machine learning model, The computing system performs the operation of calculating one or more solutions to the multi-node problem based at least partially on a subset of the nodes, A system that causes the computing system to perform the operation of storing one or more solutions to the multinode problem in computer memory.

11. The system according to claim 10, wherein the machine learning model includes an embedded module.

12. The system according to claim 10 or 11, wherein a subset of the plurality of nodes includes non-zero nodes.

13. The system according to any one of claims 10 to 12, wherein the multinode problem represents a multistage inventory optimization problem.

14. The system according to any one of claims 10 to 13, wherein calculating the one or more solutions to the multinode problem includes utilizing a guaranteed service model.

15. The system according to any one of claims 10 to 14, wherein the historical dataset includes multiple solutions to a multinode problem.

16. A non-temporary computer-readable storage medium storing a set of instructions, wherein when the instructions are executed by one or more processors of a computer system, the computer system... The computing system operates by accessing a multi-node problem in which each node has one or more node features, The computing system performs the operation of providing each node, each having its own node characteristics, to a machine learning model, The computing system performs the operation of determining a subset of the plurality of nodes based at least partially on the characteristics of each node using the machine learning model, The computing system performs the operation of calculating one or more solutions to the multi-node problem based at least partially on a subset of the nodes, A non-temporary computer-readable storage medium that causes the computing system to perform the operation of storing one or more solutions to the multinode problem in computer memory.

17. The non-temporary computer-readable storage medium according to claim 16, wherein a subset of the nodes of the plurality of nodes includes non-zero nodes.

18. Determining a subset of the aforementioned nodes is: The computing system uses the machine learning model to determine the minimum value associated with each of the multiple nodes, The computing system uses the machine learning model to determine the probability that the minimum value associated with each of the plurality of nodes is the value associated with each node in the optimal solution. The non-temporary computer-readable storage medium according to claim 16 or 17, further comprising the computing system identifying a subset of the nodes, wherein each node in the subset of the nodes is identified as non-zero and characterized by a probability greater than or equal to a predetermined threshold.

19. A non-temporary computer-readable storage medium according to any one of claims 16 to 18, wherein calculating the one or more solutions to the multinode problem and calculating the updated one or more solutions includes utilizing a guaranteed service model.

20. The non-temporary computer-readable storage medium according to any one of claims 16 to 19, wherein the machine learning model includes an embedded module.