量子计算机在信用评分卡组合优化中的应用最优题解

news/2024/7/8 7:01:30

文章目录

  • 量子计算机在信用评分卡组合优化中的应用题解
    • 思路
  • 最下方

量子计算机在信用评分卡组合优化中的应用题解

最新进度在文章最下方卡片,加入获取思路数据代码论文:2023十三届MathorCup交流
(第一时间在CSDN分享,文章底部)

思路

A题给我的整体感觉就是和2020年国赛中小微企业的信贷决策有点相似,只能说问题设置背景相似。稍后我也将为大家整理当年国赛的一些资料方便大家进行比赛建模。A题的背景设置为银行的信用卡或者贷款的收入问题。由于涉及的很多的专业知识,在问题中都给出的很明确的定义以及示例展示,大家只要人人阅读就可以理解。对于问题的解决,还提出了一个QUBO模型,一个二次无约束二值优化模型,

问题 1:在 100 个信用评分卡中找出 1 张及其对应阈值,使最终收入 最多, 请针对该问题进行建模,将该模型转为 QUBO 形式并求解。

找出 1 张及其对应阈值,使最终收入最多。对于问题一就是一个简单的最优值的求解,设置对应的决策变量,我认为可以使用0-1变量引入,信用卡的使用与否,以及对应的阈值选择,最后利用题设中给出的收入计算公式进行求解就可以。问题难度不大,对于问题一结果的精度要求应该会很高,因此大家做完,一定要去网上看看对应对应结果,这种问题结果基本都差不多,所以就算跑不出来代码,我们也可以直接借鉴网上的代码。稍后也将为大家整理一下优化的相关代码。

问题 2:假设赛题说明 3 目前已经选定了数据集中给出的信用评分卡 1、 信用评分卡 2 、信用评分卡 3 这三种规则,如何设置其对应的阈值,使最 终收入最多, 请针对该问题进行建模,将模型转为 QUBO 形式并求解。

问题二、已经选定了三个信用卡,让我们选择阈值进行计算最终收入。对于这个问题我们可以看作是问题三的一个方面。我们不再考虑信用卡的信息,而是单纯的考虑阈值。因此,这里我们也可以建立优化模型,个人还是感觉选择0-1变量设置决策变量会好一些。其次,设置收入为目标函数,进行计算即可。

问题 3 :从所给附录中 100 个信用评分卡中任选取 3 种信用评分卡, 并设置合理的阈值,使得最终收入最多,请针对该问题进行建模,并将模 型转为 QUBO 形式并求解。

问题三、就是一个问题一、问题二的综合。需要同时考虑信用卡的选取以及阈值的选取。对于这一问,我们通常会选择延用问题一二的模型,进行深入编写代码即可。综合来看,A题的最大难度似乎在于代码的编程实现,其实不然,现在有了GPT我们可以进行参考,同时对于A题这种对答案要求精度很好的题目,通常网上也是有一些公开的答案,在比赛期间。我们也是可以进行借鉴的。

总结: A题的难度不在于模型的进阿里,而是模型的转化为QUBO 形式,以及模型的代码编写。对于代码编写我们可以参考网上的结果,直接放上代码就可以。但是对于模型的转化,就需要大家各显神通了。稍后,我也会将参考文献进行多版本翻译,分享给大家。

1.# 导入所需的库
2.import dwave.cloud
3.import dwavebinarycsp
4.from dwave.system.samplers import DWaveSampler
5.from dwave.system.composites import EmbeddingComposite
6.import numpy as np
7.
8.# 定义信用评分卡的个数和阈值的个数
9.num_cards = 100
10.num_thresholds = num_cards - 1
11.
12.# 定义信用评分卡和阈值的权重
13.card_weights = np.random.rand(num_cards)
14.threshold_weights = np.random.rand(num_thresholds)
15.
16.# 定义约束条件
17.csp = dwavebinarycsp.ConstraintSatisfactionProblem(dwavebinarycsp.BINARY)
18.for i in range(num_cards):
19.    for j in range(num_thresholds):
20.        csp.add_constraint(lambda x, i=i, j=j: (x[i] + x[i+1] - 2*x[num_cards+j]) <= 0, [i, i+1, num_cards+j])
21.
22.# 将约束条件转换为 QUBO 形式
23.bqm = dwavebinarycsp.stitch(csp)
24.
25.# 在 D-Wave 上求解 QUBO 模型
26.sampler = EmbeddingComposite(DWaveSampler(solver={'qpu': True}))
27.response = sampler.sample(bqm, num_reads=1000)
28.
29.# 输出结果
30.print(response)

最下方


http://lihuaxi.xjx100.cn/news/1026360.html

相关文章

1 Nginx跨域配置

跨域问题在之前的单体架构开发中&#xff0c;其实是比较少见的问题&#xff0c;除非是需要接入第三方SDK时&#xff0c;才需要处理此问题。但随着现在前后端分离、分布式架构的流行&#xff0c;跨域问题也成为了每个Java开发必须要懂得解决的一个问题。 跨域问题产生的原因 产…

Java避免死锁的几个常见方法(有测试代码和分析过程)

目录 Java避免死锁的几个常见方法 死锁产生的条件 上死锁代码 然后 &#xff1a;jstack 14320 >> jstack.text Java避免死锁的几个常见方法 Java避免死锁的几个常见方法 避免一个线程同时获取多个锁。避免一个线程在锁内同时占用多个资源&#xff0c;尽量保证每个锁…

URLEncode原理(全网详解)

概念&#xff1a; URLEncode是一种将特殊字符转换成百分号编码的方法&#xff0c;以便浏览器和服务器之间能够正确地处理它们。该方法会将某些字符替换为由 % 和其后面的两个十六进制数字所组成的编码。这些字符包括字母、数字、下划线、连字符、句点以及某些保留字符。 URLE…

基于亚马逊云科技无服务器架构,开发者可以有效实现快速上线

开发一个“爆款”游戏总共需要几步&#xff1f;Marvel Snap可能会告诉你&#xff1a;第一步&#xff0c;专心致志把游戏做好、提高可玩性&#xff1b;第二步&#xff0c;把其他工作交给亚马逊云科技。 相关数据显示&#xff0c;自2022年10月18日正式发行以来&#xff0c;在不到…

有学生问我,重构是什么?我应该如何回答?

重构到底是什么&#xff1f;只是代码的推倒重新编码&#xff1f;还是有规则、有方法可寻&#xff1f;当然&#xff0c;结论肯定是有的&#xff0c;本文&#xff0c;我们通过一个简单的实例&#xff0c;来理解一下重构。 1.借助一个实例需求 这是一个影片出租店用的程序&#…

OpenAI-ChatGPT最新官方接口《文本交互》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(一)(附源码)

Text completion 文本交互前言Introduction 导言Prompt design 提示设计Basics基础知识TroubleshootingClassificationImproving the classifiers efficiency 提高分类器的效率Generation 总结Conversation 对话Transformation 变化Translation 翻译Conversion 转化Summarizati…

【分布式应用】Zabbix——安装

目录 第一章zabbix概述 1.1.什么是监控概念 1.2.zabbix概述 1.3.zabbix 主要特点 1.4.zabbix主要功能 1.5.zabbix运行机制 1.6.zabbix 监控原理 1.7zabbix的架构&#xff0c;数据流向以及原理在图中做总结 1.8.数据采集模式 1.9.zabbix监控模式 第二章.安装 部署 za…

李宏毅教程系列——增强学习

目录 0. 强化学习wiki 1. 介绍 2. Exploration vs Exploitation 探索与开发 3. 各类最优化方法 3.1 Brute force猛兽蛮力法&#xff08;暴力搜索&#xff09; 3.2 Value function estimation&#xff08;价值函数估计&#xff09; 3.2.1 Monte Carlo methods 蒙特卡洛方…