<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xml:lang="EN" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" article-type="research-article">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Comput. Sci.</journal-id>
<journal-title>Frontiers in Computer Science</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Comput. Sci.</abbrev-journal-title>
<issn pub-type="epub">2624-9898</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fcomp.2023.1238988</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Computer Science</subject>
<subj-group>
<subject>Original Research</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>Tutorial: calibration refinement in quantum annealing</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author">
<name><surname>Chern</surname> <given-names>Kevin</given-names></name>
<uri xlink:href="http://loop.frontiersin.org/people/2292244/overview"/>
</contrib>
<contrib contrib-type="author">
<name><surname>Boothby</surname> <given-names>Kelly</given-names></name>
</contrib>
<contrib contrib-type="author">
<name><surname>Raymond</surname> <given-names>Jack</given-names></name>
</contrib>
<contrib contrib-type="author">
<name><surname>Farr&#x000E9;</surname> <given-names>Pau</given-names></name>
<uri xlink:href="http://loop.frontiersin.org/people/2425656/overview"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name><surname>King</surname> <given-names>Andrew D.</given-names></name>
<xref ref-type="corresp" rid="c001"><sup>&#x0002A;</sup></xref>
</contrib>
</contrib-group>
<aff><institution>D-Wave</institution>, <addr-line>Burnaby, BC</addr-line>, <country>Canada</country></aff>
<author-notes>
<fn fn-type="edited-by"><p>Edited by: Susan Mniszewski, Los Alamos National Laboratory (DOE), United States</p></fn>
<fn fn-type="edited-by"><p>Reviewed by: Jaka Vodeb, Helmholtz Association of German Research Centres (HZ), Germany; Alejandro Lopez, Los Alamos National Laboratory (DOE), United States; Andrea Delgado, Oak Ridge National Laboratory (DOE), United States</p></fn>
<corresp id="c001">&#x0002A;Correspondence: Andrew D. King <email>aking&#x00040;dwavesys.com</email></corresp>
</author-notes>
<pub-date pub-type="epub">
<day>15</day>
<month>09</month>
<year>2023</year>
</pub-date>
<pub-date pub-type="collection">
<year>2023</year>
</pub-date>
<volume>5</volume>
<elocation-id>1238988</elocation-id>
<history>
<date date-type="received">
<day>12</day>
<month>06</month>
<year>2023</year>
</date>
<date date-type="accepted">
<day>17</day>
<month>08</month>
<year>2023</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#x000A9; 2023 Chern, Boothby, Raymond, Farr&#x000E9; and King.</copyright-statement>
<copyright-year>2023</copyright-year>
<copyright-holder>Chern, Boothby, Raymond, Farr&#x000E9; and King</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/"><p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p></license>
</permissions>
<abstract>
<p>Quantum annealing has emerged as a powerful platform for simulating and optimizing classical and quantum Ising models. Quantum annealers, like other quantum and/or analog computing devices, are susceptible to non-idealities including crosstalk, device variation, and environmental noise. Compensating for these effects through calibration refinement or &#x0201C;shimming&#x0201D; can significantly improve performance but often relies on <italic>ad-hoc</italic> methods that exploit symmetries in both the problem being solved and the quantum annealer itself. In this tutorial, we attempt to demystify these methods. We introduce methods for finding exploitable symmetries in Ising models and discuss how to use these symmetries to suppress unwanted bias. We work through several examples of increasing complexity and provide complete Python code. We include automated methods for two important tasks: finding copies of small subgraphs in the qubit connectivity graph and automatically finding symmetries of an Ising model via generalized graph automorphism. We conclude the tutorial by surveying additional methods, providing practical implementation tips, and discussing limitations and remedies of the calibration procedure. Code is available at: <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial">https://github.com/dwavesystems/shimming-tutorial</ext-link>.</p></abstract>
<kwd-group>
<kwd>quantum computing</kwd>
<kwd>quantum annealing</kwd>
<kwd>D-Wave</kwd>
<kwd>calibration</kwd>
<kwd>quadratic unconstrained binary optimization</kwd>
<kwd>Ising</kwd>
</kwd-group>
<counts>
<fig-count count="16"/>
<table-count count="0"/>
<equation-count count="12"/>
<ref-count count="21"/>
<page-count count="15"/>
<word-count count="9479"/>
</counts>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-at-acceptance</meta-name>
<meta-value>Theoretical Computer Science</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1">
<title>1. Background</title>
<sec>
<title>1.1. Introduction to quantum annealing</title>
<p>Quantum annealing (QA; Kadowaki and Nishimori, <xref ref-type="bibr" rid="B9">1998</xref>; Johnson et al., <xref ref-type="bibr" rid="B8">2011</xref>) is a computing approach that physically realizes a system of Ising spins in a transverse magnetic field. A common application of QA is to find low-energy spin states of the Ising problem Hamiltonian as follows:</p>
<disp-formula id="E1"><label>(1)</label><mml:math id="M1"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:munder></mml:mstyle><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>&#x0003C;</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:munder></mml:mstyle><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msubsup><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Here, <inline-formula><mml:math id="M2"><mml:msubsup><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>z</mml:mi></mml:mrow></mml:msubsup></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msubsup><mml:mo>&#x02208;</mml:mo><mml:msup><mml:mrow><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula> is a set of Pauli <italic>z</italic>-operators, which can be thought of as a vector of classical &#x000B1;1 Ising spins; <italic>h</italic><sub><italic>i</italic></sub> denotes a longitudinal field (bias) on spin <italic>i</italic>, and <italic>J</italic><sub><italic>ij</italic></sub> (used interchangeably with <italic>J</italic><sub><italic>i,j</italic></sub> depending on context) denotes a coupling (quadratic interaction) between spins <italic>i</italic> and <italic>j</italic>. Minimizing <inline-formula><mml:math id="M3"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> is intractable, i.e., NP-hard (Barahona, <xref ref-type="bibr" rid="B1">1982</xref>).</p>
<p>QA adds to <inline-formula><mml:math id="M4"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> to an initial driving Hamiltonian as follows:</p>
<disp-formula id="E2"><label>(2)</label><mml:math id="M5"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>D</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mstyle displaystyle="true"><mml:munder class="msub"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:munder></mml:mstyle><mml:msubsup><mml:mrow><mml:mi>&#x003C3;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mi>x</mml:mi></mml:mrow></mml:msubsup><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>The ground state of <inline-formula><mml:math id="M6"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>D</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, which is a uniform quantum superposition of all classical states, is easy to prepare. QA guides a time-dependent Hamiltonian <inline-formula><mml:math id="M7"><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> from <inline-formula><mml:math id="M8"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>D</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> to <inline-formula><mml:math id="M9"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> by linearly combining <inline-formula><mml:math id="M10"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>D</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula><mml:math id="M11"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> as follows:</p>
<disp-formula id="E3"><label>(3)</label><mml:math id="M12"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo>&#x00393;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>D</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mrow><mml:mi mathvariant="script">J</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>s</italic> is a unitless annealing parameter ranging from 0 to 1. Unless stated, <italic>s</italic> is simply <italic>t</italic>/<italic>t</italic><sub><italic>a</italic></sub>: time normalized by annealing time. The functions &#x00393;(<italic>s</italic>) and <inline-formula><mml:math id="M13"><mml:mrow><mml:mi mathvariant="script">J</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> define the <italic>annealing schedule</italic>: &#x00393;(<italic>s</italic>) decreases toward 0 as a function of <italic>s</italic>, and <inline-formula><mml:math id="M14"><mml:mrow><mml:mi mathvariant="script">J</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> increases as a function of <italic>s</italic>; <inline-formula><mml:math id="M15"><mml:mo>&#x00393;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0226B;</mml:mo><mml:mrow><mml:mi mathvariant="script">J</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>. Units are GHz, convertible to Joules by multiplication by &#x0210F; (reduced Planck constant). An example is shown in <xref ref-type="fig" rid="F1">Figure 1</xref>.</p>
<fig id="F1" position="float">
<label>Figure 1</label>
<caption><p>Annealing schedule for Hamiltonian (3) in a D-Wave&#x02122; Advantage&#x02122; processor. &#x00393;(<italic>s</italic>) and <inline-formula><mml:math id="M16"><mml:mrow><mml:mi mathvariant="script">J</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> control the magnitude of quantum fluctuations and the Ising energy scale, respectively. These values vary from one processor to another.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0001.tif"/>
</fig>
</sec>
<sec>
<title>1.2. Calibration imperfections and refinement</title>
<p>Quantum processing units (QPUs, in this case quantum annealers) are typically made available with a single one-size-fits-all calibration. Non-idealities in the calibration can arise from a number of sources. For example, small fluctuations in the magnetic environment can bias qubits in one direction or the other. Moreover, <italic>crosstalk</italic>, in which a Hamiltonian term, e.g., a programmed coupler <italic>J</italic><sub><italic>ij</italic></sub>, can cause an undesired perturbation in another Hamiltonian term corresponding to a physically nearby device, e.g., a bias field <italic>h</italic><sub><italic>i</italic></sub>.</p>
<p>In short, no calibration is perfect. Oftentimes, in-depth studies of a single system (Ising model) or ensemble of systems (e.g., a set of realizations of a spin-glass model) can be improved by suppressing crosstalk and other non-idealities. This is achieved by &#x0201C;shimming:&#x0201D; inferring statistical features of an ideal annealer and tuning the Hamiltonian to produce these features. An ideal annealer, in this study, is defined simply as one that respects symmetries in the Hamiltonian&#x02014;each qubit behaves identically and each coupler behaves identically.</p>
<p>Variations on the methods described herein have been used in many studies (King et al., <xref ref-type="bibr" rid="B12">2018</xref>, <xref ref-type="bibr" rid="B11">2021a</xref>,<xref ref-type="bibr" rid="B13">b</xref>,<xref ref-type="bibr" rid="B15">c</xref>, <xref ref-type="bibr" rid="B16">2022</xref>, <xref ref-type="bibr" rid="B14">2023</xref>; Kairys et al., <xref ref-type="bibr" rid="B10">2020</xref>; Nishimura et al., <xref ref-type="bibr" rid="B21">2020</xref>). Often, when behavior of the system relies on precise maintenance of energy degeneracy between states, or energy splitting from the transverse field, the results are highly sensitive to these tunings. Particularly for the simulation of exotic magnetic phases, calibration refinement is an essential ingredient of successful experiments. However, so far the discussion of these methods has mostly been relegated to <xref ref-type="supplementary-material" rid="SM1">Supplementary material</xref>. Here, our aim is to provide an accessible guide that will encourage the use of these powerful but simple methods.</p>
<p>Specific visual demonstrations of the benefit of these methods &#x0201C;in the wild&#x0201D; include:</p>
<list list-type="bullet">
<list-item><p>Frustrated 2D lattice, King et al. (<xref ref-type="bibr" rid="B12">2018</xref>), Extended Data Figure 7.</p></list-item>
<list-item><p>Diluted ferromagnet, Nishimura et al. (<xref ref-type="bibr" rid="B21">2020</xref>), Figures 34&#x02013;35.</p></list-item>
<list-item><p>1D quantum Ising chain, King et al. (<xref ref-type="bibr" rid="B16">2022</xref>), Supplementary Figures S3, S4.</p></list-item>
<list-item><p>3D quantum spin glasses, King et al. (<xref ref-type="bibr" rid="B14">2023</xref>), Supplementary Figures S8&#x02013;S9.</p></list-item>
</list>
<p>The tutorial is organized as follows. In the remainder of this section, we introduce concepts that form the bases of the QPU calibration procedure. In Section 2, we illustrate the essence of our approach through a toy example. In Section 3, we extend the method and improve calibration efficiency by exploiting symmetries in a given model. In Section 4, we introduce a non-trivial system to demonstrate additional concepts useful for realistic applications. Collectively, these sections provide a comprehensive walkthrough of the calibration procedure. In Section 5, we survey additional methods for narrower use cases of the QPU. Finally, we provide practical tips and considerations in Section 6 and conclude the tutorial in Section 7.</p>
</sec>
<sec>
<title>1.3. Inferring statistical features: qubit and coupler orbits</title>
<p>The approach described in this tutorial can be stated simply and generically. In theory, two observables of a QPU output are expected to be identical due to symmetries in the Ising model being studied. In experiment, they can differ systematically. We tune Hamiltonian terms to reduce these differences. In theory, symmetries in an Ising model admit identical expectation values of observables.<xref ref-type="fn" rid="fn0001"><sup>1</sup></xref> However, empirical averages over many realizations of these observables (from a QPU) may differ systematically.<xref ref-type="fn" rid="fn0002"><sup>2</sup></xref> We tune Hamiltonian terms to reduce the discrepancy between the expected value and observed averages. For example, given a Hamiltonian consisting of a single qubit with no bias, <inline-formula><mml:math id="M17"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>0</mml:mn><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, we expect to observe a mean spin of 0 for <italic>s</italic><sub>1</sub>. However, this observed quantity may deviate from 0 systematically; we, thus, attempt to correct this deviation by perturbing the Hamiltonian.</p>
<p>In this study, we only consider one- and two-spin observables&#x02014;spin magnetizations and frustration probabilities&#x02014;in part because they can be fine-tuned easily using the available programmable terms in the QPU. A call to the QPU typically results in a number of classical samples, which we set to 100 for all examples. From these samples, we can compute a magnetization as follows:</p>
<disp-formula id="E4"><label>(4)</label><mml:math id="M18"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>&#x02329;</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x0232A;</mml:mo></mml:mrow><mml:mo>&#x02208;</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>For each spin <italic>s</italic><sub><italic>i</italic></sub>, a <italic>frustration probability</italic> is as follows:</p>
<disp-formula id="E5"><label>(5)</label><mml:math id="M19"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x0002B;</mml:mo><mml:mtext class="textrm" mathvariant="normal">sign</mml:mtext><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02329;</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x0232A;</mml:mo></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:mfrac><mml:mo>&#x02208;</mml:mo><mml:mrow><mml:mo>[</mml:mo><mml:mrow><mml:mn>0</mml:mn><mml:mo>,</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo>]</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>For each coupler <italic>J</italic><sub><italic>i,j</italic></sub>; <italic>f</italic><sub><italic>i,j</italic></sub> is the observed probability of the coupler having a positive contribution to the energy in <inline-formula><mml:math id="M20"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>.</p>
<p>This raises the first question: how do we identify observables that should be identical in expectation? The answer is through symmetries of the Ising model under spin relabelling and gauge transformation (discussed below).<xref ref-type="fn" rid="fn0003"><sup>3</sup></xref> We understand and formalize these symmetries&#x02014;and automate their detection&#x02014;through <italic>graph isomorphisms</italic> (especially automorphisms) and generalizations (Godsil and Royle, <xref ref-type="bibr" rid="B5">2001</xref>). We understand and formalize these symmetries&#x02014;and automate their detection&#x02014;through <italic>graph isomorphisms</italic> (especially automorphisms) and generalizations. We briefly introduce the concept of graph automorphisms and <italic>orbits</italic> below (see Godsil and Royle, <xref ref-type="bibr" rid="B5">2001</xref> for a more complete treatment). Notably, the symmetries we find and exploit here are a subset of all possible symmetries.</p>
<p>Given a graph <italic>G</italic> &#x0003D; (<italic>V, E</italic>) with vertex and edge sets <italic>V, E</italic>, a graph automorphism is a mapping &#x003C0;:<italic>V</italic> &#x021A6; <italic>V</italic> such that (&#x003C0;(<italic>u</italic>), &#x003C0;(<italic>v</italic>)) &#x02208; <italic>E</italic> if and only if (<italic>u, v</italic>) &#x02208; <italic>E</italic>. Intuitively, a graph automorphism is an adjacency-preserving relabelling of vertices. Two vertices <italic>u, v</italic> &#x02208; <italic>V</italic> are said to belong in the same <italic>vertex orbit</italic> if there exists an automorphism mapping <italic>u</italic> to <italic>v</italic> (or <italic>v</italic> to <italic>u</italic>). If <italic>u, v</italic> &#x02208; <italic>V</italic> belong in the same vertex orbit, the edges incident to <italic>u</italic> or <italic>v</italic> also belong to the same <italic>edge orbit</italic>.</p>
<p>We now relate the definitions of graph automorphisms and orbits back to our goal of detecting and exploiting symmetries. These symmetries admit two types of equivalence relations on an Ising model <inline-formula><mml:math id="M21"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>: one on the qubits and the other on the couplers. We call the equivalence classes <italic>qubit orbits</italic> and <italic>coupler orbits</italic>, respectively. We use notation <inline-formula><mml:math id="M22"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> for a qubit orbit containing spin <italic>s</italic><sub><italic>i</italic></sub>, and <inline-formula><mml:math id="M23"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> for a coupler orbit containing coupler (<italic>s</italic><sub><italic>i</italic></sub>, <italic>s</italic><sub><italic>j</italic></sub>). We define them as having the following properties guaranteed by symmetry in an ideal annealer:</p>
<list list-type="bullet">
<list-item><p>All qubits in the same orbit have the same expected magnetization.</p></list-item>
<list-item><p>All couplers in the same orbit have the same frustration probabilities.</p></list-item>
</list>
<p>Formally, a set <inline-formula><mml:math id="M24"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:math></inline-formula> is said to be a qubit orbit if <inline-formula><mml:math id="M25"><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02208;</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:math></inline-formula>, then <italic>m</italic><sub><italic>i</italic></sub> &#x0003D; <italic>m</italic><sub><italic>j</italic></sub>. Similarly, a set <inline-formula><mml:math id="M26"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:math></inline-formula> is said to be a coupler orbit if <inline-formula><mml:math id="M27"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>l</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x02208;</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:math></inline-formula>, then <italic>f</italic><sub><italic>i,j</italic></sub> &#x0003D; <italic>f</italic><sub><italic>k,l</italic></sub>.</p>
<p>For example, consider the Hamiltonian <inline-formula><mml:math id="M28"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>h</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> for <italic>h</italic> &#x02260; 0. The two <italic>independent</italic> spins <italic>s</italic><sub>1</sub>, <italic>s</italic><sub>3</sub> can be trivially relabeled (permuted) by each other, thus the two qubits belong to the same qubit orbit; <italic>s</italic><sub>2</sub> belongs in its own qubit orbit as it does not have the same magnetization as <italic>s</italic><sub>1</sub>, <italic>s</italic><sub>3</sub>. Now, let us consider the Hamiltonian <inline-formula><mml:math id="M29"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>J</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>J</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> for <italic>J</italic> &#x02260; 0. In this case, (<italic>s</italic><sub>1</sub>, <italic>s</italic><sub>2</sub>) and (<italic>s</italic><sub>2</sub>, <italic>s</italic><sub>3</sub>) exist in the same coupler orbit because <italic>s</italic><sub>1</sub>, <italic>s</italic><sub>3</sub> can be swapped while preserving the couplers in <inline-formula><mml:math id="M30"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>; the permutation preserves adjacency structures. As a non-example, let us consider the Hamiltonian <inline-formula><mml:math id="M31"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>J</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mn>2</mml:mn><mml:mi>J</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>. In this case, (<italic>s</italic><sub>1</sub>, <italic>s</italic><sub>2</sub>) and (<italic>s</italic><sub>2</sub>, <italic>s</italic><sub>3</sub>) no longer exist in the same coupler orbit because swapping <italic>s</italic><sub>1</sub>, <italic>s</italic><sub>3</sub> no longer preserves the couplers in <inline-formula><mml:math id="M32"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi><mml:mo>,</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>.</p>
<p>Due to spin-flip symmetries, or <italic>spin reversal transformations (SRTs; described below)</italic>, each qubit and coupler orbit can additionally have up to one non-empty orbit that is <italic>opposite</italic>.</p>
<list list-type="bullet">
<list-item><p>If qubit orbits <inline-formula><mml:math id="M33"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M34"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> are opposite,</p>
<list list-type="bullet">
<list-item><p>We write <inline-formula><mml:math id="M35"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M36"><mml:mo>-</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>.</p></list-item>
<list-item><p>If <inline-formula><mml:math id="M37"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, <italic>h</italic><sub><italic>i</italic></sub> &#x0003D; &#x02212;<italic>h</italic><sub><italic>j</italic></sub> and, in an ideal annealer, <italic>m</italic><sub><italic>i</italic></sub> &#x0003D; &#x02212;<italic>m</italic><sub><italic>j</italic></sub>.</p></list-item>
</list>
</list-item>
</list>
<list list-type="bullet">
<list-item><p>If coupler orbits <inline-formula><mml:math id="M38"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M39"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02113;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> are opposite,</p>
<list list-type="bullet">
<list-item><p>We write <inline-formula><mml:math id="M40"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02113;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M41"><mml:mo>-</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02113;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>.</p></list-item>
<list-item><p><italic>J</italic><sub><italic>i,j</italic></sub> &#x0003D; <italic>J</italic><sub><italic>k</italic>,&#x02113;</sub> and, in an ideal annealer, <italic>f</italic><sub><italic>i,j</italic></sub> &#x0003D; <italic>f</italic><sub><italic>k</italic>,&#x02113;</sub>. <italic>J</italic><sub><italic>i,j</italic></sub> &#x0003D; &#x02212;<italic>J</italic><sub><italic>k</italic>,&#x02113;</sub> and, in an ideal annealer, <italic>f</italic><sub><italic>i,j</italic></sub> &#x0003D; <italic>f</italic><sub><italic>k</italic>,&#x02113;</sub>.</p></list-item>
</list>
</list-item>
</list>
<p>An SRT, as its name suggests, flips the sign of a spin. For example, consider the Hamiltonian with a single qubit <inline-formula><mml:math id="M42"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:mi>s</mml:mi></mml:math></inline-formula>. An SRT transforms on <italic>s</italic> yields an identical Hamiltonian <inline-formula><mml:math id="M43"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:math></inline-formula> where <inline-formula><mml:math id="M44"><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mi>s</mml:mi></mml:math></inline-formula>. Similarly, for a Hamiltonian consisting of both biases and coupling terms such as <inline-formula><mml:math id="M45"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, we can apply an SRT on one (or multiple) variable(s) to obtain <inline-formula><mml:math id="M46"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn><mml:mo>,</mml:mo><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, where <inline-formula><mml:math id="M47"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>.</p>
<p>In the earlier example <inline-formula><mml:math id="M49"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">H</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>P</mml:mi></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mi>h</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mi>h</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>&#x0002B;</mml:mo><mml:mi>h</mml:mi><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, qubit <italic>s</italic><sub>2</sub> belongs to the orbit opposite of <italic>s</italic><sub>1</sub>, <italic>s</italic><sub>3</sub>&#x00027;s orbit. We will sometimes overload notation, conflating <inline-formula><mml:math id="M50"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M51"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M52"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> with <inline-formula><mml:math id="M53"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>j</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<p>Qubit and coupler orbits are related to, but not identical to, automorphism orbits of an auxiliary graph. In particular, qubit and coupler orbits are not unique: putting each qubit and each coupler in a separate orbit is sufficient to meet the definition but does not provide any useful information. We seek large orbits that satisfy the requirements.</p>
<p>Notably, in the commonly arising situation where <italic>h</italic><sub><italic>i</italic></sub> &#x0003D; 0 on all qubits, each qubit orbit is its own opposite, so all qubits have <italic>m</italic><sub><italic>i</italic></sub> &#x0003D; 0. The analogous situation does not exist for couplers because we do not consider symmetries between pairs of qubits with zero coupling between them. Two simple examples are shown in <xref ref-type="fig" rid="F2">Figure 2</xref>: a frustrated loop and an unfrustrated loop. In each case, all qubits are expected to have magnetization and all couplers are expected to have the same probability of frustration, but this is less obvious in the frustrated case than in the ferromagnetic case. In each case, all qubits and couplers have, respectively, identical magnetization and frustration probabilities. The unfrustrated case is trivially true. The frustrated scenario is less obvious but can be verified by computing frustration probabilities for each edge.</p>
<fig id="F2" position="float">
<label>Figure 2</label>
<caption><p><bold>(A)</bold> Ferromagnetic loop (periodic 1D chain) on <italic>L</italic> spins. <bold>(B)</bold> Frustrated loop, with one antiferromagnetic coupler. The FM loop has a 2-fold degenerated ground state (all spins up or all spins down) with no frustration; the frustrated loop has 2<italic>L</italic> ground states, each with one frustrated bond. When <italic>h</italic> &#x0003D; 0, all qubits trivially have zero average magnetization in an ideal annealer.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0002.tif"/>
</fig>
<p>Having defined qubit and coupler orbits, we now consider how to find them.</p>
<sec>
<title>1.3.1. Automorphisms of the signed Ising model</title>
<p>We proposed a strategy for identifying exploitable symmetries for calibrating a QPU by finding qubit and coupler orbits. We now introduce a method for identifying these orbits and begin by defining the <italic>signed Ising model</italic>.</p>
<p>Let (<italic>h, J</italic>) denote an Ising model with fields <italic>h</italic> &#x0003D; {<italic>h</italic><sub><italic>i</italic></sub>|<italic>v</italic><sub><italic>i</italic></sub> &#x02208; <italic>V</italic>} and <italic>J</italic> &#x0003D; {<italic>J</italic><sub><italic>i,j</italic></sub>|<italic>e</italic><sub><italic>i,j</italic></sub> &#x02208; <italic>E</italic>}, with an underlying graph <italic>G</italic> &#x0003D; (<italic>V, E</italic>) with vertex and edge sets <italic>V</italic> and <italic>E</italic>. We construct a signed Ising model <inline-formula><mml:math id="M54"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> as follows:</p>
<list list-type="bullet">
<list-item><p>For each spin <italic>v</italic><sub><italic>i</italic></sub> &#x02208; <italic>V</italic>, <inline-formula><mml:math id="M55"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> has two spins <italic>v</italic><sub><italic>i</italic></sub> and <inline-formula><mml:math id="M56"><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, with fields <italic>h</italic><sub><italic>i</italic></sub> and &#x02212;<italic>h</italic><sub><italic>i</italic></sub> respectively.</p></list-item>
<list-item><p>For each coupler (<italic>v</italic><sub><italic>i</italic></sub>, <italic>v</italic><sub><italic>j</italic></sub>) &#x02208; <italic>E</italic>, <inline-formula><mml:math id="M57"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> has four couplers: two couplers (<italic>v</italic><sub><italic>i</italic></sub>, <italic>v</italic><sub><italic>j</italic></sub>) and <inline-formula><mml:math id="M58"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> with coupling <italic>J</italic><sub><italic>i,j</italic></sub> and two couplers <inline-formula><mml:math id="M59"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M60"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> with coupling &#x02212;<italic>J</italic><sub><italic>i,j</italic></sub>.</p></list-item>
</list>
<p>Informally, we simply replace each spin with two: itself and its negation and replace each coupler with four couplers with appropriate parity-based sign flipping. <xref ref-type="fig" rid="F3">Figure 3</xref> shows an example of this construction applied to a four-spin Ising model.</p>
<fig id="F3" position="float">
<label>Figure 3</label>
<caption><p>Construction of signed Ising model. To detect exploitable symmetries, we search for automorphisms of an auxiliary Ising model in which each spin is duplicated into itself and its negation; each coupler is, then, expanded to four copies of itself, two of them negated. Automorphisms of the auxiliary Ising model can be detected by conversion into an equivalent automorphism-finding problem on an edge-labeled graph. Here, vertex labels indicate the identities of spins and show how each spin is duplicated for the signed Ising model.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0003.tif"/>
</fig>
<p>Our aim is to find large qubit and coupler orbits for (<italic>h, J</italic>), and we will begin by finding the automorphism group of <inline-formula><mml:math id="M61"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, which can be considered as a vertex- and edge-labeled graph. Our aim is to find qubit and coupler orbits. Because automorphisms of the underlying graph of an Ising model are symmetries of the Ising model, we can generate qubit and coupler orbits by considering the graph symmetries alone. In other words, finding graph automorphisms of the Ising model effectively give us qubit and coupler orbits. We can stop here and perform calibration based on these qubit and coupler orbits extracted from these symmetries (spin relabelling symmetries). However, we can similarly extract and exploit spin-flip symmetries by finding the automorphisms of the graph of <inline-formula><mml:math id="M62"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>. These additional automorphisms give rise to qubit and coupler orbits opposite to the original. Intuitively, <inline-formula><mml:math id="M63"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> enumerates and concatenates all SRT configurations to the original Ising model. As a consequence, by finding its automorphisms, we are able to further identify symmetries due to SRTs. In other words, if a negated vertex is in the same orbit as a non-negated vertex, they exhibit symmetries through an SRT. In short, the automorphism group of <inline-formula><mml:math id="M64"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> naturally generates one equivalence relation defining qubit orbits and another equivalence relation defining coupler orbits (see <xref ref-type="fig" rid="F4">Figure 4</xref>).<xref ref-type="fn" rid="fn0004"><sup>4</sup></xref> Our orbits of <inline-formula><mml:math id="M66"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> immediately give us orbits of (<italic>h, J</italic>) and constructed by simply discarding the qubits and couplers that do not exist in (<italic>h, J</italic>).</p>
<fig id="F4" position="float">
<label>Figure 4</label>
<caption><p>Orbits of signed and original Ising model. By computing automorphism groups of the edge- and vertex-labeled graph of the signed Ising model [<xref ref-type="fig" rid="F3">Figure3</xref> <bold>(right)</bold>], we can construct orbits of qubits and couplers that should behave identically by symmetry in <inline-formula><mml:math id="M48"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> <bold>(left)</bold>. Here, vertex and edge labels indicate orbits. By identifying equivalent orbits (e.g., coupler orbits 0 and 5) and reducing back to the original Ising model (<italic>h, J</italic>), we determine effective qubit and coupler orbits of (<italic>h, J</italic>) and their opposite relations <bold>(right)</bold>.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0004.tif"/>
</fig>
<p>There is more usable information held in the orbits of <inline-formula><mml:math id="M67"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>. First, we can combine coupler orbits of <inline-formula><mml:math id="M68"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> such that for each coupler <italic>e</italic><sub><italic>i,j</italic></sub> &#x02208; <italic>E</italic>, <inline-formula><mml:math id="M69"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M70"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> are in the same orbit, and (<italic>v</italic><sub><italic>i</italic></sub>, <italic>v</italic><sub><italic>j</italic></sub>) and <inline-formula><mml:math id="M71"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> are in the same orbit. Second, we can, then, easily derive opposite orbits: <inline-formula><mml:math id="M72"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, and <inline-formula><mml:math id="M73"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<p>These orbits are already very useful, but we can combine some to make even larger orbits. As demonstrated in the example in <xref ref-type="fig" rid="F3">Figure 3</xref>, in <inline-formula><mml:math id="M74"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, the couplers between pairs <inline-formula><mml:math id="M75"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> and <inline-formula><mml:math id="M76"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> are not necessarily automorphic. However, they are clearly equivalent under a flip of all spins. Thus, we combine the coupler orbits containing these two couplers. Likewise, the same applies to couplers between pairs <inline-formula><mml:math id="M77"><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>v</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula> and (<italic>v</italic><sub><italic>i</italic></sub>, <italic>v</italic><sub><italic>j</italic></sub>). This is all demonstrated in the accompanying code <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example0_1_orbits.py</monospace></ext-link> and shown in <xref ref-type="fig" rid="F4">Figure 4</xref>.</p>
<p>We now consider how to exploit orbits to improve performance in quantum annealers, building up a set of tools in the following worked examples.</p>
</sec>
</sec>
</sec>
<sec id="s2">
<title>2. Worked example: ferromagnetic loop</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example1*.py</monospace></ext-link>.</p>
<p>For our first example of calibration refinement, we study the ferromagnetic (FM) loop (<xref ref-type="fig" rid="F5">Figure 5</xref>) in which each coupling <italic>J</italic><sub>1,2</sub> &#x0003D; <italic>J</italic><sub>2,3</sub> &#x0003D; &#x022EF; &#x0003D; <italic>J</italic><sub><italic>N</italic>,1</sub> is equal and each field <italic>h</italic><sub><italic>i</italic></sub> is zero. In this case, by rotation, it is obvious that all qubits are in the same orbit and all couplers are in the same orbit. Furthermore, the orbit containing all qubits is its own opposite. Thus, we will perform two refinements. First, we will balance each qubit at zero magnetization <italic>m</italic><sub><italic>i</italic></sub> &#x02248; 0. Second, we will balance the couplings so that each coupler is frustrated with approximately equal probability.</p>
<fig id="F5" position="float">
<label>Figure 5</label>
<caption><p>Ferromagnetic loop.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0005.tif"/>
</fig>
<p>Since the FM loop has no frustrated bonds in the ground state, the latter condition is only interesting if we sample excited states. To ensure abundant excitations, we study a reasonably long loop with weak couplings: <italic>L</italic> &#x0003D; 64 and <italic>J</italic><sub><italic>ij</italic></sub> &#x0003D; &#x02212;0.2.</p>
<sec>
<title>2.1. Finding multiple embeddings of a small Ising model</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>embed_loops.py</monospace></ext-link>.</p>
<p>The first task is to find a copy of the FM loop in the qubit connectivity graph <italic>A</italic><sub>QPU</sub> of the QPU being used. This is an <italic>embedding</italic>&#x02014;a mapping of spins of an Ising model to qubits in a QPU. In an Advantage processor, a 64-qubit loop can be embedded many times on disjoint sets of qubits, so we can run many copies in parallel for a richer and larger set of measurements.</p>
<p>To find these embeddings, we use the Glasgow graph solver (McCreesh et al., <xref ref-type="bibr" rid="B18">2020</xref>), which has been incorporated into the embedding finding module <monospace>minorminer</monospace> (D-Wave, <xref ref-type="bibr" rid="B4">2023</xref>). To make the embedding search faster, we raster-scan across 2 &#x000D7; 2 blocks of unit cells in the QPU&#x00027;s Pegasus graph (Boothby et al., <xref ref-type="bibr" rid="B2">2020</xref>) and then greedily construct a large set of non-intersecting embeddings. The file <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>embed_loops.py</monospace></ext-link> provides a code example that finds multiple disjoint copies of a 64-qubit loop in <italic>A</italic><sub>QPU</sub>.</p>
</sec>
<sec>
<title>2.2. Balancing qubits at zero</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example1_1_fm_loop_balancing.py</monospace></ext-link>.</p>
<p>We will use simple parameters for the experiment, running 1 &#x003BC;s anneals forward anneals (where <italic>s</italic> increases linearly in time as <italic>t</italic>/<italic>t</italic><sub><italic>a</italic></sub>) and drawing 100 samples for each QPU call. We set <monospace>auto_scale=False</monospace> to ensure that the QPU will not automatically magnify the energy scale.</p>
<p>In D-Wave&#x00027;s annealing QPUs, each qubit <italic>s</italic><sub><italic>i</italic></sub> can be biased toward &#x02212;1 or &#x0002B;1 in two ways: first, with a programmable longitudinal field <italic>h</italic><sub><italic>i</italic></sub> as in Equation 1; second, with a programmable flux-bias offset (FBO) &#x003A6;<sub><italic>i</italic></sub> (Harris et al., <xref ref-type="bibr" rid="B6">2009</xref>; D-Wave, <xref ref-type="bibr" rid="B3">2022</xref>). In the quantum annealing Hamiltonian (3), the bias conferred by the <italic>h</italic><sub><italic>i</italic></sub> term is scaled by <inline-formula><mml:math id="M78"><mml:mrow><mml:mi mathvariant="script">J</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, meaning that it changes as a function of <italic>s</italic>. The FBO &#x003A6;<sub><italic>i</italic></sub>, in contrast, confers a constant bias that is independent of <italic>s</italic>. We prefer to mitigate biases using FBOs, in part, because they are programmed independently of <italic>h</italic><sub><italic>i</italic></sub>.</p>
<p>We employ an iterative gradient descent method for minimizing |<italic>m</italic><sub><italic>i</italic></sub>| with a step size &#x003B1;<sub>&#x003A6;</sub>. For a given iteration, we consider the observed magnetization <italic>m</italic><sub><italic>i</italic></sub> &#x0003D; &#x02329;<italic>s</italic><sub><italic>i</italic></sub>&#x0232A;. If <italic>m</italic><sub><italic>i</italic></sub> &#x0003C; 0, we adjust the FBO to push <italic>s</italic><sub><italic>i</italic></sub> toward &#x0002B;1; if <italic>m</italic><sub><italic>i</italic></sub> &#x0003E; 0, we adjust the FBO to push <italic>s</italic><sub><italic>i</italic></sub> toward &#x02212;1. This is done by updating as follows:</p>
<disp-formula id="E6"><label>(6)</label><mml:math id="M79"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mo>&#x003A6;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mo>&#x003A6;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x003A6;</mml:mo></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <inline-formula><mml:math id="M80"><mml:mover accent="true"><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> is the average observed magnetization across all qubits. In this case, we can simply replace <inline-formula><mml:math id="M81"><mml:mover accent="true"><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> with 0 since <italic>h</italic><sub><italic>i</italic></sub> &#x0003D; 0 for all qubits.</p>
<p>The choice of a step size &#x003B1;<sub>&#x003A6;</sub> has a strong influence on the convergence of the calibration procedure. In <xref ref-type="fig" rid="F6">Figure 6</xref>, we show the resulting FBOs for a single copy of the 64-qubit chain, as well as magnetization statistics. We show experiments for three choices of &#x003B1;<sub>&#x003A6;</sub>. One (flux 1 &#x000D7; 10<sup>&#x02212;4</sup>, in units of &#x003A6;<sub>0</sub>) is too large and creates oscillations in &#x003A6;<sub><italic>i</italic></sub> and <italic>m</italic><sub><italic>i</italic></sub>. One (1 &#x000D7; 10<sup>&#x02212;6</sup>) is too small and takes many iterations to converge. One (1 &#x000D7; 10<sup>&#x02212;5</sup>) is in between and performs well. The choice of step size is a common concern in gradient descent applications, and we will consider automatic tuning of &#x003B1;<sub>&#x003A6;</sub> in a later section (Section 4.4). For best results, we should ensure:</p>
<list list-type="bullet">
<list-item><p>The calibration refinement appears to have converged to the vicinity of a fixed point.</p></list-item>
<list-item><p>The parameters do not oscillate wildly.</p></list-item>
</list>
<fig id="F6" position="float">
<label>Figure 6</label>
<caption><p>Balancing qubits in a FM chain with flux-bias offsets. Iterative correction of qubit biases is demonstrated using three step sizes &#x003B1;<sub>&#x003A6;</sub> for 100 iterations: 10<sup>&#x02212;4</sup> <bold>(left)</bold>, 10<sup>&#x02212;5</sup> <bold>(middle)</bold>, and 10<sup>&#x02212;6</sup> <bold>(right)</bold>. Step size is set to zero for the first 10 iterations. <bold>(Top)</bold> Evolution of flux-bias offsets for 64 qubits in an FM chain. <bold>(Middle)</bold> Qubit magnetization averaged over first 10 iterations and last 10 iterations. <bold>(Bottom)</bold> Standard deviation of qubit magnetizations per iteration.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0006.tif"/>
</fig>
<p>When seeking evid ence that qubit bias is improved by the FBOs, we should not just look at qubit statistics over a single QPU call, since fluctuations can be large. Rather, we should look at the average magnetization of a qubit over multiple calls, which indicates systematic bias. The middle row of <xref ref-type="fig" rid="F6">Figure 6</xref> shows the average magnetization of each qubit across the first and last 10 iterations. For each step size, the shim results in a significant improvement in variation of <italic>m</italic><sub><italic>i</italic></sub> from one qubit to another. However, the standard deviation among qubit magnetizations for <italic>individual</italic> iterations shows that the case <inline-formula><mml:math id="M82"><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x003A6;</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x000D7;</mml:mo><mml:mn>1</mml:mn><mml:msup><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>4</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> causes broad spreading of biases, so we need to be careful with our step sizes.</p>
</sec>
<sec>
<title>2.3. Balancing spin-spin correlations</title>
<p><bold>Code reference:</bold></p>
<p><ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example1_2_fm_loop_correlations.py</monospace></ext-link>.</p>
<p>Having balanced qubits at zero with linear terms with an FBO shim, we now address homogenizing the spin-spin correlations on adjacent qubits, which by symmetry should be equal for all coupled pairs. The couplings <italic>J</italic><sub><italic>i,i</italic>&#x0002B;1</sub> are all nominally &#x02212;0.2; we will fine-tune the couplings in the vicinity of this value. This is similar to how we fine-tuned the FBOs but with the added constraint that we do not change the average coupling.</p>
<p>For a given iteration, we take the observed probability <italic>f</italic><sub><italic>i,i</italic>&#x0002B;1</sub> of the coupler being frustrated as follows:</p>
<disp-formula id="E7"><label>(7)</label><mml:math id="M83"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x0002B;</mml:mo><mml:mtext class="textrm" mathvariant="normal">sign</mml:mtext><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mrow><mml:mo>&#x02329;</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:mrow></mml:msub></mml:mrow><mml:mo>&#x0232A;</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Let <inline-formula><mml:math id="M84"><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> denote the average frustration across all couplers in all disjoint embeddings of the chain, in general, we will compute <inline-formula><mml:math id="M85"><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> across all couplers in the union of a coupler&#x00027;s orbit and its opposite orbit. We, then, adjust couplings based on the <italic>residual frustration</italic> <inline-formula><mml:math id="M86"><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula>:</p>
<disp-formula id="E8"><label>(8)</label><mml:math id="M87"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>&#x02190;</mml:mo><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>&#x0002B;</mml:mo><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mi>J</mml:mi></mml:mrow></mml:msub><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>,</mml:mo><mml:mi>i</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p><xref ref-type="fig" rid="F7">Figure 7</xref> shows data for the same experiment as <xref ref-type="fig" rid="F6">Figure 6</xref> but with the &#x0201C;coupler shim&#x0201D; added, with &#x003B1;<sub><italic>J</italic></sub> &#x0003D; 0.001. To show the effect of the two shims, we run 100 iterations with &#x003B1;<sub>&#x003A6;</sub> &#x0003D; 0 and &#x003B1;<sub><italic>J</italic></sub> &#x0003D; 0, then 100 iterations with <inline-formula><mml:math id="M88"><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x003A6;</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x000D7;</mml:mo><mml:mn>1</mml:mn><mml:msup><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>5</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and &#x003B1;<sub><italic>J</italic></sub> &#x0003D; 0, then 100 with <inline-formula><mml:math id="M89"><mml:msub><mml:mrow><mml:mi>&#x003B1;</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x003A6;</mml:mo></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mn>1</mml:mn><mml:mo>&#x000D7;</mml:mo><mml:mn>1</mml:mn><mml:msup><mml:mrow><mml:mn>0</mml:mn></mml:mrow><mml:mrow><mml:mo>-</mml:mo><mml:mn>5</mml:mn></mml:mrow></mml:msup></mml:math></inline-formula> and &#x003B1;<sub><italic>J</italic></sub> &#x0003D; 0.001. In this particular case, the coupler shim is small but some systematic signals can be observed. We will show more impactful cases later in the tutorial.</p>
<fig id="F7" position="float">
<label>Figure 7</label>
<caption><p>Balancing qubits and couplers in an FM chain with flux-bias offsets and coupler adjustments. This experiment is similar to that shown in <xref ref-type="fig" rid="F6">Figure 6</xref> but with &#x003B1;<sub><italic>J</italic></sub> &#x0003E; 0 for the last 100 iterations. Couplers remain distributed about the average value of <italic>J</italic> &#x0003D; &#x02212;0.2.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0007.tif"/>
</fig>
</sec>
</sec>
<sec id="s3">
<title>3. Worked example: frustrated loop</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example2*.py</monospace></ext-link>.</p>
<p>Taking the ferromagnetic loop considered in the previous example, the sign is flipped of a single coupler <italic>J</italic><sub>1,2</sub> (<xref ref-type="fig" rid="F8">Figure 8</xref>). It is again obvious that all spins should have zero average magnetization, since there is no symmetry-breaking field (i.e., <italic>h</italic><sub><italic>i</italic></sub> &#x0003D; 0 everywhere). Less obvious is the fact that we can have two coupler orbits: one containing all FM couplers and one containing the AFM coupler, and they are opposite. Consequently, every coupler should be frustrated with equal probability in an ideal annealer.</p>
<fig id="F8" position="float">
<label>Figure 8</label>
<caption><p>Frustrated loop.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0008.tif"/>
</fig>
<sec>
<title>3.1. Finding orbits</title>
<p><bold>Code reference:</bold></p>
<p><ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example2_1_frustrated_loop_orbits.py</monospace></ext-link>.</p>
<p>We can derive this fact as follows. Flipping the sign of <italic>s</italic><sub>2</sub>, and the sign of both couplers incident to it, is a gauge transformation and, as such, will not change the probability of any coupler being frustrated in an ideal annealer. The result of this gauge transformation is again a frustrated loop with a single AFM coupler <italic>J</italic><sub>2,3</sub>; this is equivalent to the original loop by a cyclic shift of qubit labels. From this, we can infer that <italic>J</italic><sub>1,2</sub> and <italic>J</italic><sub>2,3</sub> should have the same frustration probability; repeating this argument tells us that all couplers should have the same frustration probability.</p>
<p>For more complicated examples, we would prefer to find such statistical identities programmatically as described in Section 1.3. We do this in the file</p>
<p><ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example2_1_frustrated_loop_orbits.py</monospace></ext-link></p>
<p>by computing automorphisms of an auxiliary graph. The result is a mapping <inline-formula><mml:math id="M94"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:math></inline-formula> of qubits and couplers to orbits. If spins <italic>s</italic><sub><italic>i</italic></sub> and <italic>s</italic><sub><italic>j</italic></sub> satisfy <inline-formula><mml:math id="M95"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, then in an ideal annealing experiment <italic>m</italic><sub><italic>i</italic></sub> &#x0003D; <italic>m</italic><sub><italic>j</italic></sub>. Similarly, if couplers <italic>s</italic><sub><italic>i</italic></sub><italic>s</italic><sub><italic>j</italic></sub> and <italic>s</italic><sub><italic>k</italic></sub><italic>s</italic><sub>&#x02113;</sub> satisfy <inline-formula><mml:math id="M96"><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>k</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02113;</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, they have identical frustration probabilities <italic>f</italic><sub><italic>i,j</italic></sub> &#x0003D; <italic>f</italic><sub><italic>k</italic>,&#x02113;</sub>. The code also gives us a mapping of orbits to &#x0201C;opposite&#x0201D; orbits, such that if spins <italic>s</italic><sub><italic>i</italic></sub> and <italic>s</italic><sub><italic>j</italic></sub> are in opposing orbits, <italic>m</italic><sub><italic>i</italic></sub> &#x0003D; &#x02212;<italic>m</italic><sub><italic>j</italic></sub>, and if couplers <italic>s</italic><sub><italic>i</italic></sub><italic>s</italic><sub><italic>j</italic></sub> and <italic>s</italic><sub><italic>k</italic></sub><italic>s</italic><sub>&#x02113;</sub> are in opposing orbits, <italic>f</italic><sub><italic>i,j</italic></sub> &#x0003D; <italic>f</italic><sub><italic>k</italic>,&#x02113;</sub> and <italic>J</italic><sub><italic>i,j</italic></sub> &#x0003D; &#x02212;<italic>J</italic><sub><italic>k</italic>,&#x02113;</sub>.</p>
<p>Running the code on three disjoint copies of a frustrated six-qubit loop tells us that all AFM couplers are in one coupler orbit <inline-formula><mml:math id="M97"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:mo>,</mml:mo><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02223;</mml:mo><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow></mml:msub><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula>, and all FM couplers are in its opposite, <inline-formula><mml:math id="M98"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub><mml:mo>=</mml:mo><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> (see <xref ref-type="fig" rid="F9">Figure 9</xref>).</p>
<fig id="F9" position="float">
<label>Figure 9</label>
<caption><p>Coupler orbits of frustrated loops. The code <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example2_1_frustrated_loop_orbits</monospace></ext-link> constructs three disjoint frustrated loops and programmatically generates qubit and coupler orbits. All qubits are in the same orbit. There are two signed coupler orbits, <inline-formula><mml:math id="M90"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula><mml:math id="M91"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula>, and in this example, they form an opposite pair, meaning that a coupler in <inline-formula><mml:math id="M92"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>1</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> and a coupler in <inline-formula><mml:math id="M93"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mn>2</mml:mn></mml:mrow></mml:msub></mml:math></inline-formula> have opposite sign (<italic>J</italic> &#x0003D; &#x02212;1 and <italic>J</italic> &#x0003D; 1 in this case) but equal probability of frustration in an ideal annealer.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0009.tif"/>
</fig>
<p>We point out an obvious but useful fact: If we are using multiple embeddings of an Ising model, all copies of a given qubit are in the same orbit, and all copies of a given coupler are in the same orbit. Here, we use disjoint embeddings, but they need not be disjoint: the embeddings could overlap, and be annealed in separate calls to the QPU.</p>
<sec>
<title>3.1.1. Shimming</title>
<p>We can now approach the frustrated loop similarly to the unfrustrated loop: all qubits should have average magnetization zero, and all couplers should be frustrated with the same probability. Again, tuning FBOs and individual couplings helps to reduce bias in the system. This example shows how to exploit orbits for our shim.</p>
<p>There is one detail worth pointing out. In Equations 6, 8, the terms <inline-formula><mml:math id="M99"><mml:mover accent="true"><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> and <inline-formula><mml:math id="M100"><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> can be computed as averages over an orbit. If we are dealing with opposing qubit orbits <inline-formula><mml:math id="M101"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula><mml:math id="M102"><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>q</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, we can simply use <inline-formula><mml:math id="M103"><mml:mover accent="true"><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, as we do in the first example. For opposing coupler orbits <inline-formula><mml:math id="M104"><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula> and <inline-formula><mml:math id="M105"><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mrow><mml:mi mathvariant="script">O</mml:mi></mml:mrow></mml:mrow><mml:mrow><mml:mi>c</mml:mi></mml:mrow></mml:msub></mml:math></inline-formula>, we can compute <inline-formula><mml:math id="M106"><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> across the union of the two orbits. In this case, that means that <inline-formula><mml:math id="M107"><mml:mover accent="true"><mml:mrow><mml:mi>f</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> is the average frustration probability across all couplers.</p>
<p><xref ref-type="fig" rid="F10">Figure 10</xref> shows the results of shimming FBOs and couplings for 165 parallel embeddings of a 16-qubit frustrated loop, using nominal coupling strength |<italic>J</italic><sub><italic>i</italic></sub>| &#x0003D; 0.9. Here, both components of the shim show a marked improvement of statistical homogeneity. Taking moving means for 10 iterations at a time, we see that both &#x003C3;<sub><italic>m</italic></sub> (standard deviation of qubit magnetization) and &#x003C3;<sub><italic>f</italic></sub> (standard deviation of coupler frustration probability) decrease as a result of turning on the FBO shim and the coupler shim, respectively.</p>
<fig id="F10" position="float">
<label>Figure 10</label>
<caption><p>Shimming a frustrated loop. Three hundred iterations are performed. A flux-bias offset shim is used after iteration 100, and a coupler shim is used after iteration 200. Nominal couplings are &#x000B1;0.9. The third panel shows the standard deviation of qubit magnetizations taken as a moving mean over 10 iterations, &#x003C3;<sub><italic>m</italic></sub>. The fourth shows the corresponding quantity &#x003C3;<sub><italic>f</italic></sub> for frustration probability.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0010.tif"/>
</fig>
</sec>
<sec>
<title>3.1.2. Finding orbits of an arbitrary Ising model</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example2_3_buckyball_orbits.py</monospace></ext-link>.</p>
<p>Here we present an example of an Ising model that is read from a text file and run through our orbit-finding code. The user may want to edit this code to analyze other Ising models of interest.</p>
<p>Consider another antiferromagnetic Ising model (<italic>J</italic><sub><italic>ij</italic></sub> &#x0003D; 1) with a <italic>Buckyball graph</italic> as its underlying structure and no linear fields (<italic>h</italic><sub><italic>i</italic></sub> &#x0003D; 0). We apply the same methodology described in Section 1.3 to find its orbits. <xref ref-type="fig" rid="F11">Figure 11</xref> visualizes the Buckyball model with its orbits labeled by text, as well as its signed Ising counterpart with coupling values encoded by color.</p>
<fig id="F11" position="float">
<label>Figure 11</label>
<caption><p>An antiferromagnetic Ising model with a Buckyball graph structure. The node and edge colors encode the resulting qubit and edge orbits respectively. All qubits are in the same orbit since the graph is vertex-transitive. There are only two coupler orbits: those couplers sitting between two hexagons, and those sitting between a hexagon and a pentagon.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0011.tif"/>
</fig>
</sec>
</sec>
</sec>
<sec id="s4">
<title>4. Worked example: triangular antiferromagnet</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example3*.py</monospace></ext-link>.</p>
<p>In the previous examples we demonstrated several key methods:</p>
<list list-type="bullet">
<list-item><p>Finding qubit and coupler orbits.</p></list-item>
<list-item><p>Homogenizing magnetizations with FBOs.</p></list-item>
<list-item><p>Homogenizing frustration by tuning couplers.</p></list-item>
</list>
<p>We can now apply these tools to a non-trivial system: the triangular antiferromagnet (TAFM; <xref ref-type="fig" rid="F12">Figure 12</xref>). This is a classic example of a frustrated 2D spin system. Moreover, the addition of a transverse field to a TAFM leads to order-by-disorder at low temperature (Moessner and Sondhi, <xref ref-type="bibr" rid="B20">2001</xref>; Isakov and Moessner, <xref ref-type="bibr" rid="B7">2003</xref>). For this and other reasons, including qualitative similarity to real materials, the TAFM has been simulated extensively using quantum annealers (King et al., <xref ref-type="bibr" rid="B12">2018</xref>, <xref ref-type="bibr" rid="B16">2022</xref>). We will use it as an example to showcase several concepts in calibration refinement for quantum simulation:</p>
<list list-type="bullet">
<list-item><p>Truncating and renormalizing Hamiltonian terms.</p></list-item>
<list-item><p>Simulating logical vs. embedded systems.</p></list-item>
<list-item><p>Simulating an infinite system vs. faithfully simulating boundary conditions. When simulating an infinite system, we use the same geometry but suppress effects of any open boundaries, which otherwise cause statistics such as nearest-neighbor correlations to vary depending on distance from the boundary. To do this we determine our qubit and coupler orbits assuming an inifinite lattice, instead of computing them from the finite lattice at hand.</p></list-item>
</list>
<fig id="F12" position="float">
<label>Figure 12</label>
<caption><p>A 12 &#x000D7; 12 square lattice with cylindrical boundary conditions (periodic top/bottom). Contracting two-qubit FM chains into single spins results in a triangular antiferromagnet.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0012.tif"/>
</fig>
<sec>
<title>4.1. Embedding as a square lattice</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example3_1_tafm_get_orbits.py</monospace></ext-link>.</p>
<p>In D-Wave&#x00027;s Advantage systems, we can minor-embed the TAFM using two-qubit FM chains. First, we will embed a 12 &#x000D7; 12 square lattice with cylindrical boundary conditions, then we ferromagnetically couple pairs of qubits with a strong coupling <italic>J</italic><sub><italic>FM</italic></sub>. The cylindrical boundaries are very helpful in providing rotational symmetries that we can exploit in our calibration refinement methods (as in the 1D chains already studied).</p>
<p>The provided code uses the Glasgow subgraph solver to find embeddings of the 12 &#x000D7; 12 square lattice, but note that this can take several hours. For larger square lattices, up to 32 &#x000D7; 32 or even larger depending on the location of inoperable qubits, one can inspect embeddings of smaller lattices and generalize the structure, since subgraph solvers are unlikely to be efficient at that size. We proceed with 10 disjoint 12 &#x000D7; 12 embeddings generated by the code.</p>
<p>In this example we will set AFM couplers to <italic>J</italic><sub>AFM</sub> &#x0003D; 0.9, and all FM couplers to <italic>J</italic><sub>FM</sub> &#x0003D; &#x02212;2&#x0002A;<italic>J</italic><sub>AFM</sub>. Since FM couplers are very rarely frustrated in this system, we will only shim the AFM couplers.</p>
</sec>
<sec>
<title>4.2. Annealing with and without shimming</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example3_2_tafm_forward_anneal.py</monospace></ext-link>.</p>
<p>As in the previous example, we will compare performance of three methods: no shim, FBO shim only, and FBO and coupler shims together. We perform 800 iterations, turning on the FBO shim after 100 iterations and the coupler shim after 300 iterations. <xref ref-type="fig" rid="F13">Figure 13</xref> shows data for this experiment, and we can see that as with the frustrated loop example, shimming improves statistical homogeneity of magnetizations and frustration. Note, however, that there is no appreciable impact on the average magnitude of the order parameter &#x02329;|&#x003C8;|&#x0232A;. This will change when we vary boundary conditions (see <xref ref-type="fig" rid="F16">Figure 16</xref>).</p>
<fig id="F13" position="float">
<label>Figure 13</label>
<caption><p>Shimming an embedded cylindrical triangular antiferromagnet. Eight hundred iterations are performed. A flux-bias offset shim is used after iteration 100, and a coupler shim is used after iteration 300. For clarity, we only show FBOs for 12 qubits, and couplings for 12 couplers in the same orbit. Standard deviation of frustration probabilities, &#x003C3;<sub><italic>f</italic></sub>, is computed for the couplers in each orbit, and the average over all orbits is taken.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0013.tif"/>
</fig>
</sec>
<sec>
<title>4.3. Manipulating orbits to simulate an infinite system</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example3_2_tafm_forward_anneal.py</monospace></ext-link>.</p>
<p>The shim shown in <xref ref-type="fig" rid="F13">Figure 13</xref> used coupler orbits for the square lattice with cylindrical boundaries, which are naturally different for couplers that are different distances from the boundary, or different orientations with respect to the boundary (and to FM chains). But what if we want to simulate, to the extent possible, an infinite TAFM? In that system, a coupler&#x00027;s probability of frustration is independent of its orientation and position, unlike in the square-lattice embedded system. We can simulate this case by putting all AFM couplers in one orbit, and all FM couplers in a second orbit, and proceeding as before. The coupler orbits no longer reflect the structure of the programmed Ising model, but rather the structure of the Ising model we wish to simulate.</p>
<p>Results for the &#x0201C;infinite triangular&#x0201D; shim are shown in <xref ref-type="fig" rid="F14">Figure 14</xref>. This experiment is performed just like the previous one, but with the parameter</p>
<p><monospace>shim[&#x00027;type&#x00027;]=&#x00027;triangular_infinite&#x00027;</monospace></p>
<p>instead of</p>
<p><monospace>shim[&#x00027;type&#x00027;]=&#x00027;embedded_finite&#x00027;</monospace>.</p>
<fig id="F14" position="float">
<label>Figure 14</label>
<caption><p>Shimming an isotropic, infinite triangular antiferromagnet. The experiment from <xref ref-type="fig" rid="F13">Figure 13</xref> is repeated, but with all AFM couplers placed in the same orbit. For clarity, we only show FBOs for 12 qubits, and every 5th coupling from the AFM orbit.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0014.tif"/>
</fig>
<p>The coupler shim deviates significantly from nominal values (note axis scale), and has not converged even after 500 iterations.</p>
<sec>
<title>4.3.1. Truncating and renormalizing couplers</title>
<p>In this code example (and others) we use an important method in the coupler shim: truncation. Programmed couplings must be in the range [&#x02212;2, 1], so AFM couplers must remain &#x0003C; 1, which is 1.11 &#x0002A; <italic>J</italic><sub>AFM</sub>. Therefore, when couplers go out of range, we truncate them to within the range. To avoid persistent shrinking of the couplings due to truncation, we renormalize to the correct average coupling value (0.9) before truncation&#x02014;this prevents cumulative shrinkage over many iterations.</p>
</sec>
<sec>
<title>4.3.2. Better initial conditions</title>
<p>Looking at the data, we can see that the most reduced couplers are those on the boundary. This suggests that if we want to simulate the infinite TAFM, we should start with a thoughtful setting of couplers. In this case, setting the AFM couplers on the boundary to <italic>J</italic><sub>AFM</sub>/2 reduces the need to shim enormously. This makes sense, since doing so maximizes the ground-state degeneracy of the classical system, as previously noted (King et al., <xref ref-type="bibr" rid="B12">2018</xref>).</p>
<p>This shim is shown in <xref ref-type="fig" rid="F15">Figure 15</xref>. The experiment is performed just like the previous one, but with the parameter</p>
<p><monospace>param[&#x00027;halve_boundary_couplers&#x00027;]=True</monospace></p>
<p>instead of</p>
<p><monospace>param[&#x00027;halve_boundary_couplers&#x00027;]=False</monospace>.</p>
<fig id="F15" position="float">
<label>Figure 15</label>
<caption><p>Shimming an isotropic, infinite triangular antiferromagnet, starting with halved boundary couplers. The experiment from <xref ref-type="fig" rid="F14">Figure 14</xref> is repeated, but with all AFM couplers on the boundary halved (to <italic>J</italic><sub>AFM</sub>/2 &#x0003D; 0.45) as an initial condition. For clarity, we only show FBOs for 12 qubits, and every 5th coupling from the AFM orbit.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0015.tif"/>
</fig>
<p>We can see that now, the coupler shim only deviates a few percent from nominal, at most.</p>
</sec>
<sec>
<title>4.3.3. Complex order parameter</title>
<p>Order in the TAFM can be characterized by a complex order parameter &#x003C8;, which we define now. Let <italic>c</italic>:<italic>S</italic> &#x02192; {0, 1, 2} be a 3-coloring of the spins of the TAFM, mapping them onto three sublattices so that no two coupled spins are in the same sublattice (this coloring is unique, up to symmetries). Then for a spin state <italic>S</italic> we can define</p>
<disp-formula id="E9"><label>(9)</label><mml:math id="M108"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:mi>&#x003C8;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>S</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>=</mml:mo><mml:mfrac><mml:mrow><mml:msqrt><mml:mrow><mml:mn>3</mml:mn></mml:mrow></mml:msqrt></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:mfrac><mml:mstyle displaystyle="true"><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>&#x02113;</mml:mi></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:munderover></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>s</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02113;</mml:mi></mml:mrow></mml:msub><mml:msup><mml:mrow><mml:mi>e</mml:mi></mml:mrow><mml:mrow><mml:msub><mml:mrow><mml:mi>c</mml:mi></mml:mrow><mml:mrow><mml:mi>&#x02113;</mml:mi></mml:mrow></mml:msub><mml:mn>2</mml:mn><mml:mi>&#x003C0;</mml:mi><mml:mo>/</mml:mo><mml:mn>3</mml:mn></mml:mrow></mml:msup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>where <italic>c</italic><sub><italic>i</italic></sub> &#x0003D; <italic>c</italic>(<italic>s</italic><sub><italic>i</italic></sub>) and <inline-formula><mml:math id="M109"><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:msqrt><mml:mrow><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow></mml:msqrt></mml:math></inline-formula>. Due to symmetries among the sublattices arising from the cylindrical boundary condition, as well as up-down symmetry of spins since <italic>h</italic> &#x0003D; 0, we expect sixfold rotational symmetry (among other symmetries) in the distribution of &#x003C8; in an ideal annealer. Thus &#x003C8; can serve as a good indicator of any biases in the system, as well as global ordering.</p>
<p>We can use &#x003C8; to compare the &#x0201C;embedded finite&#x0201D; shim and &#x0201C;triangular infinite&#x0201D; shim, as seen in <xref ref-type="fig" rid="F16">Figure 16</xref>. Although we are simply forward-annealing the system, and therefore not sampling from the mid-anneal Hamiltonian, we expect the same characteristic ring histogram&#x02014;without a peak near &#x003C8; &#x0003D; 0&#x02014;that is seen in the quantum system (cf. King et al., <xref ref-type="bibr" rid="B12">2018</xref>, Figure 3C). This is seen only after the &#x0201C;triangular infinite&#x0201D; shim. We mainly attribute this to the halving of the boundary couplings. In all cases, the shim improves the theoretically expected sixfold rotational symmetry of &#x003C8;.</p>
<fig id="F16" position="float">
<label>Figure 16</label>
<caption><p>Complex order parameter &#x003C8;. For the three shims shown in <xref ref-type="fig" rid="F13">Figures 13</xref>&#x02013;<xref ref-type="fig" rid="F15">15</xref>, we plot the evolution of the average magnitude &#x02329;&#x003C8;&#x0232A;, as well as complex histograms of &#x003C8; (showing only data for one of the ten embeddings) before and after shimming.</p></caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fcomp-05-1238988-g0016.tif"/>
</fig>
</sec>
</sec>
<sec>
<title>4.4. Adaptive step sizes</title>
<p><bold>Code reference:</bold> <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example3_2_tafm_forward_anneal.py</monospace></ext-link>.</p>
<p>It is often difficult or impractical to determine appropriate step sizes <italic>a priori</italic>. Here we demonstrate a simple method for adapting step sizes based on statistics of the shim. Note that due to noise in the QPU&#x00027;s surrounding environment, there is no well-defined asymptote or steady state for a shim. However, we act as though such a state exists: we expect high-frequency fluctuations in the environment to be small compared to low-frequency fluctuations and static cross-talk.</p>
<p>If the step size is sufficiently small and we are sufficiently close to the steady state, we can expect fluctuations of the Hamiltonian terms (FBOs, couplers, or fields) to behave like unbiased random walks. In an unbiased random walk with position <italic>x</italic>(<italic>t</italic>) at time <italic>t</italic> &#x0003D; 0, 1, &#x02026;, the probability distribution of <italic>x</italic>(<italic>t</italic>) approaches the normal distribution with mean 0 and variance <italic>t</italic>.</p>
<p>If the shim is far from the steady state and has a relatively small step size, the random walks will be biased in one direction, and thus the variance of fluctuations will grow superlinearly in <italic>t</italic>. Finally, if the step size is very large, then it will tend to overshoot the steady state, and oscillate. This leads to variance of fluctuations growing sublinearly in <italic>t</italic>. Thus we can periodically adjust the step size of a shim as follows, using a 20-iteration lookback and a tuning term &#x003B5; &#x0003D; 0.1:</p>
<list list-type="order">
<list-item><p>For <italic>d</italic> &#x02264; 20, <italic>x</italic>(<italic>t</italic>) &#x02212; <italic>x</italic>(<italic>t</italic> &#x02212; <italic>d</italic>) is the difference between the current shim value for a term (e.g. FBO) and the value <italic>d</italic> iterations previous. Let <italic>X</italic><sub><italic>d</italic></sub> be the set of all <italic>x</italic>(<italic>t</italic>) &#x02212; <italic>x</italic>(<italic>t</italic> &#x02212; <italic>d</italic>) for all <italic>x</italic> being tuned.</p></list-item>
<list-item><p>Find a best-fit exponent <italic>b</italic> describing <inline-formula><mml:math id="M110"><mml:mstyle class="text"><mml:mtext class="textrm" mathvariant="normal">var</mml:mtext></mml:mstyle><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>X</mml:mi></mml:mrow><mml:mrow><mml:mi>d</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>&#x0221D;</mml:mo><mml:msup><mml:mrow><mml:mi>d</mml:mi></mml:mrow><mml:mrow><mml:mi>b</mml:mi></mml:mrow></mml:msup></mml:math></inline-formula>.</p></list-item>
<list-item><p>If <italic>b</italic> &#x0003E; 1.1, multiply the step size &#x003B1; by 1 &#x0002B; &#x003B5;.</p></list-item>
<list-item><p>If <italic>b</italic> &#x0003C; 0.9, divide the step size &#x003B1; by 1 &#x0002B; &#x003B5;.</p></list-item>
</list>
<p>In the example code <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/shimming-tutorial/tree/main/tutorial_code"><monospace>example3_2_tafm_forward_anneal.py</monospace></ext-link>, this method is applied by setting</p>
<disp-formula id="E10"><mml:math id="M111"><mml:mstyle mathvariant="monospace"><mml:mtext>adaptive</mml:mtext><mml:mo>_</mml:mo><mml:mtext>step</mml:mtext><mml:mo>_</mml:mo><mml:mtext>size</mml:mtext><mml:mo>=</mml:mo><mml:mtext>True</mml:mtext></mml:mstyle><mml:mo>.</mml:mo></mml:math></disp-formula>
<p>This check is done every iteration, but this is not necessary.</p>
<p>Adaptive step sizes are so far a largely unexplored research area, and various approaches could be taken. Using different step sizes for each orbit is certainly worth exploring; note in <xref ref-type="fig" rid="F14">Figure 14</xref> that different coupler orbits have hugely varying deviations from the mean. More general frameworks like &#x0201C;Adam&#x0201D; (Kingma and Ba, <xref ref-type="bibr" rid="B17">2014</xref>) could also be useful in this context.</p>
</sec>
</sec>
<sec id="s5">
<title>5. A survey of additional methods</title>
<p>We have provided detailed demonstrations and free-standing Python implementations for several worked examples. These cover the basics of calibration refinement. Here we discuss some additional methods that have been used successfully in recent works.</p>
<sec>
<title>5.1. Shimming a system in a uniform magnetic field</title>
<p>Certain Ising models in a uniform magnetic field are of interest to physicists, and these have been simulated in quantum annealers both at equilibrium (Kairys et al., <xref ref-type="bibr" rid="B10">2020</xref>) and out of equilibrium (King et al., <xref ref-type="bibr" rid="B11">2021a</xref>). If we want to simulate an infinite system, we would ideally study a large system with no missing spins, and with fully periodic boundaries. However, this is often not possible, so we wish to make the magnetization <italic>m</italic><sub><italic>i</italic></sub> independent of the spin&#x00027;s position relative to the boundary (although it may depend on the spin&#x00027;s position in a unit cell of the lattice being simulated). In a typical experiment, we want to measure a system under an average field <inline-formula><mml:math id="M112"><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> for each value in an increasing set of equally spaced values <inline-formula><mml:math id="M113"><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>2</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula>.</p>
<p>To deal with this, we can shim individual longitudinal field terms, <italic>h</italic><sub><italic>i</italic></sub>, such that all spins of a given type (i.e., in the same position of the unit cell) are in the same orbit. We can then shim all <italic>h</italic><sub><italic>i</italic></sub> terms for each simulated field magnitude <inline-formula><mml:math id="M114"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:math></inline-formula> that we want to study, and denote each individual term <inline-formula><mml:math id="M115"><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula>. After each iteration we renormalize the fields so the average value <inline-formula><mml:math id="M116"><mml:mfrac><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:mfrac><mml:munderover accentunder="false" accent="false"><mml:mrow><mml:mo>&#x02211;</mml:mo></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mo>=</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mrow><mml:mi>N</mml:mi></mml:mrow></mml:munderover><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula> remains equal to <inline-formula><mml:math id="M117"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup></mml:math></inline-formula> throughout the shim, perhaps with an adjustment arising from boundary spins.</p>
<p>To shim the case <inline-formula><mml:math id="M118"><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, we use FBOs (as in the worked examples) instead of tuning <italic>h</italic><sub><italic>i</italic></sub>. To shim the case <inline-formula><mml:math id="M119"><mml:msup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msup><mml:mo>=</mml:mo><mml:mn>0</mml:mn></mml:math></inline-formula>, we use FBOs (as in the worked examples) to set a zero point instead of tuning <inline-formula><mml:math id="M120"><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula>. In doing so, we can compensate for time-dependent flux drift, particularly when determining the location (in <inline-formula><mml:math id="M121"><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula>) of a phase transition.</p>
<p>We can additionally ensure that each <italic>h</italic><sub><italic>i</italic></sub> is a locally smooth function of <inline-formula><mml:math id="M122"><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> by adding a smoothing term. For example, if <italic>h</italic><sub><italic>i</italic></sub> has values <inline-formula><mml:math id="M123"><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo>-</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula> and <inline-formula><mml:math id="M124"><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mo>&#x0002B;</mml:mo></mml:mrow></mml:msubsup></mml:math></inline-formula> for the next lower and higher values of <inline-formula><mml:math id="M125"><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> being simulated, we can make the adjustment.</p>
<p>We can additionally ensure that each sequence <inline-formula><mml:math id="M126"><mml:mrow><mml:mo>{</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>,</mml:mo><mml:mo>&#x02026;</mml:mo><mml:mo>,</mml:mo><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>m</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:mrow><mml:mo>}</mml:mo></mml:mrow></mml:math></inline-formula> is a smooth function of <inline-formula><mml:math id="M127"><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x00304;</mml:mo></mml:mover></mml:math></inline-formula> by adding a smoothing term.<xref ref-type="fn" rid="fn0005"><sup>5</sup></xref> For example, we can add make an adjustment in two steps. First, set all</p>
<disp-formula id="E11"><label>(10)</label><mml:math id="M128"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x02190;</mml:mo><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mn>1</mml:mn><mml:mo>-</mml:mo><mml:mi>&#x003B5;</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:mi>&#x003F5;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>-</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x0002B;</mml:mo><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi><mml:mo>&#x0002B;</mml:mo><mml:mn>1</mml:mn></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>/</mml:mo><mml:mn>2</mml:mn><mml:mo>,</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>for intermediate values of <italic>k</italic> and some smoothing constant 0 &#x0003C; &#x003F5; &#x0003C; 1. Second, set all <inline-formula><mml:math id="M129"><mml:msubsup><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup><mml:mo>&#x02190;</mml:mo><mml:msubsup><mml:mrow><mml:mover accent="true"><mml:mrow><mml:mi>h</mml:mi></mml:mrow><mml:mo>&#x0007E;</mml:mo></mml:mover></mml:mrow><mml:mrow><mml:mi>i</mml:mi></mml:mrow><mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>k</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:mrow></mml:msubsup></mml:math></inline-formula>.</p>
</sec>
<sec>
<title>5.2. Shimming an Ising model with no symmetries</title>
<p>In King et al. (<xref ref-type="bibr" rid="B13">2021b</xref>), a qubit spin ice was implemented using a checkerboard Ising model. The system had open boundary conditions and missing spins due to inoperable qubits, so no geometric symmetries were available. However, due to the rich automorphism group of the qubit connectivity graph (ignoring unused qubits), it was possible to generate many distinct embeddings of the same system, using different mappings of qubits to spins. Therefore we could simulate a collection of distinct embeddings (in this case, 20) and shim in the same way we did in the worked examples. The only difference is that in the qubit spin ice example, the embeddings are not disjoint and therefore must be sampled from using separate calls to the QPU. However, once we have a set of samples from each embedding, we can analyze the data as though the embeddings are disjoint, whether or not this is actually the case. The benefit remains the same: by simulating with 20 distinct embeddings, we get qubit and coupler orbits of size at least 20.</p>
</sec>
<sec>
<title>5.3. Shimming a collection of random inputs</title>
<p>In King et al. (<xref ref-type="bibr" rid="B14">2023</xref>), shimming was used to study <italic>spin-glass ensembles</italic>&#x02014;collections of random problems with certain parameters. As we have seen, we can spend hundreds of iterations shimming a single problem, and this becomes impractical when studying ensembles of thousands of instances.</p>
<p>The approach used was to exploit a common symmetry: all problems in the ensembles had <italic>h</italic> &#x0003D; 0. Shimming the couplers was abandoned as being impractical for such a large set of inputs. Shimming FBOs, however, is straightforward. By cycling through 300 spin-glass realizations using the same set of qubits and couplers, simulating each realization several times, it is possible to combine the work and arrive at a good set of FBOs that mitigates the majority of systematic offsets.</p>
</sec>
<sec>
<title>5.4. Shimming anneal offsets for fast anneals</title>
<p>As described in the Supplementary material to King et al. (<xref ref-type="bibr" rid="B16">2022</xref>), D-Wave quantum annealing processors have recently demonstrated the capacity to anneal much faster than currently generally available, at an anneal time of 10 nanoseconds or less (King et al., <xref ref-type="bibr" rid="B16">2022</xref>, <xref ref-type="bibr" rid="B14">2023</xref>). This speed exceeds the ability of the control electronics to synchronize the annealing lines (eight in the Advantage processor, four in D-Wave 2000Q&#x02122;) satisfactorily. Therefore, frustration statistics can be used to infer which lines are out of sync with the others, and in which direction. Anneal offsets, which allow individual qubits to be annealed slightly ahead of or behind other qubits, were used to synchronize the qubits on each annealing line. These fast anneals are not currently generally available, but they may be in the future.</p>
</sec>
</sec>
<sec id="s6">
<title>6. Additional tips</title>
<sec>
<title>6.1. Limitations</title>
<p>The shimming techniques we have discussed in this tutorial are efficient to perform and are simple to justify theoretically. However, we note a couple of its limitations here. First, there exists a potential computational bottleneck in the full shimming paradigm. The method partly relies on identifying qubit and coupler orbits. Identifying these orbits can be reduced to the problem of identifying the automorphism group of a graph, which can usually be done quickly in practice even though no general polynomial-time algorithm is known. Second, shims inherently exhibit time-dependent fluctuations due to noise in the environment. These fluctuations tend to be smaller than the shim terms themselves, so do not significantly diminish the potential benefit of calibration refinement.</p>
</sec>
<sec>
<title>6.2. Making calibration refinement more efficient</title>
<p>As we have seen, shimming can take many iterations to converge. Naively repeating the process across many combinations of parameters (e.g., annealing time, energy scale, etc.) can be extremely time consuming. However, there are ways to improve the efficiency of the process. Here we outline some important things to bear in mind.</p>
<sec>
<title>6.2.1. Adjustments are often continuous functions of other parameters</title>
<p>If we determine a set of adjustments for a given experiment, then slightly vary some parameters of the experiment, we can generally expect that the adjustments will not change much. For example, FBOs and coupling adjustments are expected to vary smoothly as functions of annealing time, energy scale, and various perturbations to the system (for example the ratio between FM and AFM couplers in an embedded triangular antiferromagnet). This assumption is natural outside the vicinity of a phase transition, and near a phase transition we adhere to the principle that we should not make discontinuous compensations to a simulator which is itself under smooth parametric modulation. An important example of a smoothly tuned parameter is the annealing parameter <italic>s</italic>, in cases where we simulate a system at 0&#x0226A;<italic>s</italic>&#x0226A;1 (King et al., <xref ref-type="bibr" rid="B12">2018</xref>, <xref ref-type="bibr" rid="B11">2021a</xref>, <xref ref-type="bibr" rid="B16">2022</xref>, etc.).</p>
<p>As an example of how this can help speed up a shim, if we double the annealing time, FBOs and coupling adjustments will remain relatively stable. Thus, rather than starting our shim anew from the nominal Hamiltonian, we can start from an adjusted Hamiltonian that was determined using similar parameters. One could go further than this, and extrapolate or interpolate based on multiple values.</p>
</sec>
<sec>
<title>6.2.2. Predictable adjustments should be programmed into the initial Hamiltonian</title>
<p>As shown in <xref ref-type="fig" rid="F14">Figures 14</xref>, <xref ref-type="fig" rid="F15">15</xref>, starting with halved boundary couplings can immediately bring the couplings close to their converged values. If we are aware of such adjustments, using them as initial conditions can make shims converge far faster.</p>
</sec>
</sec>
<sec>
<title>6.3. Damping shim terms</title>
<p>It is sometimes useful to gently encourage a shim to remain close to the nominal values, for example to prevent drifting Hamiltonian terms. This issue can be particularly important near a phase transition, where statistical fluctuations can be very large. Drift can be suppressed by adding a damping term to the shim. For example, we can set a damping constant 0 &#x02264; &#x003C1; &#x02264; 1, and after every iteration we can move each coupler <italic>J</italic><sub><italic>ij</italic></sub> toward its nominal value &#x00134;<sub><italic>ij</italic></sub>:</p>
<disp-formula id="E12"><label>(11)</label><mml:math id="M130"><mml:mtable class="eqnarray" columnalign="left"><mml:mtr><mml:mtd><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>&#x02192;</mml:mo><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:mi>&#x003C1;</mml:mi><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:msub><mml:mrow><mml:mi>J</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub><mml:mo>-</mml:mo><mml:msub><mml:mrow><mml:mi>&#x00134;</mml:mi></mml:mrow><mml:mrow><mml:mi>i</mml:mi><mml:mi>j</mml:mi></mml:mrow></mml:msub></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow><mml:mo>.</mml:mo></mml:mtd></mml:mtr></mml:mtable></mml:math></disp-formula>
<p>Doing this can discourage random fluctuations, but can also lead to under compensation of biases. It is only recommend to use damping when the shim is otherwise badly behaved. In practice, a suitable value for &#x003C1; is determined through trial and error, i.e., by assessing whether shims have converged (see Section 2 for discussion on shim convergence).</p>
</sec>
</sec>
<sec sec-type="conclusions" id="s7">
<title>7. Conclusions</title>
<p>In this document we have presented several basic examples that introduce the value of calibration refinement or &#x0201C;shimming&#x0201D; in quantum annealing processors. These methods should be applied to any detailed study of quantum systems in a quantum annealer, and will generally provide a significant improvement to the results. Depending on the sensitivity of the system under study, these methods can mean the difference between an unsuccessful experiment and an extremely accurate simulation.</p>
<p>We have provided fully coded examples in Python, which should be easy to generalize and adapt. As part of these examples, we include methods for embedding many copies of a small Ising model in a large quantum annealing processor. This is a valuable and straightforward practice that can enormously improve both the quantity and the quality of results drawn from a single QPU programming.</p>
<p>Another important perspective, which has been introduced here for the first time, is the notion of constructing an auxiliary Ising model and using automorphisms of it to infer qubit and coupler orbits automatically. We encourage users to experiment with this method and report on any challenges or benefits found.</p>
<p>The examples in this document are written for use in an Advantage processor, but are not specific to that model, or even to D-Wave quantum annealers in general. These results may prove useful in diverse analog Ising machines, both quantum and classical.</p>
</sec>
<sec sec-type="data-availability" id="s8">
<title>Data availability statement</title>
<p>The original contributions presented in the study are included in the article/<xref ref-type="sec" rid="s12">Supplementary material</xref>, further inquiries can be directed to the corresponding author.</p>
</sec>
<sec sec-type="author-contributions" id="s9">
<title>Author contributions</title>
<p>AK and JR devised the shimming methods. All authors contributed to the writing and revision of the paper and code examples.</p>
</sec>
</body>
<back>
<sec sec-type="funding-information" id="s10">
<title>Funding</title>
<p>This tutorial was supported by D-Wave Systems Inc.</p>
</sec>
<ack><p>The authors are grateful to Ciaran McCreesh for help with the Glasgow Subgraph Solver, to Hanjing Xu, Alejandro Lopez-Bezanilla, and Joel Pasvolsky for comments on the manuscript.</p>
</ack>
<sec sec-type="COI-statement" id="conf1">
<title>Conflict of interest</title>
<p>KC, KB, JR, PF, and AK are employees of D-Wave Systems Inc. The reviewer AL declared a past co-authorship with the author AK to the handling editor.</p>
</sec>
<sec sec-type="disclaimer" id="s11">
<title>Publisher&#x00027;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<sec sec-type="supplementary-material" id="s12">
<title>Supplementary material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xlink:href="https://www.frontiersin.org/articles/10.3389/fcomp.2023.1238988/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/fcomp.2023.1238988/full#supplementary-material</ext-link></p>
<supplementary-material xlink:href="Data_Sheet_1.ZIP" id="SM1" mimetype="application/zip" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Data_Sheet_2.ZIP" id="SM2" mimetype="application/zip" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Data_Sheet_3.ZIP" id="SM3" mimetype="application/zip" xmlns:xlink="http://www.w3.org/1999/xlink"/>
<supplementary-material xlink:href="Data_Sheet_4.ZIP" id="SM4" mimetype="application/zip" xmlns:xlink="http://www.w3.org/1999/xlink"/>
</sec>
<fn-group>
<fn id="fn0001"><p><sup>1</sup>An observable is a quantity that one can physically measure and observe. For example, the spin of a qubit.</p></fn>
<fn id="fn0002"><p><sup>2</sup>Here, &#x0201C;differ systematically&#x0201D; refers to discrepancies between the expected value and the observed average as a result of biases in the physical system and not discrepancies due to finite samples.</p></fn>
<fn id="fn0003"><p><sup>3</sup>A gauge transformation is also known as a <italic>spin reversal transformation</italic>, in which a subset of spins have their sign flipped.</p></fn>
<fn id="fn0004"><p><sup>4</sup>Since the automorphism-finding code <monospace>nauty</monospace>, McKay and Piperno (<xref ref-type="bibr" rid="B19">2014</xref>) only handles vertex-labeled graphs and not edge-labeled graphs, and we need to construct a vertex-labeled graph <italic>G</italic>&#x02033; from <inline-formula><mml:math id="M65"><mml:mrow><mml:mi mathvariant="script">S</mml:mi></mml:mrow><mml:mrow><mml:mo stretchy="false">(</mml:mo><mml:mrow><mml:mi>h</mml:mi><mml:mo>,</mml:mo><mml:mi>J</mml:mi></mml:mrow><mml:mo stretchy="false">)</mml:mo></mml:mrow></mml:math></inline-formula>, which gives us the appropriate automorphism group.</p></fn>
<fn id="fn0005"><p><sup>5</sup>A smooth function is desirable because a shim is a perturbation of the Hamiltonian intended to compensate for small non-idealities in the quantum annealer.</p></fn>
</fn-group>
<ref-list>
<title>References</title>
<ref id="B1">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Barahona</surname> <given-names>F.</given-names></name></person-group> (<year>1982</year>). <article-title>On the computational complexity of Ising spin glass models</article-title>. <source>J Phys A</source>. <volume>15</volume>, <fpage>3241</fpage>&#x02013;<lpage>3253</lpage>.</citation>
</ref>
<ref id="B2">
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Boothby</surname> <given-names>K.</given-names></name> <name><surname>Bunyk</surname> <given-names>P.</given-names></name> <name><surname>Raymond</surname> <given-names>J.</given-names></name> <name><surname>Roy</surname> <given-names>A.</given-names></name></person-group> (<year>2020</year>). <source>Next-Generation Topology of D-Wave Quantum Processors</source>. Available online at: <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/abs/2003.00133">https://arxiv.org/abs/2003.00133</ext-link></citation>
</ref>
<ref id="B3">
<citation citation-type="web"><person-group person-group-type="author"><collab>D-Wave</collab></person-group> (<year>2022</year>). <source>D-Wave System Documentation: &#x0201C;Flux-Bias Offsets&#x0201D;</source>. Available online at: <ext-link ext-link-type="uri" xlink:href="https://docs.dwavesys.com/docs/latest/c_qpu_error_correction.html&#x00023;qpu-error-fix-fbo">https://docs.dwavesys.com/docs/latest/c_qpu_error_correction.html&#x00023;qpu-error-fix-fbo</ext-link> (accessed January 3, 2023).</citation>
</ref>
<ref id="B4">
<citation citation-type="web"><person-group person-group-type="author"><collab>D-Wave</collab></person-group> (<year>2023</year>). <source>Minorminer</source>. Available online at: <ext-link ext-link-type="uri" xlink:href="https://github.com/dwavesystems/minorminer">https://github.com/dwavesystems/minorminer</ext-link> (accessed January 23, 2023).</citation>
</ref>
<ref id="B5">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>Godsil</surname> <given-names>C.</given-names></name> <name><surname>Royle</surname> <given-names>G.</given-names></name></person-group> (<year>2001</year>). <source>Algebraic Graph Theory, Vol 207 of Graduate Texts in Mathematics</source>. <publisher-loc>New York, NY</publisher-loc>: <publisher-name>Springer</publisher-name>.</citation>
</ref>
<ref id="B6">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Harris</surname> <given-names>R.</given-names></name> <name><surname>Lanting</surname> <given-names>T.</given-names></name> <name><surname>Berkley</surname> <given-names>A. J.</given-names></name> <name><surname>Johansson</surname> <given-names>J.</given-names></name> <name><surname>Johnson</surname> <given-names>M. W.</given-names></name> <name><surname>Bunyk</surname> <given-names>P.</given-names></name> <etal/></person-group>. (<year>2009</year>). <article-title>Compound Josephson-junction coupler for flux qubits with minimal crosstalk</article-title>. <source>Phys. Rev. B</source> <volume>80</volume>, <fpage>e052506</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.80.052506</pub-id></citation>
</ref>
<ref id="B7">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Isakov</surname> <given-names>S. V.</given-names></name> <name><surname>Moessner</surname> <given-names>R.</given-names></name></person-group> (<year>2003</year>). <article-title>Interplay of quantum and thermal fluctuations in a frustrated magnet</article-title>. <source>Phys. Rev. B</source> <volume>68</volume>, <fpage>104409</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.68.104409</pub-id></citation>
</ref>
<ref id="B8">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Johnson</surname> <given-names>M. W.</given-names></name> <name><surname>Amin</surname> <given-names>M. H.</given-names></name> <name><surname>Gildert</surname> <given-names>S.</given-names></name> <name><surname>Lanting</surname> <given-names>T.</given-names></name> <name><surname>Hamze</surname> <given-names>F.</given-names></name> <name><surname>Dickson</surname> <given-names>N.</given-names></name> <etal/></person-group>. (<year>2011</year>). <article-title>Quantum annealing with manufactured spins</article-title>. <source>Nature</source> <volume>473</volume>, <fpage>194</fpage>&#x02013;<lpage>198</lpage>. <pub-id pub-id-type="doi">10.1038/nature10012</pub-id><pub-id pub-id-type="pmid">21562559</pub-id></citation></ref>
<ref id="B9">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kadowaki</surname> <given-names>T.</given-names></name> <name><surname>Nishimori</surname> <given-names>H.</given-names></name></person-group> (<year>1998</year>). <article-title>Quantum annealing in the transverse Ising model</article-title>. <source>Phys. Rev. E</source> <volume>58</volume>, <fpage>5355</fpage>. <pub-id pub-id-type="pmid">17677027</pub-id></citation></ref>
<ref id="B10">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Kairys</surname> <given-names>P.</given-names></name> <name><surname>King</surname> <given-names>A. D.</given-names></name> <name><surname>Ozfidan</surname> <given-names>I.</given-names></name> <name><surname>Boothby</surname> <given-names>K.</given-names></name> <name><surname>Raymond</surname> <given-names>J.</given-names></name> <name><surname>Banerjee</surname> <given-names>A.</given-names></name> <etal/></person-group>. (<year>2020</year>). <article-title>Simulating the Shastry-Sutherland ising model using quantum annealing</article-title>. <source>PRX Quantum</source> <volume>1</volume>, <fpage>e020320</fpage>. <pub-id pub-id-type="doi">10.1103/PRXQuantum.1.020320</pub-id><pub-id pub-id-type="pmid">36463920</pub-id></citation></ref>
<ref id="B11">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>King</surname> <given-names>A. D.</given-names></name> <name><surname>Batista</surname> <given-names>C. D.</given-names></name> <name><surname>Raymond</surname> <given-names>J.</given-names></name> <name><surname>Lanting</surname> <given-names>T.</given-names></name> <name><surname>Ozfidan</surname> <given-names>I.</given-names></name> <name><surname>Poulin-Lamarre</surname> <given-names>G.</given-names></name> <etal/></person-group>. (<year>2021a</year>). <article-title>Quantum annealing simulation of out-of-equilibrium magnetization in a spin-chain compound</article-title>. <source>PRX Quantum</source> <volume>2</volume>, <fpage>e030317</fpage>. <pub-id pub-id-type="doi">10.1103/PRXQuantum.2.030317</pub-id></citation>
</ref>
<ref id="B12">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>King</surname> <given-names>A. D.</given-names></name> <name><surname>Carrasquilla</surname> <given-names>J.</given-names></name> <name><surname>Raymond</surname> <given-names>J.</given-names></name> <name><surname>Ozfidan</surname> <given-names>I.</given-names></name> <name><surname>Andriyash</surname> <given-names>E.</given-names></name> <name><surname>Berkley</surname> <given-names>A.</given-names></name> <etal/></person-group>. (<year>2018</year>). <article-title>Observation of topological phenomena in a programmable lattice of 1,800 qubits</article-title>. <source>Nature</source> <volume>560</volume>, <fpage>456</fpage>&#x02013;<lpage>460</lpage>. <pub-id pub-id-type="doi">10.1038/s41586-018-0410-x</pub-id><pub-id pub-id-type="pmid">30135527</pub-id></citation></ref>
<ref id="B13">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>King</surname> <given-names>A. D.</given-names></name> <name><surname>Nisoli</surname> <given-names>C.</given-names></name> <name><surname>Dahl</surname> <given-names>E. D.</given-names></name> <name><surname>Poulin-Lamarre</surname> <given-names>G.</given-names></name> <name><surname>Lopez-Bezanilla</surname> <given-names>A.</given-names></name></person-group> (<year>2021b</year>). <article-title>Qubit spin ice</article-title>. <source>Science</source> <volume>373</volume>, <fpage>576</fpage>&#x02013;<lpage>580</lpage>. <pub-id pub-id-type="doi">10.1126/science.abe2824</pub-id><pub-id pub-id-type="pmid">34326242</pub-id></citation></ref>
<ref id="B14">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>King</surname> <given-names>A. D.</given-names></name> <name><surname>Raymond</surname> <given-names>J.</given-names></name> <name><surname>Lanting</surname> <given-names>T.</given-names></name> <name><surname>Harris</surname> <given-names>R.</given-names></name> <name><surname>Zucca</surname> <given-names>A.</given-names></name> <name><surname>Altomare</surname> <given-names>F.</given-names></name> <etal/></person-group>. (<year>2023</year>). <article-title>Quantum critical dynamics in a 5,000-qubit programmable spin glass</article-title>. <source>Nature</source> <volume>617</volume>, <fpage>61</fpage>&#x02013;<lpage>66</lpage>. <pub-id pub-id-type="doi">10.1038/s41586-023-05867-2</pub-id><pub-id pub-id-type="pmid">37076625</pub-id></citation></ref>
<ref id="B15">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>King</surname> <given-names>A. D.</given-names></name> <name><surname>Raymond</surname> <given-names>J.</given-names></name> <name><surname>Lanting</surname> <given-names>T.</given-names></name> <name><surname>Isakov</surname> <given-names>S. V.</given-names></name> <name><surname>Mohseni</surname> <given-names>M.</given-names></name> <name><surname>Poulin-Lamarre</surname> <given-names>G.</given-names></name> <etal/></person-group>. (<year>2021c</year>). <article-title>Scaling advantage over path-integral Monte Carlo in quantum simulation of geometrically frustrated magnets</article-title>. <source>Nat. Commun.</source> <volume>12</volume>, <fpage>1113</fpage>. <pub-id pub-id-type="doi">10.1038/s41467-021-20901-5</pub-id><pub-id pub-id-type="pmid">33602927</pub-id></citation></ref>
<ref id="B16">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>King</surname> <given-names>A. D.</given-names></name> <name><surname>Suzuki</surname> <given-names>S.</given-names></name> <name><surname>Raymond</surname> <given-names>J.</given-names></name> <name><surname>Zucca</surname> <given-names>A.</given-names></name> <name><surname>Lanting</surname> <given-names>T.</given-names></name> <name><surname>Altomare</surname> <given-names>F.</given-names></name> <etal/></person-group>. (<year>2022</year>). <article-title>Coherent quantum annealing in a programmable 2,000 qubit Ising chain</article-title>. <source>Nat. Phys.</source> <volume>18</volume>, <fpage>1324</fpage>&#x02013;<lpage>1328</lpage>. <pub-id pub-id-type="doi">10.1038/s41567-022-01741-6</pub-id></citation>
</ref>
<ref id="B17">
<citation citation-type="web"><person-group person-group-type="author"><name><surname>Kingma</surname> <given-names>D. P.</given-names></name> <name><surname>Ba</surname> <given-names>J.</given-names></name></person-group> (<year>2014</year>). <source>Adam: A Method for Stochastic Optimization</source>. Available online at: <ext-link ext-link-type="uri" xlink:href="https://arxiv.org/abs/1412.6980">https://arxiv.org/abs/1412.6980</ext-link></citation>
</ref>
<ref id="B18">
<citation citation-type="book"><person-group person-group-type="author"><name><surname>McCreesh</surname> <given-names>C.</given-names></name> <name><surname>Prosser</surname> <given-names>P.</given-names></name> <name><surname>Trimble</surname> <given-names>J.</given-names></name></person-group> (<year>2020</year>). <article-title>The Glasgow subgraph solver: using constraint programming to tackle hard subgraph isomorphism problem variants</article-title>. in <source>Graph Transformation</source>, eds <person-group person-group-type="editor"><name><surname>Gadducci</surname> <given-names>F.</given-names></name> <name><surname>Kehrer</surname> <given-names>T.</given-names></name></person-group> (<publisher-loc>Cham</publisher-loc>: <publisher-name>Springer International Publishing</publisher-name>), <fpage>316</fpage>&#x02013;<lpage>324</lpage>.</citation>
</ref>
<ref id="B19">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>McKay</surname> <given-names>B. D.</given-names></name> <name><surname>Piperno</surname> <given-names>A.</given-names></name></person-group> (<year>2014</year>). <article-title>Practical graph isomorphism, II</article-title>. <source>J. Symbol. Comput.</source> <volume>60</volume>, <fpage>94</fpage>&#x02013;<lpage>112</lpage>. <pub-id pub-id-type="doi">10.1016/j.jsc.2013.09.003</pub-id><pub-id pub-id-type="pmid">29745832</pub-id></citation></ref>
<ref id="B20">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Moessner</surname> <given-names>R.</given-names></name> <name><surname>Sondhi</surname> <given-names>S. L.</given-names></name></person-group> (<year>2001</year>). <article-title>Ising models of quantum frustration</article-title>. <source>Phys. Rev. B</source> <volume>63</volume>, <fpage>1</fpage>&#x02013;<lpage>19</lpage>. <pub-id pub-id-type="doi">10.1103/PhysRevB.63.224401</pub-id></citation>
</ref>
<ref id="B21">
<citation citation-type="journal"><person-group person-group-type="author"><name><surname>Nishimura</surname> <given-names>K.</given-names></name> <name><surname>Nishimori</surname> <given-names>H.</given-names></name> <name><surname>Katzgraber</surname> <given-names>H. G.</given-names></name></person-group> (<year>2020</year>). <article-title>Griffiths-McCoy singularity on the diluted Chimera graph: Monte Carlo simulations and experiments on quantum hardware</article-title>. <source>Phys. Rev. A</source> <volume>102</volume>, <fpage>e042403</fpage>. <pub-id pub-id-type="doi">10.1103/PhysRevA.102.042403</pub-id></citation>
</ref>
</ref-list>
</back>
</article>