数学建模b题(含代码)
2023高教社杯数学建模b题思路代码 - 多波束测线问题

题目B:多波束测线问题问题重述:在海洋资源勘探中,多波束测线技术被广泛采用。
该技术通过发射多个波束并接收回波信号,可以快速获取海底地形地貌的详细信息。
在处理多波束测线数据时,通常需要将多个相邻测线的测量结果进行配准,即将相邻测线间的重叠区域进行融合,以获得连续的地形信息。
给定一系列多波束测线数据,每条测线包含多个测点的位置信息(经度和纬度)和该测点的水深值。
目标是根据这些测线数据,自动生成一张连续的海底地形图。
解题思路:1. 数据预处理:检查并清理数据,确保每条测线的数据完整且没有异常值。
对缺失或异常的水深数据进行填充或修正。
2. 测线配准:采用适当的算法对相邻测线进行配准。
一种常见的方法是使用逐点最小二乘法进行线性回归分析,找出相邻测线间的线性变换关系(平移、旋转、缩放),从而将它们对齐。
3. 数据融合:在配准后的测线上,采用适当的插值算法(如样条插值、多项式插值、径向基函数插值等)对水深数据进行插值,以生成连续的海底地形图。
4. 地形可视化:将生成的地形图可视化,以便更好地理解海底地形地貌的特征。
可以采用等深线图、三维立体图等方式进行展示。
实现步骤:1. 读取测线数据:使用Python中的Pandas库读取给定的测线数据,包括每条测线的经度、纬度和水深值。
2. 数据预处理:对数据进行清洗和预处理,包括处理缺失值、异常值等。
3. 测线配准:采用线性回归分析方法对相邻测线进行配准,实现测线的对齐。
4. 数据融合:使用适当的插值算法对配准后的测线数据进行插值,生成连续的海底地形图。
5. 地形可视化:将生成的地形图进行可视化展示,可以采用等深线图或三维立体图等方式进行展示。
6. 结果输出:将最终生成的海底地形图保存为图像文件或输出到控制台。
注意事项:1. 在进行测线配准时,需要注意数据的完整性和一致性,避免出现误差累积的情况。
2. 在进行数据融合时,需要考虑不同测线间的重叠区域,确保数据的连续性和准确性。
数学建模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,并统计空格的个数。
2011数学建模B题图形和matlab源代码

AA=textread('E:\Appendix\B01.txt');ee=(AA(:,4));k=sum(ee)/92;m=ee'/k;for i=1:92d(i,:)=m(i)./m;endd层次分析法matlab源程序disp('请输入判断矩阵A(n阶)');A=input('A=');[n,n]=size(A);x=ones(n,100);y=ones(n,100);m=zeros(1,100);m(1)=max(x(:,1));y( :,1)=x(:,1);x(:,2)=A*y(:,1);m(2)=max(x(:,2));y(:,2)=x(:,2)/m(2);p=0.0001;i=2;k=abs(m(2)-m(1));while k>p i=i+1; x(:,i)=A*y(:,i-1); m(i)=max(x(:,i)); y(:,i)=x(:,i)/m(i); k=abs(m(i)-m(i-1));enda=sum( y(:,i));w=y(:,i)/a;t=m(i);disp(w);disp(t); %以下是一致性检验CI=(t-n)/(n-1);RI=[0 0 0.52 0.89 1.12 1.26 1.36 1.41 1.46 1.49 1.52 1.54 1.56 1.58 1.59];CR=CI/RI(n);if CR<0.10 disp('此矩阵的一致性可以接受!'); disp('CI=');disp(CI); disp('CR=');disp(CR);endfunction AHPInit1(x,y)%层次分析的初始化%默认只有两层x为准则数,y为方案数%CToT为准则对目标生成的比较阵%EigOfCri为准则层的特征向量%EigOfOpt为选项层的特征向量EigOfCri=zeros(x,1);%准则层的特征向量EigOfOpt=zeros(y,x);dim=x;%维度RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%RI标准%生成成对比较阵for i=1:dim CToT(i,:)=input('请输入数据:');endCToT %输出pause,tempmatrix=zeros(x+1);tempmatrix=AHP1(dim,CToT);EigOfCri=tempmatrix(1:x);ci1=temp matrix(1+x);EigOfCrici1pause,matrix=cell(x);%元胞数组ci=zeros(1,x);dim=y;for k=1:x matrix{k}=zeros(dim,dim);%生成成对比较阵for i=1:dim matrix{k}(i,:)=input('请输入数据:');end%判断该比较阵是不是一致阵tempmatrix=zeros(y+1);tempmatrix=AHP1(dim,matrix{k});EigOfOpt(:,k)=tempmatrix(1:y);ci(k)=te mpmatrix(y+1);EigOfOpt(:,k)ci(k)pause,end%下面进行组合一致性检查RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];CR=ci1/RI(x)+ci*EigOfCri/RI(y);CRif CR>0.1 disp('组合一致性不通过,请重新评分') returnend%下面根据比较阵的结果进行组合result=EigOfOpt*EigOfCri;resultfunction f=AHP1(dim,CmpMatrix)RI=[0 0 0.58 0.90 1.12 1.24 1.32 1.41 1.45 1.49 1.51];%判断该比较阵是不是一致阵%判断该比较阵是不是一致阵[V,D]=eig(CmpMatrix);%求得特征向量和特征值%求出最大特征值和它所对应的特征向量tempNum=D(1,1);pos=1;for h=1:dim if D(h,h)>tempNum tempNum=D(h,h); pos=h; endend eigVector=V(:,pos);maxeig=D(p os,pos);maxeigdimCI=(maxeig-dim)/(dim-1);CR=CI/RI(dim);if CR>0.1 disp('准则对目标影响度评分生成的矩阵不是一致阵,请重新评分') returnendCI%归一化sum=0;for h=1:dim sum=sum+eigVector(h);endsumpause,for h=1:dim eigVector(h)=eigVector(h)/sum;endf=[eigVector;CI];。
2023年全国大学生数学建模竞赛题目B:

2023年全国大学生数学建模竞赛题目B:题目背景在综合交通运输系统中,公共交通是一个重要的组成部分。
为了提高城市的交通效率和减少交通拥堵,许多城市采用了公共交通优先的策略。
在线调度算法是实现公共交通优先的一种重要方法。
题目描述某城市的公共交通系统包含多条公交线路和多个公交车站。
现在,你被要求设计一个在线调度算法来优化城市的公共交通系统并减少等待时间。
具体来说,给定每一条公交线路的发车时间间隔和通过每个车站所需的时间,你需要设计一个算法,使得乘坐公交车的乘客的等待时间最小。
你需要完成以下任务:1.根据给定的公交线路信息,计算每个车站的累计等待时间,即从第一趟公交车到达该车站到当前时间的总等待时间。
2.根据计算得到的累计等待时间,为每个车站分配一个优先级,并找到最高优先级的车站。
3.制定一个在线调度算法,在最高优先级车站的公交车上按照车站的优先级顺序依次上下乘客。
4.分析并讨论你设计的在线调度算法的优点和缺点,并提出改进的意见。
请使用Markdown文本描述你的算法设计,包括算法的步骤、算法的时间复杂度和空间复杂度,并给出算法的改进方向。
算法设计步骤一:计算累计等待时间1.初始化各个车站的累计等待时间为02.对每一趟公交车,从第一个车站开始,计算当前车站的累计等待时间,累计等待时间等于前一个车站的累计等待时间加上通过当前车站所需的时间。
步骤二:分配优先级1.根据计算得到的累计等待时间,为每个车站计算优先级,优先级等于累计等待时间的倒数。
步骤三:找到最高优先级车站1.遍历所有车站,找到优先级最高的车站。
步骤四:在线调度算法1.根据最高优先级车站的优先级顺序,依次上下乘客。
时间复杂度和空间复杂度•步骤一的时间复杂度为O(n),其中n为车站的数量。
•步骤二的时间复杂度为O(n),其中n为车站的数量。
•步骤三的时间复杂度为O(n),其中n为车站的数量。
•步骤四的时间复杂度为O(n),其中n为车站的数量。
•算法的空间复杂度为O(n),其中n为车站的数量。
第十四届华中杯数学建模b题代码

第十四届华中杯数学建模竞赛是一场高水平的数学比赛,吸引了来自全国各地的优秀学子参与。
本文旨在介绍参赛队伍B题的代码部分,包括代码的编写思路、核心算法和实际运行结果。
1. 题目背景B题的题目是关于城市交通流量的预测和优化问题。
参赛队伍需要收集一定时间范围内的城市交通数据,并设计算法对未来某一时间段的交通流量进行预测,以便合理规划交通路径和减少拥堵。
这是一个充满挑战的实际问题,需要队伍们充分发挥数学建模和计算机编程的能力。
2. 代码思路为了解决这一问题,参赛队伍B首先采用了Python作为主要编程语言,并结合了数据处理和机器学习的相关库,如NumPy、Pandas和Scikit-learn等。
在代码编写过程中,队伍注重对于数据的分析和特征提取,以及对于模型的选择和调优。
3. 数据处理与特征提取队伍B使用Pandas库对收集到的城市交通数据进行了整理和清洗,去除了异常值和缺失数据。
他们利用时间序列分析的方法提取了交通流量的周期性、趋势和季节性特征,并构建了相应的特征变量。
4. 模型选择和调优在模型选择方面,队伍B尝试了多种机器学习算法,包括线性回归、岭回归、决策树和随机森林等。
通过交叉验证和网格搜索的方法,他们对模型进行了调优,并最终选择了表现最优的模型来进行预测。
5. 实际运行结果在实际运行中,队伍B的代码成功地对未来某一时间段的交通流量进行了准确预测,在实际测试数据上取得了较高的预测精度。
他们的优化策略和模型选择得到了评委和其他参赛队伍的认可,为他们在竞赛中获得了不俗的成绩。
6. 总结与展望通过本次竞赛,参赛队伍B学习到了许多关于数据处理和机器学习的知识,提高了对于实际问题的建模和解决能力。
在未来,他们将继续深入学习和研究,积极探索更多有挑战性和实用性的数学建模问题,为国家的科技发展贡献自己的一份力量。
7. 结语参赛队伍B在第十四届华中杯数学建模竞赛中展现出了较强的数学建模和编程实力,他们的代码部分充分体现了团队成员的合作能力和创新能力。
数学建模B题含代码

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整数约束去掉,求解出最小购买数为178.125张。
将最小购买数作为约束条件,优化满意度后,得到最大满意度为95%;然后对此时DVD的购买量y向上取整,得到总购j买数为186张。
当购买数为186张时,会员满意度达到97%。
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工具箱,通过建立数学模型和求解优化问题,可以得到最佳的生产调度方案。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
12013高教社杯全国大学生数学建模竞赛2承诺书34我们仔细阅读了中国大学生数学建模竞赛的竞赛规则.56我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电7话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。
89我们知道,抄袭别人的成果是违反竞赛规则的, 如果引用别人的10成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。
1112我们郑重承诺,严格遵守竞赛规则,以保证竞赛的公正、公平性。
如有违反竞赛规则的行为,我们将受到严肃处理。
1314我们参赛选择的题号是(从A/B/C/D中选择一项填写):15B我们的参赛报名号为(如果赛区设置报名号的话):161718所属学校(请填写完整的全名):华南师范大学增城19学院20参赛队员 (打印并签名) :1.212.223.23指导教师或指导教师组负责人 (打印并签名):2425日期:年26月日272829303132赛区评阅编号(由赛区组委会评阅前进行编号):2013高教社杯全国大学生数学建模竞赛3334编号专用页35363738赛区评阅编号(由赛区组委会评阅前进行编号):39404142434445464748全国统一编号(由赛区组委会送交全国前编号):495051525354全国评阅编号(由全国组委会评阅前进行编号):555657DVD 在线租赁58 摘要59 问题(三):题目需要我们回答购买各种DVD 的数量来使95%的会60员能看到他DVD 想看到的DVD ,并且要怎么分配才能使满意度达到61 最大;每种建立以总的购买数最小、会员满意度最大为双目标的规划模型。
通62 过确定在一个月内每张DVD 的在每个会员中手中的使用率;然后通过c 63 语言程序编程来确定每种DVD 的购买量;建立0-1规划模型;通过64 LINGO 软件使满意度达到最大,来最终确定DVD 的分配; 65 6667 一级,二级目标,将多目标规划转化为单目标;同时将第j 种DVD 的购买68量j y 的整数约束去掉,求解出最小购买数为178.125张。
将最小购买数作为约69 束条件,优化满意度后,得到最大满意度为95%;然后对此时DVD 的购买量j y 向70 上取整,得到总购买数为186张。
当购买数为186张时,会员满意度达到97%。
71 72 三、模型假设7374 1、租赁周期为一个月,每月租两次的会员可以在月中再租赁一次; 75 2、同一种DVD 每人只能租赁一次; 76 3、DVD 在租赁过程中无损坏; 77 4、会员每月至少交一次订单;78 5、会员只有把前一次所借的DVD 寄回,才可以继续下一次租赁 79 6、月底DVD 全部收回,继续下个周期的租赁;80 7、随着时间的推移,该网站的会员们的流动情况不会出现大变动。
81 82 四、符号说明8384858687一、问题的重述8889随着信息时代的到来,网络成为人们生活中越来越不可或缺的元素之一。
90许多网站利用其强大的资源和知名度,面向其会员群提供日益专业化和便捷化91的服务。
例如,音像制品的在线租赁就是一种可行的服务。
这项服务充分发挥92了网络的诸多优势,包括传播范围广泛、直达核心消费群、强烈的互动性、感93官性强、成本相对低廉等,为顾客提供更为周到的服务。
94考虑如下的在线DVD租赁问题。
顾客缴纳一定数量的月费成为网站会员,95可以订购DVD租赁服务。
会员对哪些DVD有兴趣,只要在线提交订单,网站就96会通过快递的方式尽可能满足要求。
会员提交的订单包括多张基于其偏爱程度97排序的DVD。
网站会根据手头现有的DVD数量和会员的订单进行分发。
每个会员98每个月租赁次数不得超过2次,每次获得3张DVD。
会员看完3张DVD之后,只99需要将DVD放进网站提供的信封里寄回(邮费由网站承担),就可以继续下次租100赁。
考虑回答下面问题:101(1)网站准备购买一些新的DVD,通过问卷调查1000个会员,得到了愿意观看102这些DVD的人数(表1给出了其中5种DVD的数据)。
此外,历史数据显示,60% 103的会员每月租赁DVD两次,而另外的40%只租一次。
假设网站现有10万个会员,104对表1中的每种DVD来说,应该至少准备多少张,才能保证希望看到该DVD的105会员中至少50%在一个月内能够看到该DVD?如果要求保证在三个月内至少95% 106的会员能够看到该DVD呢?(2)表2中列出了网站手上100种DVD 的现有张数和当前需要处理的1000位107 会员的在线订单,如何对这些DVD 进行分配,才能使会员获得最大的满意度?108 请具体列出前30位会员(即C0001~C0030)分别获得哪些DVD 。
109 (3)继续考虑表2,并假设表2中DVD 的现有数量全部为0。
如果你是网站经110 营管理人员,如何决定每种DVD 的购买量,以及如何对这些DVD 进行分配,才111 能使一个月内95%的会员得到他想看的DVD ,并且满意度最大?112 (4)如果你是网站经营管理人员,你觉得DVD 的需求预测、购买和分配中还有113 哪些重要问题值得研究?请明确提出你的问题,并尝试建立相应的数学模型。
114115116117118 线订单用数字1,2,…表示,数字越小表示会员的偏爱程度越高,数字0表示对119 应的DVD 当前不在会员的在线订单中。
120 二、问题的分析121 122 123124 问题分析:题中列出了网站手上20种DVD 的现有张数和当前需要处理的100125 位会员的在线订单,要得到使会员获得最大满意度的DVD 分配方案,这可以通126 过建立线形规划模型来实现。
由于每个会员对不同DVD 的偏爱程度不同,且题127 中所给的列表中会员的在线订单中数字越小表示会员的偏爱程度越高。
由于每128 个会员可以按偏爱程度在20种DVD (可以参考)129130 五、模型的建立与求解131 (一):问题一 132133 由历史数据,60%的会员每月租赁DVD 两次,而另外40%的人只租一次。
由假设134 会员如果在当月归还了DVD ,一般会同时有第2次的租赁要求,因此认为有60%135 的会员在一个月有两次租赁需求,其他40%的会员为一次。
近似认为会员的需求136 基本上能满足,从而认为有60%的会员会在一个月内归还DVD ,另外40%则不能。
137在一个月内归还的DVD 还可以满足另一个会员,又新购DVD 一般会较受欢迎,138 因此认为该DVD 一直在周转中,没有出现该DVD 空闲情况。
故可以合理地认为139 一张新DVD 在一个月内以60%的概率满足两个会员,40%的概率满足一个会员,140 从而一张DVD 的相对一个人来说使用率为 7.0%402%60=+;141需要准备的j DVD 张数为j Q ;由调查结果1000个会员中愿意观看DVD 的购买量142 为i x 。
143 模型一、144 保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备145 的DVD 的张数: 146 7.0%501000100000⨯⨯⨯=j j x Q 147148 保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的149 DVD 的张数: 150 37.0%951000100000÷⨯⨯⨯=j j x Q 151模型的求解:152 当2001=x 时 保证希望看到该DVD 的会员中至少50%在一个月内能够看到该153 DVD 需要准备的DVD 的张数 154 70007.0%5020010001000001=⨯⨯⨯=Q 155156 保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的157 DVD 的张数:158 443437.0%9520010001000001=÷⨯⨯⨯=Q 159同理可得各种DVD 需要准备的张数,计算得下表1: 160 表1:各种DVD 需要准备的张数161162 为了验证模型一的准确性:我们建立了模型二 163 模型二164 我们将每月租凭DVD 两次的会员平均分成两部分,一部分是在月初借DVD ,月165 中还DVD ;第二部分是在月中借DVD ,月末还DVD ;这样就将第一部分月初166 借的DVD 在月中的时候再借给第二部分;这样就能使需要准备的DVD 数达到最167 小。
168保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备的169 DVD 的张数: 170171 %50%)4010001000002%601000100000(⨯⨯+⨯⨯=j j j x x Q172 保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的173 DVD 的张数:1743%95%)4010001000002%601000100000(⨯⨯+⨯⨯=j j j x x Q 175 模型求解:176 保证希望看到该DVD 的会员中至少50%在一个月内能够看到该DVD 需要准备的177 DVD 的张数: 178179 7000%50%)4020010001000002%602001000100000(=⨯⨯+⨯⨯=j Q180 保证希望看到该DVD 的会员中至少95%在三个月内能够看到该DVD 需要准备的181 DVD 的张数:18244343%95%)6020010001000002%602001000100000(1=⨯⨯+⨯⨯=Q183 同理可得各种DVD 需要准备的张数,计算得下表2: 184 表2:各种DVD 需要准备的张数185186 (二)、问题二187 会员i 对某种DVD 偏爱度ij c 的量化:会员对DVD 偏爱度ij c 是随着订单数字188 ij a ij (a 0)>时的增加而减少,其中会员对网站的满意度与满足会员的偏爱度是挂189 钩的;因此我们可用一非增函数来度量;从心理学的角度来看:随着ij a 的增加,190 相邻的两个订单数字之间的偏爱度的差会越来越小,所以我们定义了;191⎪⎩⎪⎨⎧==01ij ij ij c ac 00=≠ijij a a192 不同会员在对同一种DVD 偏爱指数相同时,我们在分配DVD 时优先考虑编号在193 前的会员。
要确定把那张DVD 租给哪个会员,才能使满意度达到最大,因此我194 们引入ij x 表示把第j 种DVD 是否租给第i 个会员;从问题我们可以看出这是一195 个如何分配的问题,我们不妨把其中现有DVD 的张数看成现有判断条件为需要196 完成的任务,把每一为会员看成完成这些任务的人选,其中他们对各种DVD 的197 偏爱度就代表他们完成相对应的任务的能力;我们就要使他们对各种任务的完198 成能力达到最大;199iji i j j ij xc B ∑∑=====100011001max200 约束条件所有的会员分配到j 种DVD 的数量之和不能超过现有的第j 种DVD 的201 张数 202j i i ijb x<=∑==10001=j (1、2...100;ij x 为0-1变量)203 由于网站每次对每个会员DVD 的分配要么0张要么3张所以 204i j j u 3100=∑== (i=1、2、...1000;ij u 为0-1变量)205 对问题(2)建立0—1规划模型。