数学建模学习

1.数学建模的基本过程:

**1)模型准备:**了解问题的实际背景,明确其实际意义,掌握对象的各种信息。以数学思想来包容问题的精髓,数学思路贯穿问题的全过程,进而用数学语言来描述问题。要求符合数学理论,符合数学习惯,清晰准确。
**2)模型假设:**根据实际对象的特征和建模的目的,对问题进行必要的简化,并用精确的语言提出一些恰当的假设。
**3)模型建立:**在假设的基础上,利用适当的数学工具来刻划各变量常量之间的数学关系,建立相应的数学结构(尽量用简单的数学工具)。
4)模型求解:利用获取的数据资料,对模型的所有参数做出计算(或近似计算)。
5)模型分析:对所要建立模型的思路进行阐述,对所得的结果进行数学上的分析。
**6)模型检验:**将模型分析结果与实际情形进行比较,以此来验证模型的准确性、合理性和适用性。如果模型与实际较吻合,则要对计算结果给出其实际含义,并进行解释。如果模型与实际吻合较差,则应该修改假设,再次重复建模过程。
**7)模型应用与推广:**应用方式因问题的性质和建模的目的而异,而模型的推广就是在现有模型的基础上对模型有一个更加全面的考虑,建立更符合现实情况的模型。

2.线性规划的问题(生产计划利润最大化):

数学建模学习
% 对产品一假设在A1和A2完成A工序的产品为X1,X2;在转入B工序以B1,B2,B3完成的产品分别为X3,X4,X5;
%对产品二 A工序的A1A2的产品分别为 X6,,X7;对于B工序的B1为X8;
%对于产品三在A工序的A2完成的产品为X9,在工序B2完成的产品为X9;
%由题知X1+X2=X3+X4+X5;;X6+X7=X8
%
% 对产品一假设在A1和A2完成A工序的产品为X1,X2;在转入B工序以B1,B2,B3完成的产品分别为X3,X4,X5;
%对产品二 A工序的A1A2的产品分别为 X6,,X7;对于B工序的B1为X8;
%对于产品三在A工序的A2完成的产品为X9,在工序B2完成的产品为X10;
%由题知X1+X2=X3+X4+X5;;X6+X7=X8;x9=x10
%

clc;clear;
c=[3/4,7753/10000,-3/8,-3132/7000,-7/20,-1/2,-2889/10000,1.15,19148/10000,-8613/7000];
A = [5,0,0,0,0,10,0,0,0,0;
0,7,0,0,0,0,9,0,12,0;
    0,0,6,0,0,0,0,8,0,0;
0,0,0,4,0,0,0,0,0,11;
    0,0,0,0,7,0,0,0,0,0];
b = [6000,10000,4000,7000,4000];
aeq = [1,1,-1,-1,-1,0,0,0,0,0;
       0,0,0,0,0,1,1,-1,0,0;
       0,0,0,0,0,0,0,0,1,-1];
beq = [0,0,0];
[x,y] = linprog(-c,A,b,aeq,beq,zeros(10,1),[]);
%%x为决策向量的取值,y返回目标函数的最优值,zeros(10,1)和[]为上下限
fprintf('最优方案应该为:\n')
for i = 1:10
   fprintf('x%d = %.5f\n',i,x(i))
end
fprintf('最大利润为%.5f元\n',-y)


3.整数规划问题(指派问题):

  1. 某公司新购置了某种设备 6 台,欲分配给下属的 4 个企业,每个企业至少分的一台设备。已知各企业获得这种设备后年创利润如表 2 所示,单位为千万元。问应如何分配这些设备能使年创总利润最大,最大利润是多少?
    数学建模学习
    数学建模学习
clc
clear
t1=[4;6;7;7;7;7];
t2=[2;4;6;8;9;10];
t3=[3;5;7;8;8;8];
t4=[4;5;6;6;6;6];
c=[t1',t2',t3',t4'];
m1=zeros(24,1);m2=zeros(24,1);
m3=zeros(24,1);m4=zeros(24,1);
m5=zeros(24,1);m6=zeros(24,1);
m7=zeros(24,1);m8=zeros(24,1);
m9=zeros(24,1);m10=zeros(24,1);
m1(1:6,1)=1;
m2(7:12,1)=1;
m3(13:18,1)=1;
m4(19:24,1)=1;
m5(1,1)=1;m5(7,1)=1;m5(13,1)=1;m5(19,1)=1;
m6(2,1)=1;m6(8,1)=1;m6(14,1)=1;m6(20,1)=1;
m7(3,1)=1;m7(9,1)=1;m7(15,1)=1;m7(21,1)=1;
m8(4,1)=1;m8(10,1)=1;m8(16,1)=1;m8(22,1)=1;
m9(5,1)=1;m9(11,1)=1;m9(17,1)=1;m9(23,1)=1;
m10(6,1)=1;m10(12,1)=1;m10(18,1)=1;m7(24,1)=1;
a=[m1';m2';m3';m4'];
b=ones(4,1);
aeq=[m5';m6';m7';m8';m9';m10'];
beq=ones(6,1);
intcon=1:24;
lb=zeros(24,1);
ub=ones(24,1);
x=intlinprog(-c,intcon,-a,-b,aeq,beq,lb,ub)
max_profit=c*x
x=reshape(x,[6,4])

4.图论规划问题(最短路问题的标号法):

数学建模学习
数学建模学习

clear
a(1,2)=16;a(1,3)=22;a(1,4)=30;a(1,5)=41;a(1,6)=61;
a(2,3)=16;a(2,4)=22;a(2,5)=30;a(2,6)=41;
a(3,4)=17;a(3,5)=23;a(3,6)=31;
a(4,5)=17;a(4,6)=23;
a(5,6)=18;
a=a';
[i,j,v]=find(a);
b = sparse(i,j,v,6,6)
[x,y,z] = graphshortestpath(b,1,6,'Directed',false)

数学建模学习

5.综合评判问题(理想型法)

数学建模学习

clc
clear
a=[99.89,  96.91,  102.63, 98.47, 87.51, 108.35, 71.67, 103.25, 171.2;
   103.69, 124.78, 101.85, 103.16,90.27, 106.39, 137.16, 100, 51.35;
   97.42, 66.44, 104.39, 109.17, 93.77, 142.35, 97.65, 100, 15.90;
   101.11,143.96,100.94,104.39,94.33,121.91,171.31,99.13,53.72;
   97.21,88.36,100.64,91.90,85.21,158.61,204.52,100.22,20.78];
[m,n]=size(a);
for j =[1 5 7 9]
    b(:,j)=(max(a(:,j))-a(:,j))/(max(a(:,j))-min(a(:,j)));
end
for j=[2:4,6,8]
  b(:,j) =(a(:,j)-min(a(:,j)))/(max(a(:,j))-min(a(:,j)));
end
cstar=max(b);
c0=min(b);
for i=1:m
    dstar(i)=norm(b(i,:)-cstar); %%q求到正理想的距离
    d0(i)=norm(b(i,:)-c0);%%求到负理想的距离
end
f=d0./(dstar+d0);
[sf,ind]=sort(f,'descend')  %%求排序结果
xlswrite('book.xls',[dstar;d0;f])%%记录计算的结果

6.最小二乘法问题(回归模型与预测)

数学建模学习

clc,clear
ab0=load('pz.txt');   %原始数据存放在纯文本文件pz.txt中
mu=mean(ab0), sig=std(ab0) %求均值和标准差
rr=corrcoef(ab0)  %求相关系数矩阵
ab=zscore(ab0); %数据标准化
a=ab(:,[1:3]);b=ab(:,[4:end]);  %提出标准化后的自变量和因变量数据
[XL,YL,XS,YS,BETA,PCTVAR,MSE,stats] =plsregress(a,b)
contr=cumsum(PCTVAR,2) %求累积贡献率
xw=a\XS  %求自变量提出成分系数,每列对应一个成分,这里xw等于stats.W
yw=b\YS  %求因变量提出成分的系数
ncomp=input('请根据PCTVAR的值确定提出成分对的个数ncomp=');
[XL2,YL2,XS2,YS2,BETA2,PCTVAR2,MSE2,stats2] =plsregress(a,b,ncomp)
n=size(a,2); m=size(b,2);%n是自变量的个数,m是因变量的个数
beta3(1,:)=mu(n+1:end)-mu(1:n)./sig(1:n)*BETA2([2:end],:).*sig(n+1:end); %原始数据回归方程的常数项
beta3([2:n+1],:)=(1./sig(1:n))'*sig(n+1:end).*BETA2([2:end],:) %计算原始变量x1,...,xn的系数,每一列是一个回归方程
bar(BETA2','k')   %画直方图
legend('1单杠、2弯曲、3跳高 ');
yhat=repmat(beta3(1,:),[size(a,1),1])+ab0(:,[1:n])*beta3([2:end],:)  %求y1,..,ym的预测值
ymax=max([yhat;ab0(:,[n+1:end])]); %求预测值和观测值的最大值
%下面画y1,y2,y3的预测图,并画直线y=x
figure, subplot(2,2,1)
plot(yhat(:,1),ab0(:,n+1),'*',[0:ymax(1)],[0:ymax(1)],'Color','k')
legend('单杠成绩预测图',2), xlabel('预测数据'), ylabel('观测数据')
subplot(2,2,2)
plot(yhat(:,2),ab0(:,n+2),'O',[0:ymax(2)],[0:ymax(2)],'Color','k')
legend('弯曲成绩预测图',2), xlabel('预测数据'), ylabel('观测数据')
subplot(2,2,3)
plot(yhat(:,3),ab0(:,end),'H',[0:ymax(3)],[0:ymax(3)],'Color','k')
legend('跳高成绩预测图',2), xlabel('预测数据'), ylabel('观测数据')

7.多元分析问题(主成分分析理论与实现)

数学建模学习
数学建模学习
数学建模学习
数学建模学习
数据:5.96 310 461 1557 931 319 44.36 2615 2.20 13631 3.39 234 308 1035 498 161 35.02 3052 .90 12665 2.35 157 229 713 295 109 38.40 3031 .86 9385 1.35 81 111 364 150 58 30.45 2699 1.22 7881 1.50 88 128 421 144 58 34.30 2808 .54 7733 1.67 86 120 370 153 58 33.53 2215 .76 7480 1.17 63 93 296 117 44 35.22 2528 .58 8570 1.05 67 92 297 115 43 32.89 2835 .66 7262 .95 64 94 287 102 39 31.54 3008 .39 7786 .69 39 71 205 61 24 34.50 2988 .37 11355 .56 40 57 177 61 23 32.62 3149 .55 7693 .57 58 64 181 57 22 32.95 3202 .28 6805 .71 42 62 190 66 26 28.13 2657 .73 7282 .74 42 61 194 61 24 33.06 2618 .47 6477 .86 42 71 204 66 26 29.94 2363 .25 7704 1.29 47 73 265 114 46 25.93 2060 .37 5719 1.04 53 71 218 63 26 29.01 2099 .29 7106 .85 53 65 218 76 30 25.63 2555 .43 5580 .81 43 66 188 61 23 29.82 2313 .31 5704 .59 35 47 146 46 20 32.83 2488 .33 5628 .66 36 40 130 44 19 28.55 1974 .48 9106 .77 43 63 194 67 23 28.81 2515 .34 4085 .70 33 51 165 47 18 27.34 2344 .28 7928 .84 43 48 171 65 29 27.65 2032 .32 5581 1.69 26 45 137 75 33 12.10 810 1.00 14199 .55 32 46 130 44 17 28.41 2341 .30 5714 .60 28 43 129 39 17 31.93 2146 .24 5139 1.39 48 62 208 77 34 22.70 1500 .42 5377 .64 23 32 93 37 16 28.12 1469 .34 5415 1.48 38 46 151 63 30 17.87 1024 .38 7368(1) 理想解法

clc, clear
a=load('gj.txt'); %把原始数据保存在纯文本文件gj.txt中');  
b=zscore(a); %数据标准化
c=b;
cstar=max(c)    %求正理想解
c0=min(c)       %求负理想解
for i=1:30
    sstar(i)=norm(c(i,:)-cstar);   %求到正理想解的距离
    s0(i)=norm(c(i,:)-c0);       %求到负理想的距离
end
f=s0./(sstar+s0);
xlswrite('book3.xls',[sstar' s0' f'])  %把计算结果写到Excel文件中,便于将来做表
[sc,ind]=sort(f,'descend')       %求排序结果

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
乘风的头像乘风管理团队
上一篇 2022年3月27日 下午2:39
下一篇 2022年3月27日 下午2:50

相关推荐