Prosecution Insights
Last updated: July 17, 2026
Application No. 17/881,737

ASSIGNING SUPPLY TO DEMAND FROM MULTIPLE SOURCES

Final Rejection §101§103
Filed
Aug 05, 2022
Examiner
BOLEN, NICHOLAS D
Art Unit
3624
Tech Center
3600 — Transportation & Electronic Commerce
Assignee
ORACLE INTERNATIONAL Corporation
OA Round
4 (Final)
9%
Grant Probability
At Risk
5-6
OA Rounds
0m
Est. Remaining
19%
With Interview

Examiner Intelligence

Grants only 9% of cases
9%
Career Allowance Rate
12 granted / 127 resolved
-42.6% vs TC avg
Moderate +10% lift
Without
With
+9.9%
Interview Lift
resolved cases with interview
Typical timeline
3y 11m
Avg Prosecution
19 currently pending
Career history
156
Total Applications
across all art units

Statute-Specific Performance

§101
6.4%
-33.6% vs TC avg
§103
91.3%
+51.3% vs TC avg
§102
2.4%
-37.6% vs TC avg
Black line = Tech Center average estimate • Based on career data from 127 resolved cases

Office Action

§101 §103
DETAILED ACTION Notice of Pre-AIA or AIA Status The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . Continued Examination Under 37 CFR 1.114 Claims 1, 10 and 16 are presently amended. Claims 1-20 are pending. Response to Amendment Applicant’s amendments are acknowledged. Response to Arguments Applicant' s arguments filed 3/16/2026 have been fully considered in view of further consideration of statutory law, Office policy, precedential common law, and the cited prior art as necessitated by the amendments to the claims, and are not persuasive for the reasons set forth below. 35 USC § 101 Rejections First, Applicant argues that “In the Desjardins Memo, Director Squires explained that he "designated the Desjardins decision as precedential to 1) ensure the case reasoning binds all examination and appeals activity, and 2) underscore that improvements in computational performance, learning, storage, data sets and structures, for example, can constitute patent-eligible technological advancements under the Alice framework." … The present claims improve the architecture and computational performance of a solver system by defining a rule-based processing sequence that alters the information flow of how the solver system processes supply and demand data. The changes to the solver architecture include: (1) processing demands in ascending order of demand size (as recited in the claims), which reduces combinatorial branching during the assignment process; (2) identifying source locations that have sufficient supply (as recited in the claims), which is constraint-based pruning of available combinations before the assignment process; (3) filling demands from only one source location (as recited in the claims), which further reduces the search space. In addition, the claims call for real-time re-computation in response to GUI input. This is a further system architecture change to how information flows through a system, which the Desjardins Memo points out can be eligible. The claims therefore change the architecture of a solver, enabling the system to operate far more rapidly than existing solvers…” [Arguments, pages 12-14]. In response, Applicant’s arguments are considered but are not persuasive. Examiner respectfully disagrees and maintains that the present claims recite a judicial exception without significantly more. With respect to Desjardins, Examiner observes that the Appeals Review Panel vacated a rejection that stated that the claims were directed to mathematical operations without significantly more. The Appeals Review Panel determined that the specification identified improvements as to how the machine learning model itself operates, including training a machine learning model to learn new tasks while protecting knowledge about previous tasks to overcome the problem of “catastrophic forgetting” encountered in continual learning systems. In contrast, Examiner maintains that the present claims recite certain methods of organizing human activity (rather than mathematical concepts as in Desjardins). Specifically, sorting demands and allocating supplies is considered to set forth steps for marketing and sales activities and behaviors. With regard to the above-arguments, Examiner observes that activities including 1) sorting demands in ascending order, 2) identifying locations with sufficient supplies, and 3) filling demands from a source location, are not improvements to a solver architecture, as claimed by the Applicant. Instead these are procedural steps that amount to the abstract idea itself, namely marketing and sales activities and behaviors. Thus, Examiner respectfully maintains that the present claims recite standard demand fulfilment activities (e.g. in a warehouse) without significantly more. As such, Examiner remains unpersuaded. Second, Applicant argues that “In the Desjardins Memo, Director Squires explicitly warns that Section 101 eligibility should not be used to address issues of novelty, obviousness, or implementation detail… But, in the Response to Arguments in the 3rd Office Action, the Office repeatedly dismisses eligibility analyses on the basis that the claims lack algorithmic detail. For example, at page 5, the Office states "With regard to the demand sorting and assignment generating steps, Examiner maintains that these claim elements are not detailed at a level of specificity which could be considered to demonstrate an improvement to the functioning of computers, or otherwise an improvement to any particular field of technology." …The Office contends that the claims "do not even recite a computerized solver algorithm "13 Respectfully, this characterization is inconsistent with the claim language. The independent claims recite a specific rule-based computational procedure including sorting demands by size, iteratively processing the sorted demands, identifying feasible source locations with sufficient supply, selecting a source location according to defined selection rules, and assigning the demand to supplies of the selected location. Dependent claims further recite specific computational heuristics, including flexibility scoring based on temporal relationships between demand fulfillment and supply availability and stochastic selection among candidate source locations. These claim elements together define a particular solver architecture rather than a generic or result-oriented allocation step, and therefore cannot reasonably be characterized as merely reciting conventional supply allocation activities. Instead, these claims are directed to rule-based performance of computational tasks, which are patent-eligible technological improvements as stated in McRO V. Bandai Namco Claims directed to rule-based automation of computational tasks may constitute technological improvements rather than abstract ideas. See McRO V. Bandai Namco…” [Arguments, pages 14-16]. In response, Applicant’s arguments are considered but are not persuasive. Examiner respectfully disagrees and observes that steps such as sorting demands by size amount to insignificant extra-solution activity, rather than evidence of an improvement to the function of computers. Further, the steps including “iteratively processing the sorted demands, [and] identifying feasible source locations with sufficient supply,” are considered to amount to mere instructions to apply the exception using a generic computer component (see MPEP 2106.05(f)). Similarly, “selecting a source location according to defined selection rules, and assigning the demand to supplies of the selected location” is considered akin to a method of assigning hair designs to balance head shape with a final step of using a tool (scissors) to cut the hair, In re Brown, 645 Fed. App'x 1014, 1017 (Fed. Cir. 2016) (see MPEP 2106.05(f)). (i.e. assigning a supplier to fulfil the demand and then fulfil the demand). Thus, Examiner respectfully maintains that the claimed steps are not recited at a level of specificity required to demonstrate a practical application, or an improvement to the functioning of computer technology. As such, Examiner remains unpersuaded. Third, Applicant argues that “The amendments to independent claims 1, 10, and 16 further clarify that user input through the graphical user interface modifies at least one of the supplies or demands and triggers generation of the set of assignments and corresponding updating of the graphical user interface to display an updated solution. This makes explicit that the claimed system operates as an interactive computational system in which user actions dynamically alter system state and initiate regeneration, followed by presentation of the regenerated solution. This clarification is supported by the specification, which describes accepting user input to adjust a configuration of supplies and demands, generating assignments between demands and supplies at multiple sources, and updating the graphical user interface to display an updated solution… The amended claims therefore recite a specific manner in which information flows through the system-user input modifying system state, followed by assignment generation and corresponding graphical update-constituting an improvement in the operation of the computer system itself. Accordingly, the claims integrate any alleged abstract idea into a practical application and are patent-eligible at step 2A, prong two…” [Arguments, pages 16-17]. In response, Applicant’s arguments are considered but are not persuasive. Examiner observes that the Applicant appears to argue that updating a user interface in response a user input amount to an improvement in the operation of the computer system itself. Examiner respectfully disagrees. An example of a case in which a computer was used as a tool to perform a mental process is Mortgage Grader, 811 F.3d. at 1324, 117 USPQ2d at 1699. The patentee in Mortgage Grader claimed a computer-implemented system for enabling borrowers to anonymously shop for loan packages offered by a plurality of lenders, comprising a database that stores loan package data from the lenders, and a computer system providing an interface and a grading module. The interface prompts a borrower to enter personal information, which the grading module uses to calculate the borrower’s credit grading, and allows the borrower to identify and compare loan packages in the database using the credit grading. 811 F.3d. at 1318, 117 USPQ2d at 1695. The Federal Circuit determined that these claims were directed to the concept of "anonymous loan shopping", which was a concept that could be "performed by humans without a computer." 811 F.3d. at 1324, 117 USPQ2d at 1699. Another example is Berkheimer v. HP, Inc., 881 F.3d 1360, 125 USPQ2d 1649 (Fed. Cir. 2018), in which the patentee claimed methods for parsing and evaluating data using a computer processing system. The Federal Circuit determined that these claims were directed to mental processes of parsing and comparing data, because the steps were recited at a high level of generality and merely used computers as a tool to perform the processes. 881 F.3d at 1366, 125 USPQ2d at 1652-53. Similarly to Mortgage Grader, wherein the user inputs information to compare loan packages, the present invention recites a process wherein a user provides adjustments in order to compare demand fulfilment solutions. Thus, Examiner respectfully maintains that the present claims recite a judicial exception without significantly more. As such, Examiner remains unpersuaded. 35 USC § 103 Rejections First, Applicant argues that “…As described in Long, a "source of supply" refers to a quantity of items that becomes available at a particular time within a single warehouse system, such as a shipment arrival or production batch (See Long, ¶ [0003], [0067]-[0070]). These "sources" are therefore temporal constructs within a unified inventory location, not distinct physical source locations. In contrast, the present claims recite identifying source locations that have sufficient supply and constraining fulfillment based on those locations. This calls for evaluation across multiple distinct supply locations, introducing a spatial, location-based constraint dimension to the problem that is absent from Long's time-based supply model…. …the present claims recite, as part of the assignment generation process itself, (1) identifying, for each demand, a set of source locations having sufficient supply, (2) selecting one source location from that set, and (3) constraining fulfillment of that demand to the selected source location. Hoffman does not disclose selecting a source location during generation of assignments (as shown in the present claims), but instead constrains the problem space prior to assignment generation. In other words, Hoffman applies a global, configuration-level constraint, while the present claims apply a per-demand, assignment-level constraint. Hoffman does not disclose or even suggest this per-demand selection and constraint process… The Office Action does not provide an articulated reasoning explaining why a person of ordinary skill would fundamentally alter the underlying supply model of Long from a time-based representation to a location-based representation, and further embedding location-based constraints into the assignment-generation process in order to apply the configuration-level "single-source" option of Hoffman to Long, nor how such a modification would have yielded predictable results” [Arguments, pages 17-19]. In response, Applicant’s arguments are considered but are not persuasive. First, with regard to the assertion that the Long reference discloses a single warehouse system and the sources are “temporal constructs within a unified inventory location, not distinct physical source locations”, Examiner respectfully disagrees and observes that Long discloses “retriev[ing] the identified supply quantities of units from the identified sources from a warehouse or other storage location” (Long, ¶ 127). Here, Long discloses fulfilling demand from differing facilities including a warehouse or other storage location. Still, Examiner maintains that, as claimed, distinct and discrete physical source locations from a single warehouse would still render the above-argued claim limitations obvious. With regard to regard to constraining fulfilment to a single source location, Examiner again directs the Application to (Long, ¶ 127), wherein Long constrains the fulfilment to either “a warehouse or other storage location”. Further, Examiner directs the Applicant to (Hoffman, ¶ 1960, If the product is being single sourced (1 FOB:1DC), a lane cannot be forced twice. For example if a user attempted to also force the Lamb FOB to Post Albuquerque, the message screen 20200 shown in FIG. 202 would get the following message…). Here, Howard discloses a constraint for single source fulfilment, wherein an ‘invalid selection’ message would appear if other lanes are selected. Examiner further maintains that such location constraints are necessarily based on individual demands rather than globally. As stated “Large national/regional suppliers will have several production/processing facilities around the country. The facilities that will supply the distributors are inspected and approved by retailer management. The supply chain coordinator can specify the supplier facility that will be used to replenish each distributor distribution center” (Hoffman, ¶ 653). It is clear that the Hoffman disclosure does not necessitate that a nationwide supplier with facilities around the country does not fulfil national demand from a single location or lane/route. Further still, and with regard to the assertion that “The Office Action does not provide an articulated reasoning explaining why a person of ordinary skill would fundamentally alter the underlying supply model of Long from a time-based representation to a location-based representation, and further embedding location-based constraints into the assignment-generation process in order to apply the configuration-level "single-source" option of Hoffman to Long, nor how such a modification would have yielded predictable results””, Examiner disagrees and observes that the previous Office Action provided the following rationale: One of ordinary skill in the art would have recognized that applying the known technique of Long would have yielded predictable results and resulted in an improved system. It would have been recognized that applying the assignment generation technique to the source identification and allocation teachings of Long to the single-source constraint elements of Hoffman would have yielded predictable results because the level of ordinary skill in the art demonstrated by the reference applied shows the ability to incorporate such demand matching features into similar systems. Further, generating assignments based on demand size and available sources with sufficient supply from a single-source, would have been recognized by those of ordinary skill in the art as resulting in an improved system that would allow more optimal source location to demand matching in a supply chain environment. As such, Examiner remains unpersuaded. Second, Applicant argues that “According to MPEP 2143.01(VI), a proposed modification may not change the principle of operation of a reference. "If the proposed modification or combination of the prior art would change the principle of operation of the prior art invention being modified, then the teachings of the references are not sufficient to render the claims prima facie obvious. "22 But here, the Office proposes a combination that would change the principle of operation of Long and therefore cannot support a conclusion of obviousness… the present claims introduce location-based constraints that require selection among multiple distinct source locations and restrict fulfillment accordingly. Incorporating such constraints would require Long to be restructured to operate over spatially distinct supply sources rather than temporally partitioned supply. Such a modification would alter the fundamental manner in which Long represents and processes supply, and therefore changes its principle of operation. A modification that changes the principle of operation of a reference is not a proper basis for an obviousness rejection. 23 For at least the foregoing reasons, the combination of Long and Hoffman fails to render obvious the limitations of independent claims 1, 10, and 16. If an independent claim is nonobvious under 35 U.S.C. $103, then any claim depending therefrom is nonobvious. 24 Accordingly, claims 2-9, 11-15, and 17-20, which depend from independent claims 1, 10, and 16, directly or indirectly, are also nonobvious” [Arguments, pages 20-21]. In response, Applicant’s arguments are considered but are not persuasive. Examiner respectfully disagrees with the premise of the argument for the same reasons as stated above. In particular, Examiner maintains that Long discloses “retriev[ing] the identified supply quantities of units from the identified sources from a warehouse or other storage location” (Long, ¶ 127). Here, Long discloses fulfilling demand from differing facilities including a warehouse or other storage location. Still, Examiner maintains that, as claimed, distinct and discrete physical source locations from a single warehouse would still render the above-argued claim limitations obvious. With regard to regard to constraining fulfilment to a single source location, Examiner again directs the Application to (Long, ¶ 127), wherein Long constrains the fulfilment to either “a warehouse or other storage location”. Further, Examiner directs the Applicant to (Hoffman, ¶ 1960, If the product is being single sourced (1 FOB:1DC), a lane cannot be forced twice. For example if a user attempted to also force the Lamb FOB to Post Albuquerque, the message screen 20200 shown in FIG. 202 would get the following message…). Here, Howard discloses a constraint for single source fulfilment, wherein an ‘invalid selection’ message would appear if other lanes are selected. Examiner further maintains that such location constraints are necessarily based on individual demands rather than globally. As stated “Large national/regional suppliers will have several production/processing facilities around the country. The facilities that will supply the distributors are inspected and approved by retailer management. The supply chain coordinator can specify the supplier facility that will be used to replenish each distributor distribution center” (Hoffman, ¶ 653). It is clear that the Hoffman disclosure does not necessitate that a nationwide supplier with facilities around the country does not fulfil national demand from a single location or lane/route. Thus, Examiner refutes the assertion that such a modification is made, first because the claims do not necessitate separate facilities, and second because even if they did, both references render such a constraint obvious. As such, Examiner remains unpersuaded. Third, Applicant argues that “Independent claim 1 is currently amended to recite in pertinent part, "for each demand, during the generation of the set of assignments, choosing one source location from the set of source locations-from which to fill the demand, wherein the demand is constrained to be filled from only the one source location."… the recitation "for each demand, during generation of the set of assignments, choosing one source location" makes explicit that the single- source constraint is applied within the assignment generation process itself, and not as a separate or global configuration parameter… Hoffman does not disclose or suggest selecting a source location during assignment generation on a per-demand basis, and therefore cannot supply the amended limitation. No prima facie case of obviousness can be sustained based on a combination of references that fails to teach each limitation of the claims.²⁶ Accordingly, the Office's reliance on Hoffman does not remedy the deficiencies of Long, and the rejection cannot be sustained” [Arguments, pages 21-22]. In response, Applicant’s arguments are considered but are not persuasive for the same reasons as stated above. With regard to regard to constraining fulfilment to a single source location, Examiner again directs the Application to (Long, ¶ 127), wherein Long constrains the fulfilment to either “a warehouse or other storage location”. Further, Examiner directs the Applicant to (Hoffman, ¶ 1960, If the product is being single sourced (1 FOB:1DC), a lane cannot be forced twice. For example if a user attempted to also force the Lamb FOB to Post Albuquerque, the message screen 20200 shown in FIG. 202 would get the following message…). Here, Howard discloses a constraint for single source fulfilment, wherein an ‘invalid selection’ message would appear if other lanes are selected. Examiner further maintains that such location constraints are necessarily based on individual demands rather than globally. As stated “Large national/regional suppliers will have several production/processing facilities around the country. The facilities that will supply the distributors are inspected and approved by retailer management. The supply chain coordinator can specify the supplier facility that will be used to replenish each distributor distribution center” (Hoffman, ¶ 653). It is clear that the Hoffman disclosure does not necessitate that a nationwide supplier with facilities around the country does not fulfil national demand from a single location or lane/route. As such, Examiner remains unpersuaded. Fourth, Applicant argues that “Independent claim 1 is currently amended to recite in pertinent part, "wherein each source location is a discrete location from which supply is made available."… the claims now recite that "each source location is a discrete location from which supply is made available," consistent with the specification, which defines a "source" as "a discrete location, point, or thing (such as a warehouse) from which a stock of units or supply is made available." See ¶ [0055]. This clarification makes explicit that the claimed assignment generation is performed across multiple distinct locations, rather than across temporally defined supplies within a single location. Long does not disclose or suggest multiple discrete source locations as claimed, but instead models supply in terms of quantities available over time within a unified system. ” [Arguments, page 23]. In response, Applicant’s arguments are considered but are not persuasive. Examiner again respectfully disagrees and maintains that discrete locations can exist within a single warehouse. Examiner further maintains that both Long and Hoffman disclose fulfilment from multiple facilities, thus rendering the above-argued claim amendments obvious. As such, Examiner remains unpersuaded. Claim Rejections - 35 USC § 101 35 U.S.C. 101 reads as follows: Whoever invents or discovers any new and useful process, machine, manufacture, or composition of matter, or any new and useful improvement thereof, may obtain a patent therefor, subject to the conditions and requirements of this title. Claims 1-20 are rejected under 35 U.S.C. 101 because the claimed invention is directed to a judicial exception (i.e., a law of nature, a natural phenomenon, or an abstract idea) without significantly more. Step 1: Claims 1-20 are directed to statutory categories, namely an article of manufacture (claims 1-9), a machine (claims 10-15) and a process (claims 16-20). Step 2A, Prong 1: Claims 1, 10 and 16, in part, recite the following abstract idea: …accept a user input to adjust a configuration of supplies and demands through… that is displaying a solution for filling the demands under the configuration, wherein the supplies are at multiple source locations, wherein each source location is a discrete location from which supply is made available, wherein the display of the solution includes displaying individual demands as icons with respective quantities and indications of met and unmet status according to the solution, wherein the icons for the individual demands are displayed in locations associated with a date the demand is to be filled; in response to the user input, wherein the user input modifies at least one of the supplies or demands and triggers generation of the set of assignments and corresponding updating of … to display an updated solution, in real-time or quasi-real-time: (a) sort, … a set of the demands by size of demand; (b) generate… the set of assignments between demands belonging to the set of the demands and supplies at the multiple source locations to form the updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand, (ii) for each demand, during the generation of the set of assignments, choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments; automatically adjust … to display the updated solution, wherein the display of the updated solution includes displaying the icons for the individual demands in the locations associated with the date the demand is to be filled with updated indications of met and unmet status according to the updated solution; and in response to user approval of the updated solution, allocate the supplies at the multiple sources to the demands belonging to the set of demands in accordance with the set of assignments (Claim 1), …that is displaying a solution for filling the demands under the configuration, wherein the supplies are at multiple source locations, wherein each source location is a discrete location from which supply is made available, wherein the display of the solution includes displaying individual demands as icons with respective quantities and indications of met and unmet status according to the solution, wherein the icons for the individual demands are displayed in locations associated with a date the demand is to be filled; in response to the user input, wherein the user input modifies at least one of the supplies or demands and triggers generation of the set of assignments and corresponding updating of … to display an updated solution, in real-time: (a) sort a set of the demands by size of demand; (b) generate the set of assignments between demands belonging to the set of demands and supplies at the multiple source locations to from the updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple sources a set of the sources from which a demand can be filled, (ii) for each demand, during the generation of the set of assignments, choosing one source from the set of sources from which to fill the demand, and (iii) assigning the demand to be filled from one or more supplies of the one source to form an assignment for the demand in the set of assignments; automatically adjust … to display the updated solution, wherein the display of the updated solution includes displaying the icons for the individual demands in the locations associated with the date the demand is to be filled with updated indications of met and unmet status according to the updated solution; and in response to user approval of the updated solution, allocate the supplies at the multiple sources to the demands belonging to the set of demands in accordance with the set of assignments (Claim 10), …that is displaying a solution for filling the demands under the configuration, wherein the supplies are at multiple source locations, wherein each source location is a discrete location from which supply is made available, wherein the display of the solution includes displaying individual demands as icons with respective quantities and indications of met and unmet status according to the solution, wherein the icons for the individual demands are displayed in locations associated with a date the demand is to be filled; in response to the user input, wherein the user input modifies at least one of the supplies or demands and triggers generation of the set of assignments and corresponding updating of … to display an updated solution, in real time: (a) sorting a set of the demands by size of demand; (b) generating a set of assignments between demands belonging to the set of demands and supplies at multiple sources, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple sources a set of the sources from which a demand can be filled, (ii) for each demand, during the generation of the set of assignments, choosing one source from the set of sources from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source to form an assignment for the demand in the set of assignments; automatically adjusting … to display the updated solution, wherein the display of the updated solution includes displaying the icons for the individual demands in the locations associated with the date the demand is to be filled with updated indications of met and unmet status according to the updated solution; and in response to user approval of the updated solution, allocating the supplies at the multiple sources to the demands belonging to the set of demands in accordance with the set of assignments (Claim 16). These concepts are not meaningfully different than the following concepts identified by the MPEP: Certain methods of organizing human activity. The aforementioned limitations describe steps for commercial or legal interactions, which includes agreements in the form of contracts; legal obligations; advertising, marketing or sales activities or behaviors; and business relations. Specifically, sorting demands and allocating supplies is considered to set forth steps for marketing and sales activities and behaviors. Mental processes. The aforementioned limitations describe steps for concepts performed in the human mind, which includes an observation, evaluation, judgment, or opinion. Specifically, sorting demands and allocating supplies is considered to set forth steps for an evaluation. As such, claims 1, 10 and 16 recite concepts identified as abstract ideas. Dependent claims 2-9, 11-15 and 17-20 recite limitations relative to the independent claims, including, for example: …determine flexibility scores for the sources in the set of sources, wherein the flexibility score for the source locations are determined based on determining a product of (i) a size of the demand and (ii) a difference between a time of fulfillment at which time the demand is to be filled and a time of availability of supply at which time the supply becomes available at the source location; identify a least-flexible source location among the set of source locations that has a flexibility score indicating supply closest to the time of fulfillment for the demand; and select the least-flexible source location to be the one source location from which to fill the demand.. [Claim 2], …repeat the generation of the set of assignments through multiple runs to create multiple sets of assignments until a condition is satisfied; during a run of the multiple runs, identify multiple least-flexible sources having equal flexibility scores, wherein the least flexible source is included in the multiple least flexible sources, and select from among the multiple least-flexible sources at random to select the least-flexible source to be the one source; and select a one of the multiple sets of assignments to be the set of assignments, wherein the one of the multiple sets of assignments has a least number of unfilled demand [Claim 3], …wherein the instructions to select the least-flexible source further cause the computer to select the least-flexible source at random from among multiple sources having equal flexibility scores [Claim 4], …wherein the instructions for the choosing one source from the set of sources from which to fulfil the demand further cause the computer to: identify a least-supply source among the set of sources that will be left with a least amount of total supply upon fulfillment of the demand; and select the least-supply source to be the one source from which to fill the demand [Claim 5], …wherein the instructions for the choosing one source from the set of sources from which to fulfil the demand further cause the computer to: identify a next source in a cycle though the multiple sources, wherein the next source is also in the set of sources from which the demand can be filled; and select the next source to be the one source from which to fill the demand [Claim 6], The limitations of these dependent claims are merely narrowing the abstract idea identified in the independent claims, and thus, the dependent claims also recite abstract ideas. Step 2A, Prong 2: This judicial exception is not integrated into a practical application. In particular, claims 1, 10 and 16 only recite the following additional elements – A non-transitory computer-readable medium that includes stored thereon computer-executable instructions that when executed by at least a processor of a computer cause the computer to… a graphical user interface…; …the graphical user interface…; …by the processor…; …by the processor…; …the graphical user interface… [Claim 1], A computing system, comprising: a processor; a memory operably connected to the processor; a non-transitory computer-readable medium operably connected to the processor, wherein the non-transitory computer-readable medium includes stored thereon computer-executable instructions that when executed by at least the processor of the computing system cause the computing system to… … a graphical user interface…; …the graphical user interface… [Claim 10], A computer-implemented method, comprising… … a graphical user interface…; …the graphical user interface… [Claim 16]. The apparatus and executable instructions are recited at a high-level of generality (see MPEP § 2106.05(a)), like the following MPEP example: iii. Gathering and analyzing information using conventional techniques and displaying the result, TLI Communications, 823 F.3d at 612-13, 118 USPQ2d at 1747-48; Furthermore, the computer implemented element is considered to amount to no more than mere instructions to apply the exception using a generic computer component (see MPEP 2106.05(f)), like the following MPEP example: i. A commonplace business method or mathematical algorithm being applied on a general purpose computer, Alice Corp. Pty. Ltd. V. CLS Bank Int’l, 573 U.S. 208, 223, 110 USPQ2d 1976, 1983 (2014); Gottschalk v. Benson, 409 U.S. 63, 64, 175 USPQ 673, 674 (1972); Versata Dev. Group, Inc. v. SAP Am., Inc., 793 F.3d 1306, 1334, 115 USPQ2d 1681, 1701 (Fed. Cir. 2015); Accordingly, these additional elements do not integrate the abstract idea into a practical application. The remaining dependent claims do not recite any new additional elements, and thus do not integrate the abstract idea into a practical application. Step 2B: Claims 1, 10 and 16 and their underlying limitations, steps, features and terms, considered both individually and as a whole, do not include additional elements that are sufficient to amount to significantly more than the judicial exception for the following reasons: Independent claims 1, 10 and 16 only recite the following additional elements – A non-transitory computer-readable medium that includes stored thereon computer-executable instructions that when executed by at least a processor of a computer cause the computer to… a graphical user interface…; …the graphical user interface…; …the graphical user interface… [Claim 1], A computing system, comprising: a processor; a memory operably connected to the processor; a non-transitory computer-readable medium operably connected to the processor, wherein the non-transitory computer-readable medium includes stored thereon computer-executable instructions that when executed by at least the processor of the computing system cause the computing system to… … a graphical user interface…; …the graphical user interface… [Claim 10], A computer-implemented method, comprising… … a graphical user interface…; …the graphical user interface… [Claim 16]. These elements do not amount to significantly more than the abstract idea for the reasons discussed in 2A prong 2 with regard to MPEP 2106.05(a) and MPEP 2106.05(f). By the failure of the elements to integrate the abstract idea into a practical application there, the additional elements likewise fail to amount to an inventive concept that is significantly more than an abstract idea here, in Step 2B. As such, both individually or in combination, these limitations do not add significantly more to the judicial exception. With regard to Example 37, Examiner observes that “the method moves the most used icons to a position on the GUI, specifically, closest to the “start” icon of the computer system, based on a determined amount of use”. Here, the graphical user interface was considered to demonstrate significantly more than the judicial exception because the graphical user interface implements a particular arrangement of elements in a specific manner based on usage, thereby providing a specific improvement of prior systems, resulting in an improved user interface for electronic devices. In contrast, the graphical user interface of the present invention is generically recited and does not include a particular arrangement of elements. Instead, the graphical user interface of the present invention “displays a solution for filling the demands…” (Claim 1). Examiner likens the limitations to the following example that the courts have indicated may not be sufficient to show an improvement in computer-functionality (See MPEP 2106.05(a)): ii. Accelerating a process of analyzing audit log data when the increased speed comes solely from the capabilities of a general-purpose computer, FairWarning IP, LLC v. Iatric Sys., 839 F.3d 1089, 1095, 120 USPQ2d 1293, 1296 (Fed. Cir. 2016); The remaining dependent claims do not include additional elements that are sufficient to amount to significantly more than the judicial exception. As discussed above with respect to integration of the abstract idea into a practical application, the dependent claims do not recite any new additional elements other than those mentioned in the independent claims, which amount to no more than mere instructions to apply the exception using a generic computer component (see MPEP 2106.05(f)). As such, these claims are not patent eligible. Claim Rejections - 35 USC § 103 In the event the determination of the status of the application as subject to AIA 35 U.S.C. 102 and 103 (or as subject to pre-AIA 35 U.S.C. 102 and 103) is incorrect, any correction of the statutory basis (i.e., changing from AIA to pre-AIA ) for the rejection will not be considered a new ground of rejection if the prior art relied upon, and the rationale supporting the rejection, would be the same under either status. The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made. Claims 1-4, 6-12 and 14-20 are rejected under 35 U.S.C. 103 as being unpatentable over Long et al., U.S. Publication No. 2021/0182755 [hereinafter Long] in view of Hoffman et al., U.S. Publication No. 2003/0018513 [hereinafter Hoffman]. Regarding Claim 1, Long discloses …A non-transitory computer-readable medium that includes stored thereon computer-executable instructions that when executed by at least a processor of a computer cause the computer to: accept a user input to adjust a configuration of supplies and demands through a graphical user interface that is displaying a solution for filling the demands under the configuration, wherein the supplies are at multiple source locations, wherein each source location is a discrete location from which supply is made available, wherein the display of the solution includes displaying individual demands as icons with respective quantities and indications of met and unmet status according to the solution, wherein the icons for the individual demands are displayed in locations associated with a date the demand is to be filled (Long, ¶ 230, one or more of the components, functions, methods, or processes described herein are configured as modules stored in a non-transitory computer readable medium. The modules are configured with stored software instructions that when executed by at least a processor accessing memory or storage cause the computing device to perform the corresponding function(s) as described herein), (Id., ¶ 10, FIG. 1 illustrates one embodiment of a graphical user interface tool for representing and manipulating scheduled supplies and demands associated with sorting-based assignment to optimize order fulfillment with short supply), (Id., ¶ 71, In one embodiment, a distribution may be represented by a distribution object or other data structure. The distribution object may include a list of one or more identifiers for its sources of supply (discloses multiple source locations) (which may be represented by supply objects), a value indicating the total quantity of units provided by those sources of supply, a value indicating a total quantity of unassigned supply remaining to the distribution, a value pair or other data structure indicating the range of days (or other time units) included in the distribution, and values indicating the immediately preceding distribution and immediately subsequent distribution), (Id., ¶ 127, At process block 715, the processor transmits an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule. In one embodiment, the processor first generates the instruction. The processor parses the schedule to identify each demand met and left unmet. For each demand met, the processor identifies the source distributions and supply quantities from the retrieved map for that demand, and generates an instruction to fulfill that demand using the identified supply quantities of units from the identified sources. The processor transmits the instruction within the operations management system (for example, to an order processing module of an integrated business server 1240 in FIG. 12) to initiate operations to effect the fulfillment of the demands. The instruction acts to control the activities performed in order to fulfill the demand, constraining the demand to be supplied by the identified supply quantities of units from the identified sources. In one embodiment, in response to receiving the instructions, the integrated business server 1240 may generate and transmit instructions that cause, for example: (i) printing, display, or transmission (for example by email, fax, text, Electronic Data Interchange or other protocol) of warehouse pick and/or pack instructions to effect the fulfillment of the demand using the identified supply quantities of units from the identified sources; or (ii) one or more robots or other automated machines to retrieve the identified supply quantities of units from the identified sources from a warehouse or other storage location, pack, and ship the units of the met demands. Thus, the order represented by the demand will be fulfilled in a manner that ensures that benefits of sorting-based assignment to optimize order fulfillment in short supply situations are realized. Once the processor thus completes generating and transmitting an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule, processing at process block 715 completes, and processing continues to END block 720, where method 700 ends.), (Id., ¶ 104, Note that in the context of this proof, there are two different time aspects under consideration. First, there is the date that a demand is to be filled at the inventory site, which may be thought of as the “ship” date or “demand” date. This concept is represented by the placement of demand icons within date columns in the GUI as shown in FIG. 1—(for example, the ship date of example met demand 180 is Wednesday 185). When discussing this time aspect, spatial terms like “left” and “right” are used to indicate position on a timeline of demand ship dates, with earlier ship dates to the left and later ship dates to the right, as shown in FIG. 1. Second, there is the time that the algorithm attempts to fill the demand. This concept may be conceived of as answering the question “at what point in the operation of the algorithm is this demand processed?” (or “where is the demand located in the algorithm's timeline list?”). When discussing this time aspect, temporal terms like terms like “before,” “after,” “earlier,” and “later” are used, and express a time at which the algorithm attempted to fill the demand), (Id., ¶ 145, FIG. 9C illustrates enlarged views of example interactions with the tool to cause information about a particular example demand to be displayed. In one embodiment, the tool 800 provides additional information about an example demand in response to interaction with an example demand circle (or other icon) 975 associated with the example demand. In one embodiment, the tool 800 may detect a mouse (cursor) hover over or receive a mouse click on the example demand circle 975 associated with the example demand. In response to the click or hover, the tool 800 displays a pop-up 980 that provides additional information about the example demand that may be useful to the user in evaluating a solution and determining whether the demand should be met or unmet. (discloses demand met/unmet status) In one embodiment, the pop-up 980 may display a demand identifier number 985. Demand identifier number 985 uniquely identifies the example demand represented by demand circle 975. Demand identifier number 985 may also be associated with a purchase order or other document. The displayed demand identifier number 985 may act as a hyperlink to the purchase order or other document. In one embodiment, the pop-up 980 may display the name of a customer (or shipping destination) 990 associated with the example demand. The displayed name of the customer 990 may act as a hyperlink, which on mouseover or on mouse click will cause the tool 800 to highlight all demand circles associated with the customer. In one embodiment, the pop-up 980 may display one or more unique identifiers of the supply source (or sources) 995 that the example demand draws from. Further, statistics such as the size of the supply, the number of units of that supply which are assigned to demands, and the quantity of units sourced from the example demand from that supply may also be displayed. In one embodiment, detect a mouse hover over or receive a mouse click on the example demand circle 975 associated with the example demand, the tool 600 highlights all supply circles representing supplies that provide units to the example demand. In one embodiment, the pop-up 980 may display an indication of a priority level for the demand represented by demand circle 975. In one embodiment, the pop-up 980 may display the demand quantity for the demand represented by demand circle 975. In one example, this information may be retrieved from a database associated with integrated business server 1240. PNG media_image1.png 430 598 media_image1.png Greyscale in response to the user input, wherein the user input modifies at least one of the supplies or demands and triggers generation of the set of assignments and corresponding updating of the graphical user interface to display an updated solution, in real-time or quasi real-time: (a) sort, by the processor, a set of the demands by size of demand (Id., ¶ 129, A business may require that a particular demand to be met even if supplies are scarce. The user of the tool 100 may desire to consider the effect of requiring the particular demand to be met. The method described above can be modified to apply this constraint by first filling all demands required to be met before filling any other demands. (discloses input to modify demands) A sorting-based fulfillment optimization method can then be applied in view of this additional constraint to find a new optimum, if it exists. In one embodiment, in response to an input that indicates that a particular demand is required to be met, the processor fills the particular demand first before filling other demands), (Id., ¶ 130, Similarly, the user of the tool 100 may desire to investigate the effect of requiring a particular demand to be unmet. (durther discloses input to modify demands) This may be accomplished by simply filtering out any demands that are required to be left unmet during sorting-based fulfillment optimization. In one embodiment, in response to an input that indicates that the particular demand is required to be unmet, the processor filters the particular demand out of all demands occurring in the series of days), (Id., ¶ 75, Referring again to process block 215, in one embodiment, all demands in a given priority are sorted by size, with smaller demands first. (discloses sorting demands by size) In other words, all demands of the given priority occurring in the series of days are sorted in ascending order of size of the demand. (Note that the given priority may simply be a single priority for all demands in a non-prioritized scheduling system, or one of several priority levels in a prioritized scheduling system.)), (Id., ¶ 230, one or more of the components, functions, methods, or processes described herein are configured as modules stored in a non-transitory computer readable medium. The modules are configured with stored software instructions that when executed by at least a processor accessing memory or storage cause the computing device to perform the corresponding function(s) as described herein), (Id., ¶ 54, Slow programs are generally not suitable for the virtually instantaneous changes in the display of optimal schedules for met and unmet demands for this tool. For comparison, the situations of similar size to those depicted in FIG. 1 were evaluated using both (i) a classic integer programming technique, and (ii) the techniques described herein on the same hardware. In the test runs, the classic integer programming technique was hundreds or thousands of times slower than the techniques described herein. Thus, these substantially real-time operations for “what-if” exploration and for including new demands and new sources of supply are each enabled by the more rapid operation and reduced compute resource requirements of the systems and methods described herein), (Id., ¶ 151, At process block 1010, the processor accepts an input either (i) through the graphical user interface or (ii) from a discrete system that indicates a change to the schedule. In one embodiment, where the inputs come through the graphical user interface, the user may perform drag-and-drop, click, or other mouse or keyboard input operations on visual representations of the demands (or demand icons) or visual representations of the supplies (or supply icons). These operations may operate to move supply icons or demand icons between days and/or priority levels within the schedule, require demands to be met or remain unmet, delete, add, or modify demands and supplies, or perform other operations. The processor detects the updates to the values of the supply object or demand object indicated by the manipulation of the associated supply icon or demand icon. The processor writes the updated values to appropriate fields of the supply object or demand object (discloses updating the user interface in response to user input)); Long further discloses …automatically adjust the graphical user interface to display the updated solution, wherein the display of the updated solution includes displaying the icons for the individual demands in the locations associated with the date the demand is to be filled with updated indications of met and unmet status according to the updated solution (Long, ¶ 155, At process block 1015, the processor automatically re-generates the schedule of supplies and met and unmet demands by initiating (i) the identification of the distributions, (ii) the sorting of all demands, (iii) the selection of an initial distribution and generation of an indication of whether the demand can be filled for each demand, in response to the acceptance of the input. In one embodiment, the graphical user interface will automatically reevaluate the optimal configuration of the schedule in a dynamic manner. Thus, operations (i)-(iii) of the sorting-based fulfillment optimization method are re-performed based on the updated data caused by the user input. In one embodiment, the processor identifies distributions, sorts demands, and selects initial distributions and generates indications of whether demands can be filled in substantially the same way as shown and described elsewhere herein. When the processor has thus completed automatically regenerating the schedule of supplies and met and unmet demands, processing at process block 1015 completes, and processing continues to process block 1020), (Id., ¶ 158, Thus, in one embodiment, the user may drag and drop supply and demand icons between days and/or priority levels within the schedule, require demands to be met or remain unmet, delete, add, or modify demands and supplies, or perform other operations, and the graphical user interface will automatically reevaluate the optimal configuration of the schedule in a dynamic manner. The graphical representation of the schedule dynamically responds to user inputs by re-executing the sorting-based fulfillment optimization method and generating a new optimized schedule in view of the inputs. The tool thereby presents an optimal schedule of met and unmet demands that minimizes unmet demands in response to a wide variety of user input changes. This dynamism is enabled by the greatly improved efficiency in operating speed and compute resource utilization of the systems and methods described herein); and in response to user approval of the updated solution, allocate the supplies at the multiple source locations to the demands that belong to the set of demands in accordance with the set of assignments (Id., ¶ 69, FIG. 3 shows one example diagram 300 of the inputs and outputs of a distribution 305. The distribution 305 accepts an excess supply 310 from a previous distribution and any arriving supply S 315. The distribution 305 allocates the combined excess supply 310 and arriving supply S 315, among a set of demands 320, and an excess supply 325 which may be fed into a next distribution), (Id., ¶ 70, The arrival time of a demand at a certain time within a distribution's time span is irrelevant to determining solutions with the fewest unmet demands (or maximizing remaining supply for those fewest unmet demands). Also, the exact number of supply deliveries that arrive on the first day of a distribution is also irrelevant: those supplies can be lumped together into a single supply value. A distribution then consists of a single incoming supply value (such as arriving supply S 315) plus previous excess (such as excess supply 310), if any, a set of demands (such as set of demands 320), and an excess supply (such as excess supply 325) representing the number of units that the distribution can pass on to the next distribution, if any. In one embodiment, a distribution 305 may be represented by a software object, class, or other data structure describing the time span of the distribution 305, the sources of supply 310, 315, the allocations of combined supply among the set of demands 320, and the excess supply 325), (Id., ¶ 141, In one embodiment, the tool 800 includes an “approve configuration” button 825. In one embodiment, selecting the “approve configuration” (discloses user approval) button 825 acts to select the currently displayed configuration for implementation by the operations management system. In response to a selection of this button, the processor will initiate processing the steps for automated implementation of schedules shown and described with reference to FIG. 7 in accordance with the schedule configuration displayed in the tool 800). While suggested in at least Fig. 1 and related text, Long does not explicitly disclose …(b) generate, by the processor, the set of assignments between demands belonging to the set of the demands and the supplies at the multiple source locations to form the updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand, (ii) for each demand, during the generation of the set of assignments, choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments. However, through KSR Rationale D (See MPEP 2141(III)(D)), the combination of Long and Hoffman discloses …(b) generate, by the processor, the set of assignments between demands belonging to the set of the demands and the supplies at the multiple source locations to form the updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand, (ii) for each demand, during the generation of the set of assignments, choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments. First, Long discloses generating supply/demand assignments for demands in ascending order of size as well as identifying source locations with sufficient supply, and assigning the demand to be filled by a selected source location (Id., ¶ 56, —Example Method for Sorting-Based Assignment—), (Id., ¶ 57, In one embodiment, each step of computer-implemented methods described herein may be performed by a processor (such as processor 1510 as shown and described with reference to FIG. 15) of one or more computing devices (i) accessing memory (such as memory 1515 and/or other computing device components shown and described with reference to FIG. 15) and (ii) configured with logic to cause the system to execute the step of the method (such as Short Supply Sorting-Based Assignment Order Fulfillment Optimization Logic 1530 shown and described with reference to FIG. 15). For example, the processor accesses and reads from or writes to the memory to perform the steps of the computer-implemented methods described herein. These steps may include (i) retrieving any necessary information, (ii) calculating, determining, generating, classifying, or otherwise creating any data, and (iii) storing any data calculated, determined, generated, classified, or otherwise created. References to storage or storing indicate storage as a data structure in memory or storage/disks of a computing device (such as memory 1515, or storage/disks 1535 of computing device 1505 or remote computers 1565 shown and described with reference to FIG. 15), (Id., ¶ 62, At process block 215, the processor sorts all demands (for a quantity of goods, products, or items) of a first priority level occurring in the series of days by ascending order of size of the demand. Processing at process block 215 then completes, and processing continues to process block 220.), (Id., ¶ 195, Each candidate equivalently optimal solution may be a way to meet the demands that is equivalently optimal to the initial optimal solution generated at line 22 of the pseudo code. But, some of the candidate solutions are not performable because one or more sources of supply for the solution are not yet available to fill the demand because the source is not yet created or delivered. In other words, one or more demands in the solution are assigned supply from the future, rather than from a source of supply that is presently available. If a demand requires more supply than is presently available, the configuration of that candidate solution can't be solved, and the candidate solution can be discarded. By removing such non-performable solutions, the set of candidates is winnowed down to a set of performable solutions, each with the same count of met demands, (discloses identifying sources that have sufficient supply) with the same amount of supply excess, and each an optimal solution. Accordingly, in one embodiment, these non-performable solutions are removed from the list of candidate equivalently optimal solutions, ‘metDemandsCandidates,’ as shown at lines 81-89 of the pseudo code.), (Id., ¶ 170, FIG. 11B illustrates a simple example problem 1120 used for illustrating one embodiment of a process for finding multiple optimal solutions. The process for finding multiple optimal solutions described in the getMultipleOptimalSolutions( ) pseudo code will be applied to the example problem 1120. The example problem 1120 includes demands 1122 in two distributions, distribution 1 1124 and distribution 2 1126, and in two priority levels, priority 1 1128 and priority 2 1130. The example problem 1120 does not have any user defined constraints requiring any particular demands to be met or remain unmet. Each distribution in the example problem 1120 also includes an associated source of supply 1132 which may be assigned to meet demands 1122. (discloses assigning demand to be filled)), (Id., ¶ 72, to create one or more distribution objects, the processor may parse the series of days and supply objects associated with the series of days to identify each day in the series that includes a source of supply, and each day in the series that does not include a source of supply. The processor then creates a distribution object for each day that includes a source of supply, and sets the values describing the range of the distribution to start on the day that includes a source of supply and end on the last subsequent day before another source of supply occurs. The processor sets the values of the pointers to and from the immediately precedent and immediately subsequent distribution objects, if any. The processor sets the values of the pointers to and from the supply object(s) for the distribution object. The processor parses the sources to identify the total quantity of units provided by those sources of supply and sets the value indicating the total quantity of unassigned supply remaining to the distribution), (Id., ¶ 71, In one embodiment, a distribution may be represented by a distribution object or other data structure. The distribution object may include a list of one or more identifiers for its sources of supply (discloses multiple source locations) (which may be represented by supply objects), a value indicating the total quantity of units provided by those sources of supply, a value indicating a total quantity of unassigned supply remaining to the distribution, a value pair or other data structure indicating the range of days (or other time units) included in the distribution, and values indicating the immediately preceding distribution and immediately subsequent distribution), (Id., ¶ 127, At process block 715, the processor transmits an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule. In one embodiment, the processor first generates the instruction. The processor parses the schedule to identify each demand met and left unmet. For each demand met, the processor identifies the source distributions and supply quantities from the retrieved map for that demand, and generates an instruction to fulfill that demand using the identified supply quantities of units from the identified sources. The processor transmits the instruction within the operations management system (for example, to an order processing module of an integrated business server 1240 in FIG. 12) to initiate operations to effect the fulfillment of the demands. The instruction acts to control the activities performed in order to fulfill the demand, constraining the demand to be supplied by the identified supply quantities of units from the identified sources. In one embodiment, in response to receiving the instructions, the integrated business server 1240 may generate and transmit instructions that cause, for example: (i) printing, display, or transmission (for example by email, fax, text, Electronic Data Interchange or other protocol) of warehouse pick and/or pack instructions to effect the fulfillment of the demand using the identified supply quantities of units from the identified sources; or (ii) one or more robots or other automated machines to retrieve the identified supply quantities of units from the identified sources from a warehouse or other storage location, pack, and ship the units of the met demands. Thus, the order represented by the demand will be fulfilled in a manner that ensures that benefits of sorting-based assignment to optimize order fulfillment in short supply situations are realized. Once the processor thus completes generating and transmitting an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule, processing at process block 715 completes, and processing continues to END block 720, where method 700 ends.), (Id., Fig. 11B, figure depicts assigning demand to be filled by a selected source). PNG media_image2.png 194 389 media_image2.png Greyscale Further, Hoffman discloses a single-source location constraint for demand fulfilment (Hoffman, ¶ 1885, max # of FOBs...: By changing this option, either a single source (One FOB per DC) or a multi-source problem is run. Everything other than "One FOB" is considered multi-source with available selections from two to five FOBs and unlimited), (Id., ¶ 1893, FIG. 182 is a flowchart of a process 18200 for analysis version control in a supply chain management framework in accordance with an embodiment of the present invention. A plurality of separate versions of an analysis are maintained in a database in operation 18202. A request for an additional version of the analysis is received utilizing a graphical user interface in operation 18204. In response to the request, the additional version of the analysis is generated in operation 18206. A plurality of parameters of the additional version are allowed to be changed utilizing the graphical user interface in operation 18208. The parameters that are allowed to be changed include: a maximum number of supplier sources, a pricing method, and/or an invoice adjustment), (Id., ¶ 1960, If the product is being single sourced (1 FOB:1DC), a lane cannot be forced twice. For example if a user attempted to also force the Lamb FOB to Post Albuquerque, the message screen 20200 shown in FIG. 202 would get the following message). One of ordinary skill in the art would have recognized that applying the known technique of Long would have yielded predictable results and resulted in an improved system. It would have been recognized that applying the assignment generation technique to the source identification and allocation teachings of Long to the single-source constraint elements of Hoffman would have yielded predictable results because the level of ordinary skill in the art demonstrated by the reference applied shows the ability to incorporate such demand matching features into similar systems. Further, generating assignments based on demand size and available sources with sufficient supply from a single-source, would have been recognized by those of ordinary skill in the art as resulting in an improved system that would allow more optimal source location to demand matching in a supply chain environment. Thus, through KSR Rationale D (See MPEP 2141(III)(D)), the combination of Long and Hoffman discloses …(b) generate, by the processor, a set of assignments between demands belonging to the set of the demands and the supplies at the multiple source locations to form an updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand,(ii) choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments. It would have been obvious to a person of ordinary skill in the art before the effective filing date to have modified the supply allocation elements of Long to include the single-source scoring elements of Hoffman in the analogous art of benchmarking in a supply chain management framework. The motivation for doing so would have been to provide “improved planning, less over-ordering and product waste, and less time spent managing and coordinating local promotions. For new contracted distributors, daily distributor invoice feeds can be established” (Hoffman, ¶ 300), wherein such improvements would benefit Long’s method which seeks to provide a “fulfillment optimization method and generating a new optimized schedule in view of the inputs…” wherein “the tool thereby presents an optimal schedule of met and unmet demands that minimizes unmet demands in response to a wide variety of user input changes” [Hoffman, ¶ 300; Long, ¶ 158]. Regarding Claim 2, the combination of Long and Hoffman discloses …The non-transitory computer-readable medium of claim 1… Long further discloses …wherein the instructions for the choosing the one source location from the set of source locations from which to fulfil the demand further cause the computer to: determine… a size of the demand… (Long, ¶ 75, Referring again to process block 215, in one embodiment, all demands in a given priority are sorted by size, with smaller demands first. In other words, all demands of the given priority occurring in the series of days are sorted in ascending order of size of the demand. (Note that the given priority may simply be a single priority for all demands in a non-prioritized scheduling system, or one of several priority levels in a prioritized scheduling system.)), (Id., ¶ 195, Each candidate equivalently optimal solution may be a way to meet the demands that is equivalently optimal to the initial optimal solution generated at line 22 of the pseudo code. But, some of the candidate solutions are not performable because one or more sources of supply for the solution are not yet available to fill the demand because the source is not yet created or delivered. In other words, one or more demands in the solution are assigned supply from the future, rather than from a source of supply that is presently available. If a demand requires more supply than is presently available, the configuration of that candidate solution can't be solved, and the candidate solution can be discarded. By removing such non-performable solutions, the set of candidates is winnowed down to a set of performable solutions, each with the same count of met demands, with the same amount of supply excess, and each an optimal solution. Accordingly, in one embodiment, these non-performable solutions are removed from the list of candidate equivalently optimal solutions, ‘metDemandsCandidates,’ as shown at lines 81-89 of the pseudo code.); identify a least-flexible source location among the set of source locations that has a flexibility score indicating supply closest to the time of fulfillment for the demand; and select the least-flexible source location to be the one source location from which to fill the demand (Id., ¶ 80, —Assigning Supply to Demands—), (Id., ¶ 81, In one embodiment, after the demands are sorted into ascending order of demand quantity, supply is assigned to each demand in order, always using the most recent possible supply. In other words, the current distribution's supply is used to fill the demand, and if that is not sufficient, supply from the previous distribution is considered, and so on backwards in time), (Id., ¶ 85, the demand object includes a field “supplyAssignmentsMap<Distribution, Integer>” listing the source distribution(s) and quantities of supply, as shown for example at line 08 of the pseudo code above. The listing may be of data type Map or other associative array storing a collection of key-value pairs. The distribution(s) of origin for an assigned supply and the integer quantities of units assigned from that distribution form the respective key and value pairs—each distribution from which supply is assigned to the demand is stored as a key, and the integer number of units assigned from that distribution is stored as the respective value for that key), (Id., ¶ 99, At process block 445, in response to a determination that unassigned units for the demand do not remain, the processor (i) generates the indication that the demand can be completely fulfilled, and (ii) retains the assignment map. After completion of the while loop resulting in assignment of supply to all units of the demand, the assignment map indicates all the source distributions and quantities for all supply assigned to the demand. In one embodiment, lines 27-30 of the pseudo code represent this second case, where the while loop operations show that the demand can be completely fulfilled from available supply. If there does not remain any amount of units without an assigned source of supply (else), then it is possible to satisfy the demand represented by the demand object from the available sources of supply. In one embodiment, the processor permanently updates the quantity of units that are required to satisfy the demand represented by the demand object is permanently to zero (units=0) to signify that the demand is met. This may serve as an indication that the demand can be completely fulfilled, as described with reference to process block 225. In another embodiment, the processor sets a “fulfillable” flag value to be true in the demand object for the demand, which may also serve as an indication that the demand can be completely fulfilled, as described with reference to process block 225. In one embodiment, the processor stores the supplyAssignmentsMap in association with the demand object for the demand, for example by recording an identifier for the map in the demand object. Processing at process block 445 then completes and processing continues to END block 450, where method 400 ends). While suggested in at least Fig. 2 and related text, Long does not explicitly disclose …wherein the instructions for the choosing the one source from the set of sources from which to fulfil the demand further cause the computer to: determine flexibility source locations for the source locations in the set of source location, wherein the flexibility score for the sources are determined based on determining a product of (i)… and a (ii) a difference between a time of fulfillment at which time the demand is to be filled and a time of availability of supply at which time the supply becomes available at the source location… However, Hoffman discloses …wherein the instructions for the choosing the one source from the set of sources from which to fulfil the demand further cause the computer to: determine flexibility source locations for the source locations in the set of source location, wherein the flexibility score for the sources are determined based on determining a product of (i)… and a (ii) a difference between a time of fulfillment at which time the demand is to be filled and a time of availability of supply at which time the supply becomes available at the source location (Hoffman, ¶ 375, FIG. 32 illustrates a distributor ranking report (discloses source ranking score) 3200 that provides statistics on the number of orders filled, on-time deliveries (discloses time of fulfilment), and perfect orders delivered, and whether they med the minimum required by the supply chain coordinator, retail management, or both), (Id., ¶ 2362, On Time Delivery Rate), (Id., ¶ 2363, --measures the distributor's ability to achieve "on-time" deliveries as a percentage of the total number of deliveries made by the Facility. This calculation will be completed monthly for both the individual Outlets serviced by the Facility as well as in the aggregate for all Outlets served from the Facility. A delivery will be considered as "on-time" as long as the delivery process begins either +/- one-hour from the time set for the expected delivery. However, should the delivery not end before the beginning of the agreed to "black-out" time, then the delivery shall not be considered as having been made "on-time". For example: An Outlet has a black out window of 11:30 AM until 1:00 PM and an expected delivery time of 10:00 AM. As long as the delivery begins anytime between 9:00 AM and 11:00 AM and is concluded prior to 11:30 AM this delivery will be considered as "on-time". Likewise, given the same blackout window for this Outlet and an expected delivery time of 1:30 PM, should the delivery begin at 12:45 PM the delivery will not be considered "on-time" as it violates the established black out window for this Outlet. 2 O n - Time Delivery Rate = # of Deliveries made + / - 60 minutes of scheduled delivery Total # of Scheduled deliveries .times. 100 %), (Id., ¶ 2313, 7.1 Designating Outlet Generated Order Requirements--For up to twelve (12) months following the Effective Date (discloses time the supply becomes available), Designating Outlets will develop order quantities and place orders with Distributor based upon internal sales forecasts, on-hand inventory balances and stocking policies. Designating Outlets will establish order quantities for each Product and transmit orders to Distributor for replenishment by phone, fax, or electronic commerce. Coordinator and Distributor desire to achieve 100% order transmission by electronic commerce within the first twelve (12) months of the Term of this Agreement. For Designating Outlet generated orders, Distributor shall meet the following requirements:), (Id., ¶ 2314, 7.1.1 As of the Effective Date, Distributor shall be capable of receiving Designating Outlet orders and their changes by mail, phone, fax, and electronic commerce), (Id., ¶ 2316, 7.1.3 As of the Effective Date, Distributor shall have electronic systems that confirm to each Designating Outlet order receipt, inventory availability back-order status, shipping quantities and dates. (discloses a time at which the demand is to be filled) All orders shall be electronically acknowledged, notification provided on out-of-stocks, and anticipated back-order shipping dates identified.). It would have been obvious to a person of ordinary skill in the art before the effective filing date to have modified the supply allocation elements of Long to include the source scoring elements of Hoffman in the analogous art of benchmarking in a supply chain management framework for the same reasons as stated for claim 1. Regarding Claim 3, the combination of Long and Hoffman discloses …The non-transitory computer-readable medium of claim 2… Long further discloses …wherein the instructions further cause the computer to: repeat the generation of the set of assignments through multiple runs to create multiple sets of assignments until a condition is satisfied (Long, ¶ 90, Lines 15-21 of the pseudo code show a while loop to temporarily assign available supply to the demand. At line 15 of the pseudo code, the while loop is given a conditions requiring both (1) that the number of outstanding units without an assigned source of supply (tempUnits) has not reached 0 (tempUnits !=0), and (2) that there are remaining distributions from which supply can possibly be drawn (dist !=null). The loop repeats until either there is no further need for supply units (the demand is satisfied, tempUnits==0), or the demand object has run out of distributions from which it can draw supply (dist==null)); during a run of the multiple runs, identify multiple least-flexible source locations having equal flexibility scores, wherein the least flexible source location is included in the multiple least flexible source locations, and select from among the multiple least-flexible source locations at random to select the least-flexible source location to be the one source location (Id., ¶ 178, At lines 35-42 of the pseudo code, sets of equal-sized demands are gathered for each priority level and added to the list of sets of equal sized demands, demandSets. The sets of equal sized demands are gathered for each demand priority level, as indicated by the for-loop that iterates initially through the highest priority level (pri=1), and increases the priority on each iteration (pri++) until the loop has been performed for the each possible priority level (pri<=nPriorities), as shown at line 35), (Id., ¶ 143, multiple optimal solutions (constructed as shown and described in further detail below) may be presented using the tool 800. In one embodiment, the tool 800 includes a display of the number of solutions 830. This number represents the number of possible equally valid configurations with the same least number of unmet demands—that is, other optimal solutions. Each of these solutions is arbitrarily provided with a sequential number to act as an identifier for the solution, for example by assigning the numbers in sequence as each solution is identified. The displayed number of solutions 830 may be associated with previous solution button 835 and next solution button 840. An indicator number 845 that shows the identifier associated with the current solution is also displayed to inform the user which solution is currently being viewed. In response to a selection of the previous solution 835 button, the processor executes instructions to cause the configuration displayed in the tool to be replaced by a configuration assigned the next lower identifier number, and the indicator number 845 to be updated. In response to a selection of the next solution 840 button, the processor executes instructions to cause the configuration displayed in the tool to be replaced by a configuration assigned the next higher identifier number, and the indicator number 845 to be updated), (Id., ¶ 179, Within the loop, a list of sets of demands, eqSizes, is initiated and assigned the values of all sets of equal-sized demands for the current priority level in the loop, as shown at lines 37-38 of the pseudo code. The sets of equal sized demands for the current priority level are extracted from the list of demands by the function createSetsOfEqualSizedDemandForPriority(pri). In one embodiment, this function parses the list of demands (excluding demands constrained to be met or unmet) for all demand objects having priority pri. When a demand object having priority pri is located, the demand size is extracted from the demand object. The demand size is evaluated to determine whether there exists a set of demands of that size. If there is a set for demands of that size, the demand object is added to that set. If there is no set for demands of that size, a set for that size of demands is created, and the demand object is added to that set. Once the demands list is traversed and all demands examined, all sets of same-sized demands are added to a list, and that list is returned. The returned list is assigned as the value of eqSizes, as shown at lines 37-38 of the pseudo code. The list of same-sized demands for the current priority is then added to the overall list of same-sized demands, demandSets, as shown at line 41 of the pseudo code. The loop then iterates to the next priority level. Higher priority levels are considered before lower priorities because allocating to some of the sets of equal-sized demands in lower priority levels before allocating to the higher priority levels may consume supply needed by the higher priority levels), (Id., ¶ 170, FIG. 11B illustrates a simple example problem 1120 used for illustrating one embodiment of a process for finding multiple optimal solutions. The process for finding multiple optimal solutions described in the getMultipleOptimalSolutions( ) pseudo code will be applied to the example problem 1120. The example problem 1120 includes demands 1122 in two distributions, distribution 1 1124 and distribution 2 1126, and in two priority levels, priority 1 1128 and priority 2 1130. The example problem 1120 does not have any user defined constraints requiring any particular demands to be met or remain unmet. Each distribution in the example problem 1120 also includes an associated source of supply 1132 which may be assigned to meet demands 1122. (discloses assigning demand to be filled)). and select a one of the multiple sets of assignments to be the set of assignments, wherein the one of the multiple sets of assignments has a least number of unfilled demands (Id., ¶ 35, Systems and methods are described herein that provide rapid sorting-based supply assignment for order fulfillment in short supply situations. The systems and methods described herein act to minimize unfilled demands (unfulfilled orders) due to short supply), (Id., ¶ 38, Keeping unfilled demands to a minimum when there is insufficient supply to meet all demands eliminates the problems caused by unnecessarily unmet demands, such as reduced customer satisfaction, lost customer goodwill, and administrative cost. Also, when unmet demands are few in number, each unmet demand can be handled by a business as a special case: for example, the customer might be contacted to determine whether a later fulfillment date for an unmet demand is acceptable, or whether some split of the unmet demand can be arranged. For such reasons, it is important to minimize the number of unmet demands), (Id., ¶ 103, Assume that the algorithm described by the tryFill( ) method pseudo code has completed, and has assigned supplies to demands. The result can be proved by contradiction to be optimal—having the fewest unmet demands for the given supply. If there is a more optimal solution it would mean one could abandon n of the algorithm's filled demands in order to meet m>n of the algorithm's unfilled demands. Consider first the case n=1, m=2). Regarding Claim 4, the combination of Long and Hoffman discloses …The non-transitory computer-readable medium of claim 2… Long further discloses …wherein the instructions to select the least-flexible source location further cause the computer to select the least-flexible source location at random from among multiple source locations having equal flexibility scores (Long, ¶ 143, multiple optimal solutions (constructed as shown and described in further detail below) may be presented using the tool 800. In one embodiment, the tool 800 includes a display of the number of solutions 830. This number represents the number of possible equally valid configurations with the same least number of unmet demands—that is, other optimal solutions. Each of these solutions is arbitrarily provided with a sequential number to act as an identifier for the solution, for example by assigning the numbers in sequence as each solution is identified. The displayed number of solutions 830 may be associated with previous solution button 835 and next solution button 840. An indicator number 845 that shows the identifier associated with the current solution is also displayed to inform the user which solution is currently being viewed. In response to a selection of the previous solution 835 button, the processor executes instructions to cause the configuration displayed in the tool to be replaced by a configuration assigned the next lower identifier number, and the indicator number 845 to be updated. In response to a selection of the next solution 840 button, the processor executes instructions to cause the configuration displayed in the tool to be replaced by a configuration assigned the next higher identifier number, and the indicator number 845 to be updated), (Id., ¶ 62, At process block 215, the processor sorts all demands (for a quantity of goods, products, or items) of a first priority level occurring in the series of days by ascending order of size of the demand. Processing at process block 215 then completes, and processing continues to process block 220.), (Id., ¶ 170, FIG. 11B illustrates a simple example problem 1120 used for illustrating one embodiment of a process for finding multiple optimal solutions. The process for finding multiple optimal solutions described in the getMultipleOptimalSolutions( ) pseudo code will be applied to the example problem 1120. The example problem 1120 includes demands 1122 in two distributions, distribution 1 1124 and distribution 2 1126, and in two priority levels, priority 1 1128 and priority 2 1130. The example problem 1120 does not have any user defined constraints requiring any particular demands to be met or remain unmet. Each distribution in the example problem 1120 also includes an associated source of supply 1132 which may be assigned to meet demands 1122. (discloses assigning demand to be filled by a selected source)). Regarding Claim 6, the combination of Long and Hoffman discloses …The non-transitory computer-readable medium of claim 1… Long further discloses …wherein the instructions for the choosing one source location from the set of source locations from which to fulfil the demand further cause the computer to: identify a next source in a cycle though the multiple source locations, wherein the next source location is also in the set of source locations from which the demand can be filled; and select the next source location to be the one source location from which to fill the demand (Id., ¶ 72, to create one or more distribution objects, the processor may parse the series of days and supply objects associated with the series of days to identify each day in the series that includes a source of supply, and each day in the series that does not include a source of supply. The processor then creates a distribution object for each day that includes a source of supply, and sets the values describing the range of the distribution to start on the day that includes a source of supply and end on the last subsequent day before another source of supply occurs. (discloses identifying and selecting supply sources in a series) The processor sets the values of the pointers to and from the immediately precedent and immediately subsequent distribution objects, if any. The processor sets the values of the pointers to and from the supply object(s) for the distribution object. The processor parses the sources to identify the total quantity of units provided by those sources of supply and sets the value indicating the total quantity of unassigned supply remaining to the distribution), (Id., ¶ 90, Lines 15-21 of the pseudo code show a while loop to temporarily assign available supply to the demand. At line 15 of the pseudo code, the while loop is given a conditions requiring both (1) that the number of outstanding units without an assigned source of supply (tempUnits) has not reached 0 (tempUnits !=0), and (2) that there are remaining distributions from which supply can possibly be drawn (dist !=null). The loop repeats until either there is no further need for supply units (the demand is satisfied, tempUnits==0), or the demand object has run out of distributions from which it can draw supply (dist==null)), (Id., ¶ 99, At process block 445, in response to a determination that unassigned units for the demand do not remain, the processor (i) generates the indication that the demand can be completely fulfilled, and (ii) retains the assignment map. After completion of the while loop resulting in assignment of supply to all units of the demand, the assignment map indicates all the source distributions and quantities for all supply assigned to the demand. In one embodiment, lines 27-30 of the pseudo code represent this second case, where the while loop operations show that the demand can be completely fulfilled from available supply. If there does not remain any amount of units without an assigned source of supply (else), then it is possible to satisfy the demand represented by the demand object from the available sources of supply. In one embodiment, the processor permanently updates the quantity of units that are required to satisfy the demand represented by the demand object is permanently to zero (units=0) to signify that the demand is met. This may serve as an indication that the demand can be completely fulfilled, as described with reference to process block 225. In another embodiment, the processor sets a “fulfillable” flag value to be true in the demand object for the demand, which may also serve as an indication that the demand can be completely fulfilled, as described with reference to process block 225. In one embodiment, the processor stores the supplyAssignmentsMap in association with the demand object for the demand, for example by recording an identifier for the map in the demand object. Processing at process block 445 then completes and processing continues to END block 450, where method 400 ends). Regarding Claim 7, the combination of Long and Hoffman discloses …The non-transitory computer-readable medium of claim 1… Long further discloses …wherein the instructions further cause the computer to exclude from the set of demands those demands that are constrained to be unmet (Long, ¶ 136, The user may also remove a requirement that a demand be met or unmet by removing the requirement using the tool 800. For example, the tool 800 may receive a user removal of a requirement that a particular demand must be met or unmet by receiving a mouse click on a demand circle associated with the particular demand 905, displaying a menu 910 including an option to remove any requirement that the demand be met or unmet 940, receiving a mouse click indicating a selection 920 of the option removing the requirement 940, and storing the state of being without requirement by setting the respective must meet and must not meet flags to false. The tool 800 may further display a visual indication that the demand is not required to be met or unmet 945, for example by displaying the demand circle with the visual indications indicating that the demand is met or unmet, as shown and described with reference to FIG. 1), (Id., ¶ 166, At lines 13-14 of the pseudo code, user-defined constraints on particular demands are addressed. First, at line 13, a function to remove from the demands list demands that are indicated by users as required to be unmet is called: removeUserConstrainedUnmet(demands). Because these demands are removed from the list, they will not be included in the subsequent attempt to fill the listed demands, and will therefore remain unmet. In one embodiment, the Demand objects for the demands required to remain unmet are removed from the demands list. In one embodiment, each demand object in the list of demands is parsed to determine if a flag is set that indicates that the demand associated with that demand object is required to be unmet. If that flag is set, the demand is removed from the list of demands). Regarding Claim 8, the combination of Long and Hoffman discloses …The non-transitory computer-readable medium of claim 1… Long further discloses …wherein the instructions further cause the computer to fill all demands in the set of demands that are constrained to be met (Long, ¶ 136, The user may also remove a requirement that a demand be met or unmet by removing the requirement using the tool 800. For example, the tool 800 may receive a user removal of a requirement that a particular demand must be met or unmet by receiving a mouse click on a demand circle associated with the particular demand 905, displaying a menu 910 including an option to remove any requirement that the demand be met or unmet 940, receiving a mouse click indicating a selection 920 of the option removing the requirement 940, and storing the state of being without requirement by setting the respective must meet and must not meet flags to false. The tool 800 may further display a visual indication that the demand is not required to be met or unmet 945, for example by displaying the demand circle with the visual indications indicating that the demand is met or unmet, as shown and described with reference to FIG. 1), (Id., ¶ 167, Second, at line 14, a function to fill and remove from the demands list demands that are indicated by users as required to be met is called: fillAndRemoveUserConstraintedToBeMet(demands). In this function, the demands are filled out of available supply, the available supply is reduced accordingly, and the filled demands are removed from the demands list. In one embodiment, the fill-and-remove function includes the functions of the tryFill method described above, for example, executing the tryFill method for each of the set of demands required to be met. If it is not possible to fill all demands marked required, an error message will be presented. If it is possible to fill all demands marked required, the demands will be filled before the remaining unconstrained demands are evaluated. Because the demands marked required are already filled and removed from the list, they will not be included in the subsequent attempt to fill the listed demands. Further, the available supply is depleted to the extent that the required demands are filled before supplies are assigned to the remaining unconstrained demands, and so supply assigned to the required demands will not be assigned to unconstrained demands). Regarding Claim 9, the combination of Long and Hoffman discloses …The non-transitory computer-readable medium of claim 1… Long further discloses …wherein the instructions further cause the computer to: present the graphical user interface including an option to enter the user input to add, remove, or change parameters of the demands or supplies; (Long, ¶ 136, The user may also remove a requirement that a demand be met or unmet by removing the requirement using the tool 800. For example, the tool 800 may receive a user removal of a requirement that a particular demand must be met or unmet by receiving a mouse click on a demand circle associated with the particular demand 905, displaying a menu 910 including an option to remove any requirement that the demand be met or unmet 940, receiving a mouse click indicating a selection 920 of the option removing the requirement 940, and storing the state of being without requirement by setting the respective must meet and must not meet flags to false. The tool 800 may further display a visual indication that the demand is not required to be met or unmet 945, for example by displaying the demand circle with the visual indications indicating that the demand is met or unmet, as shown and described with reference to FIG. 1), (Id., ¶ 11, a graphical user interface that shows the supplies and demands associated with each time unit of the timeframe is displayed. An input is accepted through the graphical user interface that causes a specific supply or demand to be associated with a specific time unit of the timeframe. Each of (i) identifying the one or more runs, (ii) identifying the set of maximal excess configurations, (iii) creating the current output set of configurations, and (iv) assigning the supply units is initiated in response to the acceptance of the input); wherein the generation of the set of assignments is performed in real-time in response to accepting the user input (Id., ¶ 151, the processor accepts an input either (i) through the graphical user interface or (ii) from a discrete system that indicates a change to the schedule. In one embodiment, where the inputs come through the graphical user interface, the user may perform drag-and-drop, click, or other mouse or keyboard input operations on visual representations of the demands (or demand icons) or visual representations of the supplies (or supply icons). These operations may operate to move supply icons or demand icons between days and/or priority levels within the schedule, require demands to be met or remain unmet, delete, add, or modify demands and supplies, or perform other operations. The processor detects the updates to the values of the supply object or demand object indicated by the manipulation of the associated supply icon or demand icon. The processor writes the updated values to appropriate fields of the supply object or demand object), (Id., ¶ 54, the situations of similar size to those depicted in FIG. 1 were evaluated using both (i) a classic integer programming technique, and (ii) the techniques described herein on the same hardware. In the test runs, the classic integer programming technique was hundreds or thousands of times slower than the techniques described herein. Thus, these substantially real-time operations for “what-if” exploration and for including new demands and new sources of supply are each enabled by the more rapid operation and reduced compute resource requirements of the systems and methods described herein); display information of the updated solution that shows the fulfillment status of the demands based on the assignments between the demands and supplies (Id., ¶ 54, FIG. 1 shows one embodiment of a tool 100 for representing and manipulating scheduled supplies and demands. In one embodiment, the tool is a graphical user interface (GUI). The tool visually presents a schedule of met and unmet demands that minimizes unmet demands when available supply is insufficient to meet all scheduled demands. Schedules that minimize unmet demands may be referred to as an ‘optimal’ solution), (Id., ¶ 55, The tool 100 depicts an example two weeks of supplies and demands. In the tool, supplies are represented by the larger circles 105 below the central time line 110, and demands are represented by the smaller circles 115 above the time line 110. The supplies 105 and demands 115 for each day are divided from the supplies 105 and demands 115 of other days by vertical lines 120. We can see in this example that supply 105 shipments arrive on Mondays 125 and Thursdays 130), (Id., ¶ 56, In one embodiment, met demands and unmet demands are visually distinguishable from each other in the tool 100. For example, met demands are depicted by circles with a continuous outline, as shown by example met demand 135. Further, unmet demands are depicted by circles with a broken or dashed outline, as shown by example unmet demand 140. In another example, met and unmet demands may be distinguishable by color—met demands may be depicted with green-filled circles, unmet demands may be depicted using yellow-filled circles); and present a user-selectable option to approve the updated solution to fill the demands belonging to the set in accordance with the assignments between demands and supplies, wherein the allocating the supplies is performed in response to selection of the user-selectable option (Id., ¶ 15, the demands for the product are each associated with a fulfillment priority level. A graphical user interface is displayed that shows the demands associated with each priority level. An input that causes a demand to be associated with a specific priority level is accepted through the graphical user interface. Each of (i) identifying the one or more runs, (ii) identifying the set of maximal excess configurations, (iii) creating the current output set of configurations, and (iv) assigning the supply units is initiated in response to the acceptance of the input.). Regarding Claim 10, Long discloses … computing system, comprising: a processor; a memory operably connected to the processor; a non-transitory computer-readable medium operably connected to the processor, wherein the non-transitory computer-readable medium includes stored thereon computer-executable instructions that when executed by at least the processor of the computing system cause the computing system to: accept a user input to adjust a configuration of supplies and demands through a graphical user interface that is displaying a solution for filling the demands under the configuration, wherein the supplies are at multiple source locations, wherein each source location is a discrete location from which supply is made available, wherein the display of the solution includes displaying individual demands as icons with respective quantities and indications of met and unmet status according to the solution, wherein the icons for the individual demands are displayed in locations associated with a date the demand is to be filled (Long, ¶ 230, one or more of the components, functions, methods, or processes described herein are configured as modules stored in a non-transitory computer readable medium. The modules are configured with stored software instructions that when executed by at least a processor accessing memory or storage cause the computing device to perform the corresponding function(s) as described herein), (Id., ¶ 71, In one embodiment, a distribution may be represented by a distribution object or other data structure. The distribution object may include a list of one or more identifiers for its sources of supply (discloses multiple source locations) (which may be represented by supply objects), a value indicating the total quantity of units provided by those sources of supply, a value indicating a total quantity of unassigned supply remaining to the distribution, a value pair or other data structure indicating the range of days (or other time units) included in the distribution, and values indicating the immediately preceding distribution and immediately subsequent distribution), (Id., ¶ 127, At process block 715, the processor transmits an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule. In one embodiment, the processor first generates the instruction. The processor parses the schedule to identify each demand met and left unmet. For each demand met, the processor identifies the source distributions and supply quantities from the retrieved map for that demand, and generates an instruction to fulfill that demand using the identified supply quantities of units from the identified sources. The processor transmits the instruction within the operations management system (for example, to an order processing module of an integrated business server 1240 in FIG. 12) to initiate operations to effect the fulfillment of the demands. The instruction acts to control the activities performed in order to fulfill the demand, constraining the demand to be supplied by the identified supply quantities of units from the identified sources. In one embodiment, in response to receiving the instructions, the integrated business server 1240 may generate and transmit instructions that cause, for example: (i) printing, display, or transmission (for example by email, fax, text, Electronic Data Interchange or other protocol) of warehouse pick and/or pack instructions to effect the fulfillment of the demand using the identified supply quantities of units from the identified sources; or (ii) one or more robots or other automated machines to retrieve the identified supply quantities of units from the identified sources from a warehouse or other storage location, pack, and ship the units of the met demands. Thus, the order represented by the demand will be fulfilled in a manner that ensures that benefits of sorting-based assignment to optimize order fulfillment in short supply situations are realized. Once the processor thus completes generating and transmitting an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule, processing at process block 715 completes, and processing continues to END block 720, where method 700 ends.), (Id., ¶ 104, Note that in the context of this proof, there are two different time aspects under consideration. First, there is the date that a demand is to be filled at the inventory site, which may be thought of as the “ship” date or “demand” date. This concept is represented by the placement of demand icons within date columns in the GUI as shown in FIG. 1—(for example, the ship date of example met demand 180 is Wednesday 185). When discussing this time aspect, spatial terms like “left” and “right” are used to indicate position on a timeline of demand ship dates, with earlier ship dates to the left and later ship dates to the right, as shown in FIG. 1. Second, there is the time that the algorithm attempts to fill the demand. This concept may be conceived of as answering the question “at what point in the operation of the algorithm is this demand processed?” (or “where is the demand located in the algorithm's timeline list?”). When discussing this time aspect, temporal terms like terms like “before,” “after,” “earlier,” and “later” are used, and express a time at which the algorithm attempted to fill the demand), (Id., ¶ 145, FIG. 9C illustrates enlarged views of example interactions with the tool to cause information about a particular example demand to be displayed. In one embodiment, the tool 800 provides additional information about an example demand in response to interaction with an example demand circle (or other icon) 975 associated with the example demand. In one embodiment, the tool 800 may detect a mouse (cursor) hover over or receive a mouse click on the example demand circle 975 associated with the example demand. In response to the click or hover, the tool 800 displays a pop-up 980 that provides additional information about the example demand that may be useful to the user in evaluating a solution and determining whether the demand should be met or unmet. (discloses demand met/unmet status) In one embodiment, the pop-up 980 may display a demand identifier number 985. Demand identifier number 985 uniquely identifies the example demand represented by demand circle 975. Demand identifier number 985 may also be associated with a purchase order or other document. The displayed demand identifier number 985 may act as a hyperlink to the purchase order or other document. In one embodiment, the pop-up 980 may display the name of a customer (or shipping destination) 990 associated with the example demand. The displayed name of the customer 990 may act as a hyperlink, which on mouseover or on mouse click will cause the tool 800 to highlight all demand circles associated with the customer. In one embodiment, the pop-up 980 may display one or more unique identifiers of the supply source (or sources) 995 that the example demand draws from. Further, statistics such as the size of the supply, the number of units of that supply which are assigned to demands, and the quantity of units sourced from the example demand from that supply may also be displayed. In one embodiment, detect a mouse hover over or receive a mouse click on the example demand circle 975 associated with the example demand, the tool 600 highlights all supply circles representing supplies that provide units to the example demand. In one embodiment, the pop-up 980 may display an indication of a priority level for the demand represented by demand circle 975. In one embodiment, the pop-up 980 may display the demand quantity for the demand represented by demand circle 975. In one example, this information may be retrieved from a database associated with integrated business server 1240); PNG media_image1.png 430 598 media_image1.png Greyscale in response to the user input, wherein the user input modifies at least one of the supplies or demands and triggers generation of the set of assignments and corresponding updating of the graphical user interface to display an updated solution, in real-time: (a) sort a set of the demands by size of demand (Id., ¶ 129, A business may require that a particular demand to be met even if supplies are scarce. The user of the tool 100 may desire to consider the effect of requiring the particular demand to be met. The method described above can be modified to apply this constraint by first filling all demands required to be met before filling any other demands. (discloses input to modify demands) A sorting-based fulfillment optimization method can then be applied in view of this additional constraint to find a new optimum, if it exists. In one embodiment, in response to an input that indicates that a particular demand is required to be met, the processor fills the particular demand first before filling other demands), (Id., ¶ 130, Similarly, the user of the tool 100 may desire to investigate the effect of requiring a particular demand to be unmet. (durther discloses input to modify demands) This may be accomplished by simply filtering out any demands that are required to be left unmet during sorting-based fulfillment optimization. In one embodiment, in response to an input that indicates that the particular demand is required to be unmet, the processor filters the particular demand out of all demands occurring in the series of days), (Id., ¶ 75, Referring again to process block 215, in one embodiment, all demands in a given priority are sorted by size, with smaller demands first. (discloses sorting demands by size) In other words, all demands of the given priority occurring in the series of days are sorted in ascending order of size of the demand. (Note that the given priority may simply be a single priority for all demands in a non-prioritized scheduling system, or one of several priority levels in a prioritized scheduling system.)), (Id., ¶ 230, one or more of the components, functions, methods, or processes described herein are configured as modules stored in a non-transitory computer readable medium. The modules are configured with stored software instructions that when executed by at least a processor accessing memory or storage cause the computing device to perform the corresponding function(s) as described herein), (Id., ¶ 54, Slow programs are generally not suitable for the virtually instantaneous changes in the display of optimal schedules for met and unmet demands for this tool. For comparison, the situations of similar size to those depicted in FIG. 1 were evaluated using both (i) a classic integer programming technique, and (ii) the techniques described herein on the same hardware. In the test runs, the classic integer programming technique was hundreds or thousands of times slower than the techniques described herein. Thus, these substantially real-time operations for “what-if” exploration and for including new demands and new sources of supply are each enabled by the more rapid operation and reduced compute resource requirements of the systems and methods described herein), (Id., ¶ 151, At process block 1010, the processor accepts an input either (i) through the graphical user interface or (ii) from a discrete system that indicates a change to the schedule. In one embodiment, where the inputs come through the graphical user interface, the user may perform drag-and-drop, click, or other mouse or keyboard input operations on visual representations of the demands (or demand icons) or visual representations of the supplies (or supply icons). These operations may operate to move supply icons or demand icons between days and/or priority levels within the schedule, require demands to be met or remain unmet, delete, add, or modify demands and supplies, or perform other operations. The processor detects the updates to the values of the supply object or demand object indicated by the manipulation of the associated supply icon or demand icon. The processor writes the updated values to appropriate fields of the supply object or demand object (discloses updating the user interface in response to user input)); Long further discloses …automatically adjust the graphical user interface to display the updated solution, wherein the display of the updated solution includes displaying the icons for the individual demands in the locations associated with the date the demand is to be filled with updated indications of met and unmet status according to the updated solution (Long, ¶ 155, At process block 1015, the processor automatically re-generates the schedule of supplies and met and unmet demands by initiating (i) the identification of the distributions, (ii) the sorting of all demands, (iii) the selection of an initial distribution and generation of an indication of whether the demand can be filled for each demand, in response to the acceptance of the input. In one embodiment, the graphical user interface will automatically reevaluate the optimal configuration of the schedule in a dynamic manner. Thus, operations (i)-(iii) of the sorting-based fulfillment optimization method are re-performed based on the updated data caused by the user input. In one embodiment, the processor identifies distributions, sorts demands, and selects initial distributions and generates indications of whether demands can be filled in substantially the same way as shown and described elsewhere herein. When the processor has thus completed automatically regenerating the schedule of supplies and met and unmet demands, processing at process block 1015 completes, and processing continues to process block 1020), (Id., ¶ 158, Thus, in one embodiment, the user may drag and drop supply and demand icons between days and/or priority levels within the schedule, require demands to be met or remain unmet, delete, add, or modify demands and supplies, or perform other operations, and the graphical user interface will automatically reevaluate the optimal configuration of the schedule in a dynamic manner. The graphical representation of the schedule dynamically responds to user inputs by re-executing the sorting-based fulfillment optimization method and generating a new optimized schedule in view of the inputs. The tool thereby presents an optimal schedule of met and unmet demands that minimizes unmet demands in response to a wide variety of user input changes. This dynamism is enabled by the greatly improved efficiency in operating speed and compute resource utilization of the systems and methods described herein); and in response to user approval of the updated solution, allocate the supplies at the multiple source locations to the demands that belong to the set of demands in accordance with the set of assignments (Id., ¶ 69, FIG. 3 shows one example diagram 300 of the inputs and outputs of a distribution 305. The distribution 305 accepts an excess supply 310 from a previous distribution and any arriving supply S 315. The distribution 305 allocates the combined excess supply 310 and arriving supply S 315, among a set of demands 320, and an excess supply 325 which may be fed into a next distribution), (Id., ¶ 70, The arrival time of a demand at a certain time within a distribution's time span is irrelevant to determining solutions with the fewest unmet demands (or maximizing remaining supply for those fewest unmet demands). Also, the exact number of supply deliveries that arrive on the first day of a distribution is also irrelevant: those supplies can be lumped together into a single supply value. A distribution then consists of a single incoming supply value (such as arriving supply S 315) plus previous excess (such as excess supply 310), if any, a set of demands (such as set of demands 320), and an excess supply (such as excess supply 325) representing the number of units that the distribution can pass on to the next distribution, if any. In one embodiment, a distribution 305 may be represented by a software object, class, or other data structure describing the time span of the distribution 305, the sources of supply 310, 315, the allocations of combined supply among the set of demands 320, and the excess supply 325), (Id., ¶ 141, In one embodiment, the tool 800 includes an “approve configuration” button 825. In one embodiment, selecting the “approve configuration” (discloses user approval) button 825 acts to select the currently displayed configuration for implementation by the operations management system. In response to a selection of this button, the processor will initiate processing the steps for automated implementation of schedules shown and described with reference to FIG. 7 in accordance with the schedule configuration displayed in the tool 800). While suggested in at least Fig. 1 and related text, Long does not explicitly disclose …(b) generate the set of assignments between demands belonging to the set of the demands and the supplies at the multiple source locations to form the updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand,(ii) for each demand, during the generation of the set of assignments, choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments. However, through KSR Rationale D (See MPEP 2141(III)(D)), the combination of Long and Hoffman discloses …(b) generate the set of assignments between demands belonging to the set of the demands and the supplies at the multiple source locations to form the updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand,(ii) for each demand, during the generation of the set of assignments, choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments. First, Long discloses generating supply/demand assignments for demands in ascending order of size as well as identifying source locations with sufficient supply, and assigning the demand to be filled by a selected source location (Id., ¶ 56, —Example Method for Sorting-Based Assignment—), (Id., ¶ 57, In one embodiment, each step of computer-implemented methods described herein may be performed by a processor (such as processor 1510 as shown and described with reference to FIG. 15) of one or more computing devices (i) accessing memory (such as memory 1515 and/or other computing device components shown and described with reference to FIG. 15) and (ii) configured with logic to cause the system to execute the step of the method (such as Short Supply Sorting-Based Assignment Order Fulfillment Optimization Logic 1530 shown and described with reference to FIG. 15). For example, the processor accesses and reads from or writes to the memory to perform the steps of the computer-implemented methods described herein. These steps may include (i) retrieving any necessary information, (ii) calculating, determining, generating, classifying, or otherwise creating any data, and (iii) storing any data calculated, determined, generated, classified, or otherwise created. References to storage or storing indicate storage as a data structure in memory or storage/disks of a computing device (such as memory 1515, or storage/disks 1535 of computing device 1505 or remote computers 1565 shown and described with reference to FIG. 15), (Id., ¶ 62, At process block 215, the processor sorts all demands (for a quantity of goods, products, or items) of a first priority level occurring in the series of days by ascending order of size of the demand. Processing at process block 215 then completes, and processing continues to process block 220.), (Id., ¶ 195, Each candidate equivalently optimal solution may be a way to meet the demands that is equivalently optimal to the initial optimal solution generated at line 22 of the pseudo code. But, some of the candidate solutions are not performable because one or more sources of supply for the solution are not yet available to fill the demand because the source is not yet created or delivered. In other words, one or more demands in the solution are assigned supply from the future, rather than from a source of supply that is presently available. If a demand requires more supply than is presently available, the configuration of that candidate solution can't be solved, and the candidate solution can be discarded. By removing such non-performable solutions, the set of candidates is winnowed down to a set of performable solutions, each with the same count of met demands, (discloses identifying sources that have sufficient supply) with the same amount of supply excess, and each an optimal solution. Accordingly, in one embodiment, these non-performable solutions are removed from the list of candidate equivalently optimal solutions, ‘metDemandsCandidates,’ as shown at lines 81-89 of the pseudo code.), (Id., ¶ 170, FIG. 11B illustrates a simple example problem 1120 used for illustrating one embodiment of a process for finding multiple optimal solutions. The process for finding multiple optimal solutions described in the getMultipleOptimalSolutions( ) pseudo code will be applied to the example problem 1120. The example problem 1120 includes demands 1122 in two distributions, distribution 1 1124 and distribution 2 1126, and in two priority levels, priority 1 1128 and priority 2 1130. The example problem 1120 does not have any user defined constraints requiring any particular demands to be met or remain unmet. Each distribution in the example problem 1120 also includes an associated source of supply 1132 which may be assigned to meet demands 1122. (discloses assigning demand to be filled)), (Id., ¶ 72, to create one or more distribution objects, the processor may parse the series of days and supply objects associated with the series of days to identify each day in the series that includes a source of supply, and each day in the series that does not include a source of supply. The processor then creates a distribution object for each day that includes a source of supply, and sets the values describing the range of the distribution to start on the day that includes a source of supply and end on the last subsequent day before another source of supply occurs. The processor sets the values of the pointers to and from the immediately precedent and immediately subsequent distribution objects, if any. The processor sets the values of the pointers to and from the supply object(s) for the distribution object. The processor parses the sources to identify the total quantity of units provided by those sources of supply and sets the value indicating the total quantity of unassigned supply remaining to the distribution), (Id., ¶ 71, In one embodiment, a distribution may be represented by a distribution object or other data structure. The distribution object may include a list of one or more identifiers for its sources of supply (discloses multiple source locations) (which may be represented by supply objects), a value indicating the total quantity of units provided by those sources of supply, a value indicating a total quantity of unassigned supply remaining to the distribution, a value pair or other data structure indicating the range of days (or other time units) included in the distribution, and values indicating the immediately preceding distribution and immediately subsequent distribution), (Id., ¶ 127, At process block 715, the processor transmits an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule. In one embodiment, the processor first generates the instruction. The processor parses the schedule to identify each demand met and left unmet. For each demand met, the processor identifies the source distributions and supply quantities from the retrieved map for that demand, and generates an instruction to fulfill that demand using the identified supply quantities of units from the identified sources. The processor transmits the instruction within the operations management system (for example, to an order processing module of an integrated business server 1240 in FIG. 12) to initiate operations to effect the fulfillment of the demands. The instruction acts to control the activities performed in order to fulfill the demand, constraining the demand to be supplied by the identified supply quantities of units from the identified sources. In one embodiment, in response to receiving the instructions, the integrated business server 1240 may generate and transmit instructions that cause, for example: (i) printing, display, or transmission (for example by email, fax, text, Electronic Data Interchange or other protocol) of warehouse pick and/or pack instructions to effect the fulfillment of the demand using the identified supply quantities of units from the identified sources; or (ii) one or more robots or other automated machines to retrieve the identified supply quantities of units from the identified sources from a warehouse or other storage location, pack, and ship the units of the met demands. Thus, the order represented by the demand will be fulfilled in a manner that ensures that benefits of sorting-based assignment to optimize order fulfillment in short supply situations are realized. Once the processor thus completes generating and transmitting an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule, processing at process block 715 completes, and processing continues to END block 720, where method 700 ends.), (Id., Fig. 11B, figure depicts assigning demand to be filled by a selected source). PNG media_image2.png 194 389 media_image2.png Greyscale Further, Hoffman discloses a single-source location constraint for demand fulfilment (Hoffman, ¶ 1885, max # of FOBs...: By changing this option, either a single source (One FOB per DC) or a multi-source problem is run. Everything other than "One FOB" is considered multi-source with available selections from two to five FOBs and unlimited), (Id., ¶ 1893, FIG. 182 is a flowchart of a process 18200 for analysis version control in a supply chain management framework in accordance with an embodiment of the present invention. A plurality of separate versions of an analysis are maintained in a database in operation 18202. A request for an additional version of the analysis is received utilizing a graphical user interface in operation 18204. In response to the request, the additional version of the analysis is generated in operation 18206. A plurality of parameters of the additional version are allowed to be changed utilizing the graphical user interface in operation 18208. The parameters that are allowed to be changed include: a maximum number of supplier sources, a pricing method, and/or an invoice adjustment), (Id., ¶ 1960, If the product is being single sourced (1 FOB:1DC), a lane cannot be forced twice. For example if a user attempted to also force the Lamb FOB to Post Albuquerque, the message screen 20200 shown in FIG. 202 would get the following message). One of ordinary skill in the art would have recognized that applying the known technique of Long would have yielded predictable results and resulted in an improved system. It would have been recognized that applying the assignment generation technique to the source identification and allocation teachings of Long to the single-source constraint elements of Hoffman would have yielded predictable results because the level of ordinary skill in the art demonstrated by the reference applied shows the ability to incorporate such demand matching features into similar systems. Further, generating assignments based on demand size and available sources with sufficient supply from a single-source, would have been recognized by those of ordinary skill in the art as resulting in an improved system that would allow more optimal source location to demand matching in a supply chain environment. Thus, through KSR Rationale D (See MPEP 2141(III)(D)), the combination of Long and Hoffman discloses …(b) generate, by the processor, a set of assignments between demands belonging to the set of the demands and the supplies at the multiple source locations to form an updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand,(ii) choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments. It would have been obvious to a person of ordinary skill in the art before the effective filing date to have modified the supply allocation elements of Long to include the single-source scoring elements of Hoffman in the analogous art of benchmarking in a supply chain management framework for the same reasons as stated for claim 1. Regarding Claims 11-12, these claims recite limitations substantially similar to those in claims 2 and 4, respectively, and are rejected for the same reasons as stated above. Regarding Claim 14, the combination of Long and Hoffman discloses …The computer system of claim 10… Long further discloses …wherein the instructions for identifying from among multiple source locations the set of source locations from which a demand can be filled further cause the computing system to compare a time of fulfillment of the demand and a time of availability of supply for one of the sources belonging to the set (Long, ¶ 3, The components of the operations management system that manages the task of matching supplies to demands may be referred to herein as a “scheduling system,” “assignment system,” or “order fulfillment software.” As referred to herein, a “supply” refers to a quantity of goods (or services) that is available for distribution, such as a shipment of the goods from a manufacturer, a completed production run of the goods, or goods on hand in inventory. A supply has both a size element that indicates the number of units of the item that is made available by the supply, and a time element that indicates when the supply becomes available for distribution. A “demand” refers to a request that a particular quantity of the goods be distributed, such as an order. A demand has both a size element that indicates the number of units of the item that required in order to meet the demand, and a time element that indicates when the demand should be met. In some situations, a demand may also have a priority element indicating a precedence in which the demand should be met in relation to other demands. While in some contexts, the term “order fulfillment” may include vehicle route planning for delivery, as used herein, the term “order fulfillment” refers to allocation of quantities of the supply to fulfill demands, for example by the scheduling system), (Id., ¶ 5, “Eager” or “greedy” algorithms are those that make the locally optimal choice at each stage. Commonly, order fulfillment software “eagerly” assigns available supply to demands until all demands are fully met, or the available supply is exhausted. If there is not sufficient supply, some demands must be left unmet. Any unused supply is passed on to the next day, and may include supply that was saved by the policy of not partially filling a demand. Such eager approaches may be satisfactory when there is no shortage of supply, but in the face of a shortage of supply it may result in unnecessarily many unmet demands. For example, an eager order fulfillment method will not intentionally leave a demand unmet in order to fulfill two or more future demands), (Id., ¶ 91, the processor retrieves the values of tempUnits and dist and compares them with the base condition values 0 and null, respectively. The processor determines whether the value of tempUnits does not equal 0. The processor also determines whether the value of dist does not equal null. If both expressions are true (410: YES), processing at decision block 410 completes and processing continues to process block 415. If either expression is not true (410: NO), then the base condition of the while loop is reached, and processing at decision block 410 completes and processing continues to process block 420). Regarding Claims 15, this claim recites limitations substantially similar to those in claim 9, and is rejected for the same reasons as stated above. Regarding Claim 16, Long discloses …A computer-implemented method, comprising: accepting a user input to adjust a configuration of supplies and demands through a graphical user interface that is displaying a solution for filling the demands under the configuration, wherein the supplies are at multiple source locations, wherein each source location is a discrete location from which supply is made available, wherein the display of the solution includes displaying individual demands as icons with respective quantities and indications of met and unmet status according to the solution, wherein the icons for the individual demands are displayed in locations associated with a date the demand is to be filled (Long, ¶ 230, one or more of the components, functions, methods, or processes described herein are configured as modules stored in a non-transitory computer readable medium. The modules are configured with stored software instructions that when executed by at least a processor accessing memory or storage cause the computing device to perform the corresponding function(s) as described herein), (Id., ¶ 71, In one embodiment, a distribution may be represented by a distribution object or other data structure. The distribution object may include a list of one or more identifiers for its sources of supply (discloses multiple source locations) (which may be represented by supply objects), a value indicating the total quantity of units provided by those sources of supply, a value indicating a total quantity of unassigned supply remaining to the distribution, a value pair or other data structure indicating the range of days (or other time units) included in the distribution, and values indicating the immediately preceding distribution and immediately subsequent distribution), (Id., ¶ 127, At process block 715, the processor transmits an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule. In one embodiment, the processor first generates the instruction. The processor parses the schedule to identify each demand met and left unmet. For each demand met, the processor identifies the source distributions and supply quantities from the retrieved map for that demand, and generates an instruction to fulfill that demand using the identified supply quantities of units from the identified sources. The processor transmits the instruction within the operations management system (for example, to an order processing module of an integrated business server 1240 in FIG. 12) to initiate operations to effect the fulfillment of the demands. The instruction acts to control the activities performed in order to fulfill the demand, constraining the demand to be supplied by the identified supply quantities of units from the identified sources. In one embodiment, in response to receiving the instructions, the integrated business server 1240 may generate and transmit instructions that cause, for example: (i) printing, display, or transmission (for example by email, fax, text, Electronic Data Interchange or other protocol) of warehouse pick and/or pack instructions to effect the fulfillment of the demand using the identified supply quantities of units from the identified sources; or (ii) one or more robots or other automated machines to retrieve the identified supply quantities of units from the identified sources from a warehouse or other storage location, pack, and ship the units of the met demands. Thus, the order represented by the demand will be fulfilled in a manner that ensures that benefits of sorting-based assignment to optimize order fulfillment in short supply situations are realized. Once the processor thus completes generating and transmitting an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule, processing at process block 715 completes, and processing continues to END block 720, where method 700 ends.), (Id., ¶ 104, Note that in the context of this proof, there are two different time aspects under consideration. First, there is the date that a demand is to be filled at the inventory site, which may be thought of as the “ship” date or “demand” date. This concept is represented by the placement of demand icons within date columns in the GUI as shown in FIG. 1—(for example, the ship date of example met demand 180 is Wednesday 185). When discussing this time aspect, spatial terms like “left” and “right” are used to indicate position on a timeline of demand ship dates, with earlier ship dates to the left and later ship dates to the right, as shown in FIG. 1. Second, there is the time that the algorithm attempts to fill the demand. This concept may be conceived of as answering the question “at what point in the operation of the algorithm is this demand processed?” (or “where is the demand located in the algorithm's timeline list?”). When discussing this time aspect, temporal terms like terms like “before,” “after,” “earlier,” and “later” are used, and express a time at which the algorithm attempted to fill the demand), (Id., ¶ 145, FIG. 9C illustrates enlarged views of example interactions with the tool to cause information about a particular example demand to be displayed. In one embodiment, the tool 800 provides additional information about an example demand in response to interaction with an example demand circle (or other icon) 975 associated with the example demand. In one embodiment, the tool 800 may detect a mouse (cursor) hover over or receive a mouse click on the example demand circle 975 associated with the example demand. In response to the click or hover, the tool 800 displays a pop-up 980 that provides additional information about the example demand that may be useful to the user in evaluating a solution and determining whether the demand should be met or unmet. (discloses demand met/unmet status) In one embodiment, the pop-up 980 may display a demand identifier number 985. Demand identifier number 985 uniquely identifies the example demand represented by demand circle 975. Demand identifier number 985 may also be associated with a purchase order or other document. The displayed demand identifier number 985 may act as a hyperlink to the purchase order or other document. In one embodiment, the pop-up 980 may display the name of a customer (or shipping destination) 990 associated with the example demand. The displayed name of the customer 990 may act as a hyperlink, which on mouseover or on mouse click will cause the tool 800 to highlight all demand circles associated with the customer. In one embodiment, the pop-up 980 may display one or more unique identifiers of the supply source (or sources) 995 that the example demand draws from. Further, statistics such as the size of the supply, the number of units of that supply which are assigned to demands, and the quantity of units sourced from the example demand from that supply may also be displayed. In one embodiment, detect a mouse hover over or receive a mouse click on the example demand circle 975 associated with the example demand, the tool 600 highlights all supply circles representing supplies that provide units to the example demand. In one embodiment, the pop-up 980 may display an indication of a priority level for the demand represented by demand circle 975. In one embodiment, the pop-up 980 may display the demand quantity for the demand represented by demand circle 975. In one example, this information may be retrieved from a database associated with integrated business server 1240); PNG media_image1.png 430 598 media_image1.png Greyscale in response to the user input, wherein the user input modifies at least one of the supplies or demands and triggers generation of the set of assignments and corresponding updating of the graphical user interface to display an updated solution, in real-time: (a) sorting a set of the demands by size of demand(Id., ¶ 129, A business may require that a particular demand to be met even if supplies are scarce. The user of the tool 100 may desire to consider the effect of requiring the particular demand to be met. The method described above can be modified to apply this constraint by first filling all demands required to be met before filling any other demands. (discloses input to modify demands) A sorting-based fulfillment optimization method can then be applied in view of this additional constraint to find a new optimum, if it exists. In one embodiment, in response to an input that indicates that a particular demand is required to be met, the processor fills the particular demand first before filling other demands), (Id., ¶ 130, Similarly, the user of the tool 100 may desire to investigate the effect of requiring a particular demand to be unmet. (durther discloses input to modify demands) This may be accomplished by simply filtering out any demands that are required to be left unmet during sorting-based fulfillment optimization. In one embodiment, in response to an input that indicates that the particular demand is required to be unmet, the processor filters the particular demand out of all demands occurring in the series of days), (Id., ¶ 75, Referring again to process block 215, in one embodiment, all demands in a given priority are sorted by size, with smaller demands first. (discloses sorting demands by size) In other words, all demands of the given priority occurring in the series of days are sorted in ascending order of size of the demand. (Note that the given priority may simply be a single priority for all demands in a non-prioritized scheduling system, or one of several priority levels in a prioritized scheduling system.)), (Id., ¶ 230, one or more of the components, functions, methods, or processes described herein are configured as modules stored in a non-transitory computer readable medium. The modules are configured with stored software instructions that when executed by at least a processor accessing memory or storage cause the computing device to perform the corresponding function(s) as described herein), (Id., ¶ 54, Slow programs are generally not suitable for the virtually instantaneous changes in the display of optimal schedules for met and unmet demands for this tool. For comparison, the situations of similar size to those depicted in FIG. 1 were evaluated using both (i) a classic integer programming technique, and (ii) the techniques described herein on the same hardware. In the test runs, the classic integer programming technique was hundreds or thousands of times slower than the techniques described herein. Thus, these substantially real-time operations for “what-if” exploration and for including new demands and new sources of supply are each enabled by the more rapid operation and reduced compute resource requirements of the systems and methods described herein), (Id., ¶ 151, At process block 1010, the processor accepts an input either (i) through the graphical user interface or (ii) from a discrete system that indicates a change to the schedule. In one embodiment, where the inputs come through the graphical user interface, the user may perform drag-and-drop, click, or other mouse or keyboard input operations on visual representations of the demands (or demand icons) or visual representations of the supplies (or supply icons). These operations may operate to move supply icons or demand icons between days and/or priority levels within the schedule, require demands to be met or remain unmet, delete, add, or modify demands and supplies, or perform other operations. The processor detects the updates to the values of the supply object or demand object indicated by the manipulation of the associated supply icon or demand icon. The processor writes the updated values to appropriate fields of the supply object or demand object (discloses updating the user interface in response to user input)); Long further discloses …automatically adjusting the graphical user interface to display the updated solution, wherein the display of the updated solution includes displaying the icons for the individual demands in the locations associated with the date the demand is to be filled with updated indications of met and unmet status according to the updated solution (Long, ¶ 155, At process block 1015, the processor automatically re-generates the schedule of supplies and met and unmet demands by initiating (i) the identification of the distributions, (ii) the sorting of all demands, (iii) the selection of an initial distribution and generation of an indication of whether the demand can be filled for each demand, in response to the acceptance of the input. In one embodiment, the graphical user interface will automatically reevaluate the optimal configuration of the schedule in a dynamic manner. Thus, operations (i)-(iii) of the sorting-based fulfillment optimization method are re-performed based on the updated data caused by the user input. In one embodiment, the processor identifies distributions, sorts demands, and selects initial distributions and generates indications of whether demands can be filled in substantially the same way as shown and described elsewhere herein. When the processor has thus completed automatically regenerating the schedule of supplies and met and unmet demands, processing at process block 1015 completes, and processing continues to process block 1020), (Id., ¶ 158, Thus, in one embodiment, the user may drag and drop supply and demand icons between days and/or priority levels within the schedule, require demands to be met or remain unmet, delete, add, or modify demands and supplies, or perform other operations, and the graphical user interface will automatically reevaluate the optimal configuration of the schedule in a dynamic manner. The graphical representation of the schedule dynamically responds to user inputs by re-executing the sorting-based fulfillment optimization method and generating a new optimized schedule in view of the inputs. The tool thereby presents an optimal schedule of met and unmet demands that minimizes unmet demands in response to a wide variety of user input changes. This dynamism is enabled by the greatly improved efficiency in operating speed and compute resource utilization of the systems and methods described herein); and in response to user approval of the updated solution, allocating the supplies at the multiple source locations to the demands that belong to the set of demands in accordance with the set of assignments (Id., ¶ 69, FIG. 3 shows one example diagram 300 of the inputs and outputs of a distribution 305. The distribution 305 accepts an excess supply 310 from a previous distribution and any arriving supply S 315. The distribution 305 allocates the combined excess supply 310 and arriving supply S 315, among a set of demands 320, and an excess supply 325 which may be fed into a next distribution), (Id., ¶ 70, The arrival time of a demand at a certain time within a distribution's time span is irrelevant to determining solutions with the fewest unmet demands (or maximizing remaining supply for those fewest unmet demands). Also, the exact number of supply deliveries that arrive on the first day of a distribution is also irrelevant: those supplies can be lumped together into a single supply value. A distribution then consists of a single incoming supply value (such as arriving supply S 315) plus previous excess (such as excess supply 310), if any, a set of demands (such as set of demands 320), and an excess supply (such as excess supply 325) representing the number of units that the distribution can pass on to the next distribution, if any. In one embodiment, a distribution 305 may be represented by a software object, class, or other data structure describing the time span of the distribution 305, the sources of supply 310, 315, the allocations of combined supply among the set of demands 320, and the excess supply 325), (Id., ¶ 141, In one embodiment, the tool 800 includes an “approve configuration” button 825. In one embodiment, selecting the “approve configuration” (discloses user approval) button 825 acts to select the currently displayed configuration for implementation by the operations management system. In response to a selection of this button, the processor will initiate processing the steps for automated implementation of schedules shown and described with reference to FIG. 7 in accordance with the schedule configuration displayed in the tool 800). While suggested in at least Fig. 1 and related text, Long does not explicitly disclose …(b) generating the set of assignments between demands belonging to the set of the demands and the supplies at the multiple source locations to form the updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand,(ii) for each demand, during the generation of the set of assignments, choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments. However, through KSR Rationale D (See MPEP 2141(III)(D)), the combination of Long and Hoffman discloses …(b) generating the set of assignments between demands belonging to the set of the demands and the supplies at the multiple source locations to form the updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand,(ii) for each demand, during the generation of the set of assignments, choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments. First, Long discloses generating supply/demand assignments for demands in ascending order of size as well as identifying source locations with sufficient supply, and assigning the demand to be filled by a selected source location (Id., ¶ 56, —Example Method for Sorting-Based Assignment—), (Id., ¶ 57, In one embodiment, each step of computer-implemented methods described herein may be performed by a processor (such as processor 1510 as shown and described with reference to FIG. 15) of one or more computing devices (i) accessing memory (such as memory 1515 and/or other computing device components shown and described with reference to FIG. 15) and (ii) configured with logic to cause the system to execute the step of the method (such as Short Supply Sorting-Based Assignment Order Fulfillment Optimization Logic 1530 shown and described with reference to FIG. 15). For example, the processor accesses and reads from or writes to the memory to perform the steps of the computer-implemented methods described herein. These steps may include (i) retrieving any necessary information, (ii) calculating, determining, generating, classifying, or otherwise creating any data, and (iii) storing any data calculated, determined, generated, classified, or otherwise created. References to storage or storing indicate storage as a data structure in memory or storage/disks of a computing device (such as memory 1515, or storage/disks 1535 of computing device 1505 or remote computers 1565 shown and described with reference to FIG. 15), (Id., ¶ 62, At process block 215, the processor sorts all demands (for a quantity of goods, products, or items) of a first priority level occurring in the series of days by ascending order of size of the demand. Processing at process block 215 then completes, and processing continues to process block 220.), (Id., ¶ 195, Each candidate equivalently optimal solution may be a way to meet the demands that is equivalently optimal to the initial optimal solution generated at line 22 of the pseudo code. But, some of the candidate solutions are not performable because one or more sources of supply for the solution are not yet available to fill the demand because the source is not yet created or delivered. In other words, one or more demands in the solution are assigned supply from the future, rather than from a source of supply that is presently available. If a demand requires more supply than is presently available, the configuration of that candidate solution can't be solved, and the candidate solution can be discarded. By removing such non-performable solutions, the set of candidates is winnowed down to a set of performable solutions, each with the same count of met demands, (discloses identifying sources that have sufficient supply) with the same amount of supply excess, and each an optimal solution. Accordingly, in one embodiment, these non-performable solutions are removed from the list of candidate equivalently optimal solutions, ‘metDemandsCandidates,’ as shown at lines 81-89 of the pseudo code.), (Id., ¶ 170, FIG. 11B illustrates a simple example problem 1120 used for illustrating one embodiment of a process for finding multiple optimal solutions. The process for finding multiple optimal solutions described in the getMultipleOptimalSolutions( ) pseudo code will be applied to the example problem 1120. The example problem 1120 includes demands 1122 in two distributions, distribution 1 1124 and distribution 2 1126, and in two priority levels, priority 1 1128 and priority 2 1130. The example problem 1120 does not have any user defined constraints requiring any particular demands to be met or remain unmet. Each distribution in the example problem 1120 also includes an associated source of supply 1132 which may be assigned to meet demands 1122. (discloses assigning demand to be filled)), (Id., ¶ 72, to create one or more distribution objects, the processor may parse the series of days and supply objects associated with the series of days to identify each day in the series that includes a source of supply, and each day in the series that does not include a source of supply. The processor then creates a distribution object for each day that includes a source of supply, and sets the values describing the range of the distribution to start on the day that includes a source of supply and end on the last subsequent day before another source of supply occurs. The processor sets the values of the pointers to and from the immediately precedent and immediately subsequent distribution objects, if any. The processor sets the values of the pointers to and from the supply object(s) for the distribution object. The processor parses the sources to identify the total quantity of units provided by those sources of supply and sets the value indicating the total quantity of unassigned supply remaining to the distribution), (Id., ¶ 71, In one embodiment, a distribution may be represented by a distribution object or other data structure. The distribution object may include a list of one or more identifiers for its sources of supply (discloses multiple source locations) (which may be represented by supply objects), a value indicating the total quantity of units provided by those sources of supply, a value indicating a total quantity of unassigned supply remaining to the distribution, a value pair or other data structure indicating the range of days (or other time units) included in the distribution, and values indicating the immediately preceding distribution and immediately subsequent distribution), (Id., ¶ 127, At process block 715, the processor transmits an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule. In one embodiment, the processor first generates the instruction. The processor parses the schedule to identify each demand met and left unmet. For each demand met, the processor identifies the source distributions and supply quantities from the retrieved map for that demand, and generates an instruction to fulfill that demand using the identified supply quantities of units from the identified sources. The processor transmits the instruction within the operations management system (for example, to an order processing module of an integrated business server 1240 in FIG. 12) to initiate operations to effect the fulfillment of the demands. The instruction acts to control the activities performed in order to fulfill the demand, constraining the demand to be supplied by the identified supply quantities of units from the identified sources. In one embodiment, in response to receiving the instructions, the integrated business server 1240 may generate and transmit instructions that cause, for example: (i) printing, display, or transmission (for example by email, fax, text, Electronic Data Interchange or other protocol) of warehouse pick and/or pack instructions to effect the fulfillment of the demand using the identified supply quantities of units from the identified sources; or (ii) one or more robots or other automated machines to retrieve the identified supply quantities of units from the identified sources from a warehouse or other storage location, pack, and ship the units of the met demands. Thus, the order represented by the demand will be fulfilled in a manner that ensures that benefits of sorting-based assignment to optimize order fulfillment in short supply situations are realized. Once the processor thus completes generating and transmitting an instruction to fulfill or leave unfulfilled the individual demands over the series of days in accordance with the assignment maps and the schedule, processing at process block 715 completes, and processing continues to END block 720, where method 700 ends.), (Id., Fig. 11B, figure depicts assigning demand to be filled by a selected source). PNG media_image2.png 194 389 media_image2.png Greyscale Further, Hoffman discloses a single-source location constraint for demand fulfilment (Hoffman, ¶ 1885, max # of FOBs...: By changing this option, either a single source (One FOB per DC) or a multi-source problem is run. Everything other than "One FOB" is considered multi-source with available selections from two to five FOBs and unlimited), (Id., ¶ 1893, FIG. 182 is a flowchart of a process 18200 for analysis version control in a supply chain management framework in accordance with an embodiment of the present invention. A plurality of separate versions of an analysis are maintained in a database in operation 18202. A request for an additional version of the analysis is received utilizing a graphical user interface in operation 18204. In response to the request, the additional version of the analysis is generated in operation 18206. A plurality of parameters of the additional version are allowed to be changed utilizing the graphical user interface in operation 18208. The parameters that are allowed to be changed include: a maximum number of supplier sources, a pricing method, and/or an invoice adjustment), (Id., ¶ 1960, If the product is being single sourced (1 FOB:1DC), a lane cannot be forced twice. For example if a user attempted to also force the Lamb FOB to Post Albuquerque, the message screen 20200 shown in FIG. 202 would get the following message). One of ordinary skill in the art would have recognized that applying the known technique of Long would have yielded predictable results and resulted in an improved system. It would have been recognized that applying the assignment generation technique to the source identification and allocation teachings of Long to the single-source constraint elements of Hoffman would have yielded predictable results because the level of ordinary skill in the art demonstrated by the reference applied shows the ability to incorporate such demand matching features into similar systems. Further, generating assignments based on demand size and available sources with sufficient supply from a single-source, would have been recognized by those of ordinary skill in the art as resulting in an improved system that would allow more optimal source location to demand matching in a supply chain environment. Thus, through KSR Rationale D (See MPEP 2141(III)(D)), the combination of Long and Hoffman discloses …(b) generating a set of assignments between demands belonging to the set of the demands and the supplies at the multiple source locations to form an updated solution for filling the demands under the adjusted configuration, by, for the demands in ascending order of the size of demand, (i) identifying from among the multiple source locations a set of source locations that have sufficient supply to fill the demand,(ii) choosing one source location from the set of source locations from which to fill the demand, wherein the demand is constrained to be filled from only the one source location, and (iii) assigning the demand to be filled from one or more supplies of the one source location to form an assignment for the demand in the set of assignments. It would have been obvious to a person of ordinary skill in the art before the effective filing date to have modified the supply allocation elements of Long to include the single-source scoring elements of Hoffman in the analogous art of benchmarking in a supply chain management framework for the same reasons as stated for claim 1. Regarding Claims 17, this claim recites limitations substantially similar to those in claim 2, and is rejected for the same reasons as stated above. Regarding Claims 18, this claim recites limitations substantially similar to those in claim 6, and is rejected for the same reasons as stated above. Regarding Claim 19, the combination of Long and Hoffman discloses …The computer-implemented method of claim 16… Long further discloses …wherein the instructions further cause the computer to fill all demands in the set of demands that are constrained to be met (Long, ¶ 136, The user may also remove a requirement that a demand be met or unmet by removing the requirement using the tool 800. For example, the tool 800 may receive a user removal of a requirement that a particular demand must be met or unmet by receiving a mouse click on a demand circle associated with the particular demand 905, displaying a menu 910 including an option to remove any requirement that the demand be met or unmet 940, receiving a mouse click indicating a selection 920 of the option removing the requirement 940, and storing the state of being without requirement by setting the respective must meet and must not meet flags to false. The tool 800 may further display a visual indication that the demand is not required to be met or unmet 945, for example by displaying the demand circle with the visual indications indicating that the demand is met or unmet, as shown and described with reference to FIG. 1), (Id., ¶ 167, Second, at line 14, a function to fill and remove from the demands list demands that are indicated by users as required to be met is called: fillAndRemoveUserConstraintedToBeMet(demands). In this function, the demands are filled out of available supply, the available supply is reduced accordingly, and the filled demands are removed from the demands list. In one embodiment, the fill-and-remove function includes the functions of the tryFill method described above, for example, executing the tryFill method for each of the set of demands required to be met. If it is not possible to fill all demands marked required, an error message will be presented. If it is possible to fill all demands marked required, the demands will be filled before the remaining unconstrained demands are evaluated. Because the demands marked required are already filled and removed from the list, they will not be included in the subsequent attempt to fill the listed demands. Further, the available supply is depleted to the extent that the required demands are filled before supplies are assigned to the remaining unconstrained demands, and so supply assigned to the required demands will not be assigned to unconstrained demands). Regarding Claim 20, the combination of Long and Hoffman discloses …The computer-implemented method of claim 16… Long further discloses … further comprising subdividing the set of demands by level of a priority, wherein the generating the set of assignments is performed for demands having a superior priority level before the generating the set of assignments is performed for demands having an inferior priority level (Long, ¶ 48, In one embodiment, each individual demand may have a fulfillment priority element associated with it, in addition to the time and size elements. Various numbers of priority levels may be selected, based on system requirements and user specifications. In one embodiment, the fulfillment priority element may have four possible values: priority 1, priority 2, priority 3, and priority 4, where priority 1 represents the highest priority orders, and priority 4 represents the lowest priority orders. In one embodiment, there may be any number N of priority levels. In a situation where there is a supply shortage, supply will be preferentially allocated by the scheduling system to higher priority orders over lower priority orders. Higher priority orders are thus met first, before lower priority orders are considered. For example, the Oracle® Netsuite® order fulfillment software includes such a prioritization scheme), (Id., ¶ 49, The tool 100 includes a visual representation of the fulfillment priority levels as priority bands or tiers across the visual representation of the timeframe. Priority 1 tier 145 includes visual representations (such as demand circles) of all demands associated with fulfillment priority 1. Priority 2 tier 150 includes visual representations of all demands associated with fulfillment priority 2. Priority 3 tier 155 includes visual representations of all demands associated with fulfillment priority 3. Priority 4 tier 160 includes visual representations of all demands associated with fulfillment priority 4. Note that as the fulfillment priority level descends, a higher and higher proportion of unmet orders appears in the example eight days of demands 115. This is appropriate in view of the level of fulfillment priority for each of the orders represented in the tool 100). Claims 5 and 13 are rejected under 35 U.S.C. 103 as being unpatentable over Long in view of Hoffman, and in further view of Smith et al., U.S. Publication No. 2021/0182754 [hereinafter Smith]. Regarding Claim 5, the combination of Long and Hoffman discloses …The non-transitory computer-readable medium of claim 1… While suggested in at least Fig. 2 and related text, Long discloses …wherein the instructions for the choosing one source location from the set of source locations from which to fulfil the demand further cause the computer to: identify a least-supply source location among the set of source locations that will be left with a least amount of total supply upon fulfillment of the demand; and select the least-supply source location to be the one source location from which to fill the demand. However, Smith discloses …wherein the instructions for the choosing one source location from the set of source locations from which to fulfil the demand further cause the computer to: identify a least-supply source location among the set of source locations that will be left with a least amount of total supply upon fulfillment of the demand; and select the least-supply source location to be the one source location from which to fill the demand (Smith, ¶ 20, In a further embodiment, for each of the runs of consecutive time units, either (i) all configurations except the configuration with the greatest amount of excess supply for each possible number of unmet demands during the run are removed from the current output set of configurations, or (ii) those configurations with an excess supply greater than an excess supply of a configuration with the smallest amount of excess supply that meets or exceeds a total supply deficit of all remaining runs within the timeframe are removed from the current output set of configurations), (Id., ¶ 140, In a further embodiment, for each of the runs of consecutive time units, either (i) all configurations except the configuration with the greatest amount of excess supply for each possible number of unmet demands during the run are removed from the current output set of configurations, or (ii) those configurations with an excess supply greater than an excess supply of a configuration with the smallest amount of excess supply that meets or exceeds a total supply deficit of all remaining runs within the timeframe are removed from the current output set of configurations), (Id., ¶ 143, In one embodiment, the method 300 may include steps for future deficit culling. For each of the runs of consecutive time units, the processor removes from the current output set of configurations those configurations with an excess supply greater than an excess supply of a configuration with the smallest amount of excess supply that meets or exceeds a total supply deficit of all remaining runs within the timeframe. In one embodiment, these steps for future deficit culling follow alternative steps 325 and 330 and precede decision block 335. In one example, these steps for future deficit culling also follow any steps for efficient frontier culling), (Id., ¶ 31, FIG. 5. illustrates one embodiment of a method for assigning supply units from a specific supply to fulfill a demand quantity of each met demand (discloses assigning supply from a specified source)). It would have been obvious to a person of ordinary skill in the art before the effective filing date to have modified the supply allocation elements of Long and the single-source supply elements of Hoffman to include the least-supply source identification elements of Smith in the analogous art of minimizing unmet demands due to short supply. The motivation for doing so would have been to provide a “fulfillment optimization method and generating a new optimized schedule in view of the inputs…” (Smith, ¶ 54) wherein such improvements would have been to provide “improved planning, less over-ordering and product waste, and less time spent managing and coordinating local promotions. For new contracted distributors, daily distributor invoice feeds can be established” (Hoffman, ¶ 300), and wherein “the tool thereby presents an optimal schedule of met and unmet demands that minimizes unmet demands in response to a wide variety of user input changes” [Smith, ¶ 54; Hoffman, ¶ 300; Long, ¶ 158]. Regarding Claim 13, this claim recites limitations substantially similar to those in claim 5, and is rejected for the same reasons as stated above. Conclusion Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a). A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action. The prior art made of record and not relied upon is considered pertinent to applicant's disclosure. Envarli et al., U.S. Publication No. 2011/0313807 discloses dimensionality reduction for global advertisement inventory optimization. Mikurak et al., U.S. Publication No. 2006/0178918 discloses technology sharing during demand and supply planning in a network-based supply chain environment. Denton et al., U.S. Publication No. 2006/0178918 discloses a method for considering hierarchical preemptive demand priorities in a supply chain optimization model. Any inquiry concerning this communication or earlier communications from the examiner should be directed to NICHOLAS D BOLEN whose telephone number is (408)918-7631. The examiner can normally be reached Monday - Friday 8:00 AM - 5:00 PM PST. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Patty Munson can be reached on (571) 270-5396. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /NICHOLAS D BOLEN/ Examiner, Art Unit 3624 /PATRICIA H MUNSON/Supervisory Patent Examiner, Art Unit 3624
Read full office action

Prosecution Timeline

Show 1 earlier event
Dec 10, 2024
Non-Final Rejection mailed — §101, §103
Feb 15, 2025
Response Filed
Jun 06, 2025
Final Rejection mailed — §101, §103
Sep 08, 2025
Request for Continued Examination
Sep 18, 2025
Response after Non-Final Action
Dec 16, 2025
Non-Final Rejection mailed — §101, §103
Mar 16, 2026
Response Filed
May 29, 2026
Final Rejection mailed — §101, §103 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12205077
SMART REMINDERS FOR RESPONDING TO EMAILS
7y 7m to grant Granted Jan 21, 2025
Patent 12198105
SMART REMINDERS FOR RESPONDING TO EMAILS
7y 6m to grant Granted Jan 14, 2025
Patent 12093873
USER PERFORMANCE ANALYSIS AND CORRECTION FOR S/W
3y 7m to grant Granted Sep 17, 2024
Patent 11935077
OPERATIONAL PREDICTIVE SCORING OF COMPONENTS AND SERVICES OF AN INFORMATION TECHNOLOGY SYSTEM
3y 4m to grant Granted Mar 19, 2024
Patent 11635224
OPERATION SUPPORT SYSTEM, OPERATION SUPPORT METHOD, AND NON-TRANSITORY RECORDING MEDIUM
4y 9m to grant Granted Apr 25, 2023
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

5-6
Expected OA Rounds
9%
Grant Probability
19%
With Interview (+9.9%)
3y 11m (~0m remaining)
Median Time to Grant
High
PTA Risk
Based on 127 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month