国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

量子退火算法入門(3):整數(shù)分割問題的QUBO建模

這篇具有很好參考價(jià)值的文章主要介紹了量子退火算法入門(3):整數(shù)分割問題的QUBO建模。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

整數(shù)分割問題:

QUBO建模最重要的就是,把建模對(duì)象中的變量映射為binary(0/1 或者 -1/+1)的變量。我先從簡單的問題開始說明,讓大家有些直觀感受。整數(shù)分割問題就是一個(gè)非常簡單,并容易理解的例子。此文參考了日本NTT公司的量子計(jì)算指南文檔[*1]。

  • 整數(shù)分割問題定義:

判斷能否將一個(gè)N 個(gè)整數(shù) a 1 , ??? a N a_1,???a_N a1?,???aN? 的整數(shù)集合分割成兩個(gè)子集合,并且這兩個(gè)子集合里的元素之和相等。

  • 例子:
    量子退火算法入門(3):整數(shù)分割問題的QUBO建模
    我們可以看到,上面??的例子,分割后的兩個(gè)子集合A和B的元素之和都等于6,所以該集合是可以滿足整數(shù)分割的。

轉(zhuǎn)化為組合優(yōu)化問題:

之前講的QUBO的例子里,用的變量都是0或1。其實(shí),還可以是-1或+1,這時(shí)候也叫ising模型。求解變量什么時(shí)候用0/1,什么用-1/+1,這個(gè)之后用例子給大家解釋。
這次的問題,是把求解的兩個(gè)子集合的標(biāo)簽作為-1/+1的變量。如下圖所示。
量子退火算法入門(3):整數(shù)分割問題的QUBO建模
我們的優(yōu)化目標(biāo)就成為了,最小化兩個(gè)子集合的差值的平方和。大家可以思考一下,如果使用0/1作為子集合A和B的標(biāo)簽,我們要怎么定義最小化的目標(biāo)函數(shù)。
量子退火算法入門(3):整數(shù)分割問題的QUBO建模

  • 目標(biāo)集合為{ 1, 5, 6 }時(shí)的目標(biāo)函數(shù)就是:
    量子退火算法入門(3):整數(shù)分割問題的QUBO建模
    我們來枚舉一下,所有 x i x_i xi? 從-1或+1取值的組合結(jié)果:
    量子退火算法入門(3):整數(shù)分割問題的QUBO建模
    我們可以看到,目標(biāo)函數(shù)值為0時(shí),我們得到了正確的整數(shù)分割結(jié)果。

目標(biāo)函數(shù)轉(zhuǎn)化為QUBO:

因?yàn)橐呀?jīng)獲得了目標(biāo)函數(shù),那我們先把多項(xiàng)式展開就好了。展開結(jié)果如下圖所示:

量子退火算法入門(3):整數(shù)分割問題的QUBO建模

因?yàn)椤?span id="n5n3t3z" class="katex--inline"> x i x_i xi? 從-1或+1取值】這個(gè)設(shè)定,下面??的式子是成立的:
? x i 2 = 1 ?x_i^{2} = 1 ?xi2?=1
所以我們可以得到下面的QUBO結(jié)果:
量子退火算法入門(3):整數(shù)分割問題的QUBO建模
最后獻(xiàn)上Python代碼。

PyQUBO實(shí)現(xiàn)Ising模型:

之前的目標(biāo)函數(shù)都是展開后的二次多項(xiàng)式,大家可以直接計(jì)算出QUBO矩陣。這次使用PyQUBO直接定義目標(biāo)函數(shù),大家就不用手動(dòng)求解QUBO矩陣了。

import pyqubo
import neal
x = pyqubo.Array.create('x', shape=(3), vartype='SPIN') # 'SPIN' 就表示目標(biāo)變量是從{-1, 1}取值。目標(biāo)變量需要從{0, 1}中取值時(shí),就設(shè)定為 'BINARY' 

objective_function = (1 * x[0] + 5 * x[1] + 6 * x[2]) ** 2

model = objective_function.compile() 
bqm = model.to_bqm()

print("我們可以將bqm轉(zhuǎn)為ising或qubo輸出")
print(bqm.to_ising())

sa = neal.SimulatedAnnealingSampler()
sampleset = sa.sample(bqm, num_reads=10)
samples = model.decode_sampleset(sampleset)
best_sample = min(samples, key=lambda s: s.energy)

print("求解時(shí),pyqubo內(nèi)部已經(jīng)將ising模型轉(zhuǎn)換為qubo的0或1,所以輸出結(jié)果為0或1")
print(best_sample.sample) 

運(yùn)行結(jié)果如下:

我們可以將bqm轉(zhuǎn)為ising或qubo輸出
({'x[2]': 0.0, 'x[0]': 0.0, 'x[1]': 0.0}, {('x[0]', 'x[2]'): 12.0, ('x[1]', 'x[2]'): 60.0, ('x[1]', 'x[0]'): 10.0}, 62.0)
求解時(shí),pyqubo內(nèi)部已經(jīng)將ising模型轉(zhuǎn)換為qubo的01,所以輸出結(jié)果為01
{'x[2]': 1, 'x[0]': 0, 'x[1]': 0}

以上就是一個(gè)簡單建模的例子。下篇講旅行商問題的建模。文章來源地址http://www.zghlxwxcb.cn/news/detail-427392.html

  • 參考文獻(xiàn):[*1] : https://www.nttdata.com/jp/ja/-/media/nttdatajapan/files/news/services_info/2021/012800/012800-01.pdf

到了這里,關(guān)于量子退火算法入門(3):整數(shù)分割問題的QUBO建模的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 量子退火算法入門(7):如何QUBO中的三次多項(xiàng)式怎么轉(zhuǎn)換?

    量子退火算法入門(7):如何QUBO中的三次多項(xiàng)式怎么轉(zhuǎn)換?

    本文還是大部分截圖來自于:《最適化問題とWildqatを用いた量子アニーリング計(jì)算入門》 https://booth.pm/ja/items/1415833 終于有人問到怎么將QUBO中的三次多項(xiàng)式轉(zhuǎn)換為二次多項(xiàng)式了。直接以一個(gè)例題開始講解。中間會(huì)用到之前文章里的知識(shí),大家最好讀了該系列前兩篇之后,再閱

    2023年04月14日
    瀏覽(54)
  • 模擬退火算法與遺傳算法求解多目標(biāo)優(yōu)化問題的算法實(shí)現(xiàn)(數(shù)學(xué)建模)

    模擬退火算法與遺傳算法求解多目標(biāo)優(yōu)化問題的算法實(shí)現(xiàn)(數(shù)學(xué)建模)

    模擬退火算法是一種全局優(yōu)化算法,解決的問題通常是找到一個(gè)最小化(或最大化)某個(gè)函數(shù)的全局最優(yōu)解。它通過模擬物理退火的過程來搜索解空間,在開始時(shí)以一定的溫度隨機(jī)生成初始解,然后一步步降低溫度,同時(shí)在當(dāng)前解的周圍隨機(jī)搜索新的解,并根據(jù)一定概率接受

    2024年02月02日
    瀏覽(27)
  • 數(shù)學(xué)建模|通過模擬退火算法求解供貨與選址問題:問題二(python代碼實(shí)現(xiàn))

    數(shù)學(xué)建模|通過模擬退火算法求解供貨與選址問題:問題二(python代碼實(shí)現(xiàn))

    今天繼續(xù)用模擬退火算法供貨與選址問題的問題二,如果還沒看過問題一的可以看我之前的博客 數(shù)學(xué)建模|通過模擬退火算法求解供應(yīng)與選址問題:問題一(python代碼實(shí)現(xiàn))-CSDN博客 這里還是把題目放上來(題目來自數(shù)學(xué)建模老哥的視頻): 那么我們可以分析一下,第一問和

    2024年01月16日
    瀏覽(21)
  • 數(shù)學(xué)建模筆記——整數(shù)規(guī)劃類問題之我見(匈牙利算法)

    數(shù)學(xué)建模筆記——整數(shù)規(guī)劃類問題之我見(匈牙利算法)

    目錄 淺淺敘述匈牙利算法 基本思路 計(jì)算步驟 來一道簡單例題 1.1 符號(hào)規(guī)定 1.2目標(biāo)函數(shù)?編輯 ? ? ? 1.3約束條件 ?編輯 1.4代碼 題目復(fù)述 基本假設(shè) 問題分析 符號(hào)說明 ?模型的建立與求解 模型建立思路 模型建立的過程 建立0-1整數(shù)規(guī)劃模型 ?運(yùn)用匈牙利方法: 代碼實(shí)現(xiàn) ?

    2023年04月11日
    瀏覽(67)
  • 數(shù)學(xué)建模-退火算法和遺傳算法

    數(shù)學(xué)建模-退火算法和遺傳算法

    退火算法和遺傳算法 一.退火算法 退火算法Matlab程序如下: [W]=load(\\\'D:100個(gè)目標(biāo)經(jīng)度緯度.txt\\\'); 二、遺傳算法 [E]=xlsread(\\\'D:100個(gè)目標(biāo)經(jīng)度緯度\\\'); ?% 加載敵方 100 個(gè)目標(biāo)的數(shù)據(jù), 數(shù)據(jù)按照表格中的位置保存在純文本文件 sj.txt 中 x=[E(:,1)]; y=[E(:,2)]; e =[x y]; d1=[70,40]; e =[d1; ?e ;d1];

    2024年02月20日
    瀏覽(25)
  • 數(shù)學(xué)建模學(xué)習(xí)(9):模擬退火算法

    數(shù)學(xué)建模學(xué)習(xí)(9):模擬退火算法

    模擬退火算法(Simulated Annealing, SA)的思想借 鑒于固體的退火原理,當(dāng)固體的溫度很高的時(shí)候,內(nèi)能比 較大,固體的內(nèi)部粒子處于快速無序運(yùn)動(dòng),當(dāng)溫度慢慢降 低的過程中,固體的內(nèi)能減小,粒子的慢慢趨于有序,最 終,當(dāng)固體處于常溫時(shí),內(nèi)能達(dá)到最小,此時(shí),粒子最為 穩(wěn)

    2024年02月14日
    瀏覽(22)
  • 【數(shù)學(xué)建模學(xué)習(xí)(9):模擬退火算法】

    【數(shù)學(xué)建模學(xué)習(xí)(9):模擬退火算法】

    模擬退火算法(Simulated Annealing, SA)的思想借 鑒于固體的退火原理,當(dāng)固體的溫度很高的時(shí)候,內(nèi)能比 較大,固體的內(nèi)部粒子處于快速無序運(yùn)動(dòng),當(dāng)溫度慢慢降 低的過程中,固體的內(nèi)能減小,粒子的慢慢趨于有序,最 終,當(dāng)固體處于常溫時(shí),內(nèi)能達(dá)到最小,此時(shí),粒子最為 穩(wěn)

    2024年02月14日
    瀏覽(20)
  • 數(shù)學(xué)建模(三):模擬退火算法(SA)

    數(shù)學(xué)建模(三):模擬退火算法(SA)

    1、 算法簡介 模擬退火算法(simulated annealing,SA)來源于固體退火原理,是一種基于概率的算法。 模擬退火算法(SA)來源于固體退火原理,是一種基于概率的算法。將固體加溫至充分高的溫度,再讓其徐徐冷卻,加溫時(shí),固體內(nèi)部粒子隨溫升變?yōu)闊o序狀,內(nèi)能增大,分子和原

    2023年04月17日
    瀏覽(25)
  • Matlab數(shù)學(xué)建模算法之模擬退火算法(SA)詳解

    ???運(yùn)行環(huán)境:Matlab ???撰寫作者:左手の明天 ???精選專欄:《python》 ????推薦專欄:《算法研究》 ??####? 防偽水印——左手の明天?#### ?? ?? 大家好??????,我是 左手の明天 !好久不見?? ??今天分享 matlab數(shù)學(xué)建模算法 —— 模擬退火算法 ??

    2024年01月16日
    瀏覽(26)
  • 數(shù)學(xué)建模--退火算法求解最值的Python實(shí)現(xiàn)

    數(shù)學(xué)建模--退火算法求解最值的Python實(shí)現(xiàn)

    目錄 1.算法流程簡介 2.算法核心代碼 3.算法效果展示

    2024年02月09日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包