Many types of businesses adjust parameters associated with their operations in order to achieve performance targets. For example, a retail store may adjust operations parameters to achieve performance targets, such as revenue, foot traffic, transaction volume, or transaction amount. These operations parameters may include the number of employees working in the store at a given time, the types of employees working in the store at a given time, the number of labor hours by the employees over a specified time period, or the store's operating hours.
To predict a value of the operations parameter that will achieve a particular performance metric at a given time, some businesses use models that relate historical operations parameters to corresponding measured performance values. However, existing models do not take into account varying levels of risk associated with different values of the operations parameters. For example, increasing the number of employees working in a retail store at a given time may have increasing levels of risk as the number of employees increases. This is because the amount of performance data available for extraordinarily high numbers of employees (e.g., during peak holiday hours) may be significantly lower than the amount of data available for other values of the operations parameter. As the number of employees working at a given time increases, the cost to pay the employees increases with each added employee, but the performance of the store may not increase with the added employees or may not increase as much as the cost of the labor hours. This reality may not be adequately represented in the model in a manner that accurately conveys the risk associated with the increased employee numbers. Furthermore, existing models are often impractical for large enterprises with many business locations, where resources can be shared between locations but where each location has its own unique risk profile that makes it difficult to evaluate how best to divide the resources between the locations.
The present disclosure is directed to systems and methods to generate optimized resource allocations while accounting for dynamic relationships between operations costs and performance. To overcome the disadvantages of conventional systems, an optimization system and method generate an optimized resource allocation based on relationship models (e.g., models that represent relationships between employee work hours and sales revenue) and constraints (e.g., dynamic constraints). A relationship model facilitates the projection of a performance metric for a particular value of an operations parameter. In an example implementation, a relationship model defines the relationship between employee work hours and sales revenue in a retail store. The optimization engine is configured to determine one or more values of the operations parameter that optimizes (e.g., minimizes, maximizes, etc.) the selected performance metric. The optimization engine accounts for constraints on the operations parameter and/or performance metric, and can further calculate dynamic constraints. For example, the cost of increasing staffing can offset potential increased sales. This complex relationship is difficult to analyze using existing systems.
Further, the optimization system organizes data from multiple organizational units (e.g., sales from individual stores, staffing in individual departments, etc.), and is configurable to generate individually optimized values of the operations parameter for each unit. For example, sales and staffing data from a chain of stores can be utilized by the optimization engine to determine optimal staffing levels customized for each location.
In some implementations, a method for optimizing resource allocations in a retail store includes retrieving a relationship model that defines a statistical relationship between operations data and performance data and that includes confidence scores indicating degrees of confidence in the statistical relationship. Tabular data is extracted from the relationship model, where tabular data points in the tabular data represent a value of the performance parameter and a confidence score that are each sampled from the relationship model for each of a plurality of segments of the operations data. The tabular data is analyzed to select an operations value of the operations data to achieve an optimal value of the performance data. The operations value is selected from a set of values of the operations data for which the corresponding confidence score exceeds a confidence score threshold, and the optimal value of the performance data represents an optimum of the values of the performance data that are mapped, by the relationship model, to the set of values of the operations data. The selected operations value is stored, for example for use in a retail store.
In some implementations, a non-transitory computer readable storage medium stores executable computer program instructions that, when executed by a processor, cause the processor to retrieve a first relationship model associated with a first retail store and a second relationship model associated with a second retail store, where the first and second retail stores share a pool of available resources (e.g., a number of employees available to work at the first retail store and the second retail store, or a total labor hours budget for the first retail store and the second retail store). Each of the first and second relationship models define a statistical relationship between operations data and performance data measured in the respective retail store. For each of the first relationship model and second relationship model, the processor analyzes a performance measurement derived from the corresponding relationship model for each of a plurality of intervals of the operations data. A constraint associated with the pool of available resources is applied to the performance measurements to allocate the pool of available resources between the first retail store and the second retail store, where the allocation is selected to satisfy the constraint and achieve a collective performance target for the first retail store and the second retail store. The selected allocation is stored.
Some implementations of a system for optimizing resources in a retail store include a processor and a non-transitory computer readable medium that stores computer program instructions executable by the processor. When executed, the instructions cause the processor to access a relationship model that defines a statistical relationship between operations data values and performance data values measured in a retail store and that includes a confidence score indicating a degree of confidence in the statistical relationship between the operations data values and the performance data values for each of a plurality of the operations data values. Using the relationship model, the processor selects an operations value of the operations data values to achieve an optimal value of the performance data values. The selected operations value is selected from a set of operations data values for which the corresponding confidence score exceeds a specified threshold, and the optimal value of the performance data represents an optimum of the performance data values that are mapped, by the relationship model, to the operations data values in the set. The selected value of the operations data is implemented in the retail store.
Embodiments of an optimization system is described, including a computing device and a database system. The optimization system is configured to retrieve performance and operations data from multiple locations, such as retail store locations, franchise locations, business offices, and the like. More specifically, the performance and operations data can be retrieved from point of sale systems, employee management systems, accounting databases, ecommerce analytics systems, and the like. In some implementations, performance data comprises sales revenue, and operations data comprises employee timesheet data (e.g., number of hours worked).
The optimization system is configured to calculate performance metrics values from the performance data, and operations parameter(s) values from the operations data. In some implementations, the optimization system can automatically select one or more performance metrics and operations parameters. In some implementations, the operations parameter(s) and/or the performance metric(s) can be user-configurable through, for example, a web interface. In an example implementation, the performance metric includes sales revenue per period, and the operations parameter includes the total employee work hours per period. Periods may include calendar weeks, individual days, quarters, months, rolling time periods, etc. The optimization system can be configured to aggregate the performance and/or operations data to calculate values of the performance metric and/or operations parameter. Generally, the operations parameter includes a controllable independent variable, and the performance metric includes a dependent variable to be optimized. For example, in a retail store, the operations parameter includes employee timesheet data, employee schedule data, mobile device location data, employee assignment data, or retail store operating hours. The performance data for the retail store includes, for example, payment transaction data, revenue data, profit data, interaction conversion data, transaction volume data, transaction amount data, or physical traffic data.
In the example implementation, the optimization system is configured to generate a relationship model. In other implementations, the optimization retrieves/requests a relationship model. The relationship model facilitates the projection of a performance metric (e.g., sales revenue for a time period) for one or more values of an operations parameter. In some implementations, the relationship model can be a plot diagram (e.g., a partial dependency plot) illustrating projected performance metric values for a range of values of an operation parameter. The relationship model can be described as modeling the relationship between a set of operations parameters and a set of performance metrics. In this manner, the relationship models enables forecasting of the performance of certain operations decisions.
In an example implementation, the relationship model defines the relationship between employee work hours and sales revenue. For example, the relationship model can be used to investigate the impact of staffing decisions. The relationship model can predict increased sales in response to increased staffing, up to a certain point, after which the gains may be reduced (e.g., diminished sales, low predicted increases in sales). The relationship model enables a mathematical/statistical approach to controlling operations parameters, such as the staffing of a location (e.g., the total number of hours worked by employees).
The optimization system accounts for the risk associated with increased operations parameters. In one example, increasing staffing (i.e., an operations parameter) can have a significant upfront financial cost. The optimization system is configured to interrogate a generated relationship model to determine confidence scores. In some implementations, the confidence level is calculated using subsampling. The optimization system leverages the confidence scores in the process of determining an optimized resource allocation.
The optimization system can optimize the operations parameter in view of user-configurable constraints and a risk parameter. Stored constraints include constraints on the operations parameter and/or performance metric, such as minimum/maximum values. In some implementations, stored constraints include dynamic constraints that define an additional relationship between the performance metric and the operations parameter. For example, stored constraints can include a cost per labor hour, which impacts optimizations directed to net profit. Stored constraints may also include budgets for a planning period, and budgets may be defined at a chain level, for multiple locations, or a single location. For example, the cost of labor hours at multiple locations may be aggregated and compared to a regional budget constraint.
The optimization system generates an optimized resource allocation. More specifically, the optimization system analyzes the relationship model and the constraints retrieved. The optimization system then determines an optimized resource allocation (e.g., a value of the operations parameter) that optimizes (e.g., minimizes, maximizes) the performance metric while considering the constraints (e.g., cost of labor, maximum/minimum values). The generation of optimized resource allocations is further described in relation to
System Overview
Computing device 108 is configured to retrieve performance and operations data from multiple locations, using network 125. Network 125 can be a local area network (LAN) or a wide area network (WAN), but can also be other wired or wireless networks. In some implementations, network 125 is the Internet or some other public or private network. Client computing devices (e.g., mobile device 152, POS device 154 and/or 158, IoT device 160, etc.) are connected to network 125 through a network interface, such as by wired or wireless communication. The connection between computing device 108 and network 125 can be any kind of local, wide area, wired, or wireless network.
Computing device 108 can retrieve performance data from multiple locations and/or data sources, using network 125. Examples of performance data include, but are not limited to, revenue, conversions, profits, transaction volume, and average transaction amount. Performance data 102 can further include activity and engagement metrics. For example, performance data 102 can include the number of people that entered a location, or the number of people that interacted with an employee. Performance data 102 can be grouped/segmented based on time periods (e.g., daily, hourly, weekly, quarterly, monthly). Performance data 102 can also include ‘internet-of-things’ data, such as data from motion-sending lighting systems, air systems, and the like.
In an example implementation, computing device 108 retrieves performance data from point of sale (“POS”) device 154 at location 150. For example, POS device 154 can generate payment transactions, and computing device 108 can be configured to retrieve aggregate revenue data from POS device 154. Computing device 108 can be configured to track/store the location associated with retrieved performance data 102. Computing device 108 can retrieve performance data (and associated location data) from POS device 154 at location 150, and from POS device 158 at location 156. The location data can be in the form of coordinates (e.g., latitude and longitude), address, location identifier, contact number, other identifying information, and so on.
In an example implementation, performance data 102 includes aggregate revenue. Performance data 102 can also include any performance metric, such as aggregate profit, consumer transaction volume, and the like, as described in relation to
Computing device 108 can retrieve operations data 104 from multiple locations and/or data sources, using network 125. Examples of operations data include, but are not limited to, labor hours, operation hours, staffing headcount, and the like. For example, operations data 104 can include daily labor hours (e.g., total hours worked across employees) for a set of days. As another example, operations data 104 can include, for a set of days, the number of employees that worked on each day. Operations data 104, generally, represents a controllable parameter (e.g., an independent variable) associated with a cost or limited resource, and potentially with performance data (e.g., a dependent variable).
In an example implementation, computing device 108 retrieves operations data 104 from mobile device 152 at location 150 and internet of things (IOT) device 160 at location 156. For example, computing device 108 can retrieve employee schedules/timesheets from mobile device 152. As another example, energy usage data can be retrieved from IOT device 160. Operations and/or performance data 102 can be generated by IOT devices. For example, IOT devices can be used to generate operations data, such as number of workers at a particular store location, busyness of workers, cleanliness of store locations, merchandize stock, and so on.
In the illustrated implementation, computing device 108 retrieves operations data 104 from mobile device 152. Mobile device 152 can be an app-focused mobile device, such as a smartphone or tablet. In one example, mobile device 152 includes a worker scheduling application, storing worker schedules and timesheets. Operations data 104 includes labor hours, worker schedules, and worker timesheets. In some implementations, mobile device 152 can include a workload management application, tracking the tasks (e.g., cleaning tasks, stocking tasks) and assignments (e.g., greeter, cashier) associated with a worker. Operations data 104 includes tasks completed by a worker, time spent by a worker on certain tasks, time spent on certain assignments. In some implementations, operations data 104 can include sensor data generated by mobile device 152. For example, operations data 104 can include location data associated with mobile device 152. More specifically, operations data 104 can include, for a specific time, the number of mobile devices within a location, and the position of the mobile devices within the location. Thus, the utilization and workflow of the mobile devices (e.g., mobile device 152) can be represented in operations data 104. The structure and processing of operations data 104 is further described in relation to
Computing device 108 can be an edge server which receives client requests and coordinates fulfillment of those requests through other servers. Computing device 108 can be a distributed computing environment encompassing multiple computing devices located at the same or at geographically disparate physical locations. In some implementations, computing device 108 corresponds to a group of servers. In other implementations, computing device 108 can correspond to a single server.
Computing device 108 is configured to store operations data 104 and performance data 102. In
Aspects of the system can be embodied in a special purpose computing device or data processor that is specifically programmed, configured, or constructed to perform one or more of the computer-executable instructions explained in detail herein. Aspects of the system can also be practiced in distributed computing environments where tasks or modules are performed by remote processing devices, which are linked through any communications network, such as a Local Area Network (LAN), Wide Area Network (WAN), or the Internet. In a distributed computing environment, program modules can be located in both local and remote memory storage devices.
Aspects of the system can be stored or distributed on computer-readable media (e.g., physical and/or tangible non-transitory computer-readable storage media), including magnetically or optically readable computer discs, hard-wired or preprogrammed chips (e.g., EEPROM semiconductor chips), nanotechnology memory, or other data storage media. Indeed, computer implemented instructions, data structures, screen displays, and other data under aspects of the system can be distributed over the Internet or over other networks (including wireless networks), on a propagated signal on a propagation medium (e.g., an electromagnetic wave(s), a sound wave, etc.) over a period of time, or they can be provided on any analog or digital network (packet switched, circuit switched, or other scheme). Portions of the system reside on a server computer, while corresponding portions reside on a client computer such as a mobile or portable device, and thus, while certain hardware platforms are described herein, aspects of the system are equally applicable to nodes on a network. In an alternative implementation, the mobile device or portable device can represent the server portion, while the server can represent the client portion.
Optimization system 100 includes data processing module 202. Data processing module 202 is configured to retrieve performance and operations data 204. Data processing module 202 can communicate with database systems, disk storage systems, data source APIs, and so on. For example, data processing module 202 can communicate with data storage systems to retrieve performance data 102 and operations data 104, illustrated in
Relationship modeling module 206 is configured to generate relationship model 208 based on performance and operations data 204. More specifically, relationship modeling module 206 analyzes the relationship between operations parameters (e.g., labor hours worked, advertising spending) and performance metrics (e.g., revenue, customer volume). For example, relationship model 208 can indicate that increased labor hours cause an increase in sales, up to a point. Relationship model 208 can also be visualized as a curve defining a computed relationship between an operations parameter and a performance metric. For example, the curve may illustrate a positive correlation between labor hours and sales. Relationship model 208 implements computational methods (e.g., regression analysis algorithms) to generate relationship model 208 based on stored performance and operations data 204. In an example implementation, relationship model 208 relates labor hours worked per month to forecasted total sales per month.
Optimization engine 210 analyzes relationship model 208 to select optimized resource allocation 212. In other words, optimization engine 210 analyzes the projected relationship between operations parameters and performance metrics to select an optimized value of the operations parameter. Optimization engine 210 stores rules and constraints to inform the determination of optimized resource allocation 212. Constraints can include a minimum/maximum value of an operations parameter, defined for example as a minimum number of employees needed to operate an open retail store or a maximum number of employees of the store or that can work in the store at the same time. In some implementations, constraints include dynamic constraints applied to the values of the performance data or the relationship between the operations data and the performance data, such as a cost per labor hour, cost of advertising spending, cost (e.g., utilities) of increased operating hours, and so on. Optimization engine 210 can be configured to consider dynamic constraints (e.g., the rising cost of labor) when computing optimized resource allocation 212. In one implementation, dynamic constraints include budget constraints defined for an organizational unit (e.g., enterprise level, chain level, department level, region level, geographic area, etc.). For example, optimization engine 210 may optimize operations parameters for multiple locations in a region, while also complying with a budget constraint defined at the region level. In the example implementation, optimization engine 210 can select a value for labor hours worked per period (e.g., month) that optimizes for total sales per period, while staying within the constraints.
In some implementations, optimization engine 210 is configured to group performance and operations data 204 before generating optimized resource allocation 212. For example, optimization engine 210 can generate a unique optimized resource allocation for each store in a chain. Optimization engine 210 can group performance and operations data 204 based on any column/field. In some implementations, performance and operations data 204 can be grouped based on store, department, division, line of business, practice group, office location, employee title, job role, season, store type, and so on. Overall, optimization engine 210 can consider performance and operations data 204 on a holistic level, before generating multiple specialized optimized resource allocations for individual units such as store locations and/or departments. In one implementation, relationship models are trained on data at a specific aggregated chain level (e.g., from multiple locations, departments, and/or units). Optimization engine 210 can leverage chain-level data to generate resource allocations that are specific to individual store locations, but with the benefit of high level trend analysis from the whole chain-wide data set. The generation of multiple optimized resource allocations is further described in relation to
Optimization system 100 includes user interface module 214, which is configured to display/visualize optimized resource allocation 212. For example, user interface module 214 can generate a webpage including a chart visualization based on both relationship model 208 and optimized resource allocation 212. For example, user interface module 214 can generate an interactive chart including a curve representing relationship model 208, with optimized resource allocation 212 annotated on the curve.
Computing device 108 implements a number of software modules, stored in memory 352, to facilitate the operation of the optimization system. In an example implementation, computing device 108 implements data processing module 202, relationship modeling module 206, optimization engine 210, and user interface module 214. These modules are stored in memory 352. In some implementations, these modules can be distributed across multiple computing devices, such as in a distributed computing system. Additionally or alternatively, these modules can be stored in persistent storage 354, or on network-accessible storage.
Data processing module 202 is configured to store/retrieve operations data and/or performance data. Database module 202 can interact with one or more database systems, such as local database systems, local mass storage, remote database systems, cloud database systems, distributed database systems, and the like. Database module 202 is configured to generate and execute database queries to retrieve and/or modify performance data 102 and operations data 104 (shown in
Data processing module 202 is configured to filter, aggregate, group, and/or otherwise transform performance data 102 and/or operations data 104. For example, data processing module 202 can be configured to group sales data by store location, aggregate sales data by timeframe (e.g., calendar week, month, day). Further, data processing module 202 can be configured to aggregate employee operations data (e.g., timesheets, schedules) to calculate the total worked hours for a timeframe. Data processing module 202 can also be configured to filter/aggregate data based on an associated location, such as a retail location or business office.
Interface module 214 implements a user interface and/or application programming interface (API). In some implementations, interface module 214 is a web application server, configured to provide a web application to client computing devices. The web application can be configured to facilitate the selection of operations parameters and performance metrics and can interact with visualization module 214 to display optimized resource allocations. In other implementations, interface module 214 provides an API to client computing devices. Client computing devices can request optimized resource allocations using the API. The API can include a HTTP-based API.
In some implementations, relationship modeling module 206 generates relationship models. The relationship model can be visualized as a curve relating an operations parameter to a performance metric. The relationship model forecasts projected levels of the performance metric for a range of values of the operations parameter. Relationship modeling module 206 selects an operations parameter (e.g., an independent variable) from the operations data. For example, relationship modeling module 206 can select employee labor hours as the performance parameter, based on operations data including time/attendance data, timesheet data, staffing schedule data, etc. As another example, relationship modeling module 206 can select an operation parameter of advertising dollars spent from an invoice database including advertising invoices (e.g., operations data). Relationship modeling module 206 further selects at least one performance metric from the performance data. For example, relationship modeling module 206 selects a performance metric of total sales from a transaction database (e.g., performance data), and/or a business intelligence system. In one implementation, relationship modeling module 206 communicates with a cloud-based relationship modeling system and/or a 3rd-party software library for relationship modeling. In other implementations, relationship modeling module 206 locally generates a relationship model.
The operation of optimization engine 210 is further described in relation to
More specifically, relationship model 402 defines a relationship (e.g., curve, statistical projection) between an operations parameter (e.g., advertising spend, labor hours) and a performance metric (e.g., transaction volume, revenue). In some implementations, relationship model 402 includes multiple operations parameters and/or multiple performance metrics.
Notably, relationship model 402 further includes confidence scores. The confidence scores define a statistical confidence (e.g., a degree of uncertainty/unpredictability) in the computed relationship. These confidence scores can be visualized as a supplemental curve to the curve of the associated relationship model, as illustrated in
In some implementations, the confidence scores in the relationship model 402 are calculated by generating subsamples of the performance data corresponding to each of a plurality of intervals of the operations data. For each subsample, a regression is performed to calculate an intermediate relationship model that defines a relationship between the subsample and the interval of operations data. The regressions for each subsample can then be compared to generate a confidence score for the interval. In various implementations, the confidence score for an interval is determined, for example, by calculating a ratio between values of two or more of the intermediate models within the interval, or by calculating a ratio or difference between slopes of the curves of the intermediate models within the interval
Segmentation module 404 is configured to aggregate/process performance relationship model 402 into tabular data 406. In other words, segmentation module 404 defines different levels (e.g., ranges, intervals) of the operations parameter for the purpose of optimization. In some implementations, segmentation module 404 automatically segments a relationship model 402 into any number of segments, and the segments can have varying size. For example, segmentation module 404 can segment relationship model 402 into 5 segments of equal size, or any number of segments. As another example, segmentation module 404 can segment relationship model 402 into a number of segments based on a standard distribution. More specifically, segmentation module 404 may define a first segment representing the average value, and additional segments based on standard deviations from the average value. In other implementations, segmentation module 404 can segment relationship model 402 based on predefined ranges. For example, labor hours may be segmented into pre-defined ranges such as 400-500, 500-600, and 600-700. Segmentation module 404 determines aggregate values for the operations parameter, performance metric, and confidence scores for each segment. The segments, and associated aggregated values, can be stored as rows in a table. The output of segmentation module 404 is illustrated in, at least,
Optimization engine 210 analyzes tabular data 406 in view of additional stored optimization rules, parameters, and constraints. The operation of optimization engine 210 is further described in relation to
In the example implementation, risk parameter 506 is user-configurable, and users can define a relative level of risk tolerance. In other implementations, optimization engine 210 generates multiple instances of optimized resource allocation 504 for a variety of pre-set and/or automatically determined values of risk parameter 506. In other words, optimization engine 210 may generate different optimized resource allocations for different levels of risk parameter 506.
Optimization engine 210 optimizes (e.g., minimizes, maximizes) the performance metric 510, while considering constraints on the associated operations parameter. In one implementation, operations constraint 503 includes min/max values for operations parameter 508. For example, the maximum labor hours in a month can be 200 hours for all employees working at a location.
In some implementations, operations constraints 503 includes dynamic constraints. Dynamic constraints define an additional relationship between the operations parameter and the performance metric, and can include a cost per labor hour, cost of advertising spending, cost (e.g., utilities) of increased operating hours, and so on. Optimization engine 210 computes the impact of the dynamic constraint when analyzing the operations parameter. In one implementation, operations constraints 503 includes an average cost per labor hour. Thus, optimization engine 210 is configured to balance the cost of increasing labor hours against the projected gains in performance metric 510.
Risk parameter 506 can be user configurable, such that a user (e.g., an administrator, a store manager, an HR user, etc.) can define a relative risk tolerance. For example, a business organization can have a higher risk tolerance with advertising spending compared to employee staffing. In other words, it is easy to adjust advertising spend, and can be difficult to onboard/offboard employees. Optimization engine 210 accounts for this using risk parameter 506. Risk parameter 506 defines the risk tolerated by optimization engine 210. For example, relationship model 402 can indicate that raising the operations parameter 508 also raises performance metric 510, but with a low confidence score. In this example, a high value of risk parameter 506 results in the optimization engine 210 selecting the higher value of optimization parameter 508 as the optimized solution. However, a lower value of risk parameter 506 can result in optimization engine 210 selecting the lower (e.g., safer) value of optimization parameter 508, and forgoing the uncertain potential gains.
Optimization engine 210 also compares performance relationship model 402 to general performance forecast 502. In the example implementation, general performance forecast 502 is not a relationship model, and is instead an overall forecast of performance metric 510. In other words, general performance forecast 502 is not dependent on operations parameter 508. Optimization engine 210 utilizes general performance forecast 502 as a sanity check in determining optimized resource allocation 504. Excessive deviation from general performance forecast 502 can trigger an alert and/or selection of a higher-confidence value of operation parameter 508. For example, dramatic changes in the performance metric cannot be feasible, and/or can indicate computational errors.
Multiple relationship models are illustrated in plot 600. In the illustrated implementation, optimization system 100 is configured to aggregate/group performance and operations data based on store locations. Optimization system 100 can be configured to automatically select a relationship model, or combine/aggregate multiple relationship models.
Table 650 corresponds to plot 600 in
Record 664 includes, at least, an operations parameter, performance metric, and a confidence score. Record 664 includes operations parameter 658, performance metric 660, and confidence score 662. In the example implementation, operations parameter 658 has the label “labor hours(hrs)” and performance metric “predicted sales amount (sales_amt_pred)($)”.
Operations parameter 658 corresponds to ranges of operations parameter 602, shown in plot 600. In other words, operations parameter 658 identifies ranges (e.g., segments) of plot 600. For example, record 664 includes value “30” for operations parameter 658. This value corresponds to a segment of plot 600, such as the range 25 (the minimum value) to 30 of operations parameter 602. Based on this segment, record 664 includes aggregated values for the performance metric 660 and confidence score 662. For example, record 664 includes value “120” for performance metric 660. In the example implementation, performance metric 660 is the average value of performance metric 604 for the associated segment. Performance metric 660 can be any aggregated form of performance metric 604, such as a min/max value, mode value, and so on. Column 656 sequentially identifies which segment (e.g., a ‘cut point’) a record corresponds to. For example, record 665 indicates the value in column 658 corresponds to the first segment of the relationship model.
Optimization system 100 can be configured to group operations and performance data based on any value. In the illustrated implementation, table 650 includes two sets of data, and identified by column 652. More specifically, column 652 includes store identifiers. In other implementations, other grouping identifiers may be defined, such as store identifiers, region identifiers, department identifiers, and so on. As shown in
Confidence scores 708 corresponds to relationship model 702. In the illustrated implementation, confidence score 710 is a decimal scale from 0-1. In other implementations, confidence score can be a probability, inverse probability, numerical score (e.g., 1-100, 1-1000), and so on.
Constraints 800 optionally includes a general performance forecast. Column 808 defines a general (e.g., naive, overall) forecasted value of the performance metric, independent of any particular changes in the operations parameter. Thus, column 808 may be used as a ‘sanity check’ to evaluate the feasibility of optimized values of the performance metric. Column 808 may also be used as a weighting factor for confidence scores. More specifically, column 808 may be used to promote (e.g., change in scale) confidence scores from a range of 0.0 to 1.0, to the same magnitude as a predicted sales value. Confidence scores and weighted confidence scores are further described in relation to columns 860 and 862 in
In some implementations, the operations constraints may differ by organizational groups, such as store locations, departments, regions, and so on. In the illustrated implementation, column 802 defines a store identifier corresponding to column 652 in
The lambda values denote a relative level of risk tolerated in the optimized resource allocations. For example, a business may be more tolerant to risk in determining an amount of money to spend on advertising, compared to a low tolerance for risk in employment decisions. For example, a business may expect a high level of confidence before deciding to hire additional employees. In contrast, a business may be more inclined to take risks on advertising spending, based on a subjective analysis of an advertising campaign. In some implementations, optimization engine 210 receives lambda values from users. In other implementations, optimization engine 210 stores pre-defined lambda values corresponding to categories of optimization parameters, and is configured to select the appropriate stored lambda value. In yet other implementations, optimization engine 210 determines the lambda value dynamically. More specifically, the lambda value can be determined by a heuristic search to provide scenario analysis for different risk level requirements.
The user-selected risk parameter is used to specify how the optimization engine 210 performs resource allocation in view of the confidence scores. For example,
In the example implementation, the performance and operations data includes data from two store locations (store A and store B), as shown in
Column 854 includes optimized resource allocations for store A, for the corresponding values of the risk parameter in column 852. More specifically, column 854 includes calculated values of the operations parameter determined to optimize the associated performance metric given the risk parameter. Optimization engine 210 selects the value of column 854 based on the relationship models illustrated in
Organizations can make resource allocation (e.g., stocking, staffing) decisions based on column 854. For example, an organization that uses a lambda value of 0 (indicating high risk tolerance) can determine that 45 labor hours is optimal at store A and 30 staff hours is optimal at store B.
In the illustrated example, optimized resource allocations 850 defines an optimal resource allocation that includes a unique number of labor hours for multiple locations of a retail store (e.g., Store A in column 854, Store B in column 856). Column 854 has the label “hrs_A” indicating the operations parameter and the associated location. Column 856 has the similar label “hrs_B”. In other implementations, optimized resource allocations can include an overall value. As shown in
Optimized resource allocations 850 further includes confidence scores for the optimized resource allocation as a whole, and any individual components of the optimized resource allocation (e.g., columns 854 and 856). Columns 862 and 864 include the individual confidence scores (CS) for each store (store A and store B respectively), as indicated by the labels “CS_A” and “CS_B”. The individual confidence stores for optimized resource allocations 850 are determined using the confidence scores associated with the underlying relationship models.
Column 860 defines an overall (e.g., weighted sum) of the individual confidence scores (“sum_weighted_CS”). In the example implementation, column 860 is calculated by combining the individual confidence scores (e.g., 862, 864) with the corresponding general sales amount prediction (column 808 in
In some implementations, the total sales in column 858 and weighted confidence scores in column 860 are combined in an optimization analysis. For example, the optimization engine 210 calculates an optimization objective by adding the total sales in column 858 to the product of the lambda value (column 852) and the weighted confidence score (column 860). In this case, the lambda value functions as a weight between the predicted total sales with laborers and the weighted confidence score.
In other words, the values of columns 854 and 856 are compared to the plot shown in
At block 904, process 900 requests a relationship model. The relationship model can be visualized as a curve relating an operations parameter to a performance metric. The relationship model forecasts projected levels of the performance metric for a range of values of the operations parameter. Process 900 selects an operations parameter (e.g., an independent variable) from the operations data. For example, process 900 can select employee labor hours as the performance parameter, based on operations data including time/attendance data, timesheet data, staffing schedule data, etc. As another example, process 900 can select an operation parameter of advertising dollars spent from an invoice database including advertising invoices (e.g., operations data). Process 900 further selects at least one performance metric from the performance data. For example, process 900 select a performance metric of total sales from a transaction database (e.g., performance data), and/or a business intelligence system. In one implementation, process 900 communicates with a cloud-based relationship modeling system and/or a 3rd-party software library for relationship modeling. In other implementations, process 900 locally generates a relationship model.
At block 906, process 900 transforms the relationship model into tabular data for processing by the optimization engine. The relationship model generated at block 904 can be continuous (e.g., a curve), and process 900 aggregates the relationship model into segments. For example, process 900 can define intervals of the operations parameter, and further aggregate the forecasted performance metric for each of the intervals. Thus, each interval and the associated aggregated performance metric can be stored as a record in a table, facilitating analysis by the optimization engine at block 910 (described below).
At block 908, process 900 retrieves stored constraints and a risk parameter. Stored constraints include constraints on the operations parameter and/or performance metric, such as minimum/maximum values. In some implementations, stored constraints include dynamic constraints that define an additional relationship between the performance metric and the operations parameter. For example, stored constraints can include a cost per labor hour, which impacts optimizations directed to net profit.
At block 910, process 900 generates an optimized resource allocation. Process 900 analyzes the transformed (e.g., segmented, discretized, tabularized) relationship model generated at block 906, and the constraints retrieved at block 908. Process 900 then determines an optimized resource allocation (e.g., a value of the operations parameter) that optimizes (e.g., minimizes, maximizes) the performance metric while considering the constraints (e.g., cost of labor, maximum/minimum values). The generation of optimized resource allocations is further described in relation to
Process 900 can further include transmitting the optimized resource allocation to a computing device and/or providing a user interface (e.g., client application) for viewing the optimized resource allocation. In one implementation, process 900 includes generating an interactive webpage including a chart visualizing both the relationship model obtained at block 904 and the optimized resource allocation generated at block 910.
Unless the context clearly requires otherwise, throughout the description and the claims, the words “comprise,” “comprising,” and the like are to be construed in an inclusive sense, as opposed to an exclusive or exhaustive sense; that is to say, in the sense of “including, but not limited to.” As used herein, the terms “connected,” “coupled,” or any variant thereof, means any connection or coupling, either direct or indirect, between two or more elements; the coupling of connection between the elements can be physical, logical, or a combination thereof. Additionally, the words “herein,” “above,” “below,” and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural number can also include the plural or singular number respectively. The word “or,” in reference to a list of two or more items, covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, or any combination of the items in the list.
The above detailed description of implementations of the system is not intended to be exhaustive or to limit the system to the precise form disclosed above. While specific implementations of, and examples for, the system are described above for illustrative purposes, various equivalent modifications are possible within the scope of the system, as those skilled in the relevant art will recognize. For example, some network elements are described herein as performing certain functions. Those functions could be performed by other elements in the same or differing networks, which could reduce the number of network elements. Alternatively, or additionally, network elements performing those functions could be replaced by two or more elements to perform portions of those functions. In addition, while processes, message/data flows, or blocks are presented in a given order, alternative implementations can perform routines having blocks, or employ systems having blocks, in a different order, and some processes or blocks can be deleted, moved, added, subdivided, combined, and/or modified to provide alternative or subcombinations. Each of these processes, message/data flows, or blocks can be implemented in a variety of different ways. Also, while processes or blocks are at times shown as being performed in series, these processes or blocks can instead be performed in parallel, or can be performed at different times. Further, any specific numbers noted herein are only examples: alternative implementations can employ differing values or ranges.
The teachings of the methods and system provided herein can be applied to other systems, not necessarily the system described above. The elements, blocks and acts of the various implementations described above can be combined to provide further implementations.
Any patents and applications and other references noted above, including any that can be listed in accompanying filing papers, are incorporated herein by reference. Aspects of the technology can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide yet further implementations of the technology.
These and other changes can be made to the invention in light of the above Detailed Description. While the above description describes certain implementations of the technology, and describes the best mode contemplated, no matter how detailed the above appears in text, the invention can be practiced in many ways. Details of the system can vary considerably in its implementation details, while still being encompassed by the technology disclosed herein. As noted above, particular terminology used when describing certain features or aspects of the technology should not be taken to imply that the terminology is being redefined herein to be restricted to any specific characteristics, features, or aspects of the technology with which that terminology is associated. In general, the terms used in the following claims should not be construed to limit the invention to the specific implementations disclosed in the specification, unless the above Detailed Description section explicitly defines such terms. Accordingly, the actual scope of the invention encompasses not only the disclosed implementations, but also all equivalent ways of practicing or implementing the invention under the claims.
While certain aspects of the technology are presented below in certain claim forms, the inventors contemplate the various aspects of the technology in any number of claim forms. For example, while only one aspect of the invention is recited as implemented in a computer-readable medium, other aspects can likewise be implemented in a computer-readable medium. Accordingly, the inventors reserve the right to add additional claims after filing the application to pursue such additional claim forms for other aspects of the technology.
This application claims the benefit of U.S. Provisional Patent App. No. 62/966,913, filed Jan. 28, 2020, which is incorporated herein by reference in its entirety.
Number | Date | Country | |
---|---|---|---|
62966913 | Jan 2020 | US |