This manual describes how to use Digital Annealer service and operation management procedures.
This manual is intended for users who develop programs and applications to solve combinatorial optimization
problems on Digital Annealer and who execute those programs and applications.
To fully benefit from this manual, the following knowledge is required:

Basic knowledge related to combinatorial optimization problems

Basic knowledge related to algorithms for combinatorial optimization problems such as quantum annealing and simulated annealing

Basic knowledge of Web APIs
This manual uses abbreviations and symbols.
 Product/Technology Name Abbreviations
Product/Technology Name  Abbreviation 

Google Chrome™ browser 
Google Chrome 
 About Symbols
Symbol  Meaning 

" " 
If the reference destination is another manual, the manual name is enclosed in " " 
In addition, the following markings are used.
CAUTION 
NOTE 
Explanation of terms used in this manual.
Term  Description 

Digital Annealer 
The quantuminspired digital technology architecture, capable of performing parallel, realtime optimization calculations at speed, with precision and on a scale classical computing cannot. 
Problem scale 
The number of variables that make up a combinatorial optimization problem. 
FujitsuDA3Solver 
The 3rd generation and 4th generation Digital Annealer solver which can handle large scale problem. The maximum problem scale can be solved is 100K (100,000) bits. 
FujitsuDA2PTSolver 
The 2nd generation Digital Annealer solver with the parallel tempering feature. The maximum problem scale can be solved is 8192 bits. 
FujitsuDA2Solver 
The 2nd generation Digital Annealer solver. The maximum problem scale can be solved is 8192 bits. 
FujitsuDA2MixedModeSolver 
The 2nd generation Digital Annealer solver. The maximum problem scale can be solved is 8192 bits. 
Higher Order Binary Optimization (HOBO) 
An expression of combinatorial optimization problems with highorder monomials or highorder polynomials. 
Quadratic Unconstrained Binary Optimization (QUBO) 
An expression of combinatorial optimization problems with quadratic polynomials. 
Web API 
An interface used between applications and between systems for calling over a network using the HTTP protocol. 
Azure Blob Storage 
Object storage provided by Microsoft. FujitsuDA3Solver can calclulate the problem data (QUBO) uploaded to the Azure BLob Storage. The maximum size of the problem data (QUBO) is 20GB. You have to make the contract for Micorsoft Azure to use Azure Blob Storage. 
Exportation/release of this document may require necessary procedures in accordance with the regulations of your resident country and/or US export control laws.
The Customer acknowledges and agrees that the Service is designed, developed and manufactured as contemplated
for general use, including without limitation, general office use, personal use, household use, and ordinary industrial
use, but is not designed, developed and manufactured as contemplated for use accompanying fatal risks or dangers
that, unless extremely high safety is secured, could lead directly to death, personal injury, severe physical damage or
other loss (hereinafter "High Safety Required Use"), including without limitation, nuclear reaction control in nuclear
facility, aircraft flight control, air traffic control, mass transport control, medical life support system, missile launch
control in weapon system.
The Customer, shall not use the Service without securing the sufficient safety required for the High Safety Required Use.
In addition, Fujitsu (or other affiliate’s name) shall not be liable against the Customer and/or any third party for any
claims or damages arising in connection with the High Safety Required Use of the Service.

Google is a trademark or registered trademark of Google Inc.

Microsoft, Azure are trademarks or registered trademarks of Microsft Corporation.

Other company names and product names are trade names, registered trademarks, or trademarks of their respective companies.

Trademark symbols are not always added to names such as company names, system names, and product names.
1. Overview
This chapter describes an overview of Digital Annealer.
1.1. What Is Digital Annealer?
Digital Annealer is a digital circuit designed with inspiration from a computation method that uses quantum
phenomena. Using annealing methods enables it to solve largescale combinatorial optimization problems rapidly.
Unlike conventional computers, programming is not required, and computation is enabled only by setting parameters.
In addition, adoption of a fully connected architecture enabling any element to freely exchange signals has enabled
calculation of computationally intensive and complicated problems that have been difficult to solve with classical
computers or quantum annealing machines.
Digital Annealer has Quadratic Unconstrained Binary Optimization (QUBO) as its input data and searches for
combinations to minimize the following evaluation function (energy).
\(\displaystyle{E(x) = \sum_{i} \sum_{j>i} J_{ij}x_{i}x_{j} + \sum_{i}h_{i}x_{i} + c}\)
The condition of the combination is represented by a binary variable \(x \; (x \in \{0, 1\})\).
1.1.1. Digital Annealer Service
Digital Annealer service is a cloud service used to rapidly solve combinatorial optimization problems using software for quantum computers and the hardware equipped with the optimization circuit Digital Annealer.
2. Starting the Use of Services
This chapter describes how to start the use of Digital Annealer service.
2.1. Account Registration
To use the Digital Annealer service, access the Digital Annealer account creation page at the following URL in the
Digital Annealer portal and register an account.
https://portal.aispf.global.fujitsu.com/#/digitalannealer?lang=ja
https://portal.aispf.global.fujitsu.com/#/digitalannealer?lang=en

3. Using Services
This chapter describes how to use Digital Annealer service and other points to be noted.
3.1. Provided APIs
The APIs provided in the Web API service are as follows:
3.1.1. QUBO APIs
ContractType  API  Type  Description 

Standard 
qubo/hobo2qubo 
Synchronous (sync) 
Converts Higher Order Binary Optimization (HOBO) to Quadratic Unconstrained Binary Optimization (QUBO) 
qubo/solve 
Finds optimal solution for QUBO using FujitsuDA2PTSolver, FujitsuDA2Solver, or FujitsuDA2MixedModeSolver. The problem scale that can be calculated is 1024 bits or less. 

Premium2 
qubo/hobo2qubo 
Synchronous (sync) 
Converts Higher Order Binary Optimization (HOBO) to Quadratic Unconstrained Binary Optimization (QUBO) 
qubo/solve 
Finds optimal solution for QUBO using FujitsuDA2PTSolver, FujitsuDA2Solver, or FujitsuDA2MixedModeSolver. The problem scale that can be calculated is 2048 bits or less. 

async/qubo/solve 
Asynchronous (async) 
Registers a job to find optimal solution for QUBO using FujitsuDA2PTSolver, FujitsuDA2Solver, or FujitsuDA2MixedModeSolver. The problem scale that can be calculated is 8192 bits or less. 

async/jobs 
Retrieves a list of jobs 

async/jobs/result 
Retrieves or deletes the result of a job 

async/jobs/cancel 
Cancels a job 

Developer4c 
qubo/hobo2qubo 
Synchronous (sync) 
Converts Higher Order Binary Optimization (HOBO) to Quadratic Unconstrained Binary Optimization (QUBO) 
async/qubo/solve 
Asynchronous (async) 
Registers a job to find optimal solution for QUBO using FujitsuDA3Solver. The problem scale that can be calculated is 100K (100,000) bits or less. 

async/jobs 
Retrieves a list of jobs 

async/jobs/result 
Retrieves or deletes the result of a job 

async/jobs/cancel 
Cancels a job 

3.1.2. Optimization Solutions APIs
Contract Type  API  Description 

Warehouse Pickup Optimization API 
picking/mapfile 
Uploads (POST) or downloads (GET) a map file (a list of the shelves and aisles in the warehouse) 
picking/showroute 
Finds the shortest pickup route with its total distance 
The Optimization Solutions APIs can only be used in Japan region. 

4. How to Use the QUBO APIs
This chapter describes the procedure to solve combinatorial optimization problems using mathematical models.
4.1. Calculation Precision of Digital Annealer
Digital Annealer encodes the coefficient of a binary quadratic polynomial as an integer.
Calculation precision of Digital Annealer is as follows. To find the optimal solution,
it is recommended to specify coefficients in a QUBO expression within the range of calculation precision of Digital Annealer.
Solver  Scale of the Problem  Quadratic Term  Linear Term 

FujitsuDA3Solver 
Up to 100,000 bits 
64 bits signed integer (*1) 
76 bits signed integer 
FujitsuDA2PTSolver 
Up to 4096 bits 
64 bits signed integer (*1) 
76 bits signed integer 
From over 4096 bits to 8192 bits 
16 bits signed integer 
76 bits signed integer 
*1: The available range is \(2^{63} + 1\) to \(2^{63}  1\)
4.1.1. Scaling and Rounding
This is a feature that automatically converts a QUBO that has one or more terms whose coefficient is out of the calculation precision range of
Digital Annealer or not an integer into a QUBO that has only terms whose coefficient is integers in the calculation precision range of Digital Annealer.
If one of the following solvers is used, this function is enabled for annealing.

FujitsuDA3Solver

FujitsuDA2PTSolver

FujitsuDA2Solver (with "false" specified for the expert_mode parameter)

FujitsuDA2MixedModeSolver
For the range of coefficients in a QUBO expression that can be specified for qubo/solve and async/qubo/solve, refer to "Digital Annealer API Reference (QUBO API V4)", "Digital Annealer API Reference (QUBO API V3c)", "Digital Annealer API Reference (QUBO API V3)", or "Digital Annealer API Reference (QUBO API V2)." 
4.2. API Usage
For details about the specification and usage of the provided APIs, refer to "Digital Annealer API Reference (QUBO API V4)", "Digital Annealer API Reference (QUBO API V3c)", "Digital Annealer API Reference (QUBO API V3)", or "Digital Annealer API Reference (QUBO API V2)."

If you use FujitsuDA3Solver, please refer to "Digital Annealer API Reference (QUBO API V4)", "Digital Annealer API Reference (QUBO API V3c)" or "Digital Annealer API Reference (QUBO API V3)."

If you use FujitsuDA2PTSolver, FujitsuDA2Solver, or FujitsuDA2MixedModeSolver, please refer to "Digital Annealer API Reference (QUBO API V2)."
4.2.1. Azure Blob Storage
If you made the contract for QUBO API V4 or QUBO API V3c (Developer4c, Professional4c, Developer4, Professional4 or Professional3c), it is possible to calculate QUBO up to 20GB by using Azure Blob Storage Storage. You have to make the contract for Micorsoft Azure to use Azure Blob Storage. If you use the Azure Blob Storage with Digital Annnealer, the following specification is recommended.
item  value 

Performance/Access tires 
Standard/Hot or more higher 
Redundancy(replication) 
Locally redundant storage(LRS) or higher 
Region 
Japan East 
Overview of how to use Azure Blob Storage is as shown below

Upload problem data (QUBO) to Azure Blob Storage

Send a reqauest with specifying Azure Blob Storage storage account and SAS token
Example: Register a job to solve the uploaded problem with QUBO API V4 Specify the storage account name in XStorageAccountName of the request header. Specify the container name in bucket_name of the request body. Specify the BLOB SAS token in XBlobSasToken of the request header.
Storage Account Name: samplestorage Bucket Name (Container Name): sample BLOB SAS Token: sp=racwdl&st=20210720T11:58:45Z&se=20210720T19:58:45Z&spr=https&sv=20200804&sr=c&sig=Gf3coiBWO0Y8FrGnw82OI0zBB1jpDTRJF8o%2FdGYNEM0%3D
$ cat samplequbo.json { "fujitsuDA3": { "time_limit_sec": 10 }, "object_format": "json", "bucket_name": "sample", "binary_polynomial_object_name": "samplebinarypolynomial", "penalty_binary_polynomial_object_name": "samplepenaltybinarypolynomial" }
$ curl v k X POST https://api.aispf.global.fujitsu.com/da/v4/async/qubo/solve \ H 'ContentType: application/json' \ H 'XAccessToken: 6470a9c268cfbe17cd7ad744c12cbc9f0129462aae818156b5224826f4ef0591' \ H 'XStorageAccountName: samplestorage' \ H 'XBlobSasToken: sp=racwdl&st=20210720T11:58:45Z&se=20210720T19:58:45Z&spr=https&sv=20200804&sr=c&sig=Gf3coiBWO0Y8FrGnw82OI0zBB1jpDTRJF8o%2FdGYNEM0%3D' \ d @samplequbo.json {"job_id":"b23745633e80425cbffbc6eeeff3c4df212012224838091"}

Access control using Azure Blob Storage storage account and SAS token

Download problem data (QUBO) from Azure Blob Storage

Send result
4.3. Notes
This section describes the points to be noted to use the QUBO APIs.

When a request is issued, even though the wrong parameter name (key) is specified (including spelling errors), the specified parameter is ignored and the process may continue. For this reason, an unexpected processing result may be obtained. Be careful to specify parameters.

A running job cannot be stopped after a synchronous qubo/solve request is issued.
Even though a request is issued by mistake or a process takes a long time, please wait until the process ends.
However, if you use an asynchronous async/qubo/solve request, then you can cancel the job before it is executed (by using async/jobs/cancel). 
When a new qubo/solve request is issued during the annealing process performed by Digital Annealer, it waits for the completion of any running annealing processes.
The new request process starts after the completion of the running annealing processes. 
When using FujitsuDA3Solver, the calculation time (solve_time) is determined by the value (in seconds) specified in the following parameter that specifies the upper limit of execution time.

time_limit_sec parameter


When using FujitsuDA2PTSolver, FujitsuDA2Solver, or FujitsuDA2MixedModeSolver, the time required for annealing (anneal_time) is determined by the values specified for the following parameters.

number_iterations parameter

number_replicas parameter (for FujitsuDA2PTSolver)

number_runs parameter (for FujitsuDA2Solver or FujitsuDA2MixedModeSolver)
Example: In the case of number_iterations = 10000000 and number_runs = 100 Using FujitsuDA2Solver or FujitsuDA2MixedModeSolver: Approximately 5 seconds
If a value is multiplied by 10, 100, …, anneal_time is also multiplied by 10, 100, … in direct proportion, therefore be careful to specify these values.


If the problem scale (the number of bits) is large, the scaling process, recalculation of energy, and other calculations that use CPU may take some time. The amount of time depends on the setting values that you specified for the solver and parameter.

The following parameters have lower and upper limit values.
Solver
Parameter
Lower Limit
Upper Limit
Synchronous
Asynchronous
FujitsuDA3Solver
time_limit_sec
1

1800
FujitsuDA2PTSolver
number_replicas
26
128
128
number_iterations
1
2000000000
2000000000
number_replicas \(\times\)number_iterations
100000
25600000000
256000000000
FujitsuDA2Solver
FujitsuDA2MixedModeSolvernumber_runs
16
128
128
number_iterations
1
2000000000
2000000000
number_runs \(\times\)number_iterations
100000
25600000000
256000000000

The annealing temperature schedule for the FujitsuDA2Solver or FujitsuDA2MixedModeSolver is defined by the following parameters: temperature_decay, temperature_interval, temperature_mode, and temperature_start.
For example, with "number_iterations = 100000" and "temperature_interval = 100" as shown below, the temperature is changed to the temperature calculated in the mode specified with the temperature_mode parameter every 100 searches.
If the number of searches per anneal (number_iterations) is 100000, the temperature is changed 1000 times (the result of \(100000 \div 100\)). 
In a cycle of annealing with FujitsuDA2Solver or FujitsuDA2MixedModeSolver, searches are performed the number of times specified with the number_iterations parameter at each temperature specified with the annealing temperature schedule as mentioned above, and the annealing is repeated the number of times specified with the number_runs parameter.
For both parameters, specifying a larger value takes a longer time. 
The offset_increase_rate parameter for FujitsuDA2PTSolver, FujitsuDA2Solver or FujitsuDA2MixedModeSolver is used to accelerate searches. If a state transition does not occur due to being trapped by a local solution, this parameter enables the process to increase the energy using the rate specified in offset_increase_rate for each search to improve the probability of a state transition. The energy that is accumulated according to offset_increase_rate is reset if a state transition occurs. To disable the offset_increase_rate parameter, specify 0 (zero).

With the FujitsuDA2Solver or FujitsuDA2MixedModeSolver, to specify at least one of the following parameters, be sure to specify all of the following five parameters and the number_iterations parameter:

offset_increase_rate

temperature_decay

temperature_interval

temperature_mode

temperature_start


With the FujitsuDA2Solver or FujitsuDA2MixedModeSolver, the temperature_decay, temperature_interval, and temperature_start parameters are related to the temperature schedule, and optimal solutions can be obtained only if appropriate values are specified, especially for those parameters.
There are countless combinations of parameter values, requiring a tuning operation to search for an appropriate value to obtain an optimal solution.
With the FujitsuDA2PTSolver (using the parallel tempering function), specifying the following parameters is not required, which considerably reduces the time required for tuning.
noise_model

temperature_decay

temperature_interval

temperature_mode

temperature_start

5. How to Use the Optimization Solutions APIs
This chapter describes the procedure used to solve combinatorial optimization problems specialized for business.
The Optimization Solutions APIs can only be used in Japan region. 
5.1. Warehouse Pickup Optimization API
Warehouse Pickup Optimization API is a Web API service for finding "the shortest route (pickup route: closed circuit)" to retrieve (pick up) specified products from multiple shelves or other areas in a warehouse.
5.1.1. Procedure for Using the API
The following section describes the procedure for finding the pickup route with the shortest distance.

Create a map file

Upload and download a map file

Optimize the pickup route
1. Create a map file
To use the Warehouse Pickup Optimization API, you must create a map file on a client that includes information about the position of shelves and aisles in the warehouse where the pickup is performed (the pickup area).

Things to prepare before creating a map file

Ground plan of the pickup area (scaled map)

Position of the shelves on which the products targeted for pickup are located


How to create a map file
 Step(1)

In the ground plan (scaled map) of the pickup area, record shelves on which the products targeted for pickup are located, and aisles it is possible to pass through for performing a pickup. (refer to "Example of ground plan of pickup area" in "Figure 2: Map File Creation Examples")
 Step(2)

Place a plot point (a unique identification name in each area) on each shelf and point passed through along the aisles recorded in Step(1), and find the coordinates (absolute coordinates) of each plot point.
Plot points are also placed at the intersections of aisles, corners, and other places where the shelves and aisles connect.  Step(3)

Create a map file (.json) based on the coordinates found in Step(2).
The sets of coordinates for each plot point in the area defined as nodes, and the routes between the plot points defined as nodes that it is possible to pass through for performing a pickup are defined as edges. (refer to "Map file creation example 1" in "Figure 2: Map File Creation Examples")
If there are multiple areas, the nodes and edges are defined for each area, and the distances and routes between the areas are defined as cedges. (refer to "Map file creation example 2" in "Figure 2: Map File Creation Examples")
The direction of traffic for the routes defined as edges and cedges (twoway traffic (false) or oneway traffic (true)) is defined with directed.
For details about the data format of the map file, refer to "Digital Annealer API Reference (Warehouse Picup Optimization API)."

Map file creation is also available for order through Digital Annealer technical service (paid service). 
2. Upload and download a map file
Upload a map file created using "POST picking/mapfile." Then download (display) the uploaded map file using "GET picking/mapfile" and check that the map file is registered correctly.
For details about the specification of the API, refer to "Digital Annealer API Reference (Warehouse Picup Optimization API)."
3. Optimize the pickup route
Find the shortest pickup route using "POST picking/showroute."
For details about the specification of the API, refer to "Digital Annealer API Reference (Warehouse Picup Optimization API)."

The total distance ("distance") is expressed in the unit defined for the coordinates of the plot points of the shelves
and aisles recorded in the map file. Response example： { "distance": 1672.0, "route": [ {"area": "A1F", "node": "DEPOT"}, {"area": "A1F", "node": "F52"}, {"area": "A1F", "node": "F32"}, {"area": "A1F", "node": "R4"}, {"area": "A2F", "node": "R1"}, {"area": "A2F", "node": "B46"}, {"area": "A2F", "node": "A10"}, {"area": "A2F", "node": "B45" ] } 
 Document History
Edition  Date  Modified location  Description 

First 
January 2020 
Whole document 
Newly created 
Second 
January 2021 
Whole document 
Added descriptions about FujitsuDA3Solver 
Third 
August 2021 
Whole document 
Updated descriptions about QUBO API V3 
Forth 
May 2022 
Whole document 
Added descriptions about QUBO API V4 
Fifth 
December 2022 
Whole document 
Added descriptions about QUBO API V3c 