【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用 详细建模过程解析及代码实现

news/2024/5/6 11:24:02/文章来源:https://blog.csdn.net/weixin_43935696/article/details/130129313

【2023 年第十三届 MathorCup 高校数学建模挑战赛】A 题 量子计算机在信用评分卡组合优化中的应用

请添加图片描述

1 题目

在银行信用卡或相关的贷款等业务中,对客户授信之前,需要先通过 各种审核规则对客户的信用等级进行评定,通过评定后的客户才能获得信 用或贷款资格。规则审核过程实际是经过一重或者多重组合规则后对客户 进行打分,这些规则就被称为信用评分卡,每个信用评分卡又有多种阈值 设置(但且只有一个阈值生效),这就使得不同的信用评分卡在不同的阈值 下,对应不同的通过率和坏账率,一般通过率越高,坏账率也会越高,反 之,通过率越低,坏账率也越低。对银行来说,通过率越高,通过贷款资格审核的客户数量就越多,相 应的银行获得的利息收入就会越多,但高通过率一般对应着高坏账率,而 坏账意味着资金的损失风险,因此银行最终的收入可以定义为:最终收入 = 贷款利息收入 - 坏账损失

下表举例 3 个不同的信用评分卡,可以看到每种信用评分卡有 10 个阈值,每种阈值对应不同的坏账率和通过率:

在这里插入图片描述

赛题说明 1:流程简化及示例

由于银行场景的复杂性,往往需要采用选择多个不同的信用评分卡进 行组合来实现最佳的风险控制策略。而实际中的信用评分卡组合是一个非 常复杂的过程,为便于建模,我们将该问题进行做如下简化(本简化只适 用本次比赛赛题,不能完全代表实际场景)。假设贷款资金为 1000000 元,银行贷款利息收入率为 8%,并以上面列举的三个信用评分卡作为选定的信用评分卡组合来测算银行最终收入。由于每一信用评分卡有且只可选择 1 个阈值,假设信用评分卡 1 的阈值设置为 8,则通过表格可知,对应通过率为 70%,坏账率为 4.00%,信用评分卡 2 的阈值设置为 6,则通过率为 50%,坏账率为 2.70%,信用评分卡3 的阈值设置为 7,则通过率为 62%,坏账率为 3.70%。例如如果我们选择三重信用卡组合策略,那么这三种信用评分卡组合 后的总通过率为所有信用评分卡通过率相乘,即:0.7×0.5×0.62 = 0.217。总坏账率为三种信用评分卡对应坏账率的平均值,即:1/3×(0.04+0.027+0.037) = 0.0367。基于以上条件可求得,本次贷款利息收入为:贷款资金×利息收入率×总通过率×(1-总坏账率),即:1000000×0.08×(0.7×0.5×0.62) ×(1-1/3×(0.04+0.027+0.037)) =16758.18(元)。由坏账带来的坏账损失为:贷款资金×总通过率×总坏账率,即:1000000×(0.7×0.5×0.62) ×(1/3×(0.04+0.027+0.037))=7522.666(元)。那么银行的最终收入为:贷款利息收入**-**坏账损失,即

16758.18-7522.666 = 9235.514 (元)

由此可见,选择不同的信用评分卡,不同的阈值组合,会给银行带来 不同的收入与损失,由此决定银行最终收入。因此,银行的目标是选择最 合理的信用评分卡组合以及其阈值,使得银行最终收入最多。

赛题说明2:QUB 模型简介

QUBO 模型是指二次无约束二值优化(Quadratic Unconstrained Binary Optimization)模型,它是一种用于解决组合优化问题的数学模型。在QUBO模型中,需要将问题转化为一个决策变量为二值变量,目标函数是一个二 次函数形式优化模型。

QUBO 模型可以运行在量子计算机硬件上,通过量子计算机进行毫秒级的加速求解。这种模型和加速方式在未来各行业中将得到广泛的实际应 用。因此现阶段研究基于 QUBO 模型的量子专用算法十分有应用价值。例如典型的图着色、旅行商问题、车辆路径优化问题等,都可以转化为 QUBO 模型并借助于量子计算机求解。

相关的 QUBO 的转化方法与例子可参考附件 2 中的参考文献。

赛题说明3:赛题数据

附件 1 中共包含 100 张信用评分卡,每张卡可设置 10 种阈值之一,并对应各自的通过率与坏账率共 200 列,其中 t_1 代表信用评分卡 1 的通过率共 10 项,h_1 代表信用评分卡 1 的坏账率共 10 项,依次类推 t_100 代表信用评分卡 100 的通过率,h_100 代表信用评分卡 100 的坏账率。根据上面的赛题说明及附件 1 中的数据,请你们团队通过建立数学模型完成如下问题 1 至问题 3。

问题 1:在 100 个信用评分卡中找出 1 张及其对应阈值,使最终收入

最多,请针对该问题进行建模,将该模型转为 QUBO 形式并求解。

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

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

2 方案解析

2.1 问题一

这是一个组合优化问题,需要在100张信用评分卡中找到最优的一张卡和对应的阈值,使得最终收入最多。因为每张卡都有10个阈值选项,因此总共有1000个可能的选择。为了将该问题转化为QUBO模型,需要定义一组变量,表示选择第i张卡的第j个阈值时是否为1,其中i∈[1,100], j∈[1,10]。另外,需要定义一个目标函数来最大化最终收入。目标函数的形式为:
maximize:∑i∑irijxijmaximize:\sum_i \sum_i r_{ij} x_{ij} maximizeiirijxij
其中rijr_{ij}rij是选择第i张卡的第j个阈值时的收入。xijx_{ij}xij表示选择第i张卡的第j个阈值时的变量。

为了使得选择的方案符合题意,需要加入约束条件。首先,每张卡只能选择一个阈值,因此需要添加如下约束:
∑jxij=1i=1,2,...,100\sum_j x_{ij} = 1 \quad i = 1,2,...,100 jxij=1i=1,2,...,100
其次,只能选择一个卡和对应的阈值,因此需要添加如下约束:
∑i∑jxij=1\sum_i \sum_j x_{ij} = 1 ijxij=1
最后,
。。。。略,请下载完整文档

2 问题二

对模型进行线性化,将二次项转化为一次项,然后将模型转化为 QUBO 形式。具体地,我们定义 x_{ij}表示信用评分卡 i中选择第 j个阈值,其中 i∈1,2,3,j∈1,2,…,10i \in {1, 2, 3}, j \in {1, 2, \dots, 10}i1,2,3,j1,2,,10yiy_iyi 表示是否选择信用评分卡i,其中i∈1,2,3i \in {1, 2, 3}i1,2,3zjz_jzj 表示是否选择第 j个阈值,其中 j∈1,2,…,10j \in {1, 2, \dots, 10}j1,2,,10。同时,我们引入一个变量r表示总收入。

根据前面的分析,可以得到以下约束条件:

每个信用评分卡最多选择一个阈值,即

∑j=110xij≤1,i∈{1,2,3}∑_{j=1}^{10} x_{ij} \leq 1, i \in \{1,2,3\} j=110xij1,i{1,2,3}

选择某个信用评分卡的同时必须选择该信用评分卡对应的一个阈值,即

xij≤yi,i∈{1,2,3},j∈{1,2,…,10}x_{ij} \leq y_i, i \in \{1,2,3\}, j \in \{1,2,\dots,10\} xijyi,i{1,2,3},j{1,2,,10}

总共只能选择三个信用评分卡,即

∑i=13yi=3∑_{i=1}^{3} y_i = 3 i=13yi=3
选择某个阈值的同时必须选择对应的信用评分卡,即

x1j+x2j+x3j−zj=0,j∈{1,2,…,10}x_{1j} + x_{2j} + x_{3j} - z_j = 0, j \in \{1,2,\dots,10\} x1j+x2j+x3jzj=0,j{1,2,,10}
根据信用评分卡的阈值和数据集中给出的通过率和坏账率,计算收入,即

r=200∑i=13∑j=110xij(ti−hi)zjr = 200\sum_{i=1}^{3} \sum_{j=1}^{10} x_{ij} (t_i - h_i) z_j r=200i=13j=110xij(tihi)zj

其中第 4 个约束条件是一个等式约束,我们可以将其转化为两个不等式约束:

x1j+x2j+x3j≤1+zj,j∈{1,2,…,10}x1j+x2j+x3j≥1−2(1−zj),j∈{1,2,…,10}x_{1j} + x_{2j} + x_{3j} \leq 1 + z_j, j \in \{1,2,\dots,10\} \\ x_{1j} + x_{2j} + x_{3j} \geq 1 - 2(1 - z_j), j \in \{1,2,\dots,10\} x1j+x2j+x3j1+zj,j{1,2,,10}x1j+x2j+x3j12(1zj),j{1,2,,10}
接下来,我们将每个约束条件转化为 QUBO 表达式。首先,我们考虑将约束条件中的不等式转化为等式。对于一个不等式 a≤ba \leq bab,我们可以引入一个非负变量 sss,并将其转化为等式 a+s=ba + s= ba+s=b,其中 sss 表示两边差的绝对值。这样,我们就可以将所有约束条件转化为等式的形式,从而将模型转化为 QUBO 形式。

具体地,我们可以将目标函数表示为:
H=Ar+∑i=13∑j=110Bixij+∑j=110Cjzj+∑i=13Diyi+∑i=13∑j=110∑k=110Eijkxijxik+∑i=13∑j=19∑k=j+110FijkxijxikH = A r + ∑_{i=1}^3 ∑{j=1}^{10} B_i x_ij + ∑_{j=1}^{10} C_j z_j + ∑{i=1}^3 D_i y_i + ∑_{i=1}^3 ∑_{j=1}^{10} ∑ _{k=1}^{10} E_{ij}^k x_{ij} x_{ik} + ∑ _{i=1}^3 ∑ _{j=1}^9 ∑_{k=j+1}^{10} F_{ij}^k x_{ij} x_{ik} H=Ar+i=13j=110Bixij+j=110Cjzj+i=13Diyi+i=13j=110k=110Eijkxijxik+i=13j=19k=j+110Fijkxijxik
其中
。。。。略,请下载完整文档

2.3 问题三

首先,我们定义三个二元变量 x1,x2,x3x_1, x_2, x_3x1,x2,x3,表示我们是否选择了每个评分卡。

其次,我们需要定义一个阈值 TTT,表示最小的信用评分得分,只有评分高于此阈值的评分卡才会被选择。

最后,我们需要定义一个目标函数,表示我们希望最大化的收入。在这个问题中,我们可以将收入定义为三个选择的信用评分卡的得分之和。

因此,我们的目标是将以下函数最大化:
f(x1,x2,x3)=s1x1+s2x2+s3f(x1,x2,x3)=s1x1+s2x2+s3 f(x1,x2,x3)=s1x1+s2x2+s3
其中 s1,s2,s3s_1, s_2, s_3s1,s2,s3 分别表示我们选择的三个信用评分卡的得分。

接下来,我们需要定义约束条件。首先,我们需要确保只选择了三个信用评分卡:
x1+x2+x3=3∗x∗1+∗x∗2+∗x∗3=3x1+x2+x3=3*x*1+*x*2+*x*3=3 x1+x2+x3=3x1+x2+x3=3
其次,我们需要确保选择的评分卡的得分都高于阈值 TTT
s1x1≥T,s2x2≥T,s3x3≥T∗s∗1∗x∗1≥∗T∗,∗s∗2∗x∗2≥∗T∗,∗s∗3∗x∗3≥∗T∗s1x1≥T,s2x2≥T,s3x3≥T*s*1*x*1≥*T*,*s*2*x*2≥*T*,*s*3*x*3≥*T* s1x1T,s2x2T,s3x3Ts1x1T,s2x2T,s3x3T

最后,我们需要确保变量 x1,x2,x3x_1, x_2, x_3x1,x2,x3 都是二元变量:
x12=x1,x22=x2,x32=x3∗x∗12=∗x∗1,∗x∗22=∗x∗2,∗x∗32=∗x∗3x12=x1,x22=x2,x32=x3*x*12=*x*1,*x*22=*x*2,*x*32=*x*3 x12=x1,x22=x2,x32=x3x12=x1,x22=x2,x32=x3
将目标函数和约束条件转换为 QUBO 形式:
。。。。略,请下载完整文档

3 代码实现

电脑浏览器打开:betterbench.top/#/58/detail
有任何问题,请q我823316627

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_285879.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Ubuntu安装选项】

关于Ubuntu系统安装选项 [TOC](关于Ubuntu系统安装选项) 安装选项选择 一、*Try or Install Ubuntu 二、Ubunru (safe graphics) 三、OEM install (for manufacturers) 四、Test memory 总结 安装选项选择 在安装Ubuntu系统时会有四个选项,搜…

( “树” 之 DFS) 226. 翻转二叉树 ——【Leetcode每日一题】

226. 翻转二叉树 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 示例 1: 输入:root [4,2,7,1,3,6,9] 输出:[4,7,2,9,6,3,1] 示例 2: 输入:root [2,1,3] 输出:[…

[ 应急响应基础篇 ] 使用 Autoruns 启动项分析工具分析启动项(附Autoruns安装教程)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

[PTA] 插松枝(C++,模拟)

人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上,做成大大小小的松枝。他们的工作流程(并不)是这样的: 每人手边有一只小盒子,初始状态为空。每人面前有用不完的松枝干和一个推送器,每次推送一…

【软考数据库】第一章 计算机系统基础知识

目录 1.1 计算机系统 1.1.1 计算机硬件组成 1.1.2 中央处理单元 1.1.3 数据表示 1.1.4 校验码 1.2 计算机体系结构 1.2.1 体系结构分类 1.2.2 指令系统存 1.2.3 储系系统 1.2.4 输入/输出技术 1.2.5 总线结构…

CF204A-Little Elephant and Interval(数位)

CF204A-Little Elephant and Interval 考虑 [1,abcde‾][1,\overline{abcde}][1,abcde] 的情况: 位置集合数量个位1 ~ 99十位11 ~ 999百位{xux‾∣x∈[1,9],u∈[0,9]}\{\overline{xux} | x\in [1,9],u\in [0,9]\}{xux∣x∈[1,9],u∈[0,9]}91019\times 10^19101千位…

一站式智慧仓储物流方案,免费帮你一屏搞定,领导不重用你都难!

在江苏无锡,菜鸟已经通过柔性自动化技术搭建了亚洲规模最大的无人仓,超过1000台无人车可以快速组合、分拆作业,生产效率可提升一倍多,大大节省了人工成本。智慧仓储物流作为物流的重要一环,也吸引了广泛关注。2022年双…

【图数据挖掘】— 子图同构问题、单射函数和双射函数、同构(isomorphic)和同态(homomorphism)

子图同构问题 子图同构(Subgraph Isomorphism)是指在图论中,两个图之间是否存在一种关系,使得其中一个图的顶点集合和边集合可以通过对应的方式映射到另一个图的顶点集合和边集合上,且保持原来的边和顶点的关系不变。…

设计模式之中介者模式(C++)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 一、中介者模式是什么? 中介者模式是一种行为型的软件设计模式,也称为仲裁者模式,顾名思义&am…

基于SpringBoot的大学生体质测试管理系统源码数据库论文

目录 目录 1 绪 论 1.1系统背景介绍 1.2课题研究的目的和意义 1.3系统的研究现状 1.4系统实现的功能 1.5系统的特点 2 开发工具和技术 2.1 B/S体系结构 2.2 Java语言简介 2.3 SpringBoot框架 2.4 MySQL简介 3 系统需求分析 3.1 系统可行性分析及目的…

爱智EdgerOS之深入解析在爱智应用中如何使用Socket.IO轻松实现双向通信

一、什么是 Socket.IO? Socket.IO 是一个基于事件通信的实时应用程序框架,它在即时通讯、通知和消息推送,实时分析等场景中有广泛的应用。Socket.IO 包括两个部分: 在 Server 端的模块(JSRE 已提供了 socket.io 模块&…

UPA/URA双极化天线的协方差矩阵结构

文章目录UPA的阵列响应向量(暂不考虑双极化天线)UPA阵列响应:从单极化天线到双极化天线UPA双极化天线的协方差矩阵结构参考文献UPA的阵列响应向量(暂不考虑双极化天线) 下图形象描述了UPA阵列的接收信号 UPA阵列的水平…

已知原根多项式和寄存器初始值时求LFSR的简单例子

线性反馈移位寄存器(LFSR)是一种用于生成伪随机数序列的简单结构。在这里,我们有一个四项原根多项式 p(x)1x0x21102p(x) 1 x 0x^2 110_2p(x)1x0x21102​ 和初始值 S0100S_0 100S0​100。我们将使用 LFSR 动作过程来生成一个伪随机序列。…

SpringBoot【运维实用篇】---- SpringBoot程序的打包与运行

SpringBoot【运维实用篇】---- SpringBoot程序的打包与运行程序打包程序运行SpringBoot程序打包失败处理命令行启动常见问题及解决方案刚开始做开发学习的小伙伴可能在有一个知识上面有错误的认知,我们天天写程序是在Idea下写的,运行也是在Idea下运行的。…

vue——项目中加载public中的静态资源——技能提升

应用场景 在写后台管理系统的时候,遇到一个需求就是关于热力图的功能,需要加载不同的页面,这个页面需要每日更新一次,所以请求页面html的最终解决办法就是:将页面html对应的文件夹,放在public文件夹中&…

Zephyr RTOS应用开发(nrf5340)

目录 概述 开发环境安装 创建一个新的Zephyr应用 构建应用并刷写到开发板 概述 Zephyr™项目是一个采用Apache 2.0协议许可,Linux基金会托管的协作项目。针对低功耗、小型内存微处理器设备开发的物联网嵌入式小型、可扩展的实时操作系统,支持多种硬件…

(八)【软件设计师】计算机系统—浮点数

浮点数 浮点数。当机器字长为n时,定点数的补码和移码可表示2的n方个数,而其原码和反码只能表示2"-1个数(0的表示占用了两个编码),因此,定点数所能表示的数值范围比较小,在运算中很容易因结果超出范围而…

JavaScript -- 对象

1. 概念 对象是 JavaScript 数据类型的一种,可以理解为是一种无序的数据集合 2. 对象的使用 2.1 对象的声明 let 对象名 {} let 对象名 new Object() 2.2 属性和方法 数据描述性的信息称为属性,如人的姓名、身高、年龄、性别等,一般是…

前端项目-12-个人中心-二级路由配置-导航守卫-懒加载

目录 1-个人中心 1.1-个人中心路由注册 1.2-拆分二级路由组件 1.3-动态渲染我的订单页面 2-导航守卫优化 2.1-用户未登录导航守卫优化 2.2-路由独享 2.3-组件内守卫 3-懒加载 3.1-图片懒加载 3.2-路由懒加载 4-map文件处理 1-个人中心 需求:当用户点击支…

DevOps实践分享:4个实施步骤与6个关键设计

本文介绍了普元DevOps平台在金融行业实施落地的常用方法,以及在项目管理,代码管理,构建管理,制品管理,部署管理等模块针对一些典型客户场景的关键设计。目 录01 平台简介‍‍02 实施方法‍‍‍‍‍‍03 关键设计01平…