[2023년 제13회 MathorCup Mathematical Modeling Challenge Competition in Colleges and Universities in Colleges and Universities in 2023] 질문 A에 대한 신용 스코어카드 조합 최적화에서 양자 컴퓨터 적용의 상세한 모델링 프로세스 분석 및 코드 구현

업데이트 정보: 2023-4-15 코드 업데이트

[2023년 제13회 MathorCup 수학적 모델링 챌린지 대회] 질문 A에 대한 신용 스코어카드 조합 최적화에 양자 컴퓨터 적용

사진 설명을 추가해주세요
업데이트 정보: 2023-4-15 코드 업데이트

주제 1개

은행 신용카드나 관련 대출 사업에서는 고객에게 신용을 부여하기 전에 다양한 심사 규정을 통해 고객의 신용도를 평가해야 하며, 평가를 통과한 고객은 신용 또는 대출 자격을 얻을 수 있습니다. 규칙 검토 프로세스는 실제로 하나 이상의 결합된 규칙 후에 고객의 점수를 매기는 것입니다. 이러한 규칙을 신용 점수 카드라고 합니다. 각 신용 점수 카드에는 여러 임계값 설정이 있습니다(그러나 하나의 임계값만 적용됨). 일반적으로 합격률이 높을수록 대손률이 높고 반대로 합격률이 낮을수록 대손률이 낮습니다. 은행의 경우 합격률이 높을수록 대출자격심사를 통과하는 고객이 많아지고 은행이 받는 이자수익도 높아지지만 일반적으로 합격률이 높다는 것은 대손율이 높으며 대손금은 자금을 의미한다. 손실 위험이 있으므로 은행의 최종 소득은 다음과 같이 정의할 수 있습니다. 최종 소득 = 대출 이자 소득 - 대손

다음 표는 3가지 다른 신용 점수 카드의 예를 제공합니다. 각 신용 점수 카드에는 10개의 임계값이 있으며 각 임계값은 서로 다른 불량률 및 합격률에 해당합니다.

여기에 이미지 설명 삽입

질문 설명 1: 프로세스 단순화 및 예

뱅킹 현장의 복잡성으로 인해 최상의 위험 관리 전략을 달성하기 위해 여러 신용 점수 카드의 조합을 선택해야 하는 경우가 많습니다. 신용 점수 카드의 실제 조합은 매우 복잡한 과정이므로 모델링의 편의를 위해 다음과 같이 문제를 단순화합니다. 대출자금이 100만위안이라고 가정하면 은행대출 이자수익률은 8%이며, 위에 열거한 3개의 신용점수카드를 선택한 신용점수카드 조합으로 은행의 최종수입을 측정한다. 각 신용 점수 카드에는 하나의 임계값만 있고 선택할 수 있으므로 신용 점수 카드 1의 임계값을 8로 설정한다고 가정하면 해당 합격률은 70%, 불량률은 4.00%임을 표에서 알 수 있습니다. , 신용점수카드 2의 기준을 6으로 설정하면 합격률은 50%, 대손율은 2.70% 신용점수카드 3의 기준을 7로 설정하면 합격률은 62 %, 대손율은 3.70%입니다. 예를 들어, 3중 신용 카드 조합 전략을 선택하면 3개의 신용 점수 카드 조합의 총 합격률에 모든 신용 점수 카드의 합격률을 곱합니다. 즉, 0.7×0.5×0.62 = 0.217입니다. 총 부실률은 3개의 신용 점수 카드에 해당하는 부실률의 평균, 즉 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(Quadratic Unconstrained Binary Optimization) 모델을 말합니다. QUBO 모델에서는 문제를 이진변수로 의사결정변수로 변환해야 하며, 목적함수는 2차함수 형태의 최적화 모델이다.

QUBO 모델은 양자 컴퓨터 하드웨어에서 실행할 수 있으며 양자 컴퓨터를 사용하여 솔루션을 밀리초 단위로 가속화할 수 있습니다. 이 모델과 가속 방식은 향후 다양한 산업 분야에서 널리 사용될 것입니다. 따라서 현 단계에서 QUBO 모델을 기반으로 양자특수알고리즘을 연구하는 것은 매우 가치가 있다. 예를 들어 전형적인 그래프 색칠, 여행하는 세일즈맨 문제, 차량 경로 최적화 문제 등을 QUBO 모델로 변환하고 양자 컴퓨터의 도움으로 해결할 수 있습니다.

관련 QUBO 변환 방법 및 예는 부록 2의 참고 자료를 참조하십시오.

질문 설명 3: 질문 데이터

첨부 1은 총 100개의 신용점수 카드를 담고 있으며 각 카드는 10개의 임계값 중 하나로 설정할 수 있으며 합격률과 대손률에 해당하는 200개의 열이 있습니다. , 총 10개 항목, h_1은 1번 Credit Score Card의 부실률은 총 10개 항목으로 비유하자면 t_100은 100번 Credit Score Card의 합격률, h_100은 Credit Score Card의 불량률을 나타냅니다. 100. 위의 대회 질문에 대한 설명과 부록 1의 데이터에 따라 팀에서 수학적 모델을 구축하여 다음 질문 1~3을 완료하십시오.

질문 1 : 100개의 신용 점수 카드 중 1개와 해당 임계값을 찾아 최종 소득이

기껏해야 문제를 모델링하고 모델을 QUBO 형식으로 변환하고 해결합니다.

질문 2 : 게임 설명 3은 데이터셋에서 주어진 신용 점수 카드 1, 신용 점수 카드 2, 신용 점수 카드 3의 세 가지 규칙을 선택했다고 가정하고, 최종 수입을 최대화하기 위해 해당 임계값을 설정하는 방법은 무엇입니까? 이 문제를 모델링하고 모델을 QUBO 형식으로 변환하고 해결하십시오.

질문 3 : 주어진 부록에 있는 100개의 신용 점수 카드 중 3개의 신용 점수 카드를 선택하고 최종 수입을 극대화할 수 있는 합리적인 임계값을 설정하십시오.이 문제를 모델링하고 모델을 QUBO 형식으로 변환하여 해결하십시오.

2 계획 분석

2.1 질문 1

이것은 조합최적화 문제로 최종 수입을 최대화하기 위해서는 100개의 신용점수 카드 중에서 최적의 카드와 그에 상응하는 임계값을 찾는 것이 필요하다. 각 카드에는 10개의 임계값 옵션이 있으므로 총 1000개의 가능한 선택이 있습니다. 이 문제를 QUBO 모델로 변환하기 위해서는 i번째 카드의 j번째 임계값이 선택되었을 때 1인지 여부를 나타내는 변수 집합을 정의해야 합니다. 여기서 i∈[1,100], j∈[ 1,10]. 또한 최종 수익을 극대화하기 위해 목적 함수를 정의해야 합니다. 목적 함수의 형식은 다음과 같습니다.
최대화: ∑ i ∑ irijxij 최대화: \sum_i \sum_i r_{ij} x_{ij}ma x imi ze 아르 자형이자엑스이자
여기서 rj r_{ij}아르 자형이자는 i번째 카드의 j번째 임계값을 선택할 때의 수입입니다. xij x_{ij}엑스이자i번째 카드의 j번째 임계값을 선택할 때 변수를 나타냅니다.

선택한 체계가 질문의 의미에 부합하도록 하려면 제약 조건을 추가해야 합니다. 첫째, 각 카드는 하나의 임계값만 선택할 수 있으므로 다음 제약 조건을 추가해야 합니다
. .. .,100제이엑스이자=1=1 ,2 ,... ,100
둘째, 하나의 카드와 해당 임계값만 선택할 수 있으므로 다음 제약 조건을 추가해야 합니다.
∑ i ∑ jxij = 1 \sum_i \sum_j x_{ij} = 1제이엑스이자=1
마지막으로
. . . . 약간, 전체 문서를 다운로드하십시오

2 질문 2

모델을 선형화하고, 2차 항을 1차 항으로 변환하고, 모델을 QUBO 형식으로 변환합니다. 구체적으로 x_{ij}를 정의하여 신용 스코어카드 i에서 j번째 임계값의 선택을 나타내도록 정의합니다. 여기서 i ∈ 1 , 2 , 3 , j ∈ 1 , 2 , … , 10 i \in {1, 2, 3}, j \in {1, 2, \dots, 10}1 ,2 ,3 ,제이1 ,2 ,,10yi y_i와이신용 점수 카드 i를 선택할지 여부를 나타냅니다. 여기서 i ∈ 1 , 2 , 3 i \in {1, 2, 3}1 ,2 ,3지제 지지jj번째 임계값을 선택할지 여부를 나타냅니다. 여기서 j ∈ 1 , 2 , … , 10 j \in {1, 2, \dots, 10}제이1 ,2 ,,10 . 동시에 총 소득을 나타내는 변수 r을 도입합니다.

이전 분석에 따르면 다음과 같은 제약 조건을 얻을 수 있습니다.

신용 스코어카드당 최대 하나의 임계값을 선택합니다.

∑ j = 110 xij ≤ 1 , i ∈ { 1 , 2 , 3 } ∑_{j=1}^{10} x_{ij} \leq 1, i \in \{1,2,3\}j = 110엑스이자1 ,{ 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,\도트,10\}엑스이자와이,{ 1 ,2 ,3 } ,제이{ 1 ,2 ,,10 }

총 3개의 신용 스코어카드만 선택할 수 있습니다.

∑ i = 1 3 yi = 3 ∑_{i=1}^{3} y_i = 3나는 = 13와이=3
특정 임계값을 선택할 때 해당 신용 점수 카드를 선택해야 합니다. 즉,

x 1j + x 2j + x 3j − zj = 0 , j ∈ { 1 , 2 , … , 10 } x_{1j} + x_{2j} + x_{3j} - z_j = 0, j \in \ {1,2,\도트,10\}엑스1+엑스2j _+엑스3-j=0 ,제이{ 1 ,2 ,,10 }
신용 점수 카드의 임계 값과 데이터 세트에 주어진 합격률 및 대손율에 따라 수입을 계산하십시오.

r = 200 ∑ i = 13 ∑ j = 110 xij ( ti − hi ) zjr = 200\sum_{i=1}^{3} \sum_{j=1}^{10} x_{ij} (t_i - h_i) z_j아르 자형=200나는 = 13j = 110엑스이자( -시간) j

네 번째 제약 조건은 상등 제약 조건이며 두 개의 부등 제약 조건으로 변환할 수 있습니다.

x 1 j + x 2 j + x 3 j ≤ 1 + zj , j ∈ { 1 , 2 , … , 10 } x 1 j + x 2 j + x 3 j ≥ 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\}엑스1+엑스2j _+엑스31+j,제이{ 1 ,2 ,,10 }엑스1+엑스2j _+엑스31-2 ( 1-j) ,제이{ 1 ,2 ,,10 }
다음으로 각 제약 조건을 QUBO 식으로 변환합니다. 첫째, 제약 조건의 불평등을 평등으로 변환하는 것을 고려합니다. 부등식a ≤ ba \leq bb , 음수가 아닌 변수ss를s , 그리고 그것을 방정식a + s = ba + s = b+에스=b , 여기서sss는 두 변의 차이의 절대값을 나타냅니다. 이러한 방식으로 모든 구속조건을 방정식의 형태로 변환할 수 있으므로 모델을 QUBO 형식으로 변환할 수 있습니다.

구체적으로, 우리는 목적 함수를 다음과 같이 표현할 수 있습니다
. j = 110 ∑ k = 1 10 E ijkxijxik + ∑ i = 1 3 ∑ j = 1 9 ∑ k = j + 1 10 F ijkxijxik H = 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}시간=아르 _+나는 = 13제이=110B _엑스제이+j = 110jj+=13D _와이+나는 = 13j = 110케이 = 110이자형ij케이엑스이자엑스+나는 = 13j = 19k = j + 110에프ij케이엑스이자엑스
그들 중
. . . . 약간, 전체 문서를 다운로드하십시오

2.3 질문 3

먼저 세 개의 이진 변수 x 1 , x 2 , x 3 x_1, x_2, x_3을 정의합니다.엑스1,엑스2,엑스3, 각 스코어카드를 선택했는지 여부를 나타냅니다.

둘째, 임계값 TT를 정의해야 합니다.T 는 최소 신용 점수를 나타내며 이 임계값보다 높은 점수를 가진 스코어카드만 선택됩니다.

마지막으로 최대화하려는 수익을 나타내는 목적 함수를 정의해야 합니다. 이 문제에서 우리는 수입을 선택된 3개의 신용 스코어카드 점수의 합으로 정의할 수 있습니다.

따라서 우리의 목표는 다음 함수를 최대화하는 것입니다.
f ( x 1 , x 2 , x 3 ) = s 1 x 1 + s 2 x 2 + s 3 f(x1,x2,x3)=s1x1+s2x2+s3에프 ( × 1 ,× 2 ,× 3 )=1 × 1+2 × 2+s 3
여기서s 1 , s 2 , s 3 s_1, s_2, s_3에스1,에스2,에스3우리가 선택한 3개의 신용 스코어카드의 점수를 각각 나타냅니다.

다음으로 제약 조건을 정의해야 합니다. 먼저 세 개의 신용 스코어카드만 선택되었는지 확인해야 합니다.
x 1 + x 2 + x 3 = 3 ∗ x ∗ 1 + ∗ x ∗ 2 + ∗ x ∗ 3 = 3 x1+x2+x3=3*x * 1+*x*2+*x*3=3× 1+x2_ _+x 3=엑스1+x2+x=3 둘째, 선택한 스코어카드의 점수가 모두 임계값 TT
이상인지 확인해야 합니다.T
s 1 x 1 ≥ T , s 2 x 2 ≥ T , s 3 x 3 ≥ 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≥*티*1 × 1,2 × 2,3 × 3에스1엑스1T ,* s2엑스2T ,* s엑스

마지막으로 변수 x 1 , x 2 , x 3 x_1, x_2, x_3이엑스1,엑스2,엑스3이진 변수:
x 12 = x 1 , x 22 = x 2 , x 32 = x 3 ∗ x ∗ 12 = ∗ x ∗ 1 , ∗ x ∗ 22 = ∗ x ∗ 2 , ∗ x ∗ 32 = ∗ x ∗ 3 x12=x1,x22=x2,x32=x3*x*12=*x*1,*x*22=*x*2,*x*32=*x*3x 12=× 1 ,x 22=× 2 ,x 32=x 3엑스12=x1 ,x22=x2 ,x32=x3
목적 함수와 제약 조건을 QUBO 형식으로 변환합니다.
. . . . 약간, 전체 문서를 다운로드하십시오

3 코드 구현

data = readmatrix('附件1:data_100.csv');
rates = data(:,1:100);
loss_rates = data(:,101:200);

R = rates .* loss_rates;

Q = zeros(100,100);
for i = 1:100
    for j = i:100
        for k = 1:10
            for l = 1:10
                Q(i,j) = Q(i,j) + R(k,l)*rates(k,i)*rates(l,j);
            end
        end
        Q(j,i) = Q(i,j);
    end
end

C1 = zeros(100,100);
for i = 1:100
    for j = 1:100
        for k = 1:10
            C1(i,j) = C1(i,j) + rates(k,i)*rates(k,j);
        end
        C1(i,j) = C1(i,j)*(sum(rates(:,i))-1)^2;
    end
end

C2 = (sum(sum(rates))-1)^2;

QUBO = Q - C1 - lambda*C2;
%qubo_solver 通常用于解决二次无约束二元优化问题(QUBO)或二次无约束整数规划问题(QUIP)
solution = qubo_solver(qubo_matrix, 'qbsolv', 'timeout', 30, 'num_reads', 100);

。。。略,请下载完整代码

4 다운로드

컴퓨터 브라우저 열기: betterbench.top/#/58/detail
질문이 있는 경우 저에게 질문하십시오. 823316627

추천

출처blog.csdn.net/weixin_43935696/article/details/130129313