2020年全国大学生数学建模竞赛C题中小微企业信贷决策(含word论文和源代码资源)

零、相关内容

2020年全国大学生数学建模竞赛的C题“中小微企业信贷决策”要求参赛者通过数学建模,为银行提供一个量化分析模型,以评估中小微企业的信贷风险,并制定相应的信贷策略。以下是对该问题的详细分析与解答:

  1. 问题理解与数据整理

    • 数据概览:需要仔细阅读并理解附件1和附件2中提供的企业数据,包括企业信息、进项发票、销项发票等[1][2]。
    • 数据预处理:对数据进行清洗和预处理,包括剔除无效数据、量化信誉评级等操作[5]。
  2. 信贷风险量化分析

    • 建立风险评估模型:利用机器学习方法(如随机森林、支持向量机等)或统计方法(如逻辑回归)建立信贷风险评估模型,预测企业的违约概率[3]。
    • 模型验证:通过交叉验证等方法验证模型的准确性和稳健性,确保模型能够有效预测信贷风险[4]。
  3. 信贷策略制定

    • 多目标优化:在风险评估的基础上,建立一个多目标优化模型,考虑贷款收益最大化、客户流失率最小化及违约风险最小化等因素,确定银行的信贷策略[3]。
    • 策略细化:根据优化结果,为每家企业制定具体的贷款额度、利率和期限等信贷条件[2]。
  4. 无信贷记录企业评估

    • 信誉评级预测:对于无信贷记录的企业,首先需要预测其信誉评级,可以通过与企业规模、年利润率等指标建立预测模型[5]。
    • 信贷风险评估:在预测出信誉评级后,将这些企业的数据代入已建立的信贷风险评估模型中,得到其信贷风险评分[3]。
  5. 突发因素下的信贷调整

    • 影响程度量化:收集并分析新冠疫情等突发因素对企业的不同影响,将影响程度量化为具体指标[5]。
    • 模型调整与预测:将突发因素的影响因素加入到信贷风险评估模型中,重新训练模型,并预测调整后的信贷策略[3]。
  6. 综合策略制定

    • 优先级排序:根据信贷风险和预期收益对所有企业进行排序,确定优先放贷的企业名单[4]。
    • 策略分配:在年度信贷总额固定的约束下,按照优先级为企业分配贷款额度和利率,确保整体信贷策略的最优化[2]。

总的来说,通过上述分析,可以建立起一个全面的信贷风险量化分析模型,并为银行提供一个科学的信贷策略。在实际操作中,可能还需要考虑更多实际因素,如市场动态、行业趋势等,以确保模型的实际应用效果。

一、部分题目

2020年高教社杯全国大学生数学建模竞赛题目

C题 中小微企业的信贷决策

在实际中,由于中小微企业规模相对较小,也缺少抵押资产,因此银行通常是依据信贷政策、企业的交易票据信息和上下游企业的影响力,向实力强、供求关系稳定的企业提供贷款,并可以对信誉高、信贷风险小的企业给予利率优惠。银行首先根据中小微企业的实力、信誉对其信贷风险做出评估,然后依据信贷风险等因素来确定是否放贷及贷款额度、利率和期限等信贷策略。

某银行对确定要放贷企业的贷款额度为10~100万元;年利率为4%~15%;贷款期限为1年。附件1~3分别给出了123家有信贷记录企业的相关数据、302家无信贷记录企业的相关数据和贷款利率与客户流失率关系的2019年统计数据。该银行请你们团队根据实际和附件中的数据信息,通过建立数学模型研究对中小微企业的信贷策略,主要解决下列问题:

(1) 对附件1中123家企业的信贷风险进行量化分析,给出该银行在年度信贷总额固定时对这些企业的信贷策略。

(2) 在问题1的基础上,对附件2中302家企业的信贷风险进行量化分析,并给出该银行在年度信贷总额为1亿元时对这些企业的信贷策略。

(3) 企业的生产经营和经济效益可能会受到一些突发因素影响,而且突发因素往往对不同行业、不同类别的企业会有不同的影响。综合考虑附件2中各企业的信贷风险和可能的突发因素(例如:新冠病毒疫情)对各企业的影响,给出该银行在年度信贷总额为1亿元时的信贷调整策略。

二、部分论文

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、部分源代码

(一)数据处理代码

完整代码 https://github.com/yan-fanyu/CUMCM-Paper-And-SourceCode
cb=xlsread('data','进项发票信息', 'A2:I210948'); 
sr=xlsread('data','销项发票信息', 'A2:I162485'); 
cb1 = zeros(123, 5);
sr1 = zeros(123, 5);
for i=1:1:length(cb(:, 1))
    if cb(i, 5) > 0 && cb(i, 8) > 0
        cb1(cb(i, 1), cb(i, 9)-2015) = cb1(cb(i, 1), cb(i, 9)-2015) +1;
    end
end

for i=1:1:length(sr(:, 1))
    if sr(i, 5) > 0 && sr(i, 8) > 0
        sr1(sr(i, 1), sr(i, 9)-2015) = sr1(sr(i, 1), sr(i, 9)-2015) +1;
    end
end

(二)熵权法与TOPSIS代码

完整代码 https://github.com/yan-fanyu/CUMCM-Paper-And-SourceCode
import numpy as np
import pandas as pd

## 读取数据
data=pd.read_csv('data6.csv',encoding='utf-8',index_col=0)
indicator=data.columns.tolist()   ## 指标个数   多少列
project=data.index.tolist()       ## 样本个数   多少行
value=data.values
print("value = ", value)

## 定义数据标准化函数。为了避免求熵值时对数无意义,对数据进行平移,对标准化后的数据统一加了常数0.001
def std_data(value,flag):
    for i in range(len(indicator)):
        if flag[i]=='+':
            value[:,i]=(value[:,i]-np.min(value[:,i],axis=0))/(np.max(value[:,i],axis=0)-np.min(value[:,i],axis=0))+0.01
        elif flag[i]=='-':
            value[:,i]=(np.max(value[:,i],axis=0)-value[:,i])/(np.max(value[:,i],axis=0)-np.min(value[:,i],axis=0))+0.01
    return value



# 定义熵值法函数、熵值法计算变量的权重
def cal_weight(indicator, project, value):
    p = np.array([[0.0 for i in range(len(indicator))] for i in range(len(project))])
    # print(p)
    for i in range(len(indicator)):
        p[:, i] = value[:, i] / np.sum(value[:, i], axis=0)

    e = -1 / np.log(len(project)) * sum(p * np.log(p))  # 计算熵值
    g = 1 - e  # 计算一致性程度
    w = g / sum(g)  # 计算权重
    return w

# 调用函数将数据标准化,即为每个数据添加正相关还是负相关标志
std_value=std_data(value, flag)

# 调用函数求权重
w = cal_weight(indicator, project, std_value)
w = pd.DataFrame(w, index=data.columns, columns=['权重'])
print(w)

# 调用函数求得分
score = np.dot(std_value, w).round(4)         # 对应数据与权重相乘得到分数,结果保留四位小数
score = pd.DataFrame(score, index=data.index, columns=['综合得分']).sort_values(by=['综合得分'], ascending=False)
print(score)

score.to_excel("jieguo.xlsx")

(三)最小二乘法代码

完整代码 https://github.com/yan-fanyu/CUMCM-Paper-And-SourceCode
X = [0.04	0.0425	0.0465	0.0505	0.0545	0.0585	0.0625	0.0665	0.0705	0.0745	0.0785	0.0825	0.0865	0.0905	0.0945	0.0985	0.1025	0.1065	0.1105	0.1145	0.1185	0.1225	0.1265	0.1305	0.1345	0.1385	0.1425	0.1465	0.15
];

Y1=[0	0.094574126	0.135727183	0.224603354	0.302038102	0.347315668	0.41347177	0.447890973	0.497634453	0.511096612	0.573393087	0.609492115	0.652944774	0.667541843	0.694779921	0.708302023	0.731275401	0.775091405	0.798227368	0.790527266	0.815196986	0.814421029	0.854811097	0.870317343	0.871428085	0.885925945	0.874434682	0.902725909	0.922060687];

YY = [];
A = -200:0.1:-190;
B = -15:0.1:-11;
C = 14:0.1:16;
D = -1:0.1:1;



E = [];

XA = [];
XC=[];
XB=[];
XD=[];

XX = [];

ii = 0;

e = 0;

for i=1:length(A)
    a=A(i);
    for j=1:length(B)
        b=B(j);
        for p=1:length(D)
            d=D(p);
            for k=1:length(C)
                c=C(k);
                e = 0;
                for s=1:length(X)
                    x=X(s);
                    f = a*x^3+b*x^2+c*x+d;
                    e = e+(f-Y1(s))^2;

                end

                if e < 0.02255
                    ii = ii + 1;
                    XA(ii) =a;
                    XB(ii)=b;
                    XC(ii)=c;
                    XD(ii)=d;
                    XX(ii) = ii;
                    E(ii) = e;
                end
            end
        end
    end
end
          
[~,position]=min(E);
XA(position)
XB(position)
XC(position)
XD(position)

            
plot(XX, E);

(四)粒子群代码

完整代码 https://github.com/yan-fanyu/CUMCM-Paper-And-SourceCode
clear;
a1=-194.7;
b1=-13.4;
c1=15.6;
d1=-0.5;
a2=-194.8;
b2=-9.6;
c2=14.8;
d2=-0.5;
a3=-159.7;
b3=-14.5;
c3=14.8;
d3=-0.5;

% 代号-得分-等级
E_Z_DJ = [
1	0.1172	9
2	0.1173	9
12	0.5834	7
25	0.1163	7
34	0.1151	7
38	0.1841	7
45	0.1447	7
47	0.1157	7
49	0.1167	7
53	0.1155	7
56	0.1155	7
60	0.1579	7
61	0.2009	7
62	0.8322	7
63	0.1165	7
64	0.1061	5
66	0.113	5
69	0.3324	5
71	0.1166	7
73	0.1161	7
75	0.1152	7
76	0.1263	5
77	0.1157	7
78	0.1161	7
80	0.1138	5
82	0.1178	7
86	0.1148	7
87	0.1132	5
88	0.1146	5
89	0.1188	5
90	0.1156	7
91	0.1153	7
92	0.1142	5
93	0.1124	5
94	0.1058	5
95	0.1098	5
96	0.1111	5
98	0.1129	5
99	0.1138	7
100	0.1122	5
102	0.1164	7
103	0.1382	7
104	0.1662	7
105	0.1147	7
106	0.1156	7
107	0.1149	5
108	0.1128	5
109	0.1149	7
110	0.1129	5
111	0.1132	5
112	0.1134	5
113	0.1126	5
114	0.1111	5
115	0.1134	5
116	0.1125	5
117	0.1068	5
118	0.1134	5
119	0.1062	5
120	0.1134	5
121	0.1118	5
122	0.1126	5
123	0.1709	5
124	0.1128	5
125	0.1123	5
126	0.113	5
127	0.1123	5
128	0.1381	5
129	0.1127	5
130	0.112	5
131	0.1141	5
132	0.1126	5
133	0.1145	5
134	0.1124	5
135	0.113	5
136	0.1119	5
137	0.1127	5
138	0.1128	5
139	0.1134	5
140	0.112	5
141	0.1057	5
142	0.1118	5
143	0.1132	5
144	0.1136	5
145	0.1333	5
146	0.1126	5
147	0.1119	5
148	0.1115	5
149	0.1123	5
150	0.1148	5
151	0.1153	5
152	0.1117	5
153	0.1116	5
154	0.1129	5
155	0.1128	5
156	0.1127	5
157	0.1132	5
158	0.1129	5
159	0.1115	5
160	0.1132	5
161	0.1126	5
162	0.1118	5
163	0.1115	5
164	0.1119	5
165	0.1118	5
166	0.1133	5
167	0.1127	5
168	0.1113	5
169	0.1141	5
170	0.1133	5
171	0.1125	5
172	0.1118	5
173	0.1115	5
174	0.1124	5
175	0.1192	5
176	0.1126	5
177	0.1125	5
178	0.1128	5
179	0.1123	5
180	0.1129	5
181	0.1135	5
182	0.1127	5
183	0.1123	5
184	0.1123	5
185	0.1128	5
186	0.1116	5
187	0.1129	5
188	0.1122	5
189	0.1129	5
190	0.113	5
191	0.1121	5
192	0.1145	5
193	0.1125	5
194	0.1117	5
195	0.1127	5
196	0.1139	5
197	0.1127	5
198	0.1144	5
199	0.1128	5
200	0.1108	5
201	0.1118	5
202	0.1156	5
203	0.1127	5
204	0.1129	5
205	0.1123	5
206	0.5633	5
207	0.1166	5
208	0.1126	5
209	0.1132	5
210	0.1129	5
211	0.113	5
212	0.1123	5
213	0.1165	5
214	0.1155	5
215	0.1131	5
216	0.1133	5
217	0.1143	5
218	0.1134	5
219	0.1118	5
220	0.1545	5
221	0.1126	5
222	0.1124	5
223	0.1132	5
224	0.1152	5
225	0.1206	5
226	0.1151	5
227	0.1123	5
228	0.1125	5
229	0.1126	5
230	0.1117	5
231	0.1139	5
232	0.1574	5
233	0.1633	5
234	0.13	5
235	0.1844	5
236	0.134	5
237	0.2421	5
238	0.1118	5
239	0.1123	5
240	0.118	5
241	0.1132	5
242	0.1124	5
243	0.1138	5
244	0.1213	5
245	0.1107	5
246	0.1129	5
247	0.2526	5
248	0.1121	5
249	0.1134	5
250	0.1133	5
251	0.1351	5
252	0.2107	5
253	0.1157	5
254	0.1305	5
255	0.112	5
256	0.1105	5
257	0.1711	5
258	0.1115	5
259	0.1821	5
260	0.1164	5
261	0.112	5
262	0.1086	5
263	0.1119	5
264	0.1198	5
265	0.1219	5
266	0.1186	5
267	0.1138	5
268	0.1562	5
269	0.114	5
270	0.1426	5
271	0.1075	5
272	0.1107	5
273	0.1123	5
274	0.1166	5
275	0.1139	5
276	0.1128	5
277	0.1208	5
278	0.1101	5
279	0.1121	5
280	0.1127	5
281	0.1109	5
282	0.1103	5
283	0.1122	5
284	0.1109	5
285	0.1121	5
286	0.1154	5
287	0.1149	5
288	0.1122	5
289	0.1139	5
290	0.1139	5
291	0.1124	5
292	0.2104	5
293	0.1129	5
294	0.1135	5
295	0.1126	5
296	0.1133	5
297	0.113	5
298	0.1139	5
299	0.1153	5
300	0.1122	5
301	0.1179	5
302	0.1098	5


];
E = E_Z_DJ(:, 1);
DJ = E_Z_DJ(:, 3);
Z = E_Z_DJ(:, 2);


fun_range = [0,3.08;0,2.1];    %每个维度的求解范围,行代表维度,第一列最小值,第二列最大值
density = 0.01;                         %图像中取点的密度
d = 2;                                  %维度
popsize = 10;                           %种群大小
maxgen = 100;                           %最大迭代次数
limit_v = 10;                           %最大运动速度
maxormin = 0;                           %求最大值还是最小值。最大值为1,最小值为0
dynamic = 1;                            %是否采用动态参数
W = [0.7,1.4];                          %惯性因子
C2 = [0.5,2.5];
C1 = [0.5,2.5];                         %学习因子。


ZZ = pso1_im(funct,fun_range,density,d);
[x,v,fitness,pbest,gbest,gbest_fitness,gbest_index,pbest_fitness] =...
   pso1_in(funct,popsize,d,fun_range,limit_v,maxormin);
[gbest_fitness,gbest_index,record] =...
    pso1_in2(funct,d,popsize,maxgen,dynamic,W,C1,C2,fun_range,limit_v,density...
    ,x,v,fitness,pbest,gbest,gbest_fitness,gbest_index,pbest_fitness,maxormin);

% sigma = 4:1:15;  年利率
% D = 10:1:100;  % 投放金额
T = 1;  %周期为 1 年
M = 10000; % 总贷款额度1亿
完整代码 https://github.com/yan-fanyu/CUMCM-Paper-And-SourceCode
Sigma = [];
DD = [];
Beta = [];
W = [];         % 利润,即最大化目标

Z_S = ones(1, length(E));  % 每个利率  1不用管
Z_D = ones(1, length(E));  % 每个投资

N = 10000;    % 迭代次数

nnn = 0;
for i=1:1:N
    Sigma = [];         % 该次遍历的利率
    DD = [];            % 该次遍历的贷款
    w = 0;              % 该次遍历的目标值
    for j=1:length(E)
        Sigma(j) = 0.04 + (0.15-0.04).*rand(1,1);
        x = Sigma(j);
        DD(j) = 10 + (100-10).*rand(1,1);
        d = DD(j);
        if DJ(j) == 1
           Beta(j) =  a1*x^3+b1*x^2+c1*x+d1;
        elseif DJ(j) == 2
            Beta(j) =  a2*x^3+b2*x^2+c2*x+d2;
        else
            Beta(j) =  a3*x^3+b3*x^2+c3*x+d3;
        end
        w = w + d*x*(1-Beta(j))*Z(j);
    end
    if w > 60
        nnn  = nnn+1;
        W(nnn) = w;
        Z_S(nnn,:) = Sigma(:);
        Z_D(nnn,:) = DD(:);
    end
end

XX = 1:1:nnn;
plot(XX, W, '*');
           
for i=1:length(Z_S(:, 1))
    sum(Z_D(i,:))
end

四、完整word论文和源代码

请添加图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦是远方

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值