def test_embedding_with_extra_chains(self): embedding = {0: [0, 1], 1: [2], 2: [3]} G = nx.cycle_graph(4) bqm = dimod.BinaryQuadraticModel.from_qubo({(0, 0): 1}) target_bqm = dwave.embedding.embed_bqm(bqm, embedding, G) for v in itertools.chain(*embedding.values()): self.assertIn(v, target_bqm)
else: row += str(ising_model[1][(i, j)]) + '\t' print(row) input() print("\nEmbedding logical problem into physical layout ...") # Construct logical problem graph prob_graph = nx.Graph() prob_graph.add_edges_from([(1, 2), (2, 3), (1, 3)]) # Construct an embedding embedding = {1: [1], 2: [2], 3: [3, 4]} # Map our Ising model onto the embedding qubits = list(i for x in embedding.values() for i in x) target = nx.cycle_graph(qubits) th, tJ = dwave.embedding.embed_ising(ising_model[0], ising_model[1], embedding, target) print("\nQMI (unscaled):\n") for i in range(1, 5): row = '' for j in range(1, 5): if j == i: row += str(th[i]) + '\t' elif (i, j) in tJ: row += str(tJ[(i, j)]) + '\t' else: row += str(0) + '\t'
# working with different topologies import neal import dimod import dwave_networkx as dnx import networkx as nx import dwave.embedding from dwave.system import DWaveSampler, EmbeddingComposite # Creating a Pegasus Sampler P6 = dnx.pegasus_graph(6) classical_sampler = neal.SimulatedAnnealingSampler() sampler = dimod.StructureComposite(classical_sampler, P6.nodes, P6.edges) # working with embeddings num_variables = 40 embedding = dwave.embedding.chimera.find_clique_embedding(num_variables, 16) toPrint1 = max(len(chain) for chain in embedding.values()) print(toPrint1) num_variables = 40 embedding = dwave.embedding.pegasus.find_clique_embedding(num_variables, 6) toPrint2 = max(len(chain) for chain in embedding.values()) print(toPrint2)
QPUGraph = nx.Graph(qpu_sampler.edgelist) all(v in C16.nodes for v in QPUGraph.nodes) all(edge in C16.edges for edge in QPUGraph.edges) # %% # Creating a Pegasus Sampler P6 = dnx.pegasus_graph(6) classical_sampler = neal.SimulatedAnnealingSampler() sampler = dimod.StructureComposite(classical_sampler, P6.nodes, P6.edges) # %% # Working With Embeddings # 全結合の40ノードを作りたい num_variables = 40 embedding = dwave.embedding.chimera.find_clique_embedding(num_variables, 16) max(len(chain) for chain in embedding.values()) # チェーン数は11 # %% # 680 node Pegasus num_variables = 40 embedding = dwave.embedding.pegasus.find_clique_embedding(num_variables, 6) max(len(chain) for chain in embedding.values()) # チェーン数は6 # %% # https://qiita.com/YuichiroMinato/items/dbc142ecb1efbebd6adf chimera = dnx.chimera_graph(2, 2, 4) dnx.draw_chimera(chimera) plt.show()