Exemplo n.º 1
0
def test_local_solver_sa_ising():
    model = LogicalModel(mtype="ising")
    s = model.variables("s", shape=(2,))
    model.add_interaction(s[0], coefficient=1.0)
    model.add_interaction(s[1], coefficient=2.0)
    model.add_interaction((s[0], s[1]), coefficient=-3.0)
    model.offset(10.0)

    solver = LocalSolver()
    sampleset1 = solver.solve(model.to_physical(), seed=12345)

    assert sampleset1.variables == ["s[0]", "s[1]"]
    assert len(sampleset1.record) == 1

    # Check the ground state
    assert np.array_equal(sampleset1.record[0].sample, [-1, 1])
    assert sampleset1.record[0].energy == 6.0
    assert sampleset1.record[0].num_occurrences == 1

    # Check the second solve with the same solver instance
    sampleset2 = solver.solve(model.to_physical(), seed=54321)

    assert sampleset2.variables == ["s[0]", "s[1]"]
    assert len(sampleset2.record) == 1

    # Check the ground state
    assert np.array_equal(sampleset2.record[0].sample, [-1, 1])
    assert sampleset2.record[0].energy == 6.0
    assert sampleset2.record[0].num_occurrences == 1
Exemplo n.º 2
0
def test_local_solver_sa_qubo():
    model = LogicalModel(mtype="qubo")
    x = model.variables("x", shape=(2,))
    model.add_interaction(x[0], coefficient=1.0)
    model.add_interaction(x[1], coefficient=2.0)
    model.add_interaction((x[0], x[1]), coefficient=-5.0)
    model.offset(10.0)

    solver = LocalSolver(exact=False)
    sampleset = solver.solve(model.to_physical(), seed=12345)

    assert sampleset.variables == ["x[0]", "x[1]"]
    assert len(sampleset.record) == 1

    # Check the ground state
    assert np.array_equal(sampleset.record[0].sample, [0, 1])
    assert sampleset.record[0].energy == 8.0
    assert sampleset.record[0].num_occurrences == 1
Exemplo n.º 3
0
def test_sawatabi_solver_qubo():
    model = LogicalModel(mtype="qubo")
    x = model.variables("x", shape=(2,))
    model.add_interaction(x[0], coefficient=1.0)
    model.add_interaction(x[1], coefficient=2.0)
    model.add_interaction((x[0], x[1]), coefficient=-5.0)
    model.offset(10.0)

    solver = SawatabiSolver()
    sampleset = solver.solve(model.to_physical(), num_reads=1, num_sweeps=10, cooling_rate=0.55, seed=12345)

    assert sampleset.variables == ["x[0]", "x[1]"]
    assert len(sampleset.record) == 1

    # Check the ground state
    record = sorted(sampleset.record, key=lambda r: r.energy)  # sort by energy
    assert np.array_equal(record[0].sample, [0, 1])
    assert record[0].energy == 8.0
Exemplo n.º 4
0
def test_sawatabi_solver_ising():
    model = LogicalModel(mtype="ising")
    s = model.variables("s", shape=(2,))
    model.add_interaction(s[0], coefficient=1.0)
    model.add_interaction(s[1], coefficient=2.0)
    model.add_interaction((s[0], s[1]), coefficient=-3.0)
    model.offset(10.0)

    solver = SawatabiSolver()
    sampleset = solver.solve(model.to_physical(), num_reads=2, num_sweeps=10, cooling_rate=0.5, initial_temperature=10.0, seed=12345)

    assert sampleset.variables == ["s[0]", "s[1]"]
    assert len(sampleset.record) == 1

    # Check the ground state
    assert np.array_equal(sampleset.record[0].sample, [-1, 1])
    assert sampleset.record[0].energy == 6.0
    assert sampleset.record[0].num_occurrences == 2