common.title

Docs
Quantum Circuit
TYTAN CLOUD

QUANTUM GAMING


Overview
Terms of service

Privacy policy

Contact
Research

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