数学建模B题 含代码

合集下载

2003年数学建模b题matlab代码

2003年数学建模b题matlab代码

第一部分:主题概述与评估在这篇文章中,我将着重探讨2003年数学建模B题中与matlab代码相关的部分。

在深入撰写之前,我将从简单的概念和背景开始,逐步深入,帮助您更好地理解这个主题。

2003年数学建模B题中的matlab代码部分,是一个值得深入探讨的主题。

在整篇文章中,我将以多个方面评估这个主题,包括但不限于matlab代码在数学建模中的作用、2003年B题的具体要求以及matlab代码的实际编写与应用。

在全面评估这个主题的时候,我会结合我个人的观点和理解,希望能够给您带来一些启发和灵感。

第二部分:主题细节与深入探讨2003年数学建模B题中的matlab代码,是一个非常重要的部分。

在这个主题下,我们需要首先了解2003年B题的具体要求,包括理解清楚问题背景、目标和所需求解的问题。

我会深入探讨matlab代码在解决数学建模问题中的作用。

我们可以探讨matlab代码在数据分析、模型求解、可视化等方面的应用,以及在数学建模比赛中的重要性。

第三部分:个人观点和总结在这篇文章中,我会共享我对2003年数学建模B题中matlab代码的个人观点和理解。

我认为,matlab代码是一个强大的工具,能够帮助我们更好地解决实际的数学建模问题。

在数学建模比赛中,熟练掌握matlab代码的编写和运用,对于团队的竞赛成绩起到至关重要的作用。

这篇文章会以总结和回顾性的内容作为结尾,希望可以帮助您全面、深刻和灵活地理解2003年数学建模B题中matlab代码的重要性。

希望这篇文章能够满足您的要求,如果您对文章内容有任何建议或意见,欢迎与我共享。

2003年数学建模比赛B题中,matlab代码的部分是该比赛中一个非常关键的环节。

matlab是一种用于科学计算和技术计算的高级编程语言和交互式环境,广泛应用于工程、科学和数学领域。

在数学建模比赛中,matlab代码的编写和运用能够帮助参赛选手更好地分析问题、建立模型和进行模拟实验,从而得出准确的结论。

数学建模2020年b题matlab代码

数学建模2020年b题matlab代码

数学建模2020年b题matlab代码一、前言数学建模作为一门跨学科的学科,一直以来都备受关注。

在现代科学和工程技术领域,数学建模的应用越来越广泛,其在实际问题求解中的作用也日益凸显。

作为数学建模的一个重要组成部分,计算机编程在模拟、求解和分析数学模型过程中发挥着至关重要的作用。

而Matlab作为一款功能强大的科学计算软件,一直受到广大科研工作者的追捧,尤其在数学建模领域更是被广泛应用。

二、数学建模2020年b题概述2020年数学建模比赛的b题是一个典型的动力学系统建模问题,要求参赛者通过建立适当的数学模型来描述、分析和预测相关的实际问题。

该题目涉及到了多个变量之间的相互作用及其随时间的演化规律,需要用到大量的微积分、微分方程、概率论等数学知识进行分析和求解。

而在实际的建模过程中,Matlab的代码编写和求解将是不可或缺的一部分。

三、深度评估和分析在进行数学建模2020年b题的深度评估和分析时,我们需要从多个方面对题目进行全面的探讨和了解。

我们要对题目中涉及到的各个变量、参数和影响因素进行全面的分析,了解它们之间的关系以及对整个系统演化的影响。

我们需要对动力学系统的演化规律进行建模和求解,这涉及到了微分方程的建立和求解。

我们还需要考虑到实际问题中的不确定性和随机性因素,这就需要运用概率统计的知识进行建模和分析。

四、Matlab代码编写和求解在进行数学建模2020年b题的Matlab代码编写和求解时,我们需要根据之前的深度评估和分析结果,结合题目要求和实际情况进行合理的代码设计和求解方法选择。

我们要根据建立的数学模型,将其转化为对应的Matlab代码。

我们需要运用Matlab中丰富的函数库和工具箱,对动力学系统进行数值模拟和求解。

我们还需要对求解结果进行可视化和分析,以便更好地理解系统的演化规律和预测未来的发展趋势。

五、总结和回顾通过对数学建模2020年b题的全面评估和深度分析,我们不仅对整个系统有了更深入的理解,同时也更清晰地认识到了Matlab代码在求解动力学系统建模问题中的重要性。

数学建模B题国家一等奖Matlab程序

数学建模B题国家一等奖Matlab程序

附录3:程序源文件1.duqu_image.m文件%数据读取预处理文件%将附件中的图片读取到matlab矩阵中,并保存为image_1,image_2,image_3,image_4,image_5a,image_5b%所有附件均放在文件夹 D:\B 中%%%%%%%%%%%%%%%%%%%%%%%%图片名序列%图像名称序号b = [ones(1,10);0 1 2 3 4 5 6 7 8 9]';image_num= [strcat( num2str(0*b(:,1)),num2str(0*b(:,1)),num2str(b(:,2)) ),strcat( num2str(0*b(:,1)),num2str(b(:,1)),num2str(b(:,2)) ),strcat( num2str(0*b(:,1)),num2str(2*b(:,1)),num2str(b(:,2)) ),strcat( num2str(0*b(:,1)),num2str(3*b(:,1)),num2str(b(:,2)) ),strcat( num2str(0*b(:,1)),num2str(4*b(:,1)),num2str(b(:,2)) ),strcat( num2str(0*b(:,1)),num2str(5*b(:,1)),num2str(b(:,2)) ),strcat( num2str(0*b(:,1)),num2str(6*b(:,1)),num2str(b(:,2)) ),strcat( num2str(0*b(:,1)),num2str(7*b(:,1)),num2str(b(:,2)) ),strcat( num2str(0*b(:,1)),num2str(8*b(:,1)),num2str(b(:,2)) ),strcat( num2str(0*b(:,1)),num2str(9*b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(0*b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(2*b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(3*b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(4*b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(5*b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(6*b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(7*b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(8*b(:,1)),num2str(b(:,2)) ),strcat( num2str(b(:,1)),num2str(9*b(:,1)),num2str(b(:,2)) ),strcat( num2str(2*b(:,1)),num2str(0*b(:,1)),num2str(b(:,2)) ),]; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 读取所有附件中的图片%读取附件1中的图像n = 19;image_name = strcat('D:/B/附件1','/',image_num,'.bmp');%拼接图像地址和名字for j = 1:nimage_1(:,:,j) = imread(image_name(j,:));%将图像读入矩阵endsave image_1 image_1;%附件1图像%读取附件2中的图像n = 19;image_name = strcat('D:/B/附件2','/',image_num,'.bmp');%拼接图像地址和名字for j = 1:nimage_2(:,:,j) = imread(image_name(j,:));%将图像读入矩阵endsave image_2 image_2;%附件2图像%读取附件3中的图像n = 209;image_name = strcat('D:/B/附件3','/',image_num,'.bmp');%拼接图像地址和名字for j = 1:nimage_3(:,:,j) = imread(image_name(j,:));%将图像读入矩阵endsave image_3 image_3;%附件3图像%读取附件4中的图像n = 209;image_name = strcat('D:/B/附件4','/',image_num,'.bmp');%拼接图像地址和名字for j = 1:nimage_4(:,:,j) = imread(image_name(j,:));%将图像读入矩阵endsave image_4 image_4;%附件4图像%读取附件5 a 中的图像n = 209;image_name = strcat('D:/B/附件5','/',image_num,'a','.bmp');%拼接图像地址和名字for j = 1:nimage_5a(:,:,j) = imread(image_name(j,:));%将图像读入矩阵endsave image_5a image_5a;%附件5a图像%读取附件5 b 中的图像n = 209;image_name = strcat('D:/B/附件5','/',image_num,'b','.bmp');%拼接图像地址和名字for j = 1:nimage_5b(:,:,j) = imread(image_name(j,:));%将图像读入矩阵endsave image_5b image_5b;%附件5a图像2.f_hang_left_right.m文件function [left_zi_chang right_zi_chang] = f_hang_left_right(image_hang)% 此函数计算一行字左右两端汉字的长度%image_hang表示附件图片中第几行字%image_hang = image_1(106:146,:,1);%取行[row col] = size(image_hang);image_01 = image_hang>=200; %01化图形,0表示汉字,1表示背景image_hang_he = sum(image_01,1);%对列求和%%%%%%%%%%%%%%%%%%%找汉字hanzi_fa_zhi = row;%表示空格kong_ge_chang = 3;% 空格的长度hang_he_01 = image_hang_he == hanzi_fa_zhi;if( hang_he_01(1) == 0 )%本行左边开头为汉字,统计汉字的长度for i =1:col-kong_ge_changif( sum(hang_he_01(i:i+kong_ge_chang-1)) == kong_ge_chang )break;endendleft_zi_chang = i - 1;elseleft_zi_chang = 0;endif(left_zi_chang > 41)left_zi_chang = 0;endif( hang_he_01(col) == 0 )%本行结束为汉字,统计汉字的长度for i =col:-1:kong_ge_changif( sum(hang_he_01(i-kong_ge_chang +1:i)) == kong_ge_chang ) break;endendright_zi_chang = col - i;elseright_zi_chang = 0;endif(right_zi_chang > 41)right_zi_chang = 0;end3.f_pi_pei_du.m文件function [left_zi_chang right_zi_chang] = f_hang_left_right(image_hang) % 此函数计算一行字左右两端汉字的长度%image_hang表示附件图片中第几行字%image_hang = image_1(106:146,:,1);%取行[row col] = size(image_hang);image_01 = image_hang>=200; %01化图形,0表示汉字,1表示背景image_hang_he = sum(image_01,1);%对列求和%%%%%%%%%%%%%%%%%%%找汉字hanzi_fa_zhi = row;%表示空格kong_ge_chang = 3;% 空格的长度hang_he_01 = image_hang_he == hanzi_fa_zhi;if( hang_he_01(1) == 0 )%本行左边开头为汉字,统计汉字的长度for i =1:col-kong_ge_changif( sum(hang_he_01(i:i+kong_ge_chang-1)) == kong_ge_chang ) break;endendleft_zi_chang = i - 1;elseleft_zi_chang = 0;endif(left_zi_chang > 41)left_zi_chang = 0;endif( hang_he_01(col) == 0 )%本行结束为汉字,统计汉字的长度for i =col:-1:kong_ge_changif( sum(hang_he_01(i-kong_ge_chang +1:i)) == kong_ge_chang ) break;endendright_zi_chang = col - i;elseright_zi_chang = 0;endif(right_zi_chang > 41)right_zi_chang = 0;end4.fujian_1_chengxu.m文件%%%%%%%%% 此文件,将附件1中的图片进行拼接% 1.先统计出附件1 所有行字的左右汉字长度% 2.计算匹配度% 3.根据匹配度进行拼接load image_1;%读取附件1数据文件% 人工干预计算下列值ding_kong = 37;% ding_kong 表示顶端空行zi_gao = 41;% zi_gao 表示字的高度zi_kuan = 41;% zi_kuan 表示字的宽度konghang_gao = 26;% konghang_gao 表示空行的高度hang_shu = 27;%附件1 所给文件的汉字总行数% 1.先统计出附件1 所有行字的左右汉字长度fujian_zitu = zeros(hang_shu,2);%附件1中的每一个子图的左右汉字长度fujian_1 = zeros(27,2,19);%附件1中所有图的左右汉字长度for j = 1:19zi_ding = ding_kong;for i = 1:hang_shu[fujian_zitu(i,1) fujian_zitu(i,2)]= f_hang_left_right( image_1( zi_ding+1 : zi_ding +zi_gao ,:,j) );zi_ding = zi_ding + zi_gao + konghang_gao;endfujian_1(:,:,j) = fujian_zitu;endsave fujian_1_zuoyou_zichang fujian_1;%保存字长结果fujian1_pinjie_jieguo = zeros(1,19);%保存拼接结果的矩阵pipeidu = zeros(1,19);%用来保存中间匹配度的向量fujian1_pinjie_jieguo(1) = 9;%人工干预找到的第一个(最左边)的纸条(即,图008.bmp)fa_zhi = 0.8;% 匹配度计算时的阀值,大于此阀值的任务匹配正确,小于此值的认为匹配不正确% 2.计算匹配度%匹配度fujian_1_pipei_du = zeros(19,19);for i= 1:19for j=1:19fujian_1_pipei_du(i,j) = f_pi_pei_du(fujian_1(:,2,i),fujian_1(:,1,j),fa_zhi);endendsave fujian_1_pipei_du fujian_1_pipei_du;;%保存匹配度结果fujian_1_pipei_du_bian = fujian_1_pipei_du;%用于去除已选的纸条% 3.根据匹配度进行拼接fj1_pinjie_jieguo = zeros(1,19);fj1_yong = zeros(1,19);fj1_pinjie_jieguo(1) = 9;fj1_yong(fj1_pinjie_jieguo(1)) = 1;for i = 1:18for j = 1:19;if( fj1_yong(j)==1 )fujian_1_pipei_du_bian(fj1_pinjie_jieguo(i),j) = 0;endend[max_pipei_du fj1_pinjie_jieguo(i+1)] = max(fujian_1_pipei_du_bian(fj1_pinjie_jieguo(i),:));fj1_yong(fj1_pinjie_jieguo(i+1)) = 1;endsave fj1_pinjie_jieguo fj1_pinjie_jieguo;;%保存拼接结果fj1_pinjie_jieguo%%%拼接结果输出到屏幕上%%%%%%%%%%%%fujian_1_jieguo_tu = zeros(1980,19*72);for i = 1:19fujian_1_jieguo_tu(:,(i-1)*72+1:i*72) = image_1(:,:,fj1_pinjie_jieguo(i));endsave fujian_1_jieguo_tu fujian_1_jieguo_tu;imview(fujian_1_jieguo_tu)5.fujian2_pinjie_jieguo.m文件%%%%%%%%% 此文件,将附件2中的图片进行拼接% 1.先统计出附件2 所有纸条的左右边界像素qian,hou% 2.计算匹配度% 3.根据匹配度进行拼接% 1.先统计出附件2 所有纸条的左右边界像素qian,houload image_2;for m=1:19qian(:,m)=image_2(:,1,m);hou(:,m)=image_2(:,72,m);end% 2.计算匹配度%图像0-1化qian_01 = qian>=255;hou_01 = hou>=255;%匹配度fujian2_pipei_du = zeros(19,19);for j= 1:19for i=1:19fujian2_pipei_du(i,j) = sum( qian_01(:,i) == hou_01(:,j) ) / 1980;endendsave fujian_2_pipei_du fujian2_pipei_du;% 3.根据匹配度进行拼接fj2_pinjie_jieguo = zeros(1,19);fj2_pinjie_jieguo(1) = 4;for i = 1:18[max_pipei_du fj2_pinjie_jieguo(i+1)] = max(fujian2_pipei_du(:,fj2_pinjie_jieguo(i))); endsave fj2_pinjie_jieguo fj2_pinjie_jieguo;fj2_pinjie_jieguofujian_2_jieguo_tu = zeros(1980,19*72);for i = 1:19fujian_2_jieguo_tu(:,(i-1)*72+1:i*72) = image_2(:,:,fj2_pinjie_jieguo(i));endsave fujian_2_jieguo_tu fujian_2_jieguo_tu;imview(fujian_2_jieguo_tu)6.fujian_3_fenzu.m 文件文件%% 1.将11*19的纸条,分成11组,即先把属于同一组的图片归组,依据就是“每个纸条的上边界空行数”或者“汉字数”load image_3;for i = 1:209image_hang_he(:,i) = sum(image_3(:,:,i)',1);end%若为空格则标记为1,并统计空格的个数。

13年数模B题代码

13年数模B题代码

附件1代码:I1=cell(1);I2=cell(1);for i=1:10I1{1,i}=imread(['C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件1\00',num2str(i-1),'.bmp']);endfor i=11:19I1{1,i}=imread(['C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件1\0',num2str(i-1),'.bmp']);endfor temp=1:size(I1,2)for i=1:size(I1{temp},1)for j=1:size(I1{temp},2)if(I1{temp}(i,j)~=255)I2{temp}(i,j)=0;elseI2{temp}(i,j)=1;endendendendstart=0;for i=1:size(I2,2)n=0;for j=1:size(I2{i},1)if(I2{i}(j,1)==1)n = n + 1;endendif(n==size(I2{i},1))start=i;break;endendstart1=start;f=zeros(size(I2,2),1);f(start)=1;ornum=1;order(ornum)=start1;for t=1:size(I2,2)-1for i=1:size(I2,2)if(f(i)~=1)temp(i)=0;for j=1:size(I2{start},1)temp(i)=temp(i)+abs(I2{start}(j, size(I2{start},2)) - I2{i}(j,1));endelsetemp(i)=1000000;endend[tt order(ornum)]=min(temp);f(order(ornum))=1;start=order(ornum);ornum=ornum+1;endorderI1=cell(1);for i=0:18I1{1,i+1}=imread(sprintf('C:\\Documents and Settings\\Administrator\\桌面\\all2013\\cumcm2013problems\\B\\附件1\\%03d.bmp',i));endA=[]for i=1:19A=[A,I1{seq(i)}];endimshow(A)附件2:I1=cell(1);I2=cell(1);for i=1:10I1{1,i}=imread([' C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件2\00',num2str(i-1),'.bmp']);endfor i=11:19I1{1,i}=imread([' C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件2\0',num2str(i-1),'.bmp']);endfor temp=1:size(I1,2)for i=1:size(I1{temp},1)for j=1:size(I1{temp},2)if(I1{temp}(i,j)~=255)I2{temp}(i,j)=0;elseI2{temp}(i,j)=1;endendendendstart=0;for i=1:size(I2,2)n=0;for j=1:size(I2{i},1)if(I2{i}(j,1)==1)n = n + 1;endendif(n==size(I2{i},1))start=i;break;endendstart1=startf=zeros(size(I2,2),1);f(start)=1;ornum=1;order(ornum)=start1;for t=1:size(I2,2)-1for i=1:size(I2,2)if(f(i)~=1)temp(i)=0;for j=1:size(I2{start},1)temp(i)=temp(i)+abs(I2{start}(j, size(I2{start},2)) - I2{i}(j,1));endelsetemp(i)=1000000;endend[t order(ornum)]=min(temp);f(order(ornum))=1;start=order(ornum);ornum=ornum+1;endorderI1=cell(1);for i=0:18I1{1,i+1}=imread(sprintf('C:\\Documents and Settings\\Administrator\\桌面\\all2013\\cumcm2013problems\\B\\附件2\\%03d.bmp',i));endA=[]for i=1:19A=[A,I1{seq(i)}];endimshow(A)附件3:I1=cell(1);I2=cell(1);for i=1:10I1{1,i}=imread([' C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件3\00',num2str(i-1),'.bmp']);endfor i=11:100I1{1,i}=imread([' C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件3\0',num2str(i-1),'.bmp']);endfor i=101:209I1{1,i}=imread([' C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件3\',num2str(i-1),'.bmp']);endfor temp=1:size(I1,2)for i=1:size(I1{temp},1)for j=1:size(I1{temp},2)if(I1{temp}(i,j)<225)I2{temp}(i,j)=0;elseI2{temp}(i,j)=1;endendendendstart=0;for i=1:size(I2,2)temp=zeros(size(I2{i},1),1);for k=1:size(I2{i},1)for j=1:size(I2{i},2)if(I2{i}(k,j)==0)temp(k)=temp(k)+1;endendendwh(i)=0;for k=1:size(I2{i},1)if(temp(k) >= 1)break;elsewh(i)=wh(i)+1;endendendttemp=[];for i=1:size(wh,2)if(wh(i)>35&&wh(i)<50)ttemp=[ttemp,i];endendttempI3=cell(1);for i=1:19for k=1:size(I2{i},1)for j=1:size(I2{i},2)I3{i}(k,j)=I2{ttemp(i)}(k,j);endendendstart=0;for i=1:size(I3,2)n=0;for j=1:size(I3{i},1)if(I3{i}(j,1)==1)n = n + 1;endendif(n==size(I3{i},1))start=i;break;endendtemp=zeros(size(I3,2),1);flag=zeros(size(I3,2),1);flag(start)=1;ornum=1;order(ornum)=start;for t=1:size(I3,2)-1for i=1:size(I3,2)if(flag(i)~=1)temp(i)=0;for j=1:size(I3{start},1)temp(i)=temp(i)+abs(I3{start}(j, size(I3{start},2)) - I3{i}(j,1));endelsetemp(i)=1000000;endendornum=ornum+1;[tt order(ornum)]=min(temp);flag(order(ornum))=1;start=order(ornum);endfor i=1:19ab(i)=ttemp(order(i));endabI1=cell(1);I2=cell(1);for i=1:10I1{1,i}=imread([' C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件3\00',num2str(i-1),'.bmp']);endfor i=11:100I1{1,i}=imread([' C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件3\0',num2str(i-1),'.bmp']);endfor i=101:209I1{1,i}=imread([' C:\Users\Administrator\Desktop\all2013\cumcm2013problems\B\附件3\',num2str(i-1),'.bmp']);endfor temp=1:size(I1,2)for i=1:size(I1{temp},1)for j=1:size(I1{temp},2)if(I1{temp}(i,j)<225)I2{temp}(i,j)=0;elseI2{temp}(i,j)=1;endendendendstart=0;for i=1:size(I2,2)temp=zeros(size(I2{i},2),1);for k=1:size(I2{i},1)for j=1:size(I2{i},2)if(I2{i}(k,j)==0)temp(j)=temp(j)+1;endendendwh(i)=0;for k=1:size(I2{i},2)if(temp(k) >= 1)break;elsewh(i)=wh(i)+1;endendendttemp=[];for i=1:size(wh,2)if(wh(i)>10)ttemp=[ttemp,i];endendttempimgs=cell(1);imgst=cell(1);for i=1:19imgst{i}=I1{ab(i)};endA=[7 20 21 37 46 53 64 68 69 70 73 79 80 84 86 97 100 117 127 132 163 164 171 178 203];for i=1:length(A)imgs{i}=I1{A(i)};endleftimg=I1{62};temp=zeros(length(A),1);f=zeros(length(A),1);order=[];order(1)=62; num=1;for num=1:18for i=1:length(A)if(f(i)~=1)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(I1{A(i)}(:,1))));temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endend[tt order(length(order)+1)]=min(temp);f(order(length(order)))=1;leftimg=I1{A(order(length(order)))};endC1=[I1{62}];USE(62)=1;for i=2:19C1=[C1,I1{A(order(i))}];A(order(i))USE(A(order(i)))=1;endC=[C;C1];imshow(C)imgst=cell(1);imgst{1}=I1{62};for i=2:19imgst{i}=I1{A(order(i))};endA=[2 13 19 24 27 31 32 40 42 51 52 63 74 77 83 87 88 101 108 116 121 129 143 148 160 161 170 177 180 192 196 204];for i=1:length(A)imgs{i}=I1{A(i)};endleftimg=I1{169};temp=zeros(length(A),1);f=zeros(length(A),1);order=[];order(1)=169; num=1;for num=1:18for i=1:length(A)if(f(i)~=1)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(I1{A(i)}(:,1))));temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endend[tt1 j1]=min(temp);%temp(j1)=99999;order(length(order)+1)=j1;f(order(length(order)))=1;leftimg=I1{A(order(length(order)))};endorderorder(19)=3;order(18)=17;C2=[I1{169}];USE(169)=1;for i=2:19C2=[C2,I1{A(order(i))}];A(order(i))USE(A(order(i)))=1;endC=[C;C2];imshow(C)leftimg=I1{39};A=[]start=39;pra=2;for i=1:209if USE(i)==0if (fs(i,1)==fs(start,1) & abs(fs(i,2)-fs(start,2))<=pra || fs2(i,1)==fs2(start,1) & abs(fs2(i,2)-fs2(start,2))<=pra)A=[A i];endendendtemp=zeros(length(A),1);f=zeros(length(A),1);order=[];order(1)=39; num=1;for num=1:18for i=1:length(A)if(f(i)~=1)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(I1{A(i)}(:,1))));temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endend[tt1 j1]=min(temp);%temp(j1)=99999;order(length(order)+1)=j1;f(order(length(order)))=1;leftimg=I1{A(order(length(order)))};endorderC3=[I1{39}];USE(39)=1;for i=2:19C3=[C3,I1{A(order(i))}];A(order(i))USE(A(order(i)))=1;endC=[C;C3];imshow(C)leftimg=I1{15};A=[]start=15;pra=2;for i=1:209if USE(i)==0if (fs(i,1)==fs(start,1) & abs(fs(i,2)-fs(start,2))<=pra || fs2(i,1)==fs2(start,1) & abs(fs2(i,2)-fs2(start,2))<=pra) & i~=177A=[A i];endendendtemp=zeros(length(A),1);f=zeros(length(A),1);order=[];order(1)=15; num=1;start=15;for num=1:18for i=1:length(A)if(f(i)~=1)if 0==fs(start,1) & 0==fs(A(i),1) & fs(A(i),2)>fs(start,2)+2temp(i)=99999;elsetemp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(I1{A(i)}(:,1))));temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));endelsetemp(i)=99999;endend[tt1 j1]=min(temp);%temp(j1)=99999;order(length(order)+1)=j1;start=A(j1);f(order(length(order)))=1;leftimg=I1{A(order(length(order)))};endorderC4=[I1{15}];USE(15)=1;for i=2:19C4=[C4,I1{A(order(i))}];A(order(i))USE(A(order(i)))=1;endC=[C;C4];imshow(C)imgst=cell(1);%imgst{1}=I1{169};for i=1:19imgst{i}=I1{order(i)+1};endleftimg=I1{95};A=[];%USE(95)=1;start=95;pra=2;for i=1:209if USE(i)==0if (fs(i,1)==fs(start,1) & abs(fs(i,2)-fs(start,2))<=pra || fs2(i,1)==fs2(start,1) & abs(fs2(i,2)-fs2(start,2))<=pra)A=[A i];endendendtemp=zeros(length(A),1);f=zeros(length(A),1);order=[];order(1)=95; num=1;for num=1:18for i=1:length(A)if(f(i)~=1)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(I1{A(i)}(:,1))));temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endend[tt1 j1]=min(temp);%temp(j1)=99999;order(length(order)+1)=j1;f(order(length(order)))=1;leftimg=I1{A(order(length(order)))};endorderC5=[I1{95}];USE(95)=1;for i=2:19if(i~=6)C5=[C5,I1{A(order(i))}];A(order(i))USE(A(order(i)))=1;elseC5=[C5,I1{48}];USE(48)=1;48endendC=[C;C5];imshow(C)imgst=cell(1);imgst{1}=I1{95};for i=2:19%order(i)%A(order(i))imgst{i}=I1{A(order(i))};endimgst{6}=I1{48};leftimg=I1{126};A=[];start=126;pra=2;for i=1:209if USE(i)==0if (fs(i,1)==fs(start,1) & abs(fs(i,2)-fs(start,2))<=pra || fs2(i,1)==fs2(start,1) & abs(fs2(i,2)-fs2(start,2))<=pra)A=[A i];endendendtemp=zeros(length(A),1);f=zeros(length(A),1);order=[];order(1)=126; num=1;for num=1:18for i=1:length(A)if(f(i)~=1)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(I1{A(i)}(:,1))));temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endend[tt1 j1]=min(temp);%temp(j1)=99999;order(length(order)+1)=j1;start=A(j1);f(order(length(order)))=1;leftimg=I1{A(order(length(order)))};endorderC6=[I1{126}];USE(126)=1;for i=2:19C6=[C6,I1{A(order(i))}];A(order(i))USE(A(order(i)))=1;endC=[C;C6];imshow(C)imgst=cell(1);%imgst{1}=I1{169};for i=1:19imgst{i}=I1{order(i)+1};endleftimg=I1{30};A=[];%USE(95)=1;start=30;pra=5;for i=1:209if USE(i)==0if (fs(i,1)==fs(start,1) & abs(fs(i,2)-fs(start,2))<=pra || fs2(i,1)==fs2(start,1) & abs(fs2(i,2)-fs2(start,2))<=pra)A=[A i];endendendtemp=zeros(length(A),1);f=zeros(length(A),1);order=[];order(1)=30; num=1;for num=1:18for i=1:length(A)if(f(i)~=1)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(I1{A(i)}(:,1))));temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endend[tt1 j1]=min(temp);%temp(j1)=99999;order(length(order)+1)=j1;f(order(length(order)))=1;leftimg=I1{A(order(length(order)))};endorderC7=[I1{30}];USE(30)=1;for i=2:19C7=[C7,I1{A(order(i))}];A(order(i))USE(A(order(i)))=1;endC=[C;C7];imshow(C)imgst=cell(1);imgst{1}=I1{30};for i=2:19imgst{i}=I1{order(i)};endleftimg=I1{209};A=[];USE(8)=1;USE(209)=1;start=8;pra=3;for i=1:209if USE(i)==0if (fs(i,1)==fs(start,1) & abs(fs(i,2)-fs(start,2))<=pra || fs2(i,1)==fs2(start,1) & abs(fs2(i,2)-fs2(start,2))<=pra)A=[A i];endendendtemp=zeros(length(A),1);f=zeros(length(A),1);order=[];order(1)=8; order(2)=209; num=1;for num=1:17for i=1:length(A)if(f(i)~=1)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(I1{A(i)}(:,1))));temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endend[tt1 j1]=min(temp);%temp(j1)=99999;order(length(order)+1)=j1;f(order(length(order)))=1;leftimg=I1{A(order(length(order)))};endorderC8=[I1{8},I1{209}];USE(8)=1;for i=3:19C8=[C8,I1{A(order(i))}];A(order(i))USE(A(order(i)))=1;endC=[C;C8];imshow(C)f=zeros(209,1);for i=1:19f(ab(i))=1;endfor i=1:209if(f(i)==0)cat=[cat,i];endendI4;leftI=I1{62};start=7;temp=zeros(size(cat,2),1);f=zeros(size(cat,2),1);f(start)=1;ornum=1;order(ornum)=start; ttt=2;for t=1:size(cat,2)-1for i=1:size(cat,2)if(f(i)~=1)temp(i)=0;for j=1:size(leftI,1)temp(i)=temp(i)+abs(leftI(j, size(leftI,2)) - double(I1{cat(i)}(j,1)));endelsetemp(i)=99999;endendornum=ornum+1;[tt order(ornum)]=min(temp);f(order(ornum))=1;leftI=I1{order(ornum)}; ttt=ttt+1;if ttt>19 break; endendfor i=1:19cat2(i)=cat(order(i));endC=[];for i=1:19C=[C,I1{cat2(i)}];endimshow(C)附件4:function [re,high] = bottom(img) t=[];high=0;for i=1:size(img,1)t=[t,sum(img(i,:))];endi=1;while t(i)~=0 & i < length(t) i=i+1;endwhile t(i)==0 & i < length(t) i=i+1;endi1=i;while t(i)~=0 & i < length(t) i=i+1;endi2=i;while i2-i1 <= 20 & i < length(t)while t(i)==0 & i < length(t) i=i+1;endi1=i;while t(i)~=0 & i < length(t) i=i+1;endi2=i;endif i >= length(t)re=0; return;end %出错if abs(i2-i1-25)<=2re=i2; high=i2-i1; return;end %标准字母if abs(i2-i1-36)<=1re=i2; high=i2-i1; return;end %大写字母step=25;for k=1:size(img,2)-stepa=[];for i=i1:i2a=[a,sum(img(i,k:k+step))];endi=1; while a(i)==0 & i < length(a) i=i+1;endii1=i;i=length(a); while a(i)==0 & i > 0 i=i-1;endii2=i;if abs(ii2-ii1-25)<=2re=i1+ii2-1; high=ii2-ii1; return;endendre=0;endp=[cats{4},cats{1},cats{7},cats{10},cats{11}];left=133;p1=[172 43 67 206 11 158 75 146 84 135 56 19 57 36 17 10 184 153 45 20 195 94 142 89 122 127 106 156 115 177 183 152 23 58 203 72 166 83];p1=[p1,[82 78 129 201 132 53 126 141 194 88 90 49 73 13 178 125 1 103 116 160 140 2 130 64 139 154 54 39 124 121 176 86 51 161 188 98 204 32]];Us=zeros(209,1);Us(left)=1;for i=1:length(p1)Us(p1(i))=1;endimgs=cell(1);imgst=cell(1);for i=1:length(p)imgs{i}=img{p(i)};endp=[cats{8},cats{1},cats{7},cats{10},cats{11}];left=20;imgs=cell(1);imgst=cell(1);Us=zeros(209,1);for i=1:length(p)imgs{i}=img{p(i)};endleftimg=img{left};temp=zeros(length(p),1);flag=zeros(length(p),1);order=[];order(1)=left; num=1;for num=1:18for i=1:length(p)if(flag(i)~=1&Us(p(i))==0)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(img{p(i)}(:,1))));%temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endendwhile 1[tt ttt]=min(temp);C1=[img{left}];C=[];for i=2:length(order)C1=[C1,img{p(order(i))}];endC1=[C1,img{p(ttt)}];C=[C;C1];imshow(C)reply = input('Ready? Y/N [Y]: ', 's');if isempty(reply) break;else temp(ttt)=99999;endendUs(ttt)=1;order(length(order)+1)=ttt;flag(order(length(order)))=1;leftimg=img{p(order(length(order)))};endC1=[img{left}];C=[];re=[left];for i=2:19C1=[C1,img{p(order(i))}]; re=[re,p(order(i))];endreC=[C;C1];imshow(C)leftimg=img{left};temp=zeros(length(p),1);flag=zeros(length(p),1);order=[];order(1)=left; num=1;for num=1:18for i=1:length(p)if(flag(i)~=1 && Us(p(i))==0)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(img{p(i)}(:,1))));%temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endendwhile 1[tt ttt]=min(temp);C1=[img{left}];C=[];for i=2:length(order)C1=[C1,img{p(order(i))}];endC1=[C1,img{p(ttt)}];C=[C;C1];imshow(C)reply = input('Ready? Y/N [Y]: ', 's');if isempty(reply) break;else temp(ttt)=99999;endendUs(ttt)=1;order(length(order)+1)=ttt;flag(order(length(order)))=1;leftimg=img{p(order(length(order)))};endC1=[img{left}];C=[];re=[left];for i=2:19C1=[C1,img{p(order(i))}]; re=[re,p(order(i))];Us(p(order(i)))=1;endreC=[C;C1];imshow(C)p=[1:209];left=1;p1=[20 195 94 142 89 122 127 106 156 115 177 183 152 23 58 203 72 166 83];%1p1=[p1,[172 43 67 206 11 158 75 146 84 135 56 19 57 36 17 10 184 153 45]];%2p1=[p1,[82 78 129 201 132 53 126 141 194 88 90 49 73 13 178 125 1 103 116]];%3p1=[p1,[160 140 2 130 64 139 154 54 39 124 121 176 86 51 161 188 98 204 32]];%4p1=[p1,[133 182 96 70 168 164 167 189 112 145 207 4 131 35 14 111 26 28 179]];%5p1=[p1,[87 52 108 30 41 159 187 99 25 118 151 660 59 93 31 38 47 128]];%6p1=[p1,[209 22 8 50 62 120 34 143 169 63 170 55 193 134 119 190 163 198 113]];%7p1=[p1,[202 149 171 197 199 95 114 165 79 104 92 81 102 27 101 7 18 29 147]];%8p1=[p1,[192 76 12 155 191 185 3 105 181 65 107 5 150 33 205 66 40 68 148]];%9p1=[p1,[71 85 61 15 69 175 138 196 9 48 173 157 97 24 100 123 91 186 110]];%10Us=zeros(209,1);Us(left)=1;for i=1:length(p1)Us(p1(i))=1;endimgs=cell(1);imgst=cell(1);for i=1:length(p)imgs{i}=img{p(i)};endleftimg=img{left};temp=zeros(length(p),1);flag=zeros(length(p),1);order=[];order(1)=left; num=1;for num=1:18for i=1:length(p)if(flag(i)~=1 && Us(p(i))==0)temp(i)=sum(abs(double(leftimg(:,size(leftimg,2))) - double(img{p(i)}(:,1))));%temp(i)=temp(i)+sum(abs(double(imgst{num+1}(size(imgst{num+1},1),:)) - double(I1{A(i)}(1,:))));elsetemp(i)=99999;endendwhile 1[tt ttt]=min(temp);C1=[img{left}];C=[];for i=2:length(order)C1=[C1,img{p(order(i))}];endC1=[C1,img{p(ttt)}];C=[C;C1];imshow(C)reply = input('Ready? Y/N [Y]: ', 's');if isempty(reply) break;else temp(ttt)=99999;endendUs(ttt)=1;order(length(order)+1)=ttt;flag(order(length(order)))=1;leftimg=img{p(order(length(order)))};endC1=[img{left}];C=[];re=[left];for i=2:19C1=[C1,img{p(order(i))}]; re=[re,p(order(i))];Us(p(order(i)))=1;endreC=[C;C1];imshow(C)img=cell(1);img2=cell(1);for i=0:208img{1,i+1}=imread(sprintf('C:\\Documents and Settings\\Administrator\\桌面\\all2013\\cumcm2013problems\\B\\附件4\\%03d.bmp',i));endfor i=1:209img2{1,i}=double(img{1,i});endd=[];for j=1:11C=[]for i=1:19C=[C,img{aaa(j,i)+1}];endd=[d;C];endimshow(d)附件5:bs=zeros(209,1);f=zeros(209,1);for i=1:209bs(i)=bottom(img2{i});endcats=cell(1);cats{1}=[28 64 118 136 16 97 101 102 108 121 141 148 191 203];n=1;for i=1:length(cats{1})f(cats{1}(i))=1;endi=1;while i<=209while i<=209 & f(i)==1 i=i+1;endif i>209 break;endn=n+1;cats{n}=[i]; in=bs(i); f(i)=1;for j=1:209if f(j)==0if abs(bs(j)-in)<=3 cats{n}=[cats{n},j];f(j)=1;elseif abs(abs(bs(j)-in)-63)<=3 cats{n}=[cats{n},j];f(j)=1;elseif abs(abs(bs(j)-in)-126)<=3 cats{n}=[cats{n},j];f(j)=1;endendendi=i+1;endfor i=1:nfor j=1:length(cats{i})r=sprintf('d:\\a\\%da.bmp',cats{i}(j));w=sprintf('d:\\a\\新建文件夹(%d)\\%da.bmp',i,cats{i}(j));imwrite(imread(r),w);endendcatsstart=0;for i=1:size(img2,2)temp=zeros(size(img2{i},2),1);for k=1:size(img2{i},1)for j=1:size(img2{i},2)if(img2{i}(k,j)==1)temp(j)=temp(j)+1;endendendwh(i)=0;for k=1:size(img2{i},2)if(temp(k) >= 1)break;elsewh(i)=wh(i)+1;endendendttemp=[];for i=1:size(wh,2)if(wh(i)>=2)ttemp=[ttemp,i];endendttemp。

2009年数学建模b题代码

2009年数学建模b题代码

2009年数学建模b题代码摘要:1.2009 年数学建模b 题代码概述2.2009 年数学建模b 题代码的背景和意义3.2009 年数学建模b 题代码的解决方法和思路4.2009 年数学建模b 题代码的实现过程和结果5.总结正文:【2009 年数学建模b 题代码概述】2009 年数学建模b 题代码,是指在2009 年全国大学生数学建模竞赛中,b 题所涉及到的编程代码。

全国大学生数学建模竞赛是我国高校数学教育领域的一项重要赛事,吸引了全国各地的大学生踊跃参加。

在这次比赛中,b 题的题目是“某城市交通信号灯控制问题”,要求参赛选手运用数学方法和编程技术,对城市交通信号灯进行优化控制,以提高道路通行效率。

【2009 年数学建模b 题代码的背景和意义】随着我国城市化进程的加速,城市交通问题日益严重。

在城市道路资源有限的情况下,交通信号灯控制成为缓解交通拥堵、提高道路通行效率的重要手段。

2009 年数学建模b 题的背景正是基于这一现实问题,希望通过竞赛的形式,激发大学生运用所学知识解决实际问题的热情,同时培养他们的创新能力和团队协作精神。

【2009 年数学建模b 题代码的解决方法和思路】解决2009 年数学建模b 题的关键在于寻找一种合适的数学模型和编程方法,对城市交通信号灯进行优化控制。

一种常见的解决思路是采用贪心算法,根据道路实时交通流量信息,动态调整信号灯的绿灯时长,以使各路口的车辆等待时间最小。

具体实现过程可以分为以下几个步骤:1.对交通流量数据进行预处理,提取有效信息;2.建立数学模型,描述交通信号灯控制问题;3.编写程序代码,实现贪心算法;4.根据实际交通数据,运行程序,得到信号灯优化控制结果。

【2009 年数学建模b 题代码的实现过程和结果】实现2009 年数学建模b 题代码的过程中,首先需要对交通流量数据进行预处理,将原始数据转换为可以输入模型的有效信息。

这一步通常包括数据清洗、去噪、归一化等操作。

五一杯数学建模b题

五一杯数学建模b题

五一杯数学建模b题题目:基于机器学习的电力需求预测一、背景介绍:电力需求预测在电力行业中具有重要意义。

随着科技的进步,机器学习已经成为电力需求预测的重要工具。

该题目要求使用基于机器学习的预测方法,预测未来的电力需求。

二、问题分析:1. 数据收集与处理:我们需要收集历史电力数据,并对数据进行预处理,以适应机器学习算法。

2. 算法选择:可以选择的算法有决策树、支持向量机、随机森林等,我们需要根据数据的特性和目的选择合适的算法。

3. 模型训练与验证:建立模型并进行训练和验证,以确定模型的准确性和稳定性。

4. 预测方法:根据模型输出结果,我们可以预测未来的电力需求。

三、解决方案:1. 数据收集:收集历史电力数据,包括每日的电力使用量、天气情况、时间因素等。

2. 数据预处理:对数据进行清洗和标准化,去除异常值和缺失值,将数据转化为适合机器学习算法的形式。

3. 算法选择与实现:根据数据的特点,我们选择随机森林模型进行训练。

使用Python的scikit-learn库实现随机森林模型。

4. 模型训练与验证:使用收集到的数据对模型进行训练和验证,调整参数以优化模型的性能。

5. 预测方法:根据模型输出结果,我们可以得到未来一段时间内的电力需求预测值。

四、代码实现:这是一个简单的Python代码示例,用于实现基于机器学习的电力需求预测:```pythonfrom sklearn.ensemble import RandomForestRegressorfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_errorimport pandas as pdimport numpy as np# 假设我们已经有了一个名为'power_data.csv'的数据集,其中包含历史电力数据power_data = pd.read_csv('power_data.csv')# 将数据分为训练集和测试集X_train, X_test, y_train, y_test = train_test_split(power_data['feature'], power_data['target'], test_size=0.2, random_state=42)# 创建并训练随机森林模型model = RandomForestRegressor(n_estimators=100)model.fit(X_train, y_train)# 使用模型进行预测predictions = model.predict(X_test)# 评估模型性能mse = mean_squared_error(y_test, predictions)print('Mean Squared Error:', mse)```五、总结:本题的关键在于选择合适的机器学习算法,并利用收集到的数据进行训练和验证。

第十四届华中杯数学建模b题代码

第十四届华中杯数学建模竞赛是一场高水平的数学比赛,吸引了来自全国各地的优秀学子参与。

本文旨在介绍参赛队伍B题的代码部分,包括代码的编写思路、核心算法和实际运行结果。

1. 题目背景B题的题目是关于城市交通流量的预测和优化问题。

参赛队伍需要收集一定时间范围内的城市交通数据,并设计算法对未来某一时间段的交通流量进行预测,以便合理规划交通路径和减少拥堵。

这是一个充满挑战的实际问题,需要队伍们充分发挥数学建模和计算机编程的能力。

2. 代码思路为了解决这一问题,参赛队伍B首先采用了Python作为主要编程语言,并结合了数据处理和机器学习的相关库,如NumPy、Pandas和Scikit-learn等。

在代码编写过程中,队伍注重对于数据的分析和特征提取,以及对于模型的选择和调优。

3. 数据处理与特征提取队伍B使用Pandas库对收集到的城市交通数据进行了整理和清洗,去除了异常值和缺失数据。

他们利用时间序列分析的方法提取了交通流量的周期性、趋势和季节性特征,并构建了相应的特征变量。

4. 模型选择和调优在模型选择方面,队伍B尝试了多种机器学习算法,包括线性回归、岭回归、决策树和随机森林等。

通过交叉验证和网格搜索的方法,他们对模型进行了调优,并最终选择了表现最优的模型来进行预测。

5. 实际运行结果在实际运行中,队伍B的代码成功地对未来某一时间段的交通流量进行了准确预测,在实际测试数据上取得了较高的预测精度。

他们的优化策略和模型选择得到了评委和其他参赛队伍的认可,为他们在竞赛中获得了不俗的成绩。

6. 总结与展望通过本次竞赛,参赛队伍B学习到了许多关于数据处理和机器学习的知识,提高了对于实际问题的建模和解决能力。

在未来,他们将继续深入学习和研究,积极探索更多有挑战性和实用性的数学建模问题,为国家的科技发展贡献自己的一份力量。

7. 结语参赛队伍B在第十四届华中杯数学建模竞赛中展现出了较强的数学建模和编程实力,他们的代码部分充分体现了团队成员的合作能力和创新能力。

2013数模国赛B题(1)matlab源代码汇总

function p=start(p=cell(19,1; %%生成一个元胞数组。

cell 是matlab 中的一种数据类型,用大括号定义,括号里可以是任意类型的数据或矩阵。

fori=1:19ifi<=10imageName=strcat('00',num2str(i-1,'.bmp'; %strcat是连接字符串的函数连接字符串的函数 % num2str 是将数值转换成字符串的函数, 由于strcat 只能连接字符串,故此处需将(i-1)转换为字符串elseimageName=strcat('0',num2str(i-1,'.bmp';end %%将图片的文件名用同一变量imageName 表示,以便下一步的读取图片数据。

p{i,1}=imread(imageName; %%读取读取图片文件中的数据。

此题为图片的灰度值。

endsump=[];answer=[];fori=1:19answer(i=i;endfori=1:19sump(i=(sum(p{i}(:,1; %%将每一张图片所得数据的第一列的所有数加起来endA=find(sump==max(sump; %最大者即为左边第一张图片C=answer(A;answer(A=1;answer(1=C; %将answer(A的值与answer(1的值互换 B=p{A};p{A}=p{1};p{1}=B; %将p{A}的值与p{1}互换fori=2:19sump=[];for j=i:19a=p{i-1}(:,72;b=p{j}(:,1;s=abs(a-b;sump(j=sum(s; %求每张图片与前一张的吻合系数for k=1:(i-1sump(k=9999999; %因为find 函数是对每一个元素进行比较,因而此处必须对其他位置的元素赋值。

又因为其他元素与所求结果无关,为不影响结果,其值应大于1980*255*2endendA=find(sump==min(sump; %找出吻合系数最小的一个,即为下一张图片C=answer(A;answer(A=answer(i;answer(i=C; % %将answer(A的值与answer(i的值互换B=p{A};p{A}=p{i};p{i}=B; %% %将p{A}的值与p{i}互换endanswer-1%%输出answer-1的值,即为所求的图片编号的顺序 q=[p{1}];fori=2:19q=[q,p{i}];%%获得由最后所得按顺序排列的图片所组成的数组endimshow(q %%将所得的图像显示出来。

数学建模2003高教杯年b题matlab代码

数学建模是数学与现实问题结合的一门学科,旨在利用数学知识和方法解决实际生活和工程中的问题。

而2003年高教杯数学建模竞赛是我国高校数学建模领域的重要比赛之一,吸引了大量对数学研究和应用感兴趣的学生参与。

其中,B题是竞赛中的一道问题,下面我们将介绍这道题目并给出对应的Matlab代码。

一、B题题目概述B题的题目较为复杂,主要是关于某公司的生产调度问题。

具体来说,题目要求在考虑生产线上各机器时间限制的条件下,设计出最佳的生产调度方案,以最大化生产效率并确保各产品按时完成。

二、问题分析1. 我们需要建立数学模型来描述该生产调度问题。

可以考虑引入作业调度理论中的相关概念,如作业、机器、加工时间等。

2. 需要考虑问题的约束条件,例如各种产品的生产时间限制、各机器的最大工作时间等。

3. 需要确定优化目标,即在满足约束条件的前提下,如何设计出最佳的生产调度方案。

三、Matlab代码实现在解决这一问题时,可以使用Matlab编程来实现数学模型的构建和优化算法的求解。

以下是一个简单的Matlab代码示例,用于对B题中所描述的生产调度问题进行建模和求解。

```matlab假设产品数为n,机器数为mn = 10;m = 5;初始化生产时间矩阵,其中A(i, j)表示第i个产品在第j台机器上的加工时间A = rand(n, m);设定机器的最大工作时间,假设为100machine_time_limit = 100 * ones(1, m);构建优化模型cvx_beginvariables x(n, m) 定义决策变量x(i, j),表示第i个产品在第j台机器上是否加工maximize(sum(sum(x))) 最大化生产效率subject tofor j = 1:msum(x(:, j).*A(:, j)) <= machine_time_limit(j) 确保每台机器的工作时间不超过限制endsum(x, 2) == ones(n, 1) 确保每个产品都按时完成x >= 0, x <= 1 约束x的取值范围为0到1cvx_end```以上代码利用了Matlab中的cvx工具箱,通过建立数学模型和求解优化问题,可以得到最佳的生产调度方案。

第十四届华中杯数学建模b题代码

第十四届华中杯数学建模b题代码摘要:1.介绍华中杯数学建模比赛的背景和重要性2.概述第十四届华中杯数学建模b 题的题目和要求3.分析题目的难点和解决方法4.总结参赛者在完成该题目时需要注意的细节和技巧5.展望华中杯数学建模比赛的未来发展正文:一、华中杯数学建模比赛的背景和重要性华中杯数学建模比赛是我国高校数学建模领域的一项重要赛事,旨在推动数学建模教学体系、培养学生创新能力和团队协作精神。

该比赛吸引了众多高校的热情参与,为广大学子提供了展示自己数学应用能力的舞台。

在这个比赛中,选手们需要运用所学的数学知识、编程技巧以及对实际问题的理解,完成对某一题目的建模和求解。

因此,参加华中杯数学建模比赛不仅能够锻炼学生的思维能力,还能提高他们的实际问题解决能力。

二、概述第十四届华中杯数学建模b 题的题目和要求第十四届华中杯数学建模比赛的b 题题目为“某城市交通网络优化问题”。

题目要求参赛者建立一个合理的交通网络,使得城市内各个区域的出行时间最小。

为了达到这个目标,参赛者需要充分考虑道路的建设、公共交通的布局以及交通信号的控制等因素。

此题的难度在于如何将这些复杂的因素抽象成数学模型,并找到合适的算法进行求解。

三、分析题目的难点和解决方法1.难点:题目中涉及到的因素较多,如何建立一个既全面又简洁的数学模型是参赛者面临的首要难题。

此外,由于题目的目标函数是出行时间的最小化,因此需要寻找一种能够在较大范围内有效搜索最优解的算法。

2.解决方法:针对题目的难点,参赛者可以采用以下方法:(1)对于模型的建立,可以采用图论、网络流等数学工具,将题目中的各种因素抽象成数学模型。

例如,可以将道路看作图论中的边,交通信号看作图中的节点,公共交通线路看作图中的路径等。

(2)对于算法的选择,可以采用启发式算法、元启发式算法等方法。

这些算法能够在较大范围内搜索到较优的解,从而提高求解效率。

例如,遗传算法、蚁群算法、粒子群算法等都是比较适合解决此类问题的算法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2013高教社杯全国大学生数学建模竞赛承诺书我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。

我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。

我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。

如有违反竞赛规则的行为,我们将受到严肃处理。

我们参赛选择的题号是(从A/B/C/D中选择一项填写): B我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):华南师范大学增城学院参赛队员(打印并签名) :1.2.3.指导教师或指导教师组负责人(打印并签名):日期:年月日赛区评阅编号(由赛区组委会评阅前进行编号):2013高教社杯全国大学生数学建模竞赛编号专用页赛区评阅编号(由赛区组委会评阅前进行编号):全国统一编号(由赛区组委会送交全国前编号):全国评阅编号(由全国组委会评阅前进行编号):DVD在线租赁摘要问题(三):题目需要我们回答购买各种DVD的数量来使95%的会员能看到他DVD想看到的DVD,并且要怎么分配才能使满意度达到最大;每种建立以总的购买数最小、会员满意度最大为双目标的规划模型。

通过确定在一个月内每张DVD的在每个会员中手中的使用率;然后通过c语言程序编程来确定每种DVD 的购买量;建立0-1规划模型;通过LINGO软件使满意度达到最大,来最终确定DVD的分配;一级,二级目标,将多目标规划转化为单目标;同时将第j种DVD的购买量y的整数约束去掉,求解出最小购买数为张。

将最小购买数作为约束条件,优j化满意度后,得到最大满意度为95%;然后对此时DVD的购买量y向上取整,得j到总购买数为186张。

当购买数为186张时,会员满意度达到97%。

三、模型假设1、租赁周期为一个月,每月租两次的会员可以在月中再租赁一次;2、同一种DVD每人只能租赁一次;3、DVD在租赁过程中无损坏;4、会员每月至少交一次订单;5、会员只有把前一次所借的DVD寄回,才可以继续下一次租赁6、月底DVD全部收回,继续下个周期的租赁;7、随着时间的推移,该网站的会员们的流动情况不会出现大变动。

四、符号说明一、问题的重述随着信息时代的到来,网络成为人们生活中越来越不可或缺的元素之一。

许多网站利用其强大的资源和知名度,面向其会员群提供日益专业化和便捷化的服务。

例如,音像制品的在线租赁就是一种可行的服务。

这项服务充分发挥了网络的诸多优势,包括传播范围广泛、直达核心消费群、强烈的互动性、感官性强、成本相对低廉等,为顾客提供更为周到的服务。

考虑如下的在线DVD租赁问题。

顾客缴纳一定数量的月费成为网站会员,可以订购DVD租赁服务。

会员对哪些DVD有兴趣,只要在线提交订单,网站就会通过快递的方式尽可能满足要求。

会员提交的订单包括多张基于其偏爱程度排序的DVD。

网站会根据手头现有的DVD数量和会员的订单进行分发。

每个会员每个月租赁次数不得超过2次,每次获得3张DVD。

会员看完3张DVD之后,只需要将DVD放进网站提供的信封里寄回(邮费由网站承担),就可以继续下次租赁。

考虑回答下面问题:(1)网站准备购买一些新的DVD,通过问卷调查1000个会员,得到了愿意观看这些DVD的人数(表1给出了其中5种DVD的数据)。

此外,历史数据显示,60%的会员每月租赁DVD两次,而另外的40%只租一次。

假设网站现有10万个会员,对表1中的每种DVD来说,应该至少准备多少张,才能保证希望看到该DVD的会员中至少50%在一个月内能够看到该DVD?如果要求保证在三个月内至少95%的会员能够看到该DVD呢?(2)表2中列出了网站手上100种DVD的现有张数和当前需要处理的1000位会员的在线订单,如何对这些DVD进行分配,才能使会员获得最大的满意度?请具体列出前30位会员(即C0001~C0030)分别获得哪些DVD。

(3)继续考虑表2,并假设表2中DVD的现有数量全部为0。

如果你是网站经营管理人员,如何决定每种DVD的购买量,以及如何对这些DVD进行分配,才能使一个月内95%的会员得到他想看的DVD,并且满意度最大?(4)如果你是网站经营管理人员,你觉得DVD 的需求预测、购买和分配中还有哪些重要问题值得研究?请明确提出你的问题,并尝试建立相应的数学模型。

在线订单用数字1,2,…表示,数字越小表示会员的偏爱程度越高,数字0表示对应的DVD 当前不在会员的在线订单中。

二、问题的分析问题分析:题中列出了网站手上20种DVD 的现有张数和当前需要处理的100位会员的在线订单,要得到使会员获得最大满意度的DVD 分配方案,这可以通过建立线形规划模型来实现。

由于每个会员对不同DVD 的偏爱程度不同,且题中所给的列表中会员的在线订单中数字越小表示会员的偏爱程度越高。

由于每个会员可以按偏爱程度在20种DVD (可以参考)五、模型的建立与求解(一):问题一由历史数据,60%的会员每月租赁DVD 两次,而另外40%的人只租一次。

由假设会员如果在当月归还了DVD ,一般会同时有第2次的租赁要求,因此认为有60%的会员在一个月有两次租赁需求,其他40%的会员为一次。

近似认为会员的需求基本上能满足,从而认为有60%的会员会在一个月内归还DVD ,另外40%则不能。

在一个月内归还的DVD 还可以满足另一个会员,又新购DVD 一般会较受欢迎,因此认为该DVD 一直在周转中,没有出现该DVD 空闲情况。

故可以合理地认为一张新DVD 在一个月内以60%的概率满足两个会员,40%的概率满足一个会员,从而一张DVD 的相对一个人来说使用率为 7.0%402%60=+;需要准备的j DVD 张数为j Q ;由调查结果1000个会员中愿意观看DVD 的购买量为i x 。

模型一、保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备的DVD 的张数:7.0%501000100000⨯⨯⨯=j j x Q保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的DVD 的张数:37.0%951000100000÷⨯⨯⨯=j j x Q模型的求解:当2001=x 时 保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备的DVD 的张数70007.0%5020010001000001=⨯⨯⨯=Q保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的DVD 的张数:443437.0%9520010001000001=÷⨯⨯⨯=Q同理可得各种DVD 需要准备的张数,计算得下表1: 表1:各种DVD 需要准备的张数为了验证模型一的准确性:我们建立了模型二 模型二我们将每月租凭DVD 两次的会员平均分成两部分,一部分是在月初借DVD ,月中还DVD ;第二部分是在月中借DVD ,月末还DVD ;这样就将第一部分月初借的DVD 在月中的时候再借给第二部分;这样就能使需要准备的DVD 数达到最小。

保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备的DVD 的张数:%50%)4010001000002%601000100000(⨯⨯+⨯⨯=j j j x x Q保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的DVD 的张数:3%95%)4010001000002%601000100000(⨯⨯+⨯⨯=j j j x x Q 模型求解:保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备的DVD 的张数:7000%50%)4020010001000002%602001000100000(=⨯⨯+⨯⨯=j Q保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的DVD 的张数:44343%95%)6020010001000002%602001000100000(1=⨯⨯+⨯⨯=Q同理可得各种DVD 需要准备的张数,计算得下表2: 表2:各种DVD 需要准备的张数(二)、问题二会员i 对某种DVD 偏爱度ij c 的量化:会员对DVD 偏爱度ij c 是随着订单数字ij a ij (a 0)>时的增加而减少,其中会员对网站的满意度与满足会员的偏爱度是挂钩的;因此我们可用一非增函数来度量;从心理学的角度来看:随着ij a 的增加,相邻的两个订单数字之间的偏爱度的差会越来越小,所以我们定义了;⎪⎩⎪⎨⎧==01ijij ij c a c00=≠ij ij a a 不同会员在对同一种DVD 偏爱指数相同时,我们在分配DVD 时优先考虑编号在前的会员。

要确定把那张DVD 租给哪个会员,才能使满意度达到最大,因此我们引入ij x 表示把第j 种DVD 是否租给第i 个会员;从问题我们可以看出这是一个如何分配的问题,我们不妨把其中现有DVD 的张数看成现有判断条件为需要完成的任务,把每一为会员看成完成这些任务的人选,其中他们对各种DVD 的偏爱度就代表他们完成相对应的任务的能力;我们就要使他们对各种任务的完成能力达到最大;iji i j j ij xc B ∑∑=====100011001max约束条件所有的会员分配到j 种DVD 的数量之和不能超过现有的第j 种DVD 的张数j i i ijb x<=∑==10001=j (1、2...100;ij x 为0-1变量)由于网站每次对每个会员DVD 的分配要么0张要么3张所以i j j u 3100=∑== (i=1、2、...1000;ij u 为0-1变量)对问题(2)建立0—1规划模型。

模型三: 目标函数;iji i j j ij xc B ∑∑=====100011001max约束条件:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧=<=∑∑====3100010001j j ijj i i ij x b x (i u 、ij x 均为0-1变量;i=1、2....1000;j=1、2....100);模型求解: 用LINGO 数学软件实现对此题0-1规划模型的求解;执行的代码见附录一;可以获得的最大满意度为其中前30位会员(即C0001~C0030)获得DVD 情况如下表所示(三):问题三问题三是问题一和问题二的结合,要求我们在确保95%的会员能得到他想看的DVD 的前提下使会员对网站的满意度达到最大;在这里我们需要解决的问题 如何使采购的DVD 总数量最少;2、如何每种DVD 的采购量,才能使客户的满意度达到最大;因此我们求出需要准备DVD 总数的上下限,假定网站在一个月内分配给会员一次DVD (三张他想要看的DVD )即认为会员得到他想看的DVD 。

相关文档
最新文档