当前位置: 首页 > news >正文

量子计算场景实用秘籍:开物SDK之自动确定惩罚系数

在数学、计算机科学、工程学和经济学等领域,约束是指一种条件或限制,它规定了变量对象必须满足的某种特定关系或范围。在优化问题和机器学习中,自动确定能满足约束条件的惩罚系数是一个常见问题,例如附带约束条件的优化任务。而惩罚系数通常用于在目标函数中对违反约束条件的行为进行惩罚,以确保找到的解满足特定条件。

以JSP(Job Shop Scheduling Problem)任务调度问题为例,它是一个复杂的组合优化问题,广泛存在于制造业、交通运输、医疗服务等多个行业领域。调度问题常用的求解方法包括基于数学规划的精确算法和各种启发式算法。但随着问题规模的扩大,传统的精确算法与启发式算法无法在较短时间内找到最优解,而相干光量子计算机在解决这类问题上具有独特优势,基于玻色量子自研的相干光量子计算机与开物SDK可以轻松求解。

自动确定惩罚系数

JSP问题的主要目标是在满足一定的约束条件下,合理地分配资源,优化生产过程中的作业顺序,以最小化完成所有任务的总时间、最大化资源利用率或降低成本等。在任务调度模型中,可以将假设与约束条件总结如下:

1.各任务仅包含一道工序;

2.各任务的加工时间已知,与机器无关;

3.一台机器在任意时刻最多只能处理一个任务;

4.每个任务可以分配到任意一台机器加工,且只能在一台机器上加工;

5.每个机器可以有不同的空闲开始时间。

这个问题可以通过QUBO建模,然后利用玻色量子的相干光量子计算机求解。但是和任务调度模型一样,建模常常包含多种约束,每种约束针对不同实体会产生多个约束条件。使用QUBO建模需要将约束条件转为约束项并给定合适的惩罚系数。如果惩罚系数过大,会导致系数矩阵的精度超过相干光量子计算机的限制,如果惩罚系数过小,会导致求解的过程中的约束条件无法优先满足,最优解不是可行解的情况。因此,对于这种存在大量约束条件的问题,需要一些方法自动为每个约束确定惩罚系数。

惩罚系数估计方法

当某个离散变量的值变化时,如果在目标函数引起的变化量恒小于在惩罚项引起的变化量,则惩罚项能够被优先满足。通过计算目标函数最大变化量和惩罚项最小变化量的比值,就可以计算合理的惩罚系数。

(1)目标函数的最大变化量可以通过上界来估计。QUBO表达式中单独考虑某个变量xi。

当xi从0变化为1时:

 

当xi从1变化为0时:

(2)惩罚项的最小非零变化量难以准确地计算。一种估计的方法是对参数两两计算差值,选取里面最小的非零值取绝对值。

迭代确定惩罚系数

这种方法可以避免估计惩罚系数容易不准确的问题,但是迭代求解需要多次求解,花费的时间和计算资源更多。

一种简单的方法是通过多次尝试,不断增加没有满足的惩罚系数的权重,从而最终确定合适的惩罚系数。惩罚系数的更新可以使用多种不同的更新方法。比如每次增加一个常数,按μ=μ+λ更新,或者每次乘上一个倍率,按μ=λμ更新。

此外还可以参考ALM在连续问题上的应用,将ALM改变为适用于离散的QUBO问题的方法。首先,将目标函数与约束条件结合,形成拉格朗日函数。对于每个约束,引入拉格朗日乘子。然后,在拉格朗日函数中添加惩罚项。这一惩罚项通常是约束违反程度的平方,乘以一个惩罚因子。通过迭代的方式,逐步优化拉格朗日函数。每次迭代中,更新拉格朗日乘子和惩罚因子,以提高对约束的满足程度。该方法通过调整惩罚因子和拉格朗日乘子,逐步逼近最优解,确保在满足约束的同时优化目标函数。

 

附:基于松弛变量的JSP问题QUBO建模

JSP目标为整体完成时间最短,首先建立组合优化模型如下:

定义变量u为整体最晚完成的时间,也就是各个机器完成时间中的最大值,

目标函数

 

约束条件

 

约束(1)表示最晚完成时间u不小于任何机器的完成时间tj,由于目标函数是最小化最晚完成时间u,变量u将取到满足(1)的最小值,也就是最晚完成的机器对应的完成时间。约束(2)限制了对于任何任务只能被一台机器执行。Wi表示任务i的花费时间,sj是机器j的启动时间。

为了适配量子计算,需要将上面的组合优化模型转为QUBO形式,QUBO特点是所有决策变量为二值变量,目标是二次函数,且无约束条件。由于u为整数,可用基于多个二值变量的二进制来表示:

其中ul为二值变量,取值0或1。l为需要的二进制位数集合,取决于数据的值。这样求解u的最小值就转变为求解ul的取值。

下一步将不等式约束(1)通过增加松弛变量γ的方式转化为等式约束。所有的松弛变量都是非负的。约束(1)可表示为:

由于松弛变量也是整数,将其二进制化,约束(1)可进一步表示为:

 

为了将等式约束化为目标函数的一部分从而满足QUBO形式,将等式约束改写为f(x,u)=0的形式,然后将左侧取平方,乘以足够大的惩罚系数γ加入目标函数即可。这样当约束被满足,目标项中的相关项也就为0。目标最小化求解会倾向于让所有惩罚项为零,即所有约束被满足。这样,原模型就可以转化为以下QUBO模型:

 

 

总结

综上所述,本文介绍了自动确定惩罚系数的方法,包括直接估计和迭代确定两种思路。这些方法有效解决了在量子计算中惩罚系数难以确定的问题,为求解大规模组合优化问题提供了新的思路。通过不断优化惩罚系数,我们可以在满足约束条件的同时,更好地优化目标函数,从而提高求解效率和质量。

显然,基于玻色量子自研的开物SDK,用户只需关注建立与场景所对应的数学模型,SDK提供的方法可以自动确定惩罚系数,这将极大的降低用户使用相干光量子计算机求解实际问题的难度。

关注公众号:玻色量子开发者社区,后台回复“CSDN”,获取更多量子相关学习资料


http://www.mrgr.cn/news/47151.html

相关文章:

  • LabVIEW启动时Access Violation 0xC0000005错误
  • 【Vim Masterclass 笔记12】S06L26 + L27:Vim 文本的搜索、查找及替换同步练习(含点评课)
  • Swin Transformer模型详解(附pytorch实现)
  • ClickHouse-CPU、内存参数设置
  • RocketMQ、Kafka、RabbitMQ,如何选型?
  • js:正则表达式
  • OceanBase管理着工具-oat安装
  • C++单例模式
  • 2015年国赛高教杯数学建模D题众筹筑屋规划方案设计解题全过程文档及程序
  • DAY5 数组
  • ABC340
  • 人像抠图怎么好看?1分钟教会你
  • 【高等代数笔记】线性空间(十九-二十四上半部分)
  • LangChain: AI大语言模型的新篇章
  • 2.1 App测试与发布指南
  • 剧本杀小程序:提升玩家游戏体验,带动经济效益
  • Meta推出的AI视频音频生成模型:Movie Gen
  • 数据排列组合实现
  • CentOS系统解压缩.7z后缀的文件
  • jenkins中的allure和email问题梳理
  • java通知提醒实现使用`java.util.Timer`或`ScheduledExecutorService`进行定时提醒
  • Unicode
  • 12.JVM类加载机制
  • 2024年诺贝尔物理学奖2
  • 怎么高效对接SaaS平台数据?
  • ITSS-IT服务工程师和ITSS-IT服务经理的区别