common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Contact
Event
Project
Research

Terms of service (Web service)

Terms of service (Quantum and ML Cloud service)

Privacy policy


Sign in
Sign up
common.title

ChatGPT先生を使って量子コンピューティングのWebアプリを作ってみる、その3、完成

Yuichiro Minato

2023/02/08 03:33

1

まぁ、おそらく完成しますね。ChatGPT先生のおかげです。

https://blueqat.com/yuichiro_minato2/6498e2ae-3261-426c-a9c9-62a6ebed5dac

https://blueqat.com/yuichiro_minato2/09ddb7e6-dfdf-4f26-912b-3cd2f611d5e9

最後にフロントとバックエンドを繋げてみます。BQM形式みたいなので書かれているので、それもフロントのQUBOから変換して繋げます。

あとは繋ぐだけで完成なので多分いけそうです。

データ変換が面倒なので、フロントでQUBOを作って、そのままバックエンドでQUBO実行したいです。

わし:

nealのsimulated annealing samplerをqubo 行列形式で実行するコードを教えてください

ChatGPT先生:

import dimod
import neal

QUBOの行列形式

Q = {(0,0): 1, (1,1): 1, (0,1): -2}

nealのSimulatedAnnealingSamplerインスタンスを作成

sampler = neal.SimulatedAnnealingSampler()

サンプリング実行

response = sampler.sample_qubo(Q)

解を取得

solution = response.first.sample
print(solution)

どうやらQUBO表現これで行けるようです。実際適当な二次元配列入れたらいけました。

最後にフロントで受け取った二次元配列をQUBOとしてサンプラーに入れてみます。

@application.route("/api", methods=["POST"])
def api():
  data = request.get_json()
  Q = data['inputText']
  print(Q)

# Simulated Annealing samplerを呼び出して解を求める
  sampler = neal.SimulatedAnnealingSampler()
  response = sampler.sample_qubo(Q)
  result = list(response.first.sample.values())
  print(result)

result = [int(i) for i in result]

# 解をフロントに返す
  return jsonify({"result": result})

これだと動かなかったのでQのところをきちんと二次元配列にする必要がありそうです。

わし:

pythonの文字列の二次元配列をpythonのlistに変更するにはどうすればいいですか

ChatGPT先生:

文字列の二次元配列をpythonのlistに変更するには、以下のようにjson.loads()関数を使うことができます。

import json

string_2d_array = '[["a", "b"], ["c", "d"]]'
list_2d_array = json.loads(string_2d_array)
print(list_2d_array)

Output: [['a', 'b'], ['c', 'd']]

これを参考にして、変更したところ、、、、

完成しました!

from flask import Flask, render_template, request, jsonify
import dimod
import neal
import json

application = Flask(__name__)

@application.route("/")
def home():
  return render_template("index.html")

@application.route("/api", methods=["POST"])
def api():
  data = request.get_json()
  Q = data['inputText']
  Q = json.loads(Q)
  print(Q)

# Simulated Annealing samplerを呼び出して解を求める
  sampler = neal.SimulatedAnnealingSampler()
  response = sampler.sample_qubo(Q)
  result = list(response.first.sample.values())
  print(result)

result = [int(i) for i in result]

# 解をフロントに返す
  return jsonify({"result": result})

if __name__ == "__main__":
  application.run(debug=True)

ほとんど全くコード書いてないです。。。

ほぼコピペです。

QUBOを色々変更してみたところ。。。

人類オワタ \(^o^)/

© 2025, blueqat Inc. All rights reserved