# US 11,308,431 B2 · Hierarchical optimization for processing objectives sequentially and/or iteratively

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,308,431 B2
- Document ID: US11308431B2
- Status: Granted
- Kind: B2
- Application number: 16/922,187
- Filed: 2020-07-07
- Published: 2022-01-13
- Granted: 2022-04-19
- Earliest claimed: 2020-07-07
- Assignees: Intuit Inc.
- Applicants: Intuit Inc.
- Inventors: Sudhir Agarwal; Roland Allen Sanford, II
- Web page: https://patentgrep.com/patent/US11308431B2

## CPC

- G06Q 10/06316: {Sequencing of tasks or work}
- G06N 5/04: Inference or reasoning models
- G06Q 10/04: Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem" (market predictions or forecasting for commercial activities G06Q30/0202)
- G06Q 30/016: After-sales
- G06Q 40/02: Banking, e.g. interest calculation or account maintenance (credit or loans G06Q40/03)
- G06Q 40/06: Asset management; Financial planning or analysis
- G06Q 40/10: Tax strategies
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06N: COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS

## Abstract

Certain aspects of the present disclosure provide techniques for hierarchical optimization including: receiving a request to optimize a primary objective; determining a set of stages to optimize the primary objective; for each respective stage of the set of stages: determining an objective function; when the respective stage is the first stage to be processed: determining values of a set of variable inputs to the respective stage and an output of the objective function; when the respective stage is not the first stage: updating a set of fixed inputs to the respective stage by including the variable inputs to one or more previously processed stages and their corresponding values to the set of fixed inputs to the respective stage; determining values of the set of variable inputs to the respective stage and output of the objective function for the respective stage; providing a final output for display on a display device.

## Claims

### Claim 1

A method comprising:
receiving a request to optimize a primary objective from a requestor;
determining, based on the request, a set of stages to optimize the primary objective;
for each respective stage of the set of stages:
determining, based on the primary objective, an objective function associated with a sub-objective for the respective stage;
selecting, based on a native format of the objective function, an evaluator engine from a plurality of evaluator engines for evaluating the objective function associated with the sub-objective for the respective stage;
determining whether the respective stage is a first stage of the set of stages to be processed;
in response to determining that the respective stage is the first stage of the set of stages to be processed:
determining, based at least in part on the objective function of the respective stage, values of a set of variable inputs to the respective stage and an output of the objective function for the respective stage, wherein the output of the objective function for the respective stage is based on evaluating, by the evaluator engine, the objective function for the respective stage based on the values of the set of variable inputs to the respective stage; and
in response to determining that the respective stage is not the first stage of the set of stages to be processed:
updating a set of fixed inputs to the respective stage by including the set of variable inputs to one or more previously processed stages of the set of stages and their corresponding values to the set of fixed inputs to the respective stage; and
determining values of the set of variable inputs to the respective stage and an output of the objective function for the respective stage based at least in part on: the objective function for the respective stage, the updated set of fixed inputs to the respective stage, and the output of an objective function for the previously processed stages, wherein the output of the objective function for the respective stage is based on evaluating, by the evaluator engine, the objective function for the respective stage based on the values of the set of variable inputs to the respective stage; and
providing, based on outputs of the set of stages, a final output to the requestor for display on a display device.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
determining, based on the request to optimize the primary objective, a sequential order of execution for the set of stages; and
executing, based on the determined sequential order of execution, the set of stages.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
for each respective stage of the set of stages:
determining whether an optimization objective of the respective stage is iterative; and
in response to determining that the optimization objective of the respective stage is iterative:
determining one or more subsets of the set of variable inputs to the respective stage; and
until a termination condition is satisfied;
iteratively determining, based at least in part on the objective function for the respective stage, values of the one or more subsets of the set of variable inputs to the respective stage; and
determining, based on the determined values of the one or more subsets of the set of variable inputs, an output of the respective stage.

### Claim 4 (depends on 3)

The method of claim 3, wherein the values of the set of variable inputs to the respective stage are determined based on the iteratively determined values of the one or more subsets of the set of variable inputs to the respective stage.

### Claim 5 (depends on 3)

The method of claim 3, wherein the output of the respective stage is determined based on a collection criteria and intermediate outputs of iterations until the termination condition is satisfied.

### Claim 6 (depends on 5)

The method of claim 5, wherein the collection criteria is indicated in the received request to optimize the primary objective.

### Claim 7 (depends on 1)

The method of claim 1, wherein:
each stage of the set of stages corresponds to a portion of the primary objective, and
the output of the objective function of the stage is optimized to determine values for the corresponding portion of the primary objective.

### Claim 8 (depends on 1)

The method of claim 1, wherein an objective function for each respective stage of the set of stages is different from objective functions for other stages of the set of stages.

### Claim 9 (depends on 1)

The method of claim 1, further comprising: for each respective stage of the set of stages: determining, based on the request to optimize the primary objective, a set of constraints for the set of variable inputs to the respective stage.

### Claim 10 (depends on 9)

The method of claim 9, wherein the set of constraints for the set of variable inputs to each respective stage of the set of stages is different from sets of constraints for sets of variable inputs to other stages of the set of stages.

### Claim 11 (depends on 9)

The method of claim 9, wherein the values of the set of variable inputs to the respective stage are determined based on the set of constraints and the objective function for the set of variable inputs to the respective stage.

### Claim 12

A processing system, comprising:
a memory comprising computer-executable instructions;
a processor configured to execute the computer-executable instructions and cause the processing system to:
receive a request to optimize a primary objective from a requestor;
determine, based on the request, a set of stages to optimize the primary objective;
for each respective stage of the set of stages:
determine, based on the primary objective, an objective function associated with a sub-objective for the respective stage;
select, based on a native format of the objective function, an evaluator engine from a plurality of evaluator engines for evaluating the objective function associated with the sub-objective for the respective stage;
determine whether the respective stage is a first stage of the set of stages to be processed;
when the respective stage is the first stage of the set of stages to be processed:
determine, based at least in part on the objective function of the respective stage, values of a set of variable inputs to the respective stage and an output of the objective function for the respective stage, wherein the output of the objective function for the respective stage is based on evaluating, by the evaluator engine, the objective function for the respective stage based on the values of the set of variable inputs to the respective stage; and
when the respective stage is not the first stage of the set of stages to be processed:
update a set of fixed inputs to the respective stage by including the set of variable inputs to one or more previously processed stages of the set of stages and their corresponding values to a set of fixed inputs to the respective stage; and
determine values of the set of variable inputs to the respective stage and an output of the objective function for the respective stage based at least in part on: the objective function for the respective stage, the updated set of fixed inputs to the respective stage, and the output of an objective function for the previously processed stages, wherein the output of the objective function for the respective stage is based on evaluating, by the evaluator engine, the objective function for the respective stage based on the values of the set of variable inputs to the respective stage; and
provide, based on outputs of the set of stages, a final output to the requestor for display on a display device.

### Claim 13 (depends on 12)

The processing system of claim 12, wherein the processor is further configured to cause the processing system to:
determine, based on the request to optimize the primary objective, a sequential order of execution for the set of stages; and
execute, based on the determined sequential order of execution, the set of stages.

### Claim 14 (depends on 12)

The processing system of claim 12, wherein the processor is further configured to cause the processing system to:
for each respective stage of the set of stages:
determine whether an optimization objective of the respective stage is iterative; and
when the optimization objective of the respective stage is iterative:
determine one or more subsets of the set of variable inputs to the respective stage; and
until a termination condition is satisfied;
iteratively determining, based at least in part on the objective function for the respective stage, values of the one or more subsets of the set of variable inputs to the respective stage; and
determine, based on the determined values of the one or more subsets of the set of variable inputs, an output of the respective stage.

### Claim 15 (depends on 14)

The processing system of claim 14, wherein the values of the set of variable inputs to the respective stage are determined based on the iteratively determined values of the one or more subsets of the set of variable inputs to the respective stage.

### Claim 16 (depends on 14)

The processing system of claim 14, wherein the output of the respective stage is determined based on a collection criteria and intermediate outputs of iterations until the termination condition is satisfied.

### Claim 17 (depends on 12)

The processing system of claim 12, wherein:
each stage of the set of stages corresponds to a portion of the primary objective, and
the output of the objective function of the stage is optimized to determine values for the corresponding portion of the primary objective.

### Claim 18

A non-transitory computer-readable medium comprising computer-executable instructions, which, when executed by a processing system, causes the processing system to perform a method, the method comprising:
receiving a request to optimize a primary objective from a requestor;
determining, based on the request, a set of stages to optimize the primary objective;
for each respective stage of the set of stages:
determining, based on the primary objective, an objective function associated with a sub-objective for the respective stage;
selecting, based on a native format of the objective function, an evaluator engine from a plurality of evaluator engines for evaluating the objective function associated with the sub-objective for the respective stage;
determining whether the respective stage is a first stage of the set of stages to be processed;
in response to determining that the respective stage is the first stage of the set of stages to be processed:
determining, based at least in part on the objective function of the respective stage, values of a set of variable inputs to the respective stage and an output of the objective function for the respective stage, wherein the output of the objective function for the respective stage is based on evaluating, by the evaluator engine, the objective function for the respective stage based on the values of the set of variable inputs to the respective stage; and
in response to determining that the respective stage is not the first stage of the set of stages to be processed:
updating a set of fixed inputs to the respective stage by including the set of variable inputs to one or more previously processed stages of the set of stages and their corresponding values to a set of fixed inputs to the respective stage; and
determining values of the set of variable inputs to the respective stage and an output of the objective function for the respective stage based at least in part on: the objective function for the respective stage, the updated set of fixed inputs to the respective stage, and the output of an objective function for the previously processed stages, wherein the output of the objective function for the respective stage is based on evaluating, by the evaluator engine, the objective function for the respective stage based on the values of the set of variable inputs to the respective stage; and
providing, based on outputs of the set of stages, a final output to the requestor for display on a display device.

### Claim 19 (depends on 18)

The non-transitory computer-readable medium of claim 18, wherein the method further comprises:
for each respective stage of the set of stages:
determining whether an optimization objective of the respective stage is iterative; and
in response to determining that the optimization objective of the respective stage is iterative:
determining one or more subsets of the set of variable inputs to the respective stage, wherein a size of each of the one or more subsets satisfies a threshold subset size; and
until a termination condition is satisfied;
iteratively determining, based at least in part on the objective function for the respective stage, values of the one or more subsets of the set of variable inputs to the respective stage; and
determining, based on the determined values of the one or more subsets of the set of variable inputs, an output of the respective stage.

### Claim 20 (depends on 19)

The non-transitory computer-readable medium of claim 19, wherein the values of the set of variable inputs to the respective stage are determined based on the iteratively determined values of the one or more subsets of the set of variable inputs to the respective stage.
