The application-development process may start with your company looking to benefit
from quantum technology to improve existing business applications, develop new
applications, or add new features. How do you identify good candidate problems for
quantum-classical hybrid solutions? The following steps can help.
Assess your applications.
Search the company’s processes for “bottlenecks”, places where problem solving
takes a lot of time or returns unsatisfactory results. These processes may be
workhorses that have been in use for years, but over those years increases in
input data, changing hardware (computers and new sensing technology) may have
slowed processing or decreased efficacy.
Bear in mind that a less obvious but possibly fruitful investigative route
is to also question staff about unsolved problems for which the company may
have never tried to implement processes.
Shortlist only the most promising problems, which should have these attributes:
Important/valuable to the business; resist selecting lower-value
problems that are tempting due to the ease of formulation.
Hard: for well-known classes of problems you might know that your problem is
formally hard (e.g., NP-hard) but for most problems it’s sufficient that it
lacks satisfactory solutions, contains many interacting choices that cannot
be solved sequentially, would add value if solved more quickly, etc.
Often these are problems that your company has previously attempted to solve,
or has developed a solution for, but perhaps with less satisfactory results than
desired, lower efficiency than needed, higher costs than acceptable, etc.
Select problems to solve.
Successful development and introduction of an application as a company
process might hinge on close collaboration with someone in the
organization, a “problem owner”, who has responsibility for the problem
and authority over any changes to its solutions. Consider the following
steps when selecting a problem:
Prepare an elevator pitch
(see a possible format described below) for each candidate problem
identified in the previous step.
Identify a problem owner for each candidate problem; support from such
an invested owner may be a condition for advancing a new solution
to the problem.
In collaboration with the problem owner, ensure you can access the
problem’s data (inputs, current solution runtimes and quality, etc).
As an illustrative example, consider the following scenario of discovery:
you work for a large retailer and are tasked with looking into applying
new technologies to improve efficiency and cut costs of business operations.
Following the steps in this section produces the following results.
Assessing Applications
You talk to representatives of each department and make a list of operational
processes, which, for a large retailer, might include replenishing stocks of
existing products, ordering optimum quantities of new products, routing
deliveries from suppliers and to consumers, and many additional processes
that occur daily, weekly, quarterly, etc.
Identifying Candidate Problems
Among these processes you note that your operations personnel are spending
many hours per week scheduling shifts to staff the company’s outlets. Is this
a good candidate for new solutions?
You look into the current scheduling process and find that it is implemented
with in-house software plus some manual tuning on Excel sheets. Two decades
ago a single manager used to spend a couple of hours on Fridays scheduling
shifts for the company’s single outlet but now, with additional outlets that
employ many more workers, the task occupies the time of multiple managers
on both generating an initial schedule and then on making adjustments during
the week. Employees are often unsatisfied by the resulting schedules that fail
to account for their preferences on shift times.
You set up meetings with some of these managers, and they provide some
very rough figures to help you estimate the business cost of remaining
with the existing solution. You realize that over months and years, a
better solution would yield significant savings for the company. It would
also increase employee satisfaction, and thus retention. A quick
internet search shows that scheduling can be a hard, discrete optimization
problem. Such problems are good candidates for quantum-classical hybrid
solutions.
Perhaps you identify additional problems in a similar way.
Selecting Problems
For the identified scheduling problem, one of the involved managers agrees
to act as the problem owner. Your manager allocates a senior developer
for a couple of months to help you develop a proof of concept.
(For the simplest of the additional candidate problems you identified,
you are given approval to spend a few days jerry-rigging a proof of
concept, by which you hope to demonstrate improved solution quality and
justify a project budget. Your manager also considers another candidate
you identified but suspects that changes there will require broad support
in the company. You, your manager, and a problem owner create a short
presentation on that problem’s importance to the business, the difficulties
and cost of the existing process, and the benefits of improving the process.
Following this presentation, the company’s Vice President of Operations
sets up an ad-hoc “steering committee” with representatives of departments
that would be effected by a change to this process and makes a budget
request for developing an improved solution.)
Elevator pitch for scheduling candidate problem.
As an illustration example, the
elevator pitch worksheet was
used to create the following pitch points for the large retailer’s
employee-scheduling problem.
Given that meeting demand for staffing is imperative for our outlets
to function, we currently over-allocate, at high cost; our current
poor fit to employee requirements harms retainment of trained personnel;
managers spend a lot of time scheduling; any changes due to
same-day no-shows are disruptive.
What improvements would most increase business value?
Speed of generating the schedule (reduce time managers spend scheduling),
better fit to staff preferences, ability to scale for our expanding
to more outlets next year.
Who are the main users?
Outlet managers are responsible for weekly scheduling.
What problem are they trying to solve?
Meet the weekly staffing demand while considering employee preferences,
minimizing paid overtime, and meetings various hard and soft constraints.
How do/will they interact with a solution?
Ideally the system reads in the staffing-demand and employee preference
spreadsheets submitted by email/uploaded on website, reads employee
schedule-data files in database, and at a preset weekly time generates
up to half a dozen alternative schedules for managers to choose from,
which can be presented online or emailed. If needed, the application
can be manually updated and run.
What is the overall process flow?
Outlet manager files the demand (requirements) for the week by Friday,
staff file their preferred shifts for the week by noon Monday, the
application runs automatically at 1:00 PM and presents schedules, managers
select one or update parameters and run again, and by 4:00 PM the
formal schedule is released.
In-house software plus manual tuning on Excel sheets. Tuning requires
many hours and the results are a poor match to staff preferences. The
schedule always meets demand but only because it includes an expensive
20% margin of over-staffing.
What improvements are required for a new solution to displace the current one?
The main needs are reducing human work and improving the match to
staff preferences. Any solution must be robust to the expected
expansion of outlets set in the 5-year plan. An attempt was made to
modernize the existing software but without success.
Are there any known bottlenecks?
Scheduling is a known hard problem.
What are the data inputs and outputs?
Inputs are staffing demand file, staff preference sheets, employee
schedule-data files (exist in current process); output is the full
schedule for each outlet.
What are the required system and/or process integrations?
The new application must read the emailed/uploaded demand and
preference sheets, and must have permission to access the database
files of employee qualifications, training, hours, and pay rate.
It should run automatically and allow managers with permission to
run manually.
How are results delivered/presented to users?
Ideally as an online schedule as shown in the attached PowerPoint.
Is there historical data that can be used to test a new solution?
Yes, we can use the last year’s filings and schedules.
What type of problems can benefit from quantum technology?
Quantum computers can solve some hard problems more efficiently than any
known algorithm for classical computers.[1]
A strong category of problems for quantum technology is optimization
problems with quadratic interactions between discrete variables.[2]
Optimization problems are problems that require an assignment of variables
that results in the best, or very good, solutions. For example, defining in
what order a set of products be assembled to make the most efficient use of
the manufacturing machines on a factory floor.
Discrete variables include the following categories of variables:
Binary variables can be
assigned two values, such as 0 and 1 or True and False.
Problems with these variables can be recognized by the True or False
judgments required from their solutions. For example,
Scheduling: Did a task meet its deadline? Did the crew make it to the flight?
Networks: Did a network node experience failure?
Finance: Did a loan go into default?
Integer variables can be
assigned whole numbers, such as those between -5 to 10.
Problems with these variables optimize the number of something. For example,
Delivery: How many 11” x 5” x 14”-sized boxes should be loaded onto the truck?
Categorical
(one-hot or “discrete”) variables can be assigned a value from a set,
such as green,red,blue.
Problems with these variables have several distinct options.
For example,
Scheduling: Which shift should employee \(X`\) work?
Map Coloring: Should the state be colored red, blue, green or yellow?
Quadratic interactions represent relationships and correlations between the
inputs of a problem. For example,
Scheduling: A missed deadline affects other tasks, preventing gaps between
consecutive machine usages saves costs.
Networks: A failed network node changes the load on other nodes.
Finance: Diverse stocks lowers risk, a defaulted loan affects the risk
to other loans.
Elevator pitch for a candidate problem.
You might use tables such as the following to create elevator pitches
for each candidate problem:
For any selected problem, the first step in attempting to develop a new solution
or improve an existing solution is a clear and comprehensive description.
A good description specifies the following elements[3] of the problem:
Inputs: the data needed to represent an instance of the problem.
Outputs: the preferred presentation of solutions to the problem.
Parameters: dependencies that configure problem instances and set
preferences on solutions.
Decision Variables: the constituents of the problem to which the process
attempts to assign good values.[4]
Objectives to be Optimized: the goals the process attempts to accomplish
by minimizing or maximizing certain aspects of the problem to the extent
possible.
Constraints: aspects of the problem and/or process with limited or no
flexibility, which must be satisfied for solutions to be considered feasible.[5]
The following steps can help guide you.
Write a plain-language description of the problem as you currently understand it.
A good problem description has the following constituents for its inputs and outputs:
Entities
For example, in an employee-scheduling problem entities might include
employees, time slots, supervisors, jobs, hourly rates, staffing demands, etc.
Relations
For example, relations in an employee-scheduling might include a requirement
that one supervisor be present for every three new hires, that no more
than 20% of staff in any time slot be new hires, that two senior staff
should not staff a small department simultaneously, etc.
Quantity being optimized
For example, minimizing the makespan
of a scheduling problem or selection of some number \(k\) of features
in a machine-learning problem.
In collaboration with the problem owner, revise your initial description.
Describe the problem using the business/domain language, explained for
non-specialist developers; that means, the description is immediately
recognizable to experts in the field, with all domain-specific terminology
clarified for the application developers who may not be knowledgeable in
the problem’s domain or the company’s business.
Clear up any ambiguities and inconsistencies.
Ensure that the problem owner approves of the revised description.
Attempt to acquire at least one complete instance of the problem, including
input data, runtime, solutions, tuning parameters, etc.
Based on your initial work of problem discovery you know enough about the
employee-scheduling problem to write a draft description. It might look
something like this:
“Our employee-scheduling problem is to generate a weekly schedule for our
Madrid employees that optimally matches demand and scheduled shifts, with
preference given to senior and full-time employees. The schedule should
not include back-to-back shifts or more than 48 weekly hours per employee…”
Revised Description
After a few iterations with the problem owner, your final description
might look like this:
“Our employee-scheduling problem is to release every Monday by 4:00PM to
all employees of our five Madrid outlets a schedule of their allocated
shifts for the following week. Because employees have until noon Monday
to file their availability and preferences for the following week, the
scheduling application must generate a schedule within 1 hour to allow
staff time to make adjustments and rerun once or twice if needed.
Preferably, the application generates more than a single schedule per
run, allowing staff discretion to select one.
The optimal schedule should, to the extent possible, achieve the following
objectives:[6]
Minimize the differences between our anticipated demand for work hours
and scheduled hours.
Maximally account for seniority in selecting employees for available hours.
Maximally account for employees’ stated schedule preferences.
Minimize the number of employees needed to meet the anticipated work.
Maximize the number of employees with full-time schedules.
Minimize overtime.
Minimize the variance in overtime across our employees.
The schedule must also take into consideration the following constraints:
Overtime must be in 4-hour blocks.
Full-time employees should not be alloted more than 48 hours per week.
Employees must not work back-to-back shifts.
Full-time employees must have two consecutive rest days each week.
Week-end shifts can be allocated only to eligible employees.”
Problem Instance
You also collect one, or preferably a few, problem instances that developers
can use when designing a replacement application and testing it. These might
include artifacts such as the following:
File with shift start and end hours for May, July, and October.
Currently used input data files on employees with the following details:
name, employee ID number, rank, minimum and maximum available weekly hours,
flag specifying full or part time, training (what roles the
employee is qualified to fill).
Excel sheet with anticipated demand per outlet per role per day from
several weeks in the previous year.
Scanned copies of the sheets employees file with the weekly availability
and preferred hours.
Schedules for the last 6 weeks as generated by the current process.
This worksheet can aid you in writing a problem description. You can print
it and, in collaboration with the problem owner, fill in the Description
column with answers to the question asked for each section, plus any
additional pertinent information.
A comprehensive problem description is a prerequisite for developing your
initial model.[9]
The standard approach to problem formulation is to translate the problem
description generated in the previous section into mathematical equations,
specifically an objective subject to constraints.
Doing the Math
Although users with high-school mathematics can understand these models,
depending on your previous experience this step may be challenging. D‑Wave’s
training courses provided in the D‑Wave Learn program can reduce
learning time but if developing mathematical models is outside your company’s
expertise, it can make solid business sense to have D‑Wave’s Professional
Services organization handle this step for you via the D‑Wave Launch™ program.
Some developers find it
best to directly represent the equations in code rather than in writing.
You can try and see what works best for you.
The model you develop in this stage typically has the following elements:
Performance is sensitive to the model. As you develop your model consider
various formulations: developing a few different models can be beneficial in
that some might significantly outperform others.
The Getting Started with D-Wave Solvers guide walks you through some basic examples
of mathematical formulation, using very simple objectives and constraints,
which can be a gentle introduction to the concepts. Likewise, the
Ocean software documentation documentation
provides a series of code examples, for different levels of experience, which
include such formulations.
The Stating the Problem chapter of this guide provides references to examples
categorized by field and the Reformulating a Problem chapter describes various
techniques to mathematically formulate parts of your problem.
The D‑Wave website provides links to user applications.
D‑Wave Launch program: D‑Wave’s Professional Services organization, which works with customers
to accelerate their progress from getting started through production implementation.
Your application will likely have multiple parts, including the following:
Core optimization code
This is the part that implements your formulation of the problem and submits
it to a D‑Wave solver for solution. It is recommended that you implement
the model representing your problem,
formulated as described in the previous section, and manage the submission
using the Ocean SDK.
Handling inputs and presenting results
Your application may have rigidly defined inputs and expected outputs or, as
part of your work, you may have freedom to define input formats and how to
present solutions. Close collaboration with the problem owner and intended
users of the application on these parts can prevent mistaken presumptions
that might risk the project’s ultimate success.
Integration with other applications
Try to identify any needed integrations early: some might have long procurement
or development schedules.
It is recommended that you manage and schedule your application development over
multiple iterations of learning and improvement, as described in the next section.
Many users, even those experienced in
operations research,
find it challenging to finesse a working model into a performant one. If
your results fall short, especially on your first attempt to develop a
quantum application,
professional help
might be key to your project’s success.
A useful approach to implementing your formulated problem as a software application
includes the following steps of iterative development:
Build an initial prototype
For your initial prototype, start with small problem inputs and use
symbolic math, simple loops,
etc to build a model without worrying much about construction performance.
This prototype, which may also be considered a
proof of concept, might
be the first point in your development process that provides feedback on
its feasibility and likelihood of success. As such, you may be balancing
multiple conflicting needs; for example:
Speed to show initial results versus sufficient research to enable success
Demonstrating advantage on large problem instances versus minimal software
work on small instances
Clear presentation of results versus minimal coding work on outputs
Ease of troubleshooting versus performance
It can be helpful to define in advance the minimal requirements for the
initial prototype to ensure timely delivery and successful completion of
this important step. Take into consideration the complexity of the model,
the experience of the developers in the relevant fields (both the problem
and the quantum programming model), and the company’s scheduling requirements,
and aim for the achievable.
Increase scale, complexity, performance
Iteratively increase problem inputs up to the size
expected in your production environment. Input size affects not just
solution times but also the time and memory usage required to build the
model. As your model’s size increases, so does the importance of optimally
building the model.
Consider various techniques to reduce problem size:
presolvetechniques,
dropping (or even adding) constraints, using native discrete variables for
the hybrid CQM solver, etc.
Test outputs, update model, and repeat the previous step
Model validation includes many aspects; for example:
Comparisons with the current solution, between constrained and unconstrained
models (i.e. representing one or more constraints as
penalty models in the objective), between
different solvers, and for varying solver runtimes.
Various inputs, preferably inputs similar to those expected in your
production environment.
Multiple runs: results from heuristic solvers vary over executions for the
same input, so the performance of a single execution is inconclusive.
Often, initial models do not perform well and, before you can begin
increasing the problem scale, you may need to further simplify your model. It
might be that at this point your immediate goal is to just to achieve some
“base model” that produces results that are not wrong.
There are many options for simplifying your model to attain a working base
from which to then build up the needed, comprehensive model. For example,
Relax some of the constraints
Drop some components of the problem formulation
Explore some alternative formulations for at least some parts of the model
Bear in mind that there are often multiple ways you can view a problem;
for example, you could represent an input toggle switch as either a
binary variable (True or False) or a one-hot variable (ON or OFF) and you
might represent the
satisfiability (SAT)
problem \((x_1 \vee \overline{x}_2 ) \wedge (\overline{x}_1 \vee x_2)\)
of the Getting Started with D-Wave Solvers guide as either an objective to be minimized,
\(0.1 x_1 + 0.1 x_2 - 0.2 x_1 x_2\), or a constraint to be met,
\(x_1=x_2\).