Information processing method, information processing system, and non-transitory computer-readable medium
By designing a simulation optimization-based configurator system, the selection of optimization algorithms and parameter optimization of automated optimization algorithms is solved, and a more efficient optimization process is achieved in the existing technology.
Patent Information
- Application Number
- JP2024009319
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2023-01-25
- Filing Date
- 2024-01-25
- Publication Date
- 2025-04-22
- Estimated Expiration
- 2044-01-25
AI Technical Summary
In the prior art, users need to manually develop scripts to evaluate and select optimization algorithms, especially among multiple simulators, which is time-consuming and inefficient.
By designing a simulated optimization-based configurator system that uses a hardware processor to generate and manage optimization templates, automates the selection of optimization algorithms and the optimization process of parameters, reducing the time for users to operate manually.
The system significantly reduces the time to evaluate multiple optimization algorithms, improves the efficiency of the optimization process, and can quickly generate optimization templates and automate optimization, suitable for scenarios of multiple simulators.
Smart Images

Figure 0007667330000001 
Figure 0007667330000002 
Figure 0007667330000003
Abstract
Description
[Technical field]
[0001] FIELD OF THE DISCLOSURE
[0002] Embodiments described herein relate generally to simulation-based optimization, and more particularly to an optimization configurator that supports decision making in simulation-based optimization. [Background technology]
[0002] Digital twins can be used to replicate complex real-world systems, such as supply chain management (SCM) systems. Digital twins can be used to simulate real-world systems. However, simulation of real-world systems requires a large number of parameters, such as inventory quantities across multiple sites in the case of supply chain management. An example of an agent-based SCM simulator using digital twins is described in "SCM Simulator: An Agent-Based Approach," in "SCM Simulator: An Agent-Based Approach," which is incorporated herein by reference in its entirety.
[0003] Simulation-based optimization is used to determine optimal parameters using such simulators. For example, "Simulation-based optimization of ML models," IEEE Transactions on Model-Based Modeling (2011), incorporated herein by reference in its entirety, describes an algorithm based on Bayesian optimization. "Simulation-based optimization of ML models," IEEE Transactions on Model-Based Modeling (2011), incorporated herein by reference in its entirety, describes another approach for simulation-based optimization.
[0004] Simulation-based optimization can be particularly beneficial in supply chain management. For example, simulation-based optimization can be run periodically (e.g., daily) to output optimized inventory plans per site and inventory item based on forecasted demand, sales plans, actual demand, and / or the like. This can enable supply chain managers to rapidly react to changing environments to maintain desired values for key performance indicators (KPIs). Examples of such situations include increased demand for products (e.g., goods or services), logistics disruptions, shortages of supplies, labor shortages, fuel price increases, regional instability, tariff changes, pandemic lockdowns, and / or the like.
[0005] A user of simulation-based optimization needs to select and test an optimization algorithm for optimizing parameters for each simulation. For example, US Pat. No. 6,299,433 describes a method for selecting an optimization algorithm, and US Pat. No. 6,299,433 describes a system for optimizing parameters in a simulator. However, the user must develop scripts for every optimization algorithm (e.g., in terms of optimality, computation time, etc.) that the user wants to evaluate. In addition, if the user wants to optimize parameters for multiple simulators, the user must develop scripts for each optimization algorithm for each simulator. It is very time-consuming for the user to develop those scripts. [Prior art documents] [Patent documents]
[0006] [Patent Document 1] US Patent Application Publication No. 2018 / 0357552 [Patent Document 2] U.S. Pat. No. 11,223,546 [Non-patent literature]
[0007] [Non-Patent Document 1] Kiuchi et al., “Development of Agent-based Supply Chain Management Simulator”, The Proceedings of Mechanical Engineering Congress, Japan2016, S1420102, 2016 [Non-Patent Document 2] Kiuchi et al., “Bayesian Optimization Algorithm with Agent-based Supply Chain Simulator for Multi-echelon Inventory Management,” IEEE16th CASE, 2020. [Non-Patent Document 3] Abo-Hamad et al., “Simulation Optimization Methods in Supply Chain Applications: a Review,” Irish Journal of Management, 2011, vol. 30, p. 95-124 Summary of the Invention [Problem to be solved by the invention]
[0008] Thus, disclosed are systems, methods, and non-transitory computer-readable media for a simulation-based optimization configurator that may reduce the time required to evaluate multiple optimization algorithms for multiple simulators to facilitate selection of an optimal optimization algorithm (e.g., in terms of optimality, computation time, etc.) for each simulator. [Means for solving the problem]
[0009] In one embodiment, the method includes at least one hardware processor performing processing using information and algorithms stored in the memory. Data Processing1. A method, comprising: a hardware processor that pre-determines or dynamically optimizes one or more lists of components of a template; As a list of simulators, optimization algorithms, objective functions, and parameters, and receiving a selection of components from the list to generate an optimization template; performing an optimization on the optimization template; and outputting an optimal solution based on the performed optimization, wherein the generating the optimization template comprises: The hardware processor receiving one or more optimization configurations, each of the one or more optimization configurations , from a list of optimization algorithms that can be executed manually by a user via a graphic user interface, or automatically or semi-automatically by another system; Optimization Algorithms Selecting and selecting from the simulator list Real-world system simulator By selecting and simulating the optimization algorithm and receiving an objective function comprising one or more one or more variables. The step of , By selection of one or more objective functions from a list of objective functions, which may be performed manually by a user via a graphic user interface, or automatically or semi-automatically by another system; Associating each of the one or more objective functions with one of the one or more optimization configurations; and receiving one or more variables. The step of , By selection of one or more variables from a parameter list, which may be performed manually by a user via a graphic user interface, or automatically or semi-automatically by another system; Associating each of the one or more variables with one of the one or more objective functions associated with one of the one or more optimization configurations; and receiving one or more constraints. The step of , By selection of one or more constraints from a parameter list, which may be performed manually by a user via a graphic user interface, or automatically or semi-automatically by another system;and associating each of the one or more constraints with one of one or more objective functions associated with one of the one or more optimization configurations. The step of performing optimization on the optimization template includes a hardware processor processing for each one or more optimization configurations in the optimization template, the hardware processor including a candidate value determination step of executing an optimization algorithm in the optimization configuration to determine candidate values for one or more variables associated with the objective function, an output value generation step of executing a simulator in the optimization configuration using the candidate values for the one or more variables to generate an output value, and an optimal solution generation step of generating an optimal solution including at least one optimal target value according to the objective function, a plurality of optimal variable values for each variable, and zero, one, or multiple constraint values for each constraint, by repeating the candidate value determination step and the output value generation step until the generated output value is determined to be optimal by the optimization algorithm, while being constrained by the one or more constraints associated with the objective function.
[0010] The optimization template may be generated by further receiving one or more batch configurations, each of the one or more batch configurations including a plurality of optimization configurations, and the optimization is performed by selecting one or more optimization configurations in each of the one or more batch configurations in the optimization template. For each optimization configuration It will be executed.
[0011] The method may further include, after performing the optimization, using at least one hardware processor, receiving user actions including one or more modifications to the optimization template, incorporating the one or more modifications into the optimization template, and performing optimization on the modified optimization template, over each of one or more subsequent iterations.
[0012] Each simulator may utilize a digital twin of a real-world system to generate outputs from inputs. Using the simulator in association with an optimization algorithm may include transforming candidate values of one or more variables into inputs and applying the simulator to the inputs to generate outputs. The output of each simulator may be a key performance indicator of the real-world system. The real-world system may include a supply chain. The output of each simulator may include one or both of an average inventory quantity or an order completion rate.
[0013] Receiving the one or more optimization configurations may include receiving a user selection of the one or more optimization configurations from among a plurality of available optimization configurations.
[0014] Receiving the one or more objective functions may include receiving a user selection of one or more objective functions from among a plurality of available objective functions.
[0015] Receiving the one or more variables may include receiving a user selection of the one or more variables from among a plurality of available variables, and receiving the one or more constraints includes receiving a user selection of the one or more constraints from among a plurality of available constraints.
[0016] The one or more objective functions may be multiple objective functions. The one or more optimization configurations may be multiple optimization configurations. At least one of the multiple optimization configurations may associate different optimization algorithms with the same simulator, may associate the same optimization algorithm with different simulators, or may associate different optimization algorithms with different simulators than another one of the multiple optimization configurations. A first optimization configuration of the multiple optimization configurations may associate a first optimization algorithm with a first simulator of a first real-world system, and a second optimization configuration of the multiple optimization configurations associates the first optimization algorithm with a second simulator of a second real-world system different from the first real-world system.
[0017] The optimal solution may include determined values of one or more variables for each of the one or more objective functions associated with each of the one or more optimization configurations in the optimization template. The optimal solution may further include output of target values of the objective function for the determined values of the one or more variables and values of the one or more constraints for each of the one or more objective functions associated with each of the one or more optimization configurations in the optimization template.
[0018] The method may further include initiating control of a real-world system based on the optimal solution using the at least one hardware processor.
[0019] It should be understood that any of the features in the above methods may be implemented individually or with any subset of the other features in any combination. Thereby, to the extent that the appended claims suggest specific dependencies between features, the disclosed embodiments are not limited to those specific dependencies. Rather, any of the features described herein may be combined with any other features described herein, or in any combination of features, may be implemented without one or more other features described herein. In addition, any of the methods described above and elsewhere in this specification may be embodied individually or in any combination in executable software modules of a processor-based system, such as a server, and / or executable instructions stored on a non-transitory computer-readable medium.
[0020] The details of the present invention, both as to its structure and operation, may be gleaned in part by examination of the accompanying drawings, in which like reference numerals refer to like parts and in which: [Brief description of the drawings]
[0021] [Figure 1] FIG. 1 illustrates an exemplary infrastructure in which one or more of the processes described herein may be implemented, according to one embodiment. [Diagram 2] FIG. 1 illustrates an exemplary processing system in which one or more of the processes described herein may be performed, according to one embodiment. [Diagram 3] FIG. 1 illustrates an example of a simulator for supply chain management, according to one embodiment. [Figure 4] FIG. 1 illustrates an automated simulation-based optimization according to one embodiment. [Diagram 5] FIG. 2 illustrates an example of the structure of an optimization template, according to one embodiment. [Figure 6] 6 illustrates example data structures for the various components shown in FIG. 5, according to one embodiment. [Figure 7A] FIG. 4 illustrates some examples of data objects for simulation-based optimization using the simulator shown in FIG. 3, according to one embodiment. [Figure 7B] FIG. 4 illustrates some examples of data objects for simulation-based optimization using the simulator shown in FIG. 3, according to one embodiment. [Figure 7C] FIG. 4 illustrates some examples of data objects for simulation-based optimization using the simulator shown in FIG. 3, according to one embodiment. [Figure 7D] FIG. 4 illustrates some examples of data objects for simulation-based optimization using the simulator shown in FIG. 3, according to one embodiment. [Figure 8] FIG. 1 illustrates a process for simulation-based optimization, according to one embodiment. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0022] In one embodiment, a system, method, and non-transitory computer-readable medium for a simulation-based optimization configurator are disclosed. After reading this specification, it will be clear to a person skilled in the art how to implement the present invention in various alternative embodiments and alternative applications. However, while various embodiments of the present invention are described herein, it should be understood that they are presented by way of example, for illustrative purposes, and not of limitation. Thus, the detailed description of various embodiments should not be construed as limiting the scope or area of the present invention, as set forth in the appended claims.
[0023] 1. Exemplary Infrastructure FIG. 1 illustrates an exemplary infrastructure in which one or more of the disclosed processes may be implemented, according to one embodiment. The infrastructure may comprise a platform 110 (e.g., one or more servers) that hosts and / or executes one or more of the various functions, processes, methods, and / or software modules described herein. The platform 110 may comprise dedicated servers, or alternatively may be implemented in a computing cloud, where the resources of one or more servers are dynamically and elastically allocated to multiple tenants based on demand. In either case, the servers may be co-located and / or geographically distributed. The platform 110 may also include or be communicatively connected to a server application 112 and / or one or more databases 114. In addition, the platform 110 may be communicatively connected to one or more user systems 130 via one or more networks 120. The platform 110 may also be communicatively connected to one or more external systems 140 (e.g., other platforms, websites, etc.) via one or more networks 120.
[0024] The network 120 may include the Internet, and the platform 110 may communicate with the user systems 130 over the Internet using standard transmission protocols such as Hypertext Transfer Protocol (HTTP), HTTP Secure (HTTPS), File Transfer Protocol (FTP), FTP Secure (FTPS), Secure Shell FTP (SFTP), as well as proprietary protocols. Although the platform 110 is illustrated as being connected to various systems over a single set of networks 120, it should be understood that the platform 110 may be connected to various systems over a different set of one or more networks. For example, the platform 110 may be connected to a subset of the user systems 130 and / or external systems 140 over the Internet, but may be connected to one or more other user systems 130 and / or external systems 140 over an intranet. Furthermore, although only several user systems 130 and external systems 140, one server application 112, and one set of databases 114 are illustrated, it should be understood that the infrastructure may comprise any number of user systems, external systems, server applications, and databases.
[0025] User systems 130 may include any type of computing device capable of wired and / or wireless communication, including, but not limited to, desktop computers, laptop computers, tablet computers, smartphones or other mobile phones, servers, gaming consoles, televisions, set-top boxes, electronic kiosks, point-of-sale terminals, and / or the like. In general, however, it is contemplated that user systems 130 include personal computers or business workstations of users representing entities (e.g., businesses, non-profit organizations, government agencies, etc.) that manage real-world systems such as supply chains. Each user system 130 may include or be communicatively connected to a client application 132 and / or one or more local databases 134.
[0026] Platform 110 may comprise a web server that hosts one or more websites and / or web services. In embodiments in which a website is provided, the website may include a graphic user interface including, for example, one or more screens (e.g., web pages) generated in Hypertext Markup Language (HTML) or other languages. Platform 110 transmits or provides one or more screens of the graphic user interface in response to a request from user system 130. In some embodiments, these screens may be provided in the form of a wizard, where two or more screens may be provided sequentially, with one or more of the sequential screens depending on the user or user system 130's interaction with one or more previous screens. Both requests to platform 110 and responses from platform 110, including screens of the graphic user interface, may communicate over network 120, which may include the Internet, using standard communication protocols (e.g., HTTP, HTTPS, etc.). These screens (e.g., web pages) may include a combination of content and elements, such as text, images, video, animations, references (e.g., hyperlinks), frames, inputs (e.g., text boxes, text areas, check boxes, radio buttons, drop down menus, buttons, forms, etc.), scripts (e.g., JavaScript), etc., including elements that include or are derived from data stored in one or more databases (e.g., database 114) locally and / or remotely accessible to platform 110. It should be understood that platform 110 may also respond to other requests from user system 130.
[0027] The platform 110 may comprise, be communicatively coupled to, or otherwise accessible to, one or more databases 114. For example, the platform 110 may include one or more database servers managing the one or more databases 114. Server applications 112 executing on the platform 110 and / or client applications 132 executing on user systems 130 may submit data (e.g., user data, form data, etc.) to be stored in the databases 114 and / or request access to data stored in the databases 114. These data may include various examples of data structures described throughout this disclosure. Any suitable database may be utilized, including, but not limited to, MySQL®, Oracle®, IBM®, Microsoft SQL®, Access®, PostgreSQL™, MongoDB®, etc., including cloud-based databases and proprietary databases. The databases 114 may include structured data (e.g., relational databases) and / or unstructured data (e.g., images, videos, electronic documents, etc.). Data may be sent to platform 110 using, for example, the well-known POST request, supported by HTTP, via FTP and / or the like. This data, as well as other requests, may be handled by, for example, a servlet or other software module (e.g., included in server application 112) server-side web technology executed by platform 110.
[0028] In embodiments in which web services are provided, platform 110 may receive requests from user system 130 and / or external system 140 and provide responses in Extensible Markup Language (XML), JavaScript Object Notation (JSON), and / or any other suitable or desired format. In such embodiments, platform 110 may provide an application programming interface (API) that defines the manner in which user system 130 and / or external system 140 may interact with the web services. User system 130 and / or external system 140 (which may themselves be servers) may thereby define their own user interfaces and rely on web services to implement or otherwise provide back-end processes, methods, functions, storage, and / or the like described herein. For example, in such an embodiment, client application 132 running on one or more user systems 130 may interact with server application 112 running on platform 110 to perform one or more of the various functions, processes, methods, and / or software modules described herein, or portions of one or more of the various functions, processes, methods, and / or software modules described herein.
[0029] The client application 132 may be "thin," in which case processing is performed primarily on the server side by the server application 112 on the platform 110. A basic example of a thin client application 132 is a browser application on the user system 130 that simply requests, receives, and renders web pages, while the server application 112 on the platform 110 is responsible for generating web pages and managing database functions. Alternatively, the client application may be "thick," in which case processing is performed primarily on the client side by the user system 130. It should be understood that the client application 132 may perform an amount of processing compared to the server application 112 on the platform 110 at any point along this tier between "thin" and "thick," depending on the design goals of a particular implementation. In any case, the software described herein may reside entirely on either the platform 110 (e.g., in this case, the server application 112 performs all processing) or the user system 130 (e.g., in this case, the client application 132 performs all processing), or may be distributed between the platform 110 and the user system 130 (e.g., in this case, both the server application 112 and the client application 132 perform processing), and may comprise one or more executable software modules that contain instructions to implement one or more of the processes, methods, or functions described herein.
[0030] 2. Exemplary Processing System 2 is a block diagram illustrating an exemplary wired or wireless system 200 that may be used in connection with various embodiments described herein. For example, system 200 may be used as or in conjunction with one or more of the functions, processes, or methods (e.g., for storing and / or executing software) described herein and may represent a component of platform 110, user system 130, external system 140, and / or other processing devices described herein. System 200 may be a server or any conventional personal computer, or any other processor-enabled device capable of wired or wireless data communication. Other computer systems and / or architectures may also be used, as would be apparent to one skilled in the art.
[0031] System 200 preferably includes one or more processors 210. Processor 210 may include a central processing unit (CPU). Additional processors may be provided, such as graphics processing units (GPUs), auxiliary processors for managing input / output, auxiliary processors for performing floating-point mathematical operations, special purpose microprocessors (e.g., digital signal processors) having an architecture suitable for fast execution of signal processing algorithms, slave processors (e.g., back-end processors) subordinate to a main processing system, additional microprocessors or controllers for dual or multi-processor systems, and / or co-processors. Such auxiliary processors may be discrete processors or may be integrated with processor 210. Examples of processors that may be used with system 200 include, but are not limited to, any of the processors offered by Intel Corporation of Santa Clara, California, USA (e.g., Pentium®, Core i7®, Xeon®, etc.), any of the processors offered by Advanced Micro Devices, Incorporated (AMD) of Santa Clara, California, USA, any of the processors offered by Apple Inc. of Cupertino (e.g., A-series, M-series, etc.), any of the processors offered by Samsung Electronics Co., Ltd. of Seoul, Korea (e.g., Exynos®), any of the processors offered by NXP Semiconductors NV of Eindhoven, The Netherlands, and / or the like.
[0032] The processor 210 is preferably connected to a communication bus 205. The communication bus 205 may include a data channel to facilitate information transfer between storage and other peripheral components of the system 200. Additionally, the communication bus 205 may provide a set of signals used for communication with the processor 210 and may include a data bus, an address bus, and / or a control bus (not shown). The communication bus 205 may include any standard or non-standard bus architecture, such as a bus architecture conforming to standards promulgated by the Institute of Electrical and Electronics Engineers (IEEE), including, for example, Industry Standard Architecture (ISA), Extended Industry Standard Architecture (EISA), MicroChannel Architecture (MCA), Peripheral Component Interconnect (PCI) local bus, IEEE 488 General Purpose Interface Bus (GPIB), IEEE 696 / S-100, and / or the like.
[0033] The system 200 preferably includes a main memory 215 and may further include a secondary memory 220. The main memory 215 provides storage of instructions and data for programs executing on the processor 210, such as any of the software discussed herein. It should be understood that the programs stored in the memory and executed by the processor 210 may be written and / or compiled according to any suitable language, including, but not limited to, C / C++, Java, JavaScript, Perl, Visual Basic, NET, and the like. The main memory 215 is typically a semiconductor-based memory, such as a dynamic random access memory (DRAM) and / or a static random access memory (SRAM). Other semiconductor-based memory types include, for example, synchronous dynamic random access memory (SDRAM), Rambus dynamic random access memory (RDRAM), ferroelectric random access memory (FRAM), etc., including read-only memory (ROM).
[0034] Secondary memory 220 is a non-transitory computer-readable medium on which computer-executable code (e.g., any of the software disclosed herein) and / or other data is stored. The computer software or data stored in secondary memory 220 is read into main memory 215 for execution by processor 210. Secondary memory 220 may include, for example, semiconductor-based memory, such as programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable read-only memory (EEPROM), and flash memory (a block-oriented memory similar to EEPROM).
[0035] Secondary memory 220 may optionally include internal media 225 and / or removable media 230. Removable media 230 may be read from and / or written to in any well-known manner. Removable storage medium 230 may be, for example, a magnetic tape drive, a compact disc (CD) drive, a digital versatile disc (DVD) drive, other optical drive, a flash memory drive, and / or the like.
[0036] In alternative embodiments, secondary memory 220 may include other similar means by which computer programs or other data or instructions can be loaded into system 200. Such means may include, for example, communications interface 240, which allows software and data to be transferred to system 200 from external storage medium 245. Examples of external storage medium 245 include an external hard disk drive, an external optical drive, an external magneto-optical drive, and / or the like.
[0037] As mentioned above, the system 200 may include a communications interface 240. The communications interface 240 allows software and data to be transferred between the system 200 and an external device (e.g., a printer), a network, or other information source. For example, computer software or executable code may be transferred to the system 200 from a network server (e.g., the platform 110) via the communications interface 240. Examples of the communications interface 240 include an internal network adapter, a network interface card (NIC), a Personal Computer Memory Card International Association (PCMCIA) network card, a card bus network adapter, a wireless network adapter, a universal serial bus (USB) network adapter, a modem, a wireless data card, a communications port, an infrared interface, an IEEE 1394 Firewire, and any other device capable of interfacing the system 200 to a network (e.g., the network 120), or another computing device. Communications interface 240 preferably implements industry accepted protocol standards such as the Ethernet IEEE 802 standard, Fiber Channel, Digital Subscriber Line (DSL), Asynchronous Digital Subscriber Line (ADSL), Frame Relay, Asynchronous Transfer Mode (ATM), Integrated Services Digital Network (ISDN), Personal Communications Services (PCS), Transmission Control Protocol / Internet Protocol (TCP / IP), Serial Line Internet Protocol / Point-to-Point Protocol (SLIP / PPP), etc., although customized or non-standard interface protocols may be implemented as well.
[0038] The software and data transferred via communications interface 240 generally have the form of electrical communications signals 255. These signals 255 may be provided to communications interface 240 via communications channel 250. In one embodiment, communications channel 250 may be a wired or wireless network (e.g., network 120), or any of a variety of other communications links. Communications channel 250 carries signals 255 and may be implemented using a wide variety of wired or wireless communications means, including wire or cable, optical fiber, conventional telephone lines, cellular phone links, wireless data communications links, radio frequency ("RF") links, or infrared links, to name a few.
[0039] Computer-executable code (e.g., computer programs such as the disclosed software) is stored in primary memory 215 and / or secondary memory 220. Computer-executable code may also be received via communications interface 240 and stored in primary memory 215 and / or secondary memory 220. Such computer programs, when executed, enable system 200 to perform various functions of the disclosed embodiments, as described elsewhere herein.
[0040] As used herein, the term "computer-readable medium" is used to refer to any non-transitory computer-readable storage medium used to provide computer-executable code and / or other data to or within system 200. Examples of such media include primary memory 215, secondary memory 220 (including internal memory 225 and / or removable media 230), external storage medium 245, and any peripherals communicatively coupled to communication interface 240 (including a network information server or other network device). These non-transitory computer-readable media are means for providing software and / or other data to system 200.
[0041] In an embodiment implemented using software, the software may be stored on a computer readable medium and loaded into the system 200 via the removable medium 230, the I / O interface 235, or the communication interface 240. In such an embodiment, the software is loaded into the system 200 in the form of electrical communication signals 255. The software, when executed by the processor 210, preferably causes the processor 210 to perform one or more of the processes and functions described elsewhere herein.
[0042] In one embodiment, I / O interface 235 provides an interface between one or more components of system 200 and one or more input and / or output devices. Exemplary input devices include, but are not limited to, sensors, keyboards, touch screens or other touch-sensitive devices, cameras, biometric sensing devices, computer mice, trackballs, pen-based pointing devices, and / or the like. Examples of output devices include, but are not limited to, other processing devices, cathode ray tubes (CRTs), plasma displays, light emitting diode (LED) displays, liquid crystal displays (LCDs), printers, vacuum fluorescent displays (VFDs), surface-emitting field displays (SEDs), field emission displays (FEDs), and / or the like. In some cases, such as in the case of touch panel displays (e.g., in smartphones, tablets, or other mobile devices), the input and output devices may be combined.
[0043] The system 200 may also include any wireless communication components that facilitate wireless communication over a voice network and / or a data network (e.g., in the case of user system 130). The wireless communication components include an antenna system 270, a radio system 265, and a baseband system 260. In the system 200, radio frequency (RF) signals are transmitted and received wirelessly by the antenna system 270 under the control of the radio system 265.
[0044] In one embodiment, antenna system 270 may include one or more antennas and one or more multiplexers (not shown) that perform a switching function to provide transmit and receive signal paths for antenna system 270. In the receive path, a received RF signal can be coupled from the multiplexer to a low noise amplifier (not shown) that amplifies the received RF signal and transmits the amplified signal to radio system 265.
[0045] In alternative embodiments, the radio system 265 may comprise one or more radios configured to communicate on various frequencies. In one embodiment, the radio system 265 may combine a demodulator (not shown) and a modulator (not shown) into one integrated circuit (IC). The demodulator and modulator may also be separate components. In the incoming path, the demodulator removes the RF carrier signal leaving a baseband receive audio signal, which is transmitted from the radio system 265 to the baseband system 260.
[0046] If the received signal contains voice information, the baseband system 260 decodes the signal and converts it to an analog signal. The signal is then amplified and transmitted to a speaker. The baseband system 260 also receives analog voice signals from a microphone. These analog voice signals are converted to digital signals and encoded by the baseband system 260. The baseband system 260 also encodes the digital signals and generates a baseband transmit voice signal for transmission, which is routed to a modulation portion of the radio system 265. The modulator mixes the baseband transmit voice signal with an RF carrier signal to generate an RF transmit signal, which is routed to the antenna system 270 and may pass through a power amplifier (not shown). The power amplifier amplifies the RF transmit signal and routes it to the antenna system 270, which switches the signal to an antenna port for transmission.
[0047] The baseband system 260 is also communicatively coupled to the processor 210. The processor 210 may have access to data storage areas 215 and 220. The processor 210 is preferably configured to execute instructions (i.e., computer programs such as the disclosed software) that may be stored in the main memory 215 or the secondary memory 220. Computer programs may also be received from the baseband processor 260 and stored in the main memory 210 or the secondary memory 220 or executed upon receipt. Such computer programs, when executed, may enable the system 200 to perform various functions of the disclosed embodiments.
[0048] 3. Simulation-based optimization 3 is a diagram illustrating an example of a simulator 300, according to one embodiment. Simulator 300 may be implemented in any suitable manner. For example, simulator 300 may comprise a machine learning model or other artificial intelligence (e.g., rule-based artificial intelligence). Simulator 300 simulates the operation of a real-world system using a digital twin of the real-world system. In the illustrated example, the real-world system is a supply chain, which may include procurement, manufacturing, warehousing, transportation, sales, markets, and / or other components. It should be understood that simulator 300 may simulate any real-world system.
[0049] The simulator 300 is illustrated using a simple example of a supply chain consisting of manufacturing, which produces goods, warehousing, which stores the goods as inventory until the market, and a market, which orders the goods. It should be understood that in practice, the simulator 300 may be even more complex, having hundreds or thousands of components. The components of the simulator 300 may be represented as a network of nodes. In the case of a supply chain, each node may have logic for moving inventory. This inventory is used to satisfy demand from a market, which may place orders randomly. The simulator 300 may include one or more variables (e.g., in the logic of a node) whose values define the operating configuration for the real-world system.
[0050] Simulator 300 receives input 310 that includes one or more input parameters, but typically values for each of multiple input parameters. These parameters may include at least one or more variables in simulator 300. In the illustrated example, the variables are {x1, x2, x3, x4}, where x1 represents the quantity of an item that is periodically ordered for warehousing, x2 represents the time interval during which the item is periodically ordered for warehousing, x3 represents a threshold that triggers an order, and x4 represents the quantity of the item that is ordered once the threshold triggers an order.
[0051] Based on the values of the input parameters in input 310, simulator 300 outputs 320 including values for each of one or more output parameters. Generally, the output parameters include at least key performance indicators representative of the performance of the simulation using the values of the input parameters in input 310 with the digital twin of the real-world system. In the illustrated example, the output parameters include average inventory in warehouse storage and order completion rate in the marketplace.
[0052] In simulation-based optimization, the simulator 300 is used to optimize values of the simulator's 300 variables. For example, a user may manually modify the values of each variable in the inputs 310 over multiple iterations to improve the value of one or more key performance indicators in the outputs 320. The final set of values of the variables in the simulator 300 represents the optimization solution. However, manual optimization is a very time-consuming process that cannot guarantee an optimal solution. Furthermore, when the number of variables is large (e.g., hundreds, thousands, or millions of variables), manual optimization becomes infeasible even for a single simulator 300.
[0053] Thus, automated optimization is needed for a large number of variables. However, even automated optimization may require some user input. In particular, a user may need to select the objective function, variables, and constraints to be used for optimization. These selections may be made generally based on information about the simulator 300. For example, the objective function may be to minimize or maximize the value of a target value (e.g., a key performance indicator in the output 320), the variables used for optimization may be selected from the simulator 300 and variables in the input 310, and each constraint may be a constraint on the value of the variable in the input 310 and / or the value of the key performance indicator in the output 320. In the illustrated example for a supply chain, the objective function may be to minimize the average inventory quantity, the variables may be {x1, x2, x3, x4}, and the constraint may require the order completion rate in the output 320 to be greater than 90%.
[0054] The user may also need to select an optimization algorithm to be used for the automated optimization. In particular, there is a wide variety of optimization algorithms that can be used to optimize the target values output by the objective function. Examples of optimization algorithms include, but are not limited to, alpha-beta, branch and bound, Bruss, chain matrix multiplication, combinatorial constraint satisfaction, cross entropy, differential evolution, dynamic programming, ellipsoidal methods, evolutionary computing, Franke-Wolfe, genetics, golden section search, gradient descent, grid search, harmony search, interior point methods, linear programming, line search, local search, memetics, minimax, nearest neighbor search, Newton's method, nonlinear optimization, particle swarm optimization, random search, simulated annealing, stochastic tunneling, and subset sum algorithms. While not all optimization algorithms are suitable for all applications, there are generally multiple suitable optimization algorithms for any given application. Thus, the user needs to determine which of the suitable optimization algorithms is most suitable (e.g., in terms of optimality, computation time, etc.).
[0055] As a result, even with automated optimization, a significant amount of time and effort is still required for the user to configure and evaluate the optimization algorithm. In addition, if the user is managing multiple simulators 300 for multiple real-world systems (e.g., multiple supply chains for multiple customers), this time and effort will be multiplied across each simulator 300. In other words, to find the true optimal solution, the user should configure and evaluate multiple optimization algorithms for multiple simulators 300.
[0056] 4 illustrates an automated simulation-based optimization according to one embodiment. The disclosed simulation-based optimization embodiments automate tasks that previously had to be performed manually. This enables comprehensive, robust and faster optimization to support rapid decision making regarding the operation of real-world systems.
[0057] In one embodiment, an optimization configurator 410 is provided. The optimization configurator 410 may be implemented in software 112 on platform 110. The optimization configurator 410 provides (e.g., generates) a graphic user interface 412 through which a user may interact with the optimization configurator 410. In particular, a user may utilize the graphic user interface 412 to generate an optimization template 415. For example, the optimization configurator 410 may generate, in advance or dynamically, one or more lists of components for the optimization template 415, display the list in the graphic user interface 412, and receive a selection of a component from the list via an input in the graphic user interface 412.
[0058] Each optimization template 415 may include one or more pairings of simulators 300 and optimization algorithms 430. Each pairing may be referred to herein as an "optimization configuration." A user may select from a list of simulators 300 and a list of optimization algorithms 430 displayed in the graphic user interface 412 to build their optimization configurations. The advantages of the optimization template 415 are most apparent when a user builds multiple optimization configurations. Multiple optimization configurations may include the same simulator 300 paired with different optimization algorithms 430, the same optimization algorithm 430 paired with different simulators 300 (e.g., for different real-world systems, including, e.g., different supply chains for different customers), and / or different simulators 300 paired with different optimization algorithms 430.
[0059] The optimization template 415 may also include other components that define aspects of the optimization algorithm 430 in each optimization configuration. For example, these aspects may include an objective function used for the optimization algorithm 430 and one or more parameters (e.g., variables and / or constraints) used in the optimization algorithm 430. Again, these aspects (e.g., objective function and / or parameters) may be selected by a user from a list previously or dynamically generated and displayed in the graphical user interface 412.
[0060] In one embodiment, an aggregator 420 is provided. The aggregator 420 may be implemented in software 112 on the backend of the platform 110. The aggregator 420 performs optimization on each optimization template 415. In particular, the aggregator 420 may receive the optimization template 415 to be executed from the optimization configurator 410 (e.g., via an extract-transform-insert (ETL) operation). For each optimization configuration in each optimization template 415, the aggregator 420 may execute an optimization algorithm 430 on the optimization configuration as defined in the optimization template 415 to perform a simulation-based optimization using the paired simulator 300 on that optimization configuration.
[0061] For example, for each optimization configuration, the aggregator 420 may run the optimization algorithm 430 to determine first candidate values for the variables of the simulator 300 that are paired with the optimization algorithm 430 in that optimization configuration (e.g., {x1, x2, x3, x4} in the illustrated example). The aggregator 420 may then run the simulator 300 using the first candidate values of the variables in the first input 310 to generate a first output 320. The aggregator may then provide the first output 320 from the simulator 300 to the optimization algorithm 430 to determine second candidate values for the variables of the simulator 300 based on the first output 320 (and possibly previous outputs 320). The aggregator may then run the simulator 300 using these second candidate values of the variables in the input 310 to generate a second output 320. This process may be repeated over multiple iterations until the optimization algorithm 430 determines that the output 320 is optimal. The optimization algorithm 430 may determine that the output 320 is optimal based on one or more stopping criteria (e.g., convergence of a target value of an objective function, a predefined number of iterations completed, etc.), which may vary between optimization algorithms 430. At this point, the optimization is complete. It should be appreciated that this process may be repeated for each optimization configuration to generate a solution 425 that represents the optimal solution generated by each pairing of the optimization algorithm 430 and the simulator 300.
[0062] Once optimization is complete for all optimization configurations in the optimization template 415, or as optimization is complete for each optimization configuration in the optimization template 415, the aggregator 420 may provide a solution 425 to the optimization configurator 410. The solution 425 may include the optimal values of each variable of the simulator 300, the optimal target values generated by the objective function for the optimal values of the variables, and the values of each constraint generated by the optimal values of the variables, for each optimization configuration performed by the aggregator 420 from the optimization template 415. It should be appreciated that the solution 425 may include other data as well, such as one or more associated key performance indicators (e.g., if different than the target values of the objective function).
[0063] The optimization configurator 410 may receive the solution 425 from the aggregator 420 and display a representation of the solution 425 to the user via the graphic user interface 412. The user may review and evaluate the solution 425 to determine whether changes are necessary or desired. If changes are necessary or desired, the user may revise one or more settings of the optimization template 415 via the graphic user interface 412 and provide the revised optimization template 415 to the aggregator 420, which is re-run. This revision process may be repeated over one or more iterations until the user is satisfied with the solution 425 returned by the aggregator 420.
[0064] Additionally or alternatively, the optimization configurator 410 may provide at least a portion of the solution 425 to one or more downstream functions 440. In particular, at least optimal values of the variables may be provided from the solution 425 to the downstream functions 440. These optimal variable values may represent an operational configuration of the real-world system represented by the associated simulator 300. The downstream functions 440 may include other optimizers or configurators, a control system of the real-world system being optimized, and / or the like. If the downstream functions 440 include a control system, the optimization configurator 410 may initiate control of the real-world system by providing the optimal variable values to the control system, which may be hosted on the platform 110 or the external system 140. The optimization configurator 410 may provide the optimal variable values to the downstream functions 440 either automatically (i.e., without user intervention), semi-automatically (i.e., confirmed by a user using the graphic user interface 412), or manually (e.g., the optimal variable values are provided to a user via the graphic user interface 412, who then relays the optimal variable values to the downstream functions 440). In either case, the control may include ordering inventory in the supply chain, scheduling inventory orders for the supply chain, scheduling deliveries or other transportation in the supply chain, scheduling worker shifts in the supply chain, setting set points for real-world systems (e.g., in a manufacturing plant or warehouse), and / or the like.
[0065] 4. Optimization Templates FIG. 5 illustrates an example of the structure of an optimization template 415, according to one embodiment. As described above, the optimization configurator 410 may generate lists of components. From these lists, a user may select components to incorporate into the optimization template 415. For example, the optimization configurator 410 may generate a simulator list 510, an optimization algorithm list 520, an objective function list 530, and / or a parameter list 540. The simulator list 510 may include entries 515 for every unique simulator 300 available to the user, the optimization algorithm list 520 may include entries 525 for every unique optimization algorithm 430 available to the user, the objective function list 530 may include entries 535 for every unique objective function available to the user, and the parameter list 540 may include entries 545 for every unique parameter available to the user. This allows a user to quickly and easily generate an optimization template 415 by mixing and matching various entries from each of the simulator list 510, the optimization algorithm list 520, the objective function list 530, and the parameter list 540.
[0066] As shown, the optimization template 415 may include one or more optimization configurations 550. Each optimization configuration 550 pairs a simulator 552 selected from an entry 515 in the simulator list 510 with an optimization algorithm 554 selected from an entry 525 in the optimization algorithm list 520. Each simulator 552 is a data structure representing an actual simulator 300, and each optimization algorithm 554 is a data structure representing an actual optimization algorithm 430. In addition, the optimization template 415 may include one or more objective functions 562, each selected from an entry 535 in the objective function list. The optimization template 415 may also include one or more parameters, including one or more variables 564 and / or constraints 566, each selected from an entry 545 in the parameter list 540. The objective function 562, variables 564, and constraints 566 may be associated with a particular optimization configuration 550. Generally, a single objective function 562, multiple variables 564, and zero, one, or multiple constraints 566 are associated with each optimization configuration 550. The objective function 562 represents an objective of the optimization algorithm 554 in the associated optimization configuration 550, each variable 564 represents a variable in the simulator 552 for which an optimal value is determined by the optimization algorithm 554 in the associated optimization configuration 550, and each constraint 566 represents a constraint for the optimization algorithm 554 in the associated optimization configuration 550. Each of the various data structures 550, 552, 554, 562, 564, and / or 566 may include one or more settings for which values can be automatically entered (e.g., with default values) and / or manually entered by a user (e.g., using the graphic user interface 412).
[0067] In one embodiment, the optimization template 415 may include one or more batch configurations 570. Each batch configuration 570 may package multiple optimization configurations 550 together into a single batch that can be executed (e.g., by the aggregator 420), thereby allowing a user to define how the optimization configurations 550 are batched. However, the batch configurations 570 may be an optional component of the optimization template 415. Additionally, a batch may alternatively be implemented as a single optimization template 415 that includes multiple optimization configurations 550. In this case, a user may create multiple optimization templates 415, each representing a single batch of optimization configurations 550. In either case, the batches of optimization configurations 550 may be optimized together by the aggregator 420, thereby allowing a user to entrust the aggregator 420 to execute multiple optimization configurations 550 (e.g., all at once) without user intervention.
[0068] When the optimization template 415 is executed (e.g., by the aggregator 420), outputs 590 are generated for each optimization configuration 550. Each output 590 represents the output of a simulation-based optimization by the optimization algorithm 554 of the associated optimization configuration 550 using the simulator 552 of the associated optimization configuration 550. In one embodiment, the output 590 includes the output of at least one optimal objective value 592 by the associated objective function 562, optimal variable values 594 for each associated variable 564, and constraint values 596 for each associated constraint 566. Generally, the output 590 for a given optimization configuration 550 includes a single optimal objective value 592, multiple optimal variable values 594, and zero, one, or multiple constraint values 596, equal in number (i.e., one-to-one correspondence) with the number of objective functions 562, variables 564, and constraints 566, respectively, associated with the optimization configuration 550.
[0069] Figure 6 is a diagram illustrating example data structures for the various components shown in Figure 5, according to one embodiment. The illustrated data structures show examples of attributes that may be represented, for example, as columns in a table of a relational database (e.g., database 114). It should be understood that any of the described data structures may include fewer, more, or different attributes than the illustrated data structures.
[0070] A simulator 515 is a data structure that represents a particular simulator 300. A simulator list 510 may include one or more simulators 515. Each simulator 515 may include a simulator identifier SimulatorID (e.g., as a string value) that uniquely identifies the simulator 300, a simulator name SimulatorName (e.g., as a string value) that includes a user-friendly name for the identified simulator 300, and an execution command ExecutionCommand (e.g., as a string value) for executing the identified simulator 300. A primary key for a simulator 515 may include or consist of the SimulatorID.
[0071] An optimization algorithm 525 is a data structure that represents a particular optimization algorithm 430. An optimization algorithm list 520 may include one or more optimization algorithms 525. Each optimization algorithm 525 may include an optimization algorithm identifier OptimizationAlgorithmID (e.g., as a string value) that uniquely identifies the optimization algorithm 430, and an algorithm name AlgorithmName (e.g., as a string value) that includes a user-friendly name for the identified optimization algorithm 430. The primary key for an optimization algorithm 525 may include or consist of the AlgorithmID.
[0072] Objective function 535 is a data structure that represents a particular objective function. Objective function list 530 may include one or more objective functions 535. Each objective function 535 may include a simulator identifier SimulatorID (e.g., as a string value) that refers to simulator 515, an objective function identifier ObjectiveFunctionID (e.g., as a string value) that uniquely identifies the objective function, an objective function name ObjectiveFunctionName (e.g., as a string value) that includes a user-friendly name for the objective function, a file name FileName (e.g., as a string value) that refers to a file that defines the objective function (e.g., defines how variables are combined into the objective function to obtain a target value), an index Index (e.g., as an integer value) that includes a row number of ObjectiveFunctionID, and a column name ColumnName (e.g., as a string value) that includes the column name ObjectiveFunctionID. A primary key for objective function 535 may include or consist of SimulatorID and ObjectiveFunctionID. One or more objective functions 535 may be linked to a single simulator 515 by a SimulatorID.
[0073] Parameter 545 is a data structure that represents a particular parameter. Parameter list 540 may include one or more parameters 545. Each parameter 545 may include a simulator identifier SimulatorID (e.g., as a string value) that refers to simulator 515, a parameter identifier ParameterID (e.g., as a string value) that uniquely identifies the parameter, a parameter name ParameterName (e.g., as a string value) that includes a user-friendly name for the parameter, a parameter type ParameterType (e.g., as a string value) that identifies the type of the parameter (e.g., binary, integer, continuous, etc.), a lower bound LowerBound (e.g., as a double value) that defines a lower bound on the value of the parameter (if applicable), an upper bound UpperBound (e.g., as a double value) that defines an upper bound on the value of the parameter (if applicable), a step Step (e.g., as a double value) that defines a step step for the value of the parameter (if applicable), a file name FileName (e.g., as a string value) that refers to a file that contains the value of the parameter, an index Index (e.g., as an integer value) that includes a row number of the ParameterID, and a column name ColumnName (e.g., as a string value) that includes a column name of the ParameterID. The primary key for a parameter 545 may include or consist of a SimulatorID and a ParameterID. One or more parameters 545 may be linked to a single simulator 515 by the SimulatorID.
[0074] Collectively, all instances of the simulator 515, the optimization algorithm 525, the objective function 535, and the parameters 545 represent the master data from which the optimization template 415 is generated. In particular, the optimization configurator 410 may retrieve from the database 114 all instances of the simulator 515 to generate the simulator list 510, all instances of the optimization algorithm 525 to generate the optimization algorithm list 520, all instances of the objective function 535 to generate the objective function list 530, and / or all instances of the parameters 545 to generate the parameter list 540. As discussed elsewhere herein, a user may select instances of the simulator 515, the optimization algorithm 525, the objective function 535, and / or the parameters 545 from the master data via the graphic user interface 412 to build the optimization template 415.
[0075] An optimization configuration 550 is a data structure that represents an optimization configuration that includes pairing a particular simulator 300 (e.g., by selecting a corresponding simulator 515 from the simulator list 510) with a particular optimization algorithm 430 (e.g., by selecting a corresponding optimization algorithm 525 from the optimization algorithm list 520). Each optimization configuration 550 may include a configuration identifier ConfigurationID (e.g., as an integer value) that uniquely identifies the optimization configuration, a simulator identifier SimulatorID (e.g., as a string value) that refers to the simulator 515, an optimization algorithm identifier OptimizationAlgorithmID (e.g., as a string value) that refers to the optimization algorithm 525, a user identifier UserID (e.g., as a string value) that identifies the user that owns the optimization configuration, and a timestamp Modified (e.g., as a date-time value) that represents the last time the optimization configuration was executed. A primary key for an optimization configuration 550 may include or consist of ConfigurationID, SimulatorID, OptimizationAlgorithmID, and UserID. One or more optimization configurations 550 may be linked to a single simulator 515 by a SimulatorID, and one or more optimization configurations 550 may be linked to a single optimization algorithm 525 by an OptimizationAlgorithmID.
[0076] A batch configuration 570 is a data structure that represents a batch of optimization configurations 550. Each batch configuration 570 may include a configuration identifier ConfigurationID (e.g., as an integer value) that refers to the optimization configuration 550, and a user identifier UserID (e.g., as a string value) that identifies the user that owns the batch configuration. The primary key for a batch configuration 570 may include or consist of the ConfigurationID and UserID. A single batch configuration 570 may be linked to one or more optimization configurations 550 via the ConfigurationID.
[0077] Objective function 562 is a data structure that represents an objective function for optimization algorithm 430. Each objective function 562 may include a configuration identifier ConfigurationID (e.g., as an integer value) that points to an optimization configuration 550, an objective function identifier ObjectiveFunctionID (e.g., as a string value) that points to an objective function 535, a user identifier UserID (e.g., as a string value) that identifies the user that owns this objective function, and a type of objective function ObjectiveFunctionType (e.g., as a string value) that indicates the objective of the objective function (e.g., minimum or maximum). A primary key for an objective function 562 may include or consist of ConfigurationID, ObjectiveFunctionID, and UserID. One or more objective functions 562 may be linked to a single optimization configuration 550 by a ConfigurationID, and one or more objective functions 562 may be linked to a single objective function 535 in the master data by an ObjectiveFunctionID.
[0078] Variables 564 are data structures that represent variables in simulator 300 that are optimized by optimization algorithm 430. Each variable 564 may include a configuration identifier ConfigurationID (e.g., as an integer value) that refers to an optimization configuration 550, a parameter identifier ParameterID (e.g., as a string value) that refers to a parameter 545, and a user identifier UserID (e.g., as a string value) that identifies the user that owns the variable. A primary key for variables 564 may include or consist of ConfigurationID, ParameterID, and UserID. One or more variables 564 may be linked to a single optimization configuration 550 by a ConfigurationID, and one or more variables 564 may be linked to a single parameter 545 in the master data by a ParameterID.
[0079] Constraints 566 are data structures that represent constraints for optimization algorithm 430. Each constraint 566 may include a configuration identifier ConfigurationID (e.g., as an integer value) that refers to an optimization configuration 550, a parameter identifier ParameterID (e.g., as a string value) that refers to a parameter 545, a user identifier UserID (e.g., as a string value) that identifies the user that owns the variable, an operator Inequality (e.g., as a string value) that identifies the operator used for the constraint (e.g., less than, less than or equal to, greater than, greater than or equal to, or equal to), and a value Value (e.g., as a double value) that contains the value of the constraint to be applied to the identified parameter according to the identified operator. A primary key for constraints 566 may include or consist of ConfigurationID, ParameterID, UserID, and Inequality. One or more constraints 566 may be linked to a single optimization configuration 550 by a ConfigurationID, and one or more constraints 566 may be linked to a single parameter 545 in the master data by a ParameterID.
[0080] Optimal target values 592 are data structures that represent optimal target values output by the objective function according to the solution of optimization algorithm 430. Each optimal target value 592 may include a configuration identifier ConfigurationID (e.g., as an integer value) that points to an optimizing configuration 550, a user identifier UserID (e.g., as a string value) that identifies the user that owns that optimal target value 592, and an optimal target value OptimalTargetValue (e.g., as a double value) that contains the optimal target value. A primary key for an optimal target value 592 may include or consist of ConfigurationID and UserID. One or more optimal target values 592 may be linked to a single optimizing configuration 550 by a ConfigurationID.
[0081] Optimal variable values 594 are data structures that represent optimal values of variables in the solution of optimization algorithm 430. Each optimal variable value 594 may include a configuration identifier ConfigurationID (e.g., as an integer value) that points to an optimizing configuration 550, a parameter identifier ParameterID (e.g., as a string value) that points to a parameter 545, a user identifier UserID (e.g., as a string value) that identifies the user that owns the optimal variable value 594, and an optimal variable value OptimalVariableValue (e.g., as a double value) that contains the optimal variable value. A primary key for an optimal variable value 594 may include or consist of ConfigurationID, ParameterID, and UserID. One or more optimal variable values 594 may be linked to a single optimizing configuration 550 by a ConfigurationID, and one or more optimal variable values 594 may be linked to a single parameter 545 in the master data by a ParameterID.
[0082] Constraint values 596 are data structures that represent the final value of a constraint generated by the solution of optimization algorithm 430. Each constraint value 596 may include a configuration identifier ConfigurationID (e.g., as an integer value) that points to an optimization configuration 550, a parameter identifier ParameterID (e.g., as a string value) that points to a parameter 545, a user identifier UserID (e.g., as a string value) that identifies the user that owns that constraint value 596, an operator Inequality (e.g., as a string value) that identifies the operator used for that constraint (e.g., less than, less than or equal to, greater than, greater than or equal to, or equal to), and a constraint value ConstraintValue (e.g., as a double value) that contains the final value of the constraint. A primary key for constraint values 596 may include or consist of ConfigurationID, ParameterID, UserID, and Inequality. One or more constraint values 596 may be linked to a single optimization configuration 550 by a ConfigurationID, and one or more constraint values 596 may be linked to a single parameter 545 in the master data by a ParameterID.
[0083] 5. Example Data Structures 7A-7D are diagrams illustrating several example instances of data objects for simulation-based optimization using the particular simulator for supply chain management 300 of FIG. 3, according to one embodiment. For purposes of illustration, the data objects are shown as tables with actual values for each cell. However, it should be understood that the data objects can be represented in a variety of other forms and the values should not be construed as limiting in any manner.
[0084] 7A shows a table for input 310 and output 320. Input 310 defines values for multiple variables {x1, x2, x3, x4} by associating a ParameterID for each variable with a Directory and a FileName of a file containing the values of that variable. These variables may be defined for different items (e.g., different products) using ItemID and for different components of the real world system (e.g., various warehouses) using SiteName. Output 320 may associate key performance indicators with different items and / or components of the real world system by associating KPIs with ItemIDs and SiteNames. Output 320 also defines a value for each key performance indicator in KPIValue.
[0085] 7B shows tables for simulator list 510, optimization algorithm list 520, objective function list 530, and parameters list 540. Each row in simulator list 510 represents a different simulator 300 that may be selected for optimization configuration 550, and each row in optimization algorithm list 520 represents a different optimization algorithm 430 that may be selected for optimization configuration 550. Each row in objective function list 530 represents an objective function that may be selected for optimization configuration 550. In the illustrated example, there is only a single available objective function AvgInv that calculates average inventory as its target value. Each row in parameters list 540 represents a parameter that may be selected for optimization configuration 550, either as a variable or a constraint.
[0086] 7C illustrates an optimization configuration table 750, an objective function table 762, a variables table 764, a constraints table 766, and a batch configuration 570 for an optimization template 415. Each row in the optimization configuration table 750 represents a single optimization configuration 550 (e.g., 550A or 550B) that associates a simulator 300 (e.g., represented by SimulatorID) with an optimization algorithm 430 (e.g., represented by OptimizationAlgorithmID). Each row in the objective function table 762 represents a single objective function 562 (e.g., 562A or 562B) that is associated with an optimization configuration 550 (e.g., linked by ConfigurationID) in the optimization configuration table 750. Note that in this example, each optimization algorithm 430 in each optimization configuration 550A and 550B is linked to an AvgInv objective function that has an objective to minimize a target value (e.g., represented by ObjectiveFunctionType). Each row in the variables table 764 represents a single variable 564 (e.g., 564A, 564B, 564C, 564D, 564E, 564F, 564G, or 564H) associated with an optimization configuration 550 (e.g., linked by a ConfigurationID) in the optimization configurations table 750, and each row in the constraints table 766 represents a single constraint 566 (e.g., 566A or 566B) associated with an optimization configuration 550 (e.g., linked by a ConfigurationID) in the optimization configurations table 750. Each row in the batch configurations 570 represents a single optimization configuration 550 in the optimization configurations table 750 included in the batch represented by the batch configuration 570.
[0087] 7D shows an optimal objective value table 792, an optimal variable value table 794, and a constraint value table 796. Each row in the optimal objective value table 792 represents a single optimal objective value 592 (e.g., 592A or 592B) output from an optimizing configuration 550 (e.g., linked by a ConfigurationID) in the optimizing configuration table 750. Each row in the optimal variable value table 794 represents a single optimal variable value 594 (e.g., 594A, 594B, 594C, 594D, 594E, 594F, 594G, or 594H) for an optimizing configuration 550 (e.g., linked by a ConfigurationID) in the optimizing configuration table 750. The value of each optimal variable value 594 after optimization is contained in OptimalVariableValue. Each row in the constraint values table 796 represents a single constraint value 596 (eg, 596A or 596B) that results from optimizing an optimizing configuration 550 (eg, linked by a ConfigurationID) in the optimizing configurations table 750.
[0088] It should be appreciated that each constraint value 596 represents a value of the parameter 545 after optimization. In general, this value must satisfy the equation given by the corresponding constraint 566. For example, constraint 566A represents the inequality Order Fulfillment Rate (OFR)>=99. After optimization, if the optimal variable value associated with the same optimized configuration 550 (i.e., optimal variable values 594A-594D) is 99.4, then the corresponding value of constraint 566A is given by constraint value 596A indicating Order Fulfillment Rate. Since 99.4>=99, constraint 566A is satisfied by optimal variable values 594A-594D. This allows a user, when evaluating solution 425, to view constraint values 596 (e.g., via graphic user interface 412) to verify that constraint values 596 satisfy their corresponding constraints 566.
[0089] 6. Process Overview 8 illustrates a process 800 for simulation-based optimization, according to one embodiment. Although process 800 is shown with a particular arrangement and order of sub-processes, process 800 may be implemented with fewer, more, or different sub-processes, and with a different arrangement and / or order of the sub-processes. Additionally, it should be understood that any sub-process that is not dependent on the completion of another sub-process may be performed before, after, or in parallel with other independent sub-processes, even if the sub-processes have been described and illustrated in a particular order.
[0090] Process 800 may be embodied in one or more software modules executed by one or more hardware processors (e.g., processor 210), such as a software application (e.g., server application 112, client application 132, and / or a distributed application including both server application 112 and client application 132) that may be executed entirely by the processor of platform 110, entirely by the processor of user system 130, or distributed across platform 110 and user system 130, such that some portions or modules of the software application are executed by platform 110 and other portions or modules of the software application are executed by user system 130. The described process may be implemented as instructions expressed in source code, object code, and / or machine code. These instructions may be executed directly by hardware processor 210, or alternatively, may be executed by a virtual machine operating between the object code and hardware processor 210.
[0091] Alternatively, the process 800 may be implemented as hardware components (e.g., general purpose processors, integrated circuits (ICs), application specific integrated circuits (ASICs), digital signal processors (DSPs), field programmable gate arrays (FPGAs), or other programmable logic devices, discrete gate or transistor logic, etc.), a combination of hardware components, or a combination of hardware and software components. To clearly illustrate the interchangeability of hardware and software, various example components, blocks, modules, circuits, and steps are described herein generally in terms of their functionality. Whether such functionality is implemented in hardware or software depends on the particular application and design constraints imposed on the overall system. Those skilled in the art may implement the functions described above in various ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the invention. In addition, the grouping of functions within a component, block, module, circuit, or step is for ease of description. Certain functions or steps can be moved between components, blocks, modules, circuits, or steps without departing from the invention.
[0092] The process 800 may be performed for each optimization template 415 that is desired to be generated and executed. First, the optimization template 415 is generated in sub-process 810. The sub-process 810 may be implemented in the optimization configurator 410.
[0093] For example, one or more optimization configurations 550 may be received. Each optimization configuration 550 associates an optimization algorithm 430 with a simulator 300 of a real-world system, such as a supply chain, by association of a data structure 525 representing the optimization algorithm 430 with a data structure 515 representing the simulator 300. Receiving the optimization configuration 550 may include receiving a selection of a simulator 515 from a plurality of available simulators (e.g., from a simulator list 510) and an associated selection of an optimization algorithm 525 from a plurality of available optimization algorithms (e.g., from an optimization algorithm list 520), receiving a selection of an optimization configuration 550 from a plurality of available optimization configurations 550, and the like. These selections may be performed manually by a user via a graphic user interface 412 of the optimization configurator 410, or automatically or semi-automatically by another system. These selections may include specifying values for one or more settings in the optimization configuration 550.
[0094] Additionally, one or more objective functions 562 may be received and associated with one of the optimization configurations 550. Receiving the objective function 562 may include receiving a selection of an objective function 535 from among a plurality of available objective functions 535 (e.g., from the objective function list 530). The selection may be performed manually by a user via the graphic user interface 412 of the optimization configurator 410, or automatically or semi-automatically by another system. The selection may include specifying values for one or more settings in the objective function 562.
[0095] Additionally, one or more variables 564 may be received and associated with one of the optimization configurations 550 (e.g., may further be indirectly associated with the objective function 562 through a common association with the optimization configuration 550). Receiving the variables 564 may include receiving a selection of a parameter 545 from among a plurality of available parameters 545 (e.g., from the parameter list 540). The selection may be performed manually by a user via the graphic user interface 412 of the optimization configurator 410, or automatically or semi-automatically by another system. The selection may include specifying values for one or more settings in the variables 564.
[0096] Additionally, one or more constraints 566 may be received and associated with one of the optimization configurations 550 (e.g., may further be indirectly associated with the objective function 562 by a common association with the optimization configuration 550). Receiving the constraints 566 may include receiving a selection of a parameter 545 from among a plurality of available parameters 545 (e.g., from the parameter list 540). This selection may be performed manually by a user via the graphic user interface 412 of the optimization configurator 410, or automatically or semi-automatically by another system. This selection may include specifying values for one or more settings in the constraints 566.
[0097] Additionally, one or more batch configurations 570 may be received and associated with one or more of the optimization configurations 550. Receiving the batch configurations 570 may include receiving a selection of one or more optimization configurations 550 from among a plurality of available optimization configurations 550 (e.g., all optimization configurations 550 added to the optimization template 415), assigning each optimization configuration 550 to a batch configuration 570 as it is received or created, etc. This assignment of optimization configurations 550 to batch configurations 570 may be performed manually by a user via the graphic user interface 412 of the optimization configurator 410, or automatically or semi-automatically by another system.
[0098] As mentioned above, sub-process 810 may also include receiving one or more settings for the optimization template 415. For example, these settings may include definitions of specific attributes such as the objective function 562 (e.g., ObjectiveFunctionType), constraints 566 (e.g., Inequality, Value), etc. Attributes that require settings may be initially populated with default values. The user may edit those default values (e.g., via the graphic user interface 412) as necessary or desired.
[0099] In sub-process 820, optimization is performed for each optimization configuration 550 in the optimization template 415 generated in sub-process 810. In particular, for each objective function 562 associated with each optimization configuration 550 in the optimization template 415, an optimization algorithm 430 associated with the optimization configuration 550 (via data structure 554) is executed to determine optimal variable values 594 for each variable 564 associated with the objective function 562 (e.g., via the optimization configuration 550), constrained by constraints 596 associated with the objective function 562 (e.g., via the optimization configuration 550), while optimizing the objective function 562, using a simulator 300 associated with the optimization algorithm 430 in the optimization configuration 550 (e.g., via the data structure 552). Sub-process 820 may be implemented in the aggregator 420.
[0100] Sub-process 820 generates an optimal solution 425. The solution 425 may include outputs 590 for each optimized configuration 550 in the optimization template 415 generated in sub-process 810 and executed in sub-process 820. Each output 590 may include an optimal target value 592 generated by the objective function 562 associated with the respective optimized configuration 550, optimal variable values 594 for each variable 564 associated with the respective optimized configuration 550, and constraint values 596 for each constraint 566 associated with the respective optimized configuration 550.
[0101] In sub-process 830, a representation of the solution 425 may be output. For example, the solution 425 may be provided by the aggregator 420 to the optimization configurator 410 and output to the graphic user interface 412 for review by a user. The user may review the solution 425 to evaluate the performance of the optimization, verify that each constraint 566 is satisfied, and / or the like. The performance of the optimization may be evaluated based on one or more stopping criteria. Alternatively, the optimization configurator 410 may automatically evaluate the solution 425 to determine whether one or more stopping criteria are satisfied and / or whether the constraints 566 are satisfied.
[0102] Process 800 may proceed to sub-process 850, whether manually or automatically applied, when one or more stopping criteria are not satisfied (i.e., "No" in sub-process 840). Otherwise, process 800 may proceed to sub-process 860 when one or more stopping criteria are satisfied (i.e., "Yes" in sub-process 840).
[0103] In sub-process 850, one or more changes may be implemented to the optimization template 415. For example, a user may manually evaluate the current settings in the optimization template 415 and / or elsewhere and change one or more of those settings via the graphic user interface 412 of the optimization configurator 410. Alternatively or additionally, the optimization configurator 410 may automatically change one or more settings according to any suitable learning mechanism.
[0104] In sub-process 860, a final optimal solution is output. The final optimal solution may be the solution 425 output in the last or most recent iteration of sub-process 830, or the best solution 425 output across all iterations of sub-process 830. The optimization configurator 410 may provide the final optimal solution to a user via the graphical user interface 412 and / or to one or more downstream functions 440 (to initiate control of a real-world system associated with the optimization using the optimal variable values 594 in the final optimal solution, for example, as an operating configuration for the real-world system).
[0105] Embodiments of the optimization configurator 410 can allow for faster selection of objective functions, variables, and constraints (e.g., using lists 530 and 540), can reduce development time for selecting the best optimization algorithm 430 for each simulator 300 (e.g., using the optimization template 415), can reduce development time for deploying optimization algorithms 430 to new simulators 300 (e.g., using the optimization template 415), can be applied to a variety of domains (e.g., other than supply chain management), can enable determination of an optimal solution for any simulator 300 without specialized user knowledge regarding optimization, can allow multiple optimal solutions from multiple optimization algorithms 430 to be determined in a single batch (e.g., using batch configuration 570), can improve efficiency in the supply chain or other domains (e.g., reduced inventory costs, reduced logistics costs due to reduced development time for simulation-based optimization), and / or can realize one or more other benefits.
[0106] The above description of the disclosed embodiments is provided to enable those skilled in the art to make or use the present invention. Various modifications to those embodiments will be readily apparent to those skilled in the art, and the general principles described herein may be applied to other embodiments without departing from the spirit or scope of the present invention. It should therefore be understood that the description and figures presented herein represent presently preferred embodiments of the present invention, and thus represent the subject matter broadly contemplated by the present invention. It should further be understood that the scope of the present invention generally encompasses other embodiments that may become apparent to those skilled in the art, and the scope of the present invention is not limited accordingly.
[0107] Combinations described herein such as "at least one of A, B, or C," "one or more of A, B, or C," "at least one of A, B, and C," "one or more of A, B, and C," and "A, B, C, or any combination thereof" include any combination of A, B, and / or C, and may include multiples of A, multiples of B, or multiples of C. In particular, combinations such as "at least one of A, B, or C," "one or more of A, B, or C," "at least one of A, B, and C," "one or more of A, B, and C," and "A, B, C, or any combination thereof" may include A only, B only, C only, A and B, A and C, B and C, or A and B and C, and any such combination may include one or more elements of its components A, B, and / or C. For example, a combination of A and B can include one A and multiple Bs, multiple As and one B, or multiple As and multiple Bs. [Explanation of symbols]
[0108] 110 Platform 112 Applications 114 Database 120 Network 130 User System 134 Local Database 140 External Systems 205 Communication Bus 210 Processor 215 Main Memory 220 Secondary Memory 225 Internal medium 230 Removable Media 235 I / O Interface 240 Communication Interface 245 External media 260 Baseband 265 Wireless 270 Antenna 300 Simulator 410 Optimization Configurator 415 Optimized Templates 420 Aggregator 430 Optimization Algorithms 440 Downstream Functions 515,552 Simulator
Claims
1. 1. An information processing method in which at least one hardware processor performs processing using information and an algorithm stored in a memory, comprising: The hardware processor includes: generating said optimization template by generating, in advance or dynamically, one or more lists of components of said optimization template, namely, a simulator list, an optimization algorithm list, an objective function list, and a parameter list, and receiving a selection of components from said lists; performing an optimization on the optimization template; outputting an optimal solution based on the performed optimization; Including, The step of generating an optimized template comprises: The hardware processor includes: receiving one or more optimization configurations, each of which may be executed manually by a user via a graphic user interface or automatically or semi-automatically by another system; associating the optimization algorithm with the simulator by selecting an optimization algorithm from the optimization algorithm list and selecting a simulator of a real-world system from the simulator list; receiving an objective function comprising one or more one or more variables, and associating each of the one or more objective functions with one of the one or more optimization configurations by selection of the one or more objective functions from a list of the objective functions, which may be performed manually by a user via a graphic user interface or automatically or semi-automatically by another system; receiving one or more variables, by selection of the one or more variables from the parameter list, which may be performed manually by a user via a graphic user interface, or automatically or semi-automatically by another system, and associating each of the one or more variables with one of the one or more objective functions associated with one of the one or more optimization configurations; receiving one or more constraints, by selection of the one or more constraints from the parameter list, which may be performed manually by a user via a graphic user interface, or automatically or semi-automatically by another system, and associating each of the one or more constraints with one of the one or more objective functions associated with one of the one or more optimization configurations; Including, The step of performing optimization on the optimization template includes: The hardware processor processes for each of the one or more optimization configurations in the optimization template, a candidate value determination step of executing the optimization algorithm in the optimization configuration to determine candidate values for one or more variables associated with the objective function; generating output values by executing the simulator in the optimization configuration using the candidate values of the one or more variables; an optimal solution generating step of generating an optimal solution including at least one optimal target value according to the objective function, a plurality of optimal variable values for each of the variables, and zero, one, or a plurality of constraint values for each of the constraints by the optimization algorithm, while being constrained by the one or more constraints associated with the objective function, by repeating the candidate value determining step and the output value generating step until the generated output value is determined to be optimal; An information processing method comprising:
2. 2. The information processing method according to claim 1, the optimization template is generated by further receiving one or more batch configurations, each of the one or more batch configurations including a plurality of optimization configurations, and an optimization is performed for each of the one or more optimization configurations in the optimization template; 23. An information processing method comprising:
3. 2. The information processing method according to claim 1, after performing the optimization using the at least one hardware processor, for each of one or more subsequent iterations: receiving a user action including one or more modifications to the optimization template; incorporating the one or more modifications into the optimization template; performing the optimization on the modified optimization template; The information processing method further comprises:
4. 2. The information processing method according to claim 1, An information processing method, characterized in that each of the simulators generates output from input using a digital twin of the real-world system.
5. 5. The information processing method according to claim 4, using the simulator associated with the optimization algorithm, transforming candidate values of said one or more variables into said input; applying said simulator to said input to generate said output; 13. An information processing method comprising:
6. 5. The information processing method according to claim 4, 4. A method of computing a real-world system comprising: a processor for processing said real-world system data; and a processor for processing said real-world system data.
7. 5. The information processing method according to claim 4, 11. The information processing method, wherein the real world system includes a supply chain.
8. 8. An information processing method according to claim 7, wherein the output of each of the simulators includes one or both of an average inventory quantity or an order completion rate.
9. 2. The information processing method according to claim 1, 11. A method of processing information, wherein receiving one or more optimization configurations comprises receiving a user selection of the one or more optimization configurations from among a plurality of available optimization configurations.
10. 2. The information processing method according to claim 1, 11. A method of processing information, wherein receiving one or more objective functions comprises receiving a user selection of the one or more objective functions from among a plurality of available objective functions.
11. 2. The information processing method according to claim 1, receiving one or more variables includes receiving a user selection of the one or more variables from among a plurality of available variables; receiving one or more constraints includes receiving a user selection of the one or more constraints from among a plurality of available constraints; 23. An information processing method comprising:
12. 2. The information processing method according to claim 1, 2. An information processing method, comprising: the one or more objective functions being a plurality of objective functions.
13. 13. The information processing method according to claim 12, 20. A method of processing information, comprising the step of: providing a plurality of optimized configurations to the one or more optimized configurations;
14. 14. An information processing method according to claim 13, At least one of the plurality of optimized configurations comprises: Different optimization algorithms can be associated with the same simulator, or The same optimization algorithm can be associated with different simulators, or A different optimization algorithm is associated with a different simulator than another one of the plurality of optimization configurations.
23. An information processing method comprising:
15. 14. An information processing method according to claim 13, a first optimization configuration of the plurality of optimization configurations associates a first optimization algorithm with a first simulator of a first real-world system; a second optimization configuration of the plurality of optimization configurations associating the first optimization algorithm with a second simulator of a second real world system different from the first real world system.
16. 2. The information processing method according to claim 1, the optimization solution includes determined values for the one or more variables for each of the one or more objective functions associated with each of the one or more optimized configurations in the optimization template.
17. 17. An information processing method according to claim 16, the optimization solution further comprises, for each of the one or more objective functions associated with each of the one or more optimized configurations in the optimization template, output of a target value of the objective function for the determined values of the one or more variables and values of the one or more constraints.
18. 2. The information processing method according to claim 1, 20. The method of claim 19, further comprising: initiating control of the real world system based on the optimal solution using the at least one hardware processor.
19. An information processing system including at least one hardware processor and software, The software, when executed by the at least one hardware processor, performs the information processing method according to any one of claims 1 to 18. An information processing system configured as above.
20. A non-transitory computer readable medium having instructions stored thereon, comprising: The instructions, when executed by at least one hardware processor, perform the information processing method according to any one of claims 1 to 18. A non-transitory computer-readable medium comprising:
Citation Information
Patent Citations
Simulation system, and its method
JP2006235983A
US11,223,546
Performing constraint compliant crossovers in population-based optimization
US20120005136A1
Generating constraint-compliant populations in population-based optimization
US20120005137A1
Modifying constraint-compliant populations in population-based optimization
US20120005138A1