量子退火算法入门(2):有约束优化问题的QUBO怎么求?

这篇具有很好参考价值的文章主要介绍了量子退火算法入门(2):有约束优化问题的QUBO怎么求?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有约束优化问题

第一篇文章讲述了,怎么从二次多项式获得QUBO,获得QUBO后,量子退火法就可以直接给你最优解(没有特殊说明的话,所有的变量都是0或1)。其实,实际问题一般都是有约束的,比如上篇的例题加上约束条件后。
量子退火算法入门(2):有约束优化问题的QUBO怎么求?
这种带约束的优化问题,我们要求出满足约束条件下的令H值最小的,(x1,x2)的组合。没有约束的情况,(x1,x2)的组合和H的取值如下表,最优解为(x1,x2)=(0,1):
量子退火算法入门(2):有约束优化问题的QUBO怎么求?
从上面的表中可以看到,因为需要满足约束条件,最优解变为(x1,x2)=(0,0)。这道例题变量比较少,可以很快找到满足约束条件的最优解。

其实,正常有约束的优化问题会变换成下面的形式,然后求解。
量子退火算法入门(2):有约束优化问题的QUBO怎么求?
其中惩罚函数g()就是从约束条件获得。怎么把约束条件转化为惩罚函数呢?答案就是,把约束条件转化为对应的**【哈密顿算符(Hamiltonian) 】**

约束条件转换为【哈密顿算符H】

我们可以这么想,如果有一个二次多项式,让它取最小值的解,刚好是某个【哈密顿算符H】的最小值(H=0)的解。以上面的约束条件为例:
x 1 ⩾ x 2 x1 \geqslant x2 x1x2
那么满足约束条件的(x1, x2)有[ (0, 0), (1, 0), (1, 1) ]三个组合。逆向思维,这三个组合会是哪个【哈密顿算符H】的最小值的解呢?有兴趣的读者可以自己想一想,这里我直接给出答案。
量子退火算法入门(2):有约束优化问题的QUBO怎么求?
上面H=0的解,就是满足约束条件的,(x1, x2)=[ (0, 0), (1, 0), (1, 1) ]。对应的QUBO矩阵就是。
量子退火算法入门(2):有约束优化问题的QUBO怎么求?
这时候带有惩罚函数项的新的H变为:
量子退火算法入门(2):有约束优化问题的QUBO怎么求?

很多读者到这里,就会有疑问,每次都要把二次多项式写成QUBO矩阵的话,很麻烦。能不能直接输入二项式呢?答案是,可以的。

Pyqubo:自动把二次多项式转换为QUBO

# neal是模拟退火的库 
import neal 
# pyqubo 可以使用Binary定义变量,Constarint定义约束
from pyqubo import Binary, Constraint 
x1, x2 = Binary('x1'), Binary('x2')

# M是约束强度
M = 5.0 
#定义哈密顿算符H
H = 3 * x1**2 - 2 * x2**2 + M * Constraint((x2 - x1*x2), label='x1>=x2') 
model = H.compile()

# 无视offset就行了,QUBO用来做模拟退火的输入
qubo, offset = model.to_qubo() 
sampler = neal.SimulatedAnnealingSampler()
raw_solution = sampler.sample_qubo(qubo)

raw_solution.first.sample
>>> {'x1': 0, 'x2': 0}

我们可以看到,最后的结果是(x1, x2)=(0, 0)。确实是最优解。但是M值(就是前面公式里的 λ \lambda λ)如果太小,可能得不到最优解。

常见条件约束对应的H

前任栽树,后人乘凉,常见的约束条件对应的H如下表所示:
量子退火算法入门(2):有约束优化问题的QUBO怎么求?
本文介绍了,如何添加约束条件到目标函数中,下篇讲一个经典的旅行商最短路径问题如何建模,求解。文章来源地址https://www.toymoban.com/news/detail-413254.html

到了这里,关于量子退火算法入门(2):有约束优化问题的QUBO怎么求?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 量子退火算法入门(1) : QUBO是什么?

    量子计算机是利用“量子叠加”,“纠缠”等量子力学现象实现并行计算的计算机。传统计算机需要大量时间才能得出答案的问题,量子计算机可能会在短时间内解决,因此有望在各个领域得到应用。根据解决问题的方法,量子计算机可以大致分为量子门法(门:gate)和量子

    2023年04月16日
    浏览(41)
  • 带约束条件的运筹规划问题求解(模拟退火算法实现)

    超级简单的模拟退火算法实现ε٩(๑ ₃ )۶з搭配最简单的线性规划模型进行讲解!但是如果需要的话,可以直接修改程序求解非线性问题哦(´つヮ⊂︎) [max,f(x)=10x_1+9x_2] (s.t.) [6x_1+5x_2leq{60}tag{1}] [10x_1+20x_2leq{150}tag{2}] [0leq{x_1}leq{8}tag{3}] [0leq{x_2}leq{8}tag{4}] 对约束

    2023年04月18日
    浏览(43)
  • 量子退火Python实战(3):投资组合优化(Portfolio) MathorCup2023特供PyQUBO教程

    提示:包含pyQUBO用法: 最近MathorCup2023的A题刚好是投资组合的QUBO建模,刚好有篇日文文章是讲这个的,直接翻译过来。供大家参考。【因为还没有获得作者同意,暂且没有把文章设置为翻译,之后会设置成翻译,或者再加一下自己的东西变成原创。】 什么是投资组合优化?

    2024年02月03日
    浏览(53)
  • 模拟退火算法与遗传算法求解多目标优化问题的算法实现(数学建模)

    模拟退火算法是一种全局优化算法,解决的问题通常是找到一个最小化(或最大化)某个函数的全局最优解。它通过模拟物理退火的过程来搜索解空间,在开始时以一定的温度随机生成初始解,然后一步步降低温度,同时在当前解的周围随机搜索新的解,并根据一定概率接受

    2024年02月02日
    浏览(52)
  • Matlab【旅行商问题】—— 基于模拟退火算法的无人机药品配送路线最优化

    某市引进一架专业大型无人机用于紧急状态下的药品投递,每个站点只能投放一次,可选择指派任意站点的无人机起飞出发完成投递任务,但必须在配送完毕后返回原来的站点。站点地理位置坐标(单位为公理)如下图所示。每个站点及容纳的病人数量见附件.mat数据,现要求

    2024年02月12日
    浏览(51)
  • scipy求解约束无导数优化问题:SHGO算法

    SHGO,即simplicial homology global optimize,来自2018年的文章,是一种基于组合拓扑学的优化方法,是一个非常新的算法。 这种算法适用于CDFO(constrained deriviate free optimisation)问题,所谓无导数优化,就是把目标函数当作黑箱子处理,而无法获取其一阶导数,自然也不能通过导数来判

    2024年02月14日
    浏览(46)
  • 通用的改进遗传算法求解带约束的优化问题(MATLAB代码精讲、实际工程经验分享)

    在对多约束、非线性问题的求解上,传统线性规划等方法往往无法有效求解(求解时间过长、无法处理非线性约束等。 进化算法是一类强有力的工具,已经在多个领域有了较为成功的应用。然而,在利用遗传算法、粒子群等等进化算法求解实际的优化问题时,还存在许多困难

    2023年04月19日
    浏览(77)
  • 智能优化算法学习笔记(2)–模拟退火算法(SA)

    模拟退火算法( Simulated Annealing ,简称 SA )的思想最早是由 Metropolis 等提出的。其出发点是基于物理中固体物质的退火过程与一般的组合优化问题之间的相似性。模拟退火算法是一种通用的优化算法,其物理退火过程由以下三部分组成: 加温过程 。其目的是增强粒子的热运

    2024年02月05日
    浏览(43)
  • ADMM算法系列1:线性等式或不等式约束下可分离凸优化问题的ADMM扩展

    1 研究背景       交替方向乘数法(ADMM)最初由Glowinski和Marrocco提出,用于解决非线性椭圆问题,它已成为解决各种凸优化问题的基准算法。在方法上,可以认为ADMM算法是在经典增广拉格朗日方法(ALM)的分裂版本。它已经在非常广泛的领域找到了应用,特别是在与数据科学

    2024年02月03日
    浏览(44)
  • 智能算法系列之基于粒子群优化的模拟退火算法

      本篇是智能算法(Python复现)专栏的第四篇文章,主要介绍粒子群优化算法与模拟退火算法的结合,以弥补各自算法之间的不足。   在上篇博客【智能算法系列之粒子群优化算法】中有介绍到混合粒子群优化算法,比如将粒子更新后所获得的新的粒子,采用模拟退火的思

    2024年02月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包