一、部分题目
2023年电工杯数学建模B题人工智能对大学生学习影响的评价
人工智能简称AI,最初由麦卡锡、明斯基等科学家于1956年在美国达特茅斯学院开会研讨时提出。
2016年,人工智能AlphaGo 4:1战胜韩国围棋高手李世石,期后波士顿动力公司的人形机器人Atlas也展示了高超的感知和控制能力。2022年,人工智能绘画作品《太空歌剧院》获得了美国科罗拉多州博览会艺术比赛一等奖。2023年3月16日,百度公司推出人工智能新产品“文心一言”。
为抢抓人工智能发展的重大战略机遇,国务院2017年发布《新一代人工智能发展规划》,指出科技强国要发挥人工智能技术的力量,部署构筑我国人工智能发展的先发优势,加快建设创新型国家和世界科技强国。教育部2018年发布《教育信息化2.0行动计划》,提出实现“智能化领跑教育信息化”行动指南,强调发展智能教育。
人工智能的发展对社会各个层面均有不同程度的影响,也影响着大学生的学习。为了解人工智能在不同侧面对大学生学习的影响情况,我们设计了调查问卷,详见附件1,调查反馈结果详见附件2。
请根据你们感兴趣的某个侧面,结合附件1和附件2所给出的数据,建立相应的数学模型,分析人工智能对大学生学习的影响,解决以下问题:
请建立数学模型解决以下问题
问题1 对附件2中所给数据进行分析和数值化处理,并给出处理方法;
问题2 根据你们对数据的分析结果选取评价指标,从优先级、科学性、可操作性等方面论述其合理性,并构建评价指标体系;
问题3 建立数学模型,评价人工智能对大学生学习的影响,给出明确、有说服力的结论;
问题4 根据调查问卷的数据,结合你们对人工智能的了解、认知和判断,以及对未来人工智能发展的展望,写一份人工智能对大学生学习影响的分析报告,可以包括但不限于积极或消极的影响。
二、部分论文
三、部分源代码
问题1
(1)
%% 数据处理
clc
clear
Data_test = readtable('附件2:调查数据.xlsx');
Data_cell = table2cell(Data_test);
LabelStr = Data_test.Properties.VariableDescriptions;
[m , n] = size(Data_test);
Data_out = zeros(m,n);
Data_out(:,1) = 1:1:m;
%将字符串变量转化为分类变量
labs = {{'男','女'},...
{'文史类','理工类','管理类','艺术类'},...
{'大一','大二','大三','大四'},...
{'安静型','外向型','温顺型','坚定型','感性型','其他'},...
{'在寝室用笔记本上网','用手机上网','用平板电脑上网','在网吧上','其他'},...
{'7小时以下','7-14小时','14-20小时','20小时以上','不上网'},...
{'是','否'},...
{'平时有时间就使用','考试前使用','老师要求时才使用','说不清'},...
{'完全会','大多数时候会','有时会','很少会','不会'},...
{'是','否'},...
{'推荐过','没有'},...
{'是','否'},...
{'是','否','没考虑过'},...
{'是','否','没考虑过'},...
{'是','否','没考虑过'},...
{'信息杂乱','应用繁琐','资源收费','其他'},...
{'赞同','不赞同','说不清楚'},...
{'软件响应慢','所答问题不精炼','无效回答'},...
{'很高','一般','不相信'},...
{'全面提高自身的综合素质','仅帮助自己解决不会的题','应付考试','完成论文'},...
{'非常可能','有可能','不可能','不清楚'},...
{'积极利用新的学习方式和工具','被动接受新的学习模式','固定传统,不接受新的学习方式','完全依赖人工智能工具'}};
for i = 2:23
DataLabel = Data_cell(:,i);
DataLabel_cat = categorical(DataLabel);
DataLabel_int = double(DataLabel_cat);
DataLabel_idx = double(categorical(labs{i-1}));
DataLabel_int2 = zeros(m,1);
for j = 1:length(DataLabel_idx)
for k = 1:m
if DataLabel_int(k) == DataLabel_idx(j)
DataLabel_int2(k) = j;
end
end
end
Data_out(:,i) = DataLabel_int2;
end
mutiStr = {["学习、查资料","浏览新闻","收发邮件","娱乐游戏","聊天交友","资源下载","上网购物","其他"],
["真题全面","可以重复学习","资料全面"],
["学习的相关经验缺乏","专业疑难问题得不到解决","学习时间安排不充裕","不会正确的学习方法"],
["学习效果","学习资源","操作方便","学习费用"],
["软件安全级别","网络安全能力","个人信息安全","数据安全","运行安全","服务器安全"],
["知识来源的资格审核","知识库的更新频率","是否有定期的审核"],
["性能优越","知识面广","运行速度快","稳定","不收费"],
["教师传授","课后消化","评价反馈","其他"]};
Data_out2 = Data_out;
Data_muti = cell(m,length(mutiStr));
for i = 1:m
for j = 1:length(mutiStr)
strlist = mutiStr{j};
tempVal = 0;
tempVal2 = 0;
tempVal3 = "";
for k = 1:length(strlist)
str1 = Data_cell{i,j+23};
flag = contains(str1,strlist(k));
if(flag)
tempVal = tempVal + 2^(length(strlist) - k);
tempVal2 = tempVal2 + 10^(length(strlist) - k);
end
tempVal3 = strcat(tempVal3 ,num2str(flag));
end
Data_out(i,j+23) = tempVal;
Data_out2(i,j+23) = tempVal2;
Data_muti{i,j} = tempVal3;
end
end
%% 导出excel
% OutPutTable = array2table(Data_out,'VariableNames',LabelStr);
% varTypes = {'double','double','double','double','double','double','double','double',...
% 'double','double','double','double','double','double','double','double',...
% 'double','double','double','double','double','double','double','string',...
% 'string','string','string','string','string','string','string'};
% OutPutTable2 = table('Size',[m,n],'VariableNames',LabelStr,'VariableTypes',varTypes);
% % OutPutTable2 = array2table(Data_out2,'VariableNames',LabelStr,'VariableTypes',varTypes);
% OutPutTable2(:,1:23) = array2table(Data_out(:,1:23));
% OutPutTable2(:,24:31) = Data_muti;
% writetable(OutPutTable,'调查数据转换.xlsx','Sheet',1,'WriteVariableNames',true);
% writetable(OutPutTable2,'调查数据转换.xlsx','Sheet',2,'WriteVariableNames',true);
if length(LabelStr) <= 0
LabelStr = importdata('labsave.mat');
end
ResultData1 = cell(m+1,n);
ResultData1(1,:) = LabelStr;
ResultData1(2:end,:) = num2cell(Data_out);
ResultData2 = string(ResultData1);
ResultData2(2:end,24:31) = Data_muti;
xlswrite('调查数据转换.xlsx',ResultData1,1);%写进excel文件
xlswrite('调查数据转换.xlsx',ResultData2,2);
fprintf('数据已经保存在 调查数据转换.xlsx 文件中。\n');
(2)
%% 绘图显示
%不同年级人员上网时常分布堆叠条形图
%请先运行main1a.m
saveData = importdata('savedata1.mat');
labs = saveData.labs;
mutiStr = saveData.mutiStr;
Data_out = saveData.Data_out;
global idx
idx = 1;
%DrawPic(第一个维度序号,第二个维度序号,图的标题,是否归一化);
DrawPic(3,6,"不同年级人员上网时长分布条形图",0,labs,Data_out);
DrawPic(3,6,"不同年级人员上网时长分布条形图(归一化)",1,labs,Data_out);
DrawPic(2,6,"不同专业人员上网时长分布条形图",0,labs,Data_out);
DrawPic(2,6,"不同专业人员上网时长分布条形图(归一化)",1,labs,Data_out);
DrawPic(2,7,"不同专业人员是否使用学习软件条形图",1,labs,Data_out);
DrawPic(2,11,"不同专业老师是否推荐使用学习软件条形图",1,labs,Data_out);
DrawPic(4,12,"不同性格人员是否会使用AI工具学习条形图",1,labs,Data_out);
figure(idx)
DrawPic2(2,13,"不同专业人员是否会使用AI工具帮助完成作业条形图",0,3,3,1,labs,Data_out);
DrawPic2(3,13,"不同年级人员是否会使用AI工具帮助完成作业条形图",0,3,3,2,labs,Data_out);
DrawPic2(4,13,"不同性格人员是否会使用AI工具帮助完成作业条形图",0,3,3,3,labs,Data_out);
DrawPic2(2,14,"不同专业人员是否会使用AI工具帮助完成测验条形图",0,3,3,4,labs,Data_out);
DrawPic2(3,14,"不同年级人员是否会使用AI工具帮助完成测验条形图",0,3,3,5,labs,Data_out);
DrawPic2(4,14,"不同性格人员是否会使用AI工具帮助完成测验条形图",0,3,3,6,labs,Data_out);
DrawPic2(2,15,"不同专业人员是否会使用AI工具帮助完成论文条形图",0,3,3,7,labs,Data_out);
DrawPic2(3,15,"不同年级人员是否会使用AI工具帮助完成论文条形图",0,3,3,8,labs,Data_out);
DrawPic2(4,15,"不同性格人员是否会使用AI工具帮助完成论文条形图",0,3,3,9,labs,Data_out);
idx = idx + 1;
DrawPic3(23,"所有人员使用网络目的条形图",mutiStr,Data_out);
DrawPic3(24,"所有人员认为学习软件优势条形图",mutiStr,Data_out);
DrawPic3(25,"所有人员认为学习困扰的问题条形图",mutiStr,Data_out);
DrawPic3(26,"所有人员对学习软件关注点条形图",mutiStr,Data_out);
DrawPic3(27,"所有人员认为AI工具的安全性方面条形图",mutiStr,Data_out);
DrawPic3(28,"所有人员认为AI学习的重要点条形图",mutiStr,Data_out);
DrawPic3(29,"所有人员心目中AI工具的功能条形图",mutiStr,Data_out);
DrawPic3(30,"所有人员认为AI工具融合到不同学习环节条形图",mutiStr,Data_out);
DrawPic4(1,23,"不同性别人员使用网络目的条形图",labs,mutiStr,Data_out);
%% 函数部分
function A = CalTotal(tag1,tag2,flag,labs,Data_out)
[m,n] = size(Data_out);
l1 = length(labs{tag1});
l2 = length(labs{tag2});
A = zeros(l1,l2);
B = zeros(1,l1);
for i = 1:m
val1 = Data_out(i,tag1 + 1);
val2 = Data_out(i,tag2 + 1);
A(val1,val2) = A(val1,val2) + 1;
B(val1) = B(val1) + 1;
end
if(flag)
for i = 1:l1
A(i,:) = A(i,:)/B(i);
end
end
end
function A = CalTotal2(tag1,Data_out,mutiStr)
[m,n] = size(Data_out);
l2 = length(mutiStr{tag1 - 22,1});
A = zeros(1,l2);
for i = 1:m
val1 = Data_out(i,tag1 + 1);
for j = 1:l2
tempval = mod(val1,2^(l2-j+1));
if tempval >= 2^(l2-j)
flag = 1;
else
flag = 0;
end
A(1,j) = A(1,j) + flag;
end
end
end
function A = CalTotal3(tag1,tag2,labs,Data_out,mutiStr)
[m,n] = size(Data_out);
l1 = length(labs{tag1});
l2 = length(mutiStr{tag2 - 22,1});
A = zeros(l1,l2);
for i = 1:m
val1 = Data_out(i,tag1 + 1);
val2 = Data_out(i,tag2 + 1);
for j = 1:l2
tempval = mod(val2,2^(l2-j+1));
if tempval >= 2^(l2-j)
flag = 1;
else
flag = 0;
end
A(val1,j) = A(val1,j) + flag;
end
end
end
function DrawPic(tag1,tag2,titleStr,flag,labs,Data_out)
global idx
figure(idx);
X = categorical(labs{tag1});
X = reordercats(X,labs{tag1});
Y = CalTotal(tag1,tag2,flag,labs,Data_out);
if flag
GO = bar(X,Y,'stacked','EdgeColor','k');
else
GO = bar(X,Y,'EdgeColor','k');
end
title(titleStr);
legend(labs{tag2});
idx = idx + 1;
end
function DrawPic2(tag1,tag2,titleStr,flag,m,n,p,labs,Data_out)
subplot(m,n,p);
X = categorical(labs{tag1},labs{tag1});
% X = reordercats(X,);
Y = CalTotal(tag1,tag2,flag,labs,Data_out);
if flag
GO = bar(X,Y,'stacked','EdgeColor','k');
else
GO = bar(X,Y,'EdgeColor','k');
end
title(titleStr);
legend(labs{tag2});
end
function DrawPic3(tag1,titleStr,mutiStr,Data_out)
global idx
figure(idx);
X = categorical(mutiStr{tag1 - 22,1});
X = reordercats(X,mutiStr{tag1 - 22,1});
Y = CalTotal2(tag1,Data_out,mutiStr);
GO = bar(X,Y,'EdgeColor','k');
xtip = GO.XEndPoints;
ytip = GO.YEndPoints;
labels = string(roundn(GO.YData./46.05,-1));
for i = 1:length(labels)
labels(i) = [labels{i} '%'];
end
text(xtip,ytip,labels,'HorizontalAlignment','center','VerticalAlignment','bottom');
title(titleStr);
idx = idx + 1;
end
function DrawPic4(tag1,tag2,titleStr,labs,mutiStr,Data_out)
global idx
figure(idx);
X = categorical(labs{tag1});
X = reordercats(X,labs{tag1});
Y = CalTotal3(tag1,tag2,labs,Data_out,mutiStr);
GO = bar(X,Y,'EdgeColor','k');
title(titleStr);
legend(mutiStr{tag2 - 22,1});
idx = idx + 1;
end
问题2
(1)
%% 数据处理
clc
clear
try
Data_ori = readtable('调查数据转换.xlsx','VariableNamingRule','preserve');
catch
Data_ori = readtable('调查数据转换.xlsx');
end
Data_int = table2array(Data_ori);
[m,n] = size(Data_int);
ResultLabel = {'序号','对网络的熟悉程度','对学习软件的熟悉程度','对网络资料的熟悉程度',...
'对人工智能学习工具的使用意愿','对人工智能学习工具的认可度','对人工智能学习工具与传统教学对比的认可'};
ResultData3 = zeros(m,7);
ResultData3(:,1) = Data_int(:,1);
for i = 1:m
%计算对网络的熟悉程度
ques6 = Data_int(i,7);
if ques6 >=5
val1 = 0;
else
val1 = ques6;
end
ResultData3(i,2) = val1;
%计算对学习软件的熟悉程度
val2 = (2 - Data_int(i,8))*(4 - Data_int(i,9) + 2 - Data_int(i,12));
ResultData3(i,3) = val2;
%计算对网络资料的熟悉程度
val3 = 0;
if val1 > 0
val3 = val1 + (6 - Data_int(i,10)) + (2 - Data_int(i,11));
ques23 = Data_int(i,24);
for k = 1:8
if mod(ques23,2^(8-k+1)) >= 2^(8-k)
val3 = val3 + 1;
end
end
end
ResultData3(i,4) = val3;
%计算对人工智能学习工具的使用意愿
val4 = (2 - Data_int(i,13));
if Data_int(i,14) == 1
val4 = val4 + 1;
end
if Data_int(i,15) == 1
val4 = val4 + 1;
end
if Data_int(i,16) == 1
val4 = val4 + 1;
end
ResultData3(i,5) = val4;
%计算对人工智能学习工具的认可度
val5 = 0;
if Data_int(i,18) == 1
val5 = val5 + 2;
elseif Data_int(i,18) == 3
val5 = val5 + 1;
end
val5 = val5 + (4 - Data_int(i,20));
ResultData3(i,6) = val5;
%计算对人工智能学习工具与传统教学对比的认可
if Data_int(i,22) == 1
val6 = 3;
elseif Data_int(i,22) == 2
val6 = 2;
elseif Data_int(i,22) == 3
val6 = 0;
else
val6 = 1;
end
if Data_int(i,23) == 1
val60 = 3;
elseif Data_int(i,23) == 2
val60 = 2;
elseif Data_int(i,23) == 3
val60 = 1;
else
val60 = 4;
end
ResultData3(i,7) = val6 * val60;
end
ResultData4 = cell(m+1,7);
ResultData4(1,:) = ResultLabel;
ResultData4(2:end,:) = num2cell(ResultData3);
xlswrite('评价得分数据.xlsx',ResultData4);%写进excel文件
fprintf('数据已经保存在 评价得分数据.xlsx 文件中。\n');
问题3
%% 数据处理
clc
clear
Data_test = readtable('附件2:调查数据.xlsx');
Data_cell = table2cell(Data_test);
LabelStr = Data_test.Properties.VariableDescriptions;
[m , n] = size(Data_test);
Data_out = zeros(m,n);
Data_out(:,1) = 1:1:m;
%将字符串变量转化为分类变量
labs = {{'男','女'},...
{'文史类','理工类','管理类','艺术类'},...
{'大一','大二','大三','大四'},...
{'安静型','外向型','温顺型','坚定型','感性型','其他'},...
{'在寝室用笔记本上网','用手机上网','用平板电脑上网','在网吧上','其他'},...
{'7小时以下','7-14小时','14-20小时','20小时以上','不上网'},...
{'是','否'},...
{'平时有时间就使用','考试前使用','老师要求时才使用','说不清'},...
{'完全会','大多数时候会','有时会','很少会','不会'},...
{'是','否'},...
{'推荐过','没有'},...
{'是','否'},...
{'是','否','没考虑过'},...
{'是','否','没考虑过'},...
{'是','否','没考虑过'},...
{'信息杂乱','应用繁琐','资源收费','其他'},...
{'赞同','不赞同','说不清楚'},...
{'软件响应慢','所答问题不精炼','无效回答'},...
{'很高','一般','不相信'},...
{'全面提高自身的综合素质','仅帮助自己解决不会的题','应付考试','完成论文'},...
{'非常可能','有可能','不可能','不清楚'},...
{'积极利用新的学习方式和工具','被动接受新的学习模式','固定传统,不接受新的学习方式','完全依赖人工智能工具'}};
for i = 2:23
DataLabel = Data_cell(:,i);
DataLabel_cat = categorical(DataLabel);
DataLabel_int = double(DataLabel_cat);
DataLabel_idx = double(categorical(labs{i-1}));
DataLabel_int2 = zeros(m,1);
for j = 1:length(DataLabel_idx)
for k = 1:m
if DataLabel_int(k) == DataLabel_idx(j)
DataLabel_int2(k) = j;
end
end
end
Data_out(:,i) = DataLabel_int2;
end
mutiStr = {["学习、查资料","浏览新闻","收发邮件","娱乐游戏","聊天交友","资源下载","上网购物","其他"],
["真题全面","可以重复学习","资料全面"],
["学习的相关经验缺乏","专业疑难问题得不到解决","学习时间安排不充裕","不会正确的学习方法"],
["学习效果","学习资源","操作方便","学习费用"],
["软件安全级别","网络安全能力","个人信息安全","数据安全","运行安全","服务器安全"],
["知识来源的资格审核","知识库的更新频率","是否有定期的审核"],
["性能优越","知识面广","运行速度快","稳定","不收费"],
["教师传授","课后消化","评价反馈","其他"]};
Data_out2 = Data_out;
Data_muti = cell(m,length(mutiStr));
for i = 1:m
for j = 1:length(mutiStr)
strlist = mutiStr{j};
tempVal = 0;
tempVal2 = 0;
tempVal3 = "";
for k = 1:length(strlist)
str1 = Data_cell{i,j+23};
flag = contains(str1,strlist(k));
if(flag)
tempVal = tempVal + 2^(length(strlist) - k);
tempVal2 = tempVal2 + 10^(length(strlist) - k);
end
tempVal3 = strcat(tempVal3 ,num2str(flag));
end
Data_out(i,j+23) = tempVal;
Data_out2(i,j+23) = tempVal2;
Data_muti{i,j} = tempVal3;
end
end
%% 导出excel
% OutPutTable = array2table(Data_out,'VariableNames',LabelStr);
% varTypes = {'double','double','double','double','double','double','double','double',...
% 'double','double','double','double','double','double','double','double',...
% 'double','double','double','double','double','double','double','string',...
% 'string','string','string','string','string','string','string'};
% OutPutTable2 = table('Size',[m,n],'VariableNames',LabelStr,'VariableTypes',varTypes);
% % OutPutTable2 = array2table(Data_out2,'VariableNames',LabelStr,'VariableTypes',varTypes);
% OutPutTable2(:,1:23) = array2table(Data_out(:,1:23));
% OutPutTable2(:,24:31) = Data_muti;
% writetable(OutPutTable,'调查数据转换.xlsx','Sheet',1,'WriteVariableNames',true);
% writetable(OutPutTable2,'调查数据转换.xlsx','Sheet',2,'WriteVariableNames',true);
if length(LabelStr) <= 0
LabelStr = importdata('labsave.mat');
end
ResultData1 = cell(m+1,n);
ResultData1(1,:) = LabelStr;
ResultData1(2:end,:) = num2cell(Data_out);
ResultData2 = string(ResultData1);
ResultData2(2:end,24:31) = Data_muti;
xlswrite('调查数据转换.xlsx',ResultData1,1);%写进excel文件
xlswrite('调查数据转换.xlsx',ResultData2,2);
fprintf('数据已经保存在 调查数据转换.xlsx 文件中。\n');