How "chain_break_fraction" is calculated?

I wonder what exactly means the "chain_break_fraction" value, how it is calculated.

It is the "fraction/percentage" of all "num_reads/samples"? Or is the percentage of broken chains just in the sample with minimal energy value ("")?

My concern is to understand how bad/useless is a minimal_energy result, if the "chain_break_fraction" is greater than zero.

Thank you.



  • Hello,

    The chain_break_fraction is the fraction of chains broken in a given sample.

    Each sample is of a different energy.

    Ideally the chain_break_fraction would be zero for every sample in the sampleset.

    If there is a break in a chain, it is fixed with the chain break method.
    This method will attempt to choose the best value for the broken chains (either 0 or 1 for QUBO, -1 or +1 for ising), depending on what method is used.

    The default method just chooses the most popular value within the broken chain (i.e. a chain with values [0,0,1] would result in 0).
    It is difficult to say if results with non-zero chain_break_fraction values should be fully trusted, but they can be useful for some problems types (i.e. this is very problem-specific).

    If a non-zero chain_break_fraction does show up in some of the sets and not others, you might want to look at the non-broken samples.
    Due to chain break fixes, they might have the same energy and qubit values, but have been derived from different methods (i.e. one via QPU result and the other via a chain break fix).

    I hope this is somewhat helpful in understanding the results you are seeing. 
    Please do feel free to ask follow-up questions!

    Comment actions Permalink
  • "The usual rule of thumb is to use a chain strength that is around the order of magnitude of the largest coupler/qubit bias in the problem, and increase if necessary."

    This is a small piece of my BQM:

    { (0, 0): -0.122863516666815,
    (1, 1): -3.45068963700112,
    (2, 2): -0.457505648866156,
    (0, 1): 0.011316139267034,
    (0, 2): 0.022632278534069,
    (1, 2): 1.45264557068137}

    I removed the duplicated biases: (1, 0), (2, 0), (2, 1)

    Min Bias: -3.45068963700112 and Max Bias: 1.45264557068137

    1) In the BQM dictionary, that value is the "largest coupler/qubit bias", right?

    2) For the "chain_strength", should I use: "1.00", "1.45", "2.00" or abs(-3.45) ?

    I'm using "math.ceil(abs(bqm_max))

    Thank you

    Comment actions Permalink
  • 0
    Comment actions Permalink

Please sign in to leave a comment.

Didn't find what you were looking for?

New post