一、题目简析
运筹优化类题目,不同于目标规划,该题限制了必须使用量子退火算法QUBO来进行建模与求解。本身题目并不难,但是该模型较生僻,给出的参考文献需要耗费大量时间去钻研。建议擅长运筹类题目且建模能力强的队伍选择。
二、逐问思路分享
问题 1:在 100 个信用评分卡中找出 1 张及其对应阈值,使最终收入最多,请针对该问题进行建模,将该模型转为 QUBO 形式并求解。
根据题意,我们在该问中不需要考虑组合,单选一个评分卡及一个对应的最优阈值即可。
不妨设该张评分卡的编号(index)为i(1~100),阈值为x(1~10),那么通过率为横坐标【t_i】纵坐标【x】对应的值(设为t),总坏账率就是横坐标【h_i】纵坐标【x】对应的值(设为h)。
那么贷款利息收入:1,000,000×0.08×t×(1-h)=80,000t(1-h)
坏账损失:1,000,000×t×h=1,000,000th
最终收入:80,000t(1-h)-1,000,000th=80,000t-1,080,000th
我们的目标函数就是max Z=80,000t-1,080,000th
由于QUBO模型默认是最小值,所以我们对Z取负号,即min (-80,000t+1,080,000th)
且需要将问题转化为一个决策变量为二值变量,我们对于1~100张评分卡,1~10阈值,定义:
i∈[1,100]
j∈[1,10]
于是,目标函数变成:
目标函数
模型建立好后,利用python的包即可求解
import pyqubo
问题 2:假设赛题说明 3 目前已经选定了数据集中给出的信用评分卡 1、 信用评分卡 2、信用评分卡 3 这三种规则,如何设置其对应的阈值,使最终收入最多,请针对该问题进行建模,将模型转为 QUBO 形式并求解。
评分卡已经选定,为1,2,3。根据给出的例子和上一问的分析,我们把对应的阈值设为x1,x2,x3,那么通过率:t1,t2,t3;坏账率:h1,h2,h3.
总通过率:t1×t2×t3=t’
总坏账率:(h1+h2+h3)/3=h’
最终收入:80,000t’-1,080,000t’h’
上一问中的xi不再需要设置(因为评分卡选择已知)
三个评分卡的阈值变量
目标函数中变化如下:
问题 3:从所给附录中 100 个信用评分卡中任选取 3 种信用评分卡,并设置合理的阈值,使得最终收入最多,请针对该问题进行建模,并将模型转为 QUBO 形式并求解。
该问不再限制评分卡,相当于变量空间扩到最大。
模型在问题2的基础上做如下改变:
加入选择的三张评分卡的二值映射
h/t的对应公式
三、代码及求解结果
放在评论区
代码和求解得到的答案放在评论区,如失效请私信~