## 最新情報
2023/06/21 Auto_array関数をより使いやすく。SASamplerの性能も上げました(たぶん本当)
2023/06/17 N-bit表現を扱うsymbols_nbit, Auto_array.get_nbit_value関数が追加されました。
2023/06/17 requirements.txtが軽くなりました。
2023/06/12 SASampler, GASamplerの性能が上がりました(ウソかも)
2023/06/10 便利なsymbols_list, symbols_define関数が追加されました。[ドキュメント](https://github.com/tytansdk/tytan/blob/main/document%20.md) が作成されました。
## TYTAN(タイタン)
大規模QUBOアニーリングのためのSDKです。
QUBOを共通の入力形式とし、複数のサンプラーから選んでアニーリングできます。
入力は、数式を記述する方法、QUBO行列を入力する方法、QUBO行列をcsv読み込みする方法があります。
結果を自動で多次元配列に変換する機能を搭載。短いコードで確認できます。詳しくは [ドキュメント](https://github.com/tytansdk/tytan/blob/main/document%20.md) を参照ください。
## サンプラーと問題サイズ
基本的なローカルサンプラーの他、外部のAPIサンプラーなどを組み込めるようにしています。組み込みたソルバーがあればご連絡ください。
ローカルサンプラー:1,000量子ビット程度まで
```
SASampler
GASampler
```
商用クラウドサンプラー:1,000-100,000量子ビット程度
```
ZekeSampler
NQSSampler
```
## インストール
更新が頻繁なためgithubからのインストールを推奨します。
```
pip install -U git+https://github.com/tytansdk/tytan
```
pipインストールはこちらです。
```
pip install -U tytan
```
## サンプルコード1
3個の量子ビットのうち2個だけを1にする例です。結果は「量子ビットの値」「エネルギー(コスト)値」「出現数」の順で格納されています。
```python
from tytan import *
#量子ビットを用意
x = symbols('x')
y = symbols('y')
z = symbols('z')
#式を記述(3個のうち2個だけ1にする)
H = (x + y + z - 2)**2
#コンパイル
qubo, offset = Compile(H).get_qubo()
#サンプラー選択
solver = sampler.SASampler()
#サンプリング
result = solver.run(qubo)
#結果
for r in result:
print(r)
```
```
[{'x': 0, 'y': 1, 'z': 1}, -4.0, 27]
[{'x': 1, 'y': 0, 'z': 1}, -4.0, 23]
[{'x': 1, 'y': 1, 'z': 0}, -4.0, 50]
```
## サンプルコード2
3ルーク問題は、3×3マスに3つのルーク(飛車)を互いに利きが及ばないように置く方法を探す問題です。二次元配列的な添字を持った量子ビットをまとめて定義する関数があります(配列形式も可)。サンプリングの乱数シードは固定できます。結果を二次元配列に戻して可視化する方法も3種類あります。詳しくは [ドキュメント](https://github.com/tytansdk/tytan/blob/main/document%20.md) を参照ください。
```python
from tytan import *
#量子ビットを用意(まとめて定義)
command = symbols_define([3, 3])
print(command)
exec(command)
#各行に1つだけ1
H = 0
H += (q0_0 + q0_1 + q0_2 - 1)**2
H += (q1_0 + q1_1 + q1_2 - 1)**2
H += (q2_0 + q2_1 + q2_2 - 1)**2
#各列に1つだけ1
H += (q0_0 + q1_0 + q2_0 - 1)**2
H += (q0_1 + q1_1 + q2_1 - 1)**2
H += (q0_2 + q1_2 + q2_2 - 1)**2
#コンパイル
qubo, offset = Compile(H).get_qubo()
#サンプラー選択(乱数シード固定)
solver = sampler.SASampler(seed=0)
#サンプリング(100回)
result = solver.run(qubo, shots=100)
#すべての結果を確認
print('result')
for r in result:
print(r)
#1つ目の結果を自動配列で確認(ndarray形式)
arr, subs = Auto_array(result[0]).get_ndarray('q{}_{}')
print('get_ndarray')
print(arr)
print(subs)
#1つ目の結果を自動配列で確認(DataFrame形式)(1次元、2次元のみ)
df, subs = Auto_array(result[0]).get_dframe('q{}_{}')
print('get_dframe')
print(df)
#1つ目の結果を自動配列で確認(image形式)(2次元のみ)
img, subs = Auto_array(result[0]).get_image('q{}_{}')
import matplotlib.pyplot as plt
print('get_image')
plt.imshow(img)
plt.yticks(range(len(subs[0])), subs[0])
plt.xticks(range(len(subs[1])), subs[1])
plt.show()
```
```
q0_0 = symbols('q0_0')
q0_1 = symbols('q0_1')
q0_2 = symbols('q0_2')
q1_0 = symbols('q1_0')
q1_1 = symbols('q1_1')
q1_2 = symbols('q1_2')
q2_0 = symbols('q2_0')
q2_1 = symbols('q2_1')
q2_2 = symbols('q2_2')
result
[{'q0_0': 0, 'q0_1': 0, 'q0_2': 1, 'q1_0': 0, 'q1_1': 1, 'q1_2': 0, 'q2_0': 1, 'q2_1': 0, 'q2_2': 0}, -6.0, 11]
[{'q0_0': 0, 'q0_1': 0, 'q0_2': 1, 'q1_0': 1, 'q1_1': 0, 'q1_2': 0, 'q2_0': 0, 'q2_1': 1, 'q2_2': 0}, -6.0, 20]
[{'q0_0': 0, 'q0_1': 1, 'q0_2': 0, 'q1_0': 0, 'q1_1': 0, 'q1_2': 1, 'q2_0': 1, 'q2_1': 0, 'q2_2': 0}, -6.0, 17]
[{'q0_0': 0, 'q0_1': 1, 'q0_2': 0, 'q1_0': 1, 'q1_1': 0, 'q1_2': 0, 'q2_0': 0, 'q2_1': 0, 'q2_2': 1}, -6.0, 21]
[{'q0_0': 1, 'q0_1': 0, 'q0_2': 0, 'q1_0': 0, 'q1_1': 0, 'q1_2': 1, 'q2_0': 0, 'q2_1': 1, 'q2_2': 0}, -6.0, 20]
[{'q0_0': 1, 'q0_1': 0, 'q0_2': 0, 'q1_0': 0, 'q1_1': 1, 'q1_2': 0, 'q2_0': 0, 'q2_1': 0, 'q2_2': 1}, -6.0, 11]
get_ndarray
[[0 0 1]
[0 1 0]
[1 0 0]]
[['0', '1', '2'], ['0', '1', '2']]
get_dframe
0 1 2
0 0 0 1
1 0 1 0
2 1 0 0
get_image
```
<img src="https://github.com/tytansdk/tytan/blob/main/img/img-01.png" width="%">
## 商用利用OK
TYTANは商用利用前提ですので、個人での利用はもちろん企業での活用を促進しています。
## 更新履歴
|日付|内容|
|:---|:---|
|2023/07/09|網羅探索するオプション追加|
|2023/07/01|Compile修正, requirements.txt修正|
|2023/06/21|Auto_array修正, SASampler性能UP|
|2023/06/17|symbols_nbit, Auto_array.get_nbit_value追加|
|2023/06/17|requirements.txt修正|
|2023/06/12|SASampler性能UP, GASampler性能UP|
|2023/06/10|symbols_list, symbols_define追加、ドキュメント作成|
|2023/06/07|Auto_array追加|
|2023/06/01|シード固定追加|
|2023/05/26|全体構造修正|
|2023/03/28|SASampler高速化|
|2023/03/22|GASampler追加|
|2023/03/15|初期版|
Raw data
{
"_id": null,
"home_page": "https://github.com/tytansdk/tytan",
"name": "tytan",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": null,
"author": "Tytan Developers",
"author_email": "info@blueqat.com",
"download_url": "https://files.pythonhosted.org/packages/26/66/b87d68f7ba566543611c7db16758a487ce47e1592144e2cef2ef6cfca4fc/tytan-0.1.1.tar.gz",
"platform": null,
"description": "## \u6700\u65b0\u60c5\u5831\r\n\r\n2023/06/21 Auto_array\u95a2\u6570\u3092\u3088\u308a\u4f7f\u3044\u3084\u3059\u304f\u3002SASampler\u306e\u6027\u80fd\u3082\u4e0a\u3052\u307e\u3057\u305f\uff08\u305f\u3076\u3093\u672c\u5f53\uff09\r\n\r\n2023/06/17 N-bit\u8868\u73fe\u3092\u6271\u3046symbols_nbit, Auto_array.get_nbit_value\u95a2\u6570\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002\r\n\r\n2023/06/17 requirements.txt\u304c\u8efd\u304f\u306a\u308a\u307e\u3057\u305f\u3002\r\n\r\n2023/06/12 SASampler, GASampler\u306e\u6027\u80fd\u304c\u4e0a\u304c\u308a\u307e\u3057\u305f\uff08\u30a6\u30bd\u304b\u3082\uff09\r\n\r\n2023/06/10 \u4fbf\u5229\u306asymbols_list, symbols_define\u95a2\u6570\u304c\u8ffd\u52a0\u3055\u308c\u307e\u3057\u305f\u3002[\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8](https://github.com/tytansdk/tytan/blob/main/document%20.md) \u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\u3002\r\n\r\n\r\n## TYTAN\uff08\u30bf\u30a4\u30bf\u30f3\uff09\r\n\u5927\u898f\u6a21QUBO\u30a2\u30cb\u30fc\u30ea\u30f3\u30b0\u306e\u305f\u3081\u306eSDK\u3067\u3059\u3002\r\n\r\nQUBO\u3092\u5171\u901a\u306e\u5165\u529b\u5f62\u5f0f\u3068\u3057\u3001\u8907\u6570\u306e\u30b5\u30f3\u30d7\u30e9\u30fc\u304b\u3089\u9078\u3093\u3067\u30a2\u30cb\u30fc\u30ea\u30f3\u30b0\u3067\u304d\u307e\u3059\u3002\r\n\r\n\u5165\u529b\u306f\u3001\u6570\u5f0f\u3092\u8a18\u8ff0\u3059\u308b\u65b9\u6cd5\u3001QUBO\u884c\u5217\u3092\u5165\u529b\u3059\u308b\u65b9\u6cd5\u3001QUBO\u884c\u5217\u3092csv\u8aad\u307f\u8fbc\u307f\u3059\u308b\u65b9\u6cd5\u304c\u3042\u308a\u307e\u3059\u3002\r\n\r\n\u7d50\u679c\u3092\u81ea\u52d5\u3067\u591a\u6b21\u5143\u914d\u5217\u306b\u5909\u63db\u3059\u308b\u6a5f\u80fd\u3092\u642d\u8f09\u3002\u77ed\u3044\u30b3\u30fc\u30c9\u3067\u78ba\u8a8d\u3067\u304d\u307e\u3059\u3002\u8a73\u3057\u304f\u306f [\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8](https://github.com/tytansdk/tytan/blob/main/document%20.md) \u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002\r\n\r\n## \u30b5\u30f3\u30d7\u30e9\u30fc\u3068\u554f\u984c\u30b5\u30a4\u30ba\r\n\u57fa\u672c\u7684\u306a\u30ed\u30fc\u30ab\u30eb\u30b5\u30f3\u30d7\u30e9\u30fc\u306e\u4ed6\u3001\u5916\u90e8\u306eAPI\u30b5\u30f3\u30d7\u30e9\u30fc\u306a\u3069\u3092\u7d44\u307f\u8fbc\u3081\u308b\u3088\u3046\u306b\u3057\u3066\u3044\u307e\u3059\u3002\u7d44\u307f\u8fbc\u307f\u305f\u30bd\u30eb\u30d0\u30fc\u304c\u3042\u308c\u3070\u3054\u9023\u7d61\u304f\u3060\u3055\u3044\u3002\r\n\r\n\u30ed\u30fc\u30ab\u30eb\u30b5\u30f3\u30d7\u30e9\u30fc\uff1a1,000\u91cf\u5b50\u30d3\u30c3\u30c8\u7a0b\u5ea6\u307e\u3067\r\n```\r\nSASampler\r\nGASampler\r\n```\r\n\u5546\u7528\u30af\u30e9\u30a6\u30c9\u30b5\u30f3\u30d7\u30e9\u30fc\uff1a1,000-100,000\u91cf\u5b50\u30d3\u30c3\u30c8\u7a0b\u5ea6\r\n```\r\nZekeSampler\r\nNQSSampler\r\n```\r\n\r\n## \u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\r\n\u66f4\u65b0\u304c\u983b\u7e41\u306a\u305f\u3081github\u304b\u3089\u306e\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3092\u63a8\u5968\u3057\u307e\u3059\u3002\r\n```\r\npip install -U git+https://github.com/tytansdk/tytan\r\n```\r\n\r\npip\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u306f\u3053\u3061\u3089\u3067\u3059\u3002\r\n```\r\npip install -U tytan\r\n```\r\n\r\n## \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\uff11\r\n3\u500b\u306e\u91cf\u5b50\u30d3\u30c3\u30c8\u306e\u3046\u30612\u500b\u3060\u3051\u30921\u306b\u3059\u308b\u4f8b\u3067\u3059\u3002\u7d50\u679c\u306f\u300c\u91cf\u5b50\u30d3\u30c3\u30c8\u306e\u5024\u300d\u300c\u30a8\u30cd\u30eb\u30ae\u30fc\uff08\u30b3\u30b9\u30c8\uff09\u5024\u300d\u300c\u51fa\u73fe\u6570\u300d\u306e\u9806\u3067\u683c\u7d0d\u3055\u308c\u3066\u3044\u307e\u3059\u3002\r\n\r\n```python\r\nfrom tytan import *\r\n\r\n#\u91cf\u5b50\u30d3\u30c3\u30c8\u3092\u7528\u610f\r\nx = symbols('x')\r\ny = symbols('y')\r\nz = symbols('z')\r\n\r\n#\u5f0f\u3092\u8a18\u8ff0\uff083\u500b\u306e\u3046\u30612\u500b\u3060\u30511\u306b\u3059\u308b\uff09\r\nH = (x + y + z - 2)**2\r\n\r\n#\u30b3\u30f3\u30d1\u30a4\u30eb\r\nqubo, offset = Compile(H).get_qubo()\r\n\r\n#\u30b5\u30f3\u30d7\u30e9\u30fc\u9078\u629e\r\nsolver = sampler.SASampler()\r\n\r\n#\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\r\nresult = solver.run(qubo)\r\n\r\n#\u7d50\u679c\r\nfor r in result:\r\n print(r)\r\n```\r\n```\r\n[{'x': 0, 'y': 1, 'z': 1}, -4.0, 27]\r\n[{'x': 1, 'y': 0, 'z': 1}, -4.0, 23]\r\n[{'x': 1, 'y': 1, 'z': 0}, -4.0, 50]\r\n```\r\n\r\n## \u30b5\u30f3\u30d7\u30eb\u30b3\u30fc\u30c9\uff12\r\n3\u30eb\u30fc\u30af\u554f\u984c\u306f\u30013\u00d73\u30de\u30b9\u306b3\u3064\u306e\u30eb\u30fc\u30af\uff08\u98db\u8eca\uff09\u3092\u4e92\u3044\u306b\u5229\u304d\u304c\u53ca\u3070\u306a\u3044\u3088\u3046\u306b\u7f6e\u304f\u65b9\u6cd5\u3092\u63a2\u3059\u554f\u984c\u3067\u3059\u3002\u4e8c\u6b21\u5143\u914d\u5217\u7684\u306a\u6dfb\u5b57\u3092\u6301\u3063\u305f\u91cf\u5b50\u30d3\u30c3\u30c8\u3092\u307e\u3068\u3081\u3066\u5b9a\u7fa9\u3059\u308b\u95a2\u6570\u304c\u3042\u308a\u307e\u3059\uff08\u914d\u5217\u5f62\u5f0f\u3082\u53ef\uff09\u3002\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\u306e\u4e71\u6570\u30b7\u30fc\u30c9\u306f\u56fa\u5b9a\u3067\u304d\u307e\u3059\u3002\u7d50\u679c\u3092\u4e8c\u6b21\u5143\u914d\u5217\u306b\u623b\u3057\u3066\u53ef\u8996\u5316\u3059\u308b\u65b9\u6cd5\u30823\u7a2e\u985e\u3042\u308a\u307e\u3059\u3002\u8a73\u3057\u304f\u306f [\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8](https://github.com/tytansdk/tytan/blob/main/document%20.md) \u3092\u53c2\u7167\u304f\u3060\u3055\u3044\u3002\r\n\r\n```python\r\nfrom tytan import *\r\n\r\n#\u91cf\u5b50\u30d3\u30c3\u30c8\u3092\u7528\u610f\uff08\u307e\u3068\u3081\u3066\u5b9a\u7fa9\uff09\r\ncommand = symbols_define([3, 3])\r\nprint(command)\r\nexec(command)\r\n\r\n#\u5404\u884c\u306b1\u3064\u3060\u30511\r\nH = 0\r\nH += (q0_0 + q0_1 + q0_2 - 1)**2\r\nH += (q1_0 + q1_1 + q1_2 - 1)**2\r\nH += (q2_0 + q2_1 + q2_2 - 1)**2\r\n\r\n#\u5404\u5217\u306b1\u3064\u3060\u30511\r\nH += (q0_0 + q1_0 + q2_0 - 1)**2\r\nH += (q0_1 + q1_1 + q2_1 - 1)**2\r\nH += (q0_2 + q1_2 + q2_2 - 1)**2\r\n\r\n#\u30b3\u30f3\u30d1\u30a4\u30eb\r\nqubo, offset = Compile(H).get_qubo()\r\n\r\n#\u30b5\u30f3\u30d7\u30e9\u30fc\u9078\u629e\uff08\u4e71\u6570\u30b7\u30fc\u30c9\u56fa\u5b9a\uff09\r\nsolver = sampler.SASampler(seed=0)\r\n\r\n#\u30b5\u30f3\u30d7\u30ea\u30f3\u30b0\uff08100\u56de\uff09\r\nresult = solver.run(qubo, shots=100)\r\n\r\n#\u3059\u3079\u3066\u306e\u7d50\u679c\u3092\u78ba\u8a8d\r\nprint('result')\r\nfor r in result:\r\n print(r)\r\n\r\n#1\u3064\u76ee\u306e\u7d50\u679c\u3092\u81ea\u52d5\u914d\u5217\u3067\u78ba\u8a8d\uff08ndarray\u5f62\u5f0f\uff09\r\narr, subs = Auto_array(result[0]).get_ndarray('q{}_{}')\r\nprint('get_ndarray')\r\nprint(arr)\r\nprint(subs)\r\n\r\n#1\u3064\u76ee\u306e\u7d50\u679c\u3092\u81ea\u52d5\u914d\u5217\u3067\u78ba\u8a8d\uff08DataFrame\u5f62\u5f0f\uff09\uff081\u6b21\u5143\u30012\u6b21\u5143\u306e\u307f\uff09\r\ndf, subs = Auto_array(result[0]).get_dframe('q{}_{}')\r\nprint('get_dframe')\r\nprint(df)\r\n\r\n#1\u3064\u76ee\u306e\u7d50\u679c\u3092\u81ea\u52d5\u914d\u5217\u3067\u78ba\u8a8d\uff08image\u5f62\u5f0f\uff09\uff082\u6b21\u5143\u306e\u307f\uff09\r\nimg, subs = Auto_array(result[0]).get_image('q{}_{}')\r\nimport matplotlib.pyplot as plt\r\nprint('get_image')\r\nplt.imshow(img)\r\nplt.yticks(range(len(subs[0])), subs[0])\r\nplt.xticks(range(len(subs[1])), subs[1])\r\nplt.show()\r\n```\r\n\r\n```\r\nq0_0 = symbols('q0_0')\r\nq0_1 = symbols('q0_1')\r\nq0_2 = symbols('q0_2')\r\nq1_0 = symbols('q1_0')\r\nq1_1 = symbols('q1_1')\r\nq1_2 = symbols('q1_2')\r\nq2_0 = symbols('q2_0')\r\nq2_1 = symbols('q2_1')\r\nq2_2 = symbols('q2_2')\r\nresult\r\n[{'q0_0': 0, 'q0_1': 0, 'q0_2': 1, 'q1_0': 0, 'q1_1': 1, 'q1_2': 0, 'q2_0': 1, 'q2_1': 0, 'q2_2': 0}, -6.0, 11]\r\n[{'q0_0': 0, 'q0_1': 0, 'q0_2': 1, 'q1_0': 1, 'q1_1': 0, 'q1_2': 0, 'q2_0': 0, 'q2_1': 1, 'q2_2': 0}, -6.0, 20]\r\n[{'q0_0': 0, 'q0_1': 1, 'q0_2': 0, 'q1_0': 0, 'q1_1': 0, 'q1_2': 1, 'q2_0': 1, 'q2_1': 0, 'q2_2': 0}, -6.0, 17]\r\n[{'q0_0': 0, 'q0_1': 1, 'q0_2': 0, 'q1_0': 1, 'q1_1': 0, 'q1_2': 0, 'q2_0': 0, 'q2_1': 0, 'q2_2': 1}, -6.0, 21]\r\n[{'q0_0': 1, 'q0_1': 0, 'q0_2': 0, 'q1_0': 0, 'q1_1': 0, 'q1_2': 1, 'q2_0': 0, 'q2_1': 1, 'q2_2': 0}, -6.0, 20]\r\n[{'q0_0': 1, 'q0_1': 0, 'q0_2': 0, 'q1_0': 0, 'q1_1': 1, 'q1_2': 0, 'q2_0': 0, 'q2_1': 0, 'q2_2': 1}, -6.0, 11]\r\nget_ndarray\r\n[[0 0 1]\r\n [0 1 0]\r\n [1 0 0]]\r\n[['0', '1', '2'], ['0', '1', '2']]\r\nget_dframe\r\n 0 1 2\r\n0 0 0 1\r\n1 0 1 0\r\n2 1 0 0\r\nget_image\r\n```\r\n<img src=\"https://github.com/tytansdk/tytan/blob/main/img/img-01.png\" width=\"%\">\r\n\r\n\r\n## \u5546\u7528\u5229\u7528OK\r\nTYTAN\u306f\u5546\u7528\u5229\u7528\u524d\u63d0\u3067\u3059\u306e\u3067\u3001\u500b\u4eba\u3067\u306e\u5229\u7528\u306f\u3082\u3061\u308d\u3093\u4f01\u696d\u3067\u306e\u6d3b\u7528\u3092\u4fc3\u9032\u3057\u3066\u3044\u307e\u3059\u3002\r\n\r\n## \u66f4\u65b0\u5c65\u6b74\r\n|\u65e5\u4ed8|\u5185\u5bb9|\r\n|:---|:---|\r\n|2023/07/09|\u7db2\u7f85\u63a2\u7d22\u3059\u308b\u30aa\u30d7\u30b7\u30e7\u30f3\u8ffd\u52a0|\r\n|2023/07/01|Compile\u4fee\u6b63, requirements.txt\u4fee\u6b63|\r\n|2023/06/21|Auto_array\u4fee\u6b63, SASampler\u6027\u80fdUP|\r\n|2023/06/17|symbols_nbit, Auto_array.get_nbit_value\u8ffd\u52a0|\r\n|2023/06/17|requirements.txt\u4fee\u6b63|\r\n|2023/06/12|SASampler\u6027\u80fdUP, GASampler\u6027\u80fdUP|\r\n|2023/06/10|symbols_list, symbols_define\u8ffd\u52a0\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u4f5c\u6210|\r\n|2023/06/07|Auto_array\u8ffd\u52a0|\r\n|2023/06/01|\u30b7\u30fc\u30c9\u56fa\u5b9a\u8ffd\u52a0|\r\n|2023/05/26|\u5168\u4f53\u69cb\u9020\u4fee\u6b63|\r\n|2023/03/28|SASampler\u9ad8\u901f\u5316|\r\n|2023/03/22|GASampler\u8ffd\u52a0|\r\n|2023/03/15|\u521d\u671f\u7248|\r\n\r\n\r\n",
"bugtrack_url": null,
"license": "Apache 2",
"summary": "QUBO Annealing SDK",
"version": "0.1.1",
"project_urls": {
"Homepage": "https://github.com/tytansdk/tytan"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2666b87d68f7ba566543611c7db16758a487ce47e1592144e2cef2ef6cfca4fc",
"md5": "d92625480a08aac2be9e9cf5508f25d0",
"sha256": "bd02f2d67334277f1912c52f1b1ff64e7a0d8949d0a1bfe58762590586357915"
},
"downloads": -1,
"filename": "tytan-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "d92625480a08aac2be9e9cf5508f25d0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 24535,
"upload_time": "2024-08-22T16:26:00",
"upload_time_iso_8601": "2024-08-22T16:26:00.422584Z",
"url": "https://files.pythonhosted.org/packages/26/66/b87d68f7ba566543611c7db16758a487ce47e1592144e2cef2ef6cfca4fc/tytan-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-08-22 16:26:00",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "tytansdk",
"github_project": "tytan",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "tytan"
}