matlab常用算法大全(数学建模)

matlab常用算法大全(数学建模)
matlab常用算法大全(数学建模)

本文总结了matlab常用的几个算法,希望对数学建模有帮助。

利用matlab编程FFD算法完成装箱问题:

设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。

建立box_main.m

function[box_count,b]=box_main(v) vmax=100;

sort(v,'descend');

n=length(v);

b=zeros(1,n);

for i=1:n

b(i)=vmax;

end

box_count=1;

for i=1:n

for j=1:box_count

if v(i)<=b(j) %可以放入 b(j)=b(j)-v(i);

break;

else%不可放入时

continue;

end

end

if j==box_count

box_count=box_count+1;

end

end

box_count=box_count-1;

end

主程序为:

v=[60 45 35 20 20 20];

[box_count,b]=box_main(v)

结果:

box_count =3 b =5 15 80 100 100 100

所以,使用的箱子数为3, 使用的箱子的剩余空间为5,15 ,80。

“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖品i 占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:

vi = { 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1}

wi = {80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1}。

解:

模型建立:用价值密度贪婪准则的方法设x=v/w,对x做正向排序,依次选取商品。

建立chaoshi.m

function

[item_count,y]=chaoshi(v,w,car) n=length(v);

x=zeros(n,3);

x(:,1)=v';

x(:,2)=w';

x(:,3)=v'./v';

x=sortrows(x,-3);

item_count=0;for i=1:n

if car>=x(i,2)

car=car-x(i,2);

item_count=item_count+1;

else

break;

end

end

y=zeros(item_count,2); for i=1:item_count

y(i,1)=x(i,1);

y(i,2)=x(i,2);

end

end

主程序为:

v= [220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1];

w= [80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1];

car=1000;

[item_count,y]=chaoshi(v,w,car);

y’;

结果为:

ans =

Columns 1 through 11

158 58 115 95 82 118 105 69 65 162 90

25 10 22 25 22 32 30 20 20 50 28

Columns 12 through 22

101 125 155 96 88 160 98 56 220 192 100

32 40 50 32 30 55 35 20 80 70 38

Columns 23 through 26

180 77 122 208

70 30 48 82

最大总价值为3095元,可装入体积为996

贪婪算法练习

练习题1:考虑1、8、9、11这四种面值的硬币,要找出币值24的零钱,怎么找能使硬币数最少?利用matlab编程求解。解:设

x

j

为二进制变量,如果硬币j被选中,则,

x

j

=1,否则

x

j

=0,

则找硬币问题的数学模型如下:

min

n

jj

1;

mn

jj

j

x

v 1

用贪婪算法求解,其MATLAB程序如下: function [n,x]=payback(v,y,m) [m,n]=size(y); for i=1:n for j=1:n

练习题2:利用matlab编程FFD算法完成下题:

设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。

function [nbox,p]=sjy(n,v,limitv) [m,n]=size(v);

w=limitv*ones(m,n); p=zeros(n); nbox=0; for i=1:n for j=1:i

if v(i)

continue; end

w(j+1)=w(j+1)-v(i);p(i,j+1)=1; nbox=nbox+1; end end

运行结果:

p =

1 0 0 0 0 0 0 1 0 0 0 0

1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0

练习题3:如果把选择策略从“选出一个下标最小的箱子并把物品ai放入该箱子中”(FF算法)改为选择最佳的箱子(已装载物品大小和最大的-这个称为best fit-BF最佳适应算法),再计算一次上题。比较两次求解的结果。

练习题4:背包问题:c=[10,5,15,7,6,18,3];w=[2,3,5,7,1,4,1];limitw=15;n=7;求最优解。

“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖练习题5:

品i占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:

vi = { 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 10 5, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1}

wi = {80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1}。模型的建立:设

x

j

为二进制变量,如果物品j被选中,则

j

=1,否则,

x

j

=0,如此可将本题转化为如

下优化模型:

max

n

jj

j

x

v1

s.t.

n

jWxx

wj

n

jj

j

,,2,1},1,0{;

1

模型的解决:对此优化问题,我们可以选用价值密度贪婪准则,从剩下的物品中选择可装入购物车的单位价值

w

vj

j,最大的物品,即按

w

vj

j非递增的次序装入物品,只要正被考虑的物

品装的进就装入小车。

其MA TLAB编程代码如下:

function [a1,b1]=sort1(n,a,b)%按单位价值排序 [m,n]=size(a); d=zeros(m,n); for k=1:n

d(k)=a(k)/b(k); end%单位价值 for h=1:n-1

for j=1:n-h%向后排序

if d(j)

t1=a(j);a(j)=a(j+1);a(j+1)=t1; t2=b(j);b(j)=b(j+1);b(j+1)=t2; t3=d(j);d(j)=d(j+1);d(j+1)=t

3;% end end end a1=a; b1=b;

function [p,c,w]=goodsinknapsack(n,limitw,v,w,x)%计算背包中物品数 cl=limitw;%cl为背包剩余可装载重量 p=0;

[m,z]=size(c); x=zeros(m,z);

[v,t]=sort1(n,c,w);%物品按单位价值排序 c=v;w=t; for i=1:n

if w(i)>cl break%待放入包的物品重量大于包的重量,跳出循环 else

x(i)=1;%x(i)为1时,物品i在包中 cl=cl-w(i);

p=p+1;%p记录放入背包物品的个数 end end

function knapsack(n,limitw,w,v) totalc=0;totalw=0;

[m,n]=size(w); %m 是w 的行数n 是w 的列数 x=zeros(m,n);

t=w;%记录原数组 k=c; y=x;

[p,c,w]=goodsinknapsack(n,limitw,v,w,x);%排序及计算装箱物品数 for j=1:p%装包的p件物品 for i=1:n%原n件物品

if (w(j)==t(i))&&(c(j)==k(i))%被选择的物品装箱 y(i)=1; end end end y

for i=1:n

totalc=totalc+k(i)*y(i);%背包的总价值 if y(i)==1

totalw=totalw+t(i);%背包所装载总体积 end end totalw totalc

v=[220,208,198,192,180,180,165,162,160,158,155,130,125,122,120,118,115,110,105,101,100,100 ,98,96,95,90,88,82,80,77,75,73,72,70,69,66,65,63,60,58,56,50,30,20,15,10,8,5,3,1];

w=[80,82,85,70,72,70,66,50,55,25,50,55,40,48,50,32,22,60,30,32,40,38,35,32,25,28,30,22,50,30, 45,30,60,50,20,65,20,25,30,10,20,25,15,10,10,10,4,4,2,1]; limitw=1000;n=50;

knapsack(n,limitw,w,v);运行结果为:y =

Columns 1 through 16

1 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 Columns 17 through 32

1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 Columns 33 through 48

0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 Columns 49 through 50

0 0

层次分析法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));

end

a=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);

end

function 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('请输入数据:');

end

CToT %输出

pause,

tempmatrix=zeros(x+1);

tempmatrix=AHP1(dim,CToT);

EigOfCri=tempmatrix(1:x);

ci1=tempmatrix(1+x);

EigOfCri

ci1

pause,

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)=tempmatrix(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);

CR

if CR>0.1

disp('组合一致性不通过,请重新评分')

return

end

%下面根据比较阵的结果进行组合

result=EigOfOpt*EigOfCri;

result

function 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;

end

end

eigVector=V(:,pos);

maxeig=D(pos,pos);

maxeig

dim

CI=(maxeig-dim)/(dim-1);

CR=CI/RI(dim);

if CR>0.1

disp('准则对目标影响度评分生成的矩阵不是一致阵,请重新评分') return

end

CI

%归一化

sum=0;

for h=1:dim

sum=sum+eigVector(h);

end

sum

pause,

for h=1:dim

eigVector(h)=eigVector(h)/sum;

end

f=[eigVector;CI];

多目标线性规划的若干解法及MATLAB实现

摘要:求解多目标线性规划的基本思想大都是将多目标问题转化为单目标规划,本文介绍了理想点法、线性加权和法、最大最小法、目标规划法[1],然后给出多目标线性规划的模糊数学解法[2],最后对每种解法给出例子,并用Matlab软件加以实现。

关键词:多目标线性规划 Matlab 模糊数学

Some solutions of Multi-objective linear

programming and realized by Matlab

Ding Hongfei

School of Mathematics, Southwest Jiaotong University ,Chengdu, 610031

Abstract:The basic ideas to solve Multi-objective linear programming are transforming the multi-objective problem into single-objective planning, This paper introduces the ideal point method, linear weighted and law, max-min method, the goal programming method, then given multi-objective linear programming Fuzzy mathematics method, finally give examples of each method and used Matlab software to achieve.

Key words: Multi-objective Linear Programming Matlab fuzzy mathematics

一.引言

多目标线性规划是多目标最优化理论的重要组成部分,由于多个目标之间的矛盾性和不可公度性,要求使所有目标均达到最优解是不可能的,因此多目标规划问题往往只是求其有效解(非劣解)。目前求解多目标线性规划问题有效解的方法,有理想点法、线性加权和法、最大最小法、目标规划法,然而这些方法对多目标偏好信息的确定、处理等方面的研究工作较少,本文也给出多目标线性规划的模糊数学解法。

二.多目标线性规划模型

多目标线性规划有着两个和两个以上的目标函数,且目标函数和约束条件全是线性函

数,其数学模型表示为:

111112212

21122221122max n n n n

r r r rn n

z c x c x c x z c x c x c x z c x c x c x =+++??=+++?? ??=+++? (1) 约束条件为:

1111221121122222112212,,,0

n n n n m m mn n m

n a x a x a x b a x a x a x b a x a x a x b

x x x +++≤??+++≤??

??+++≤?≥??

(2) 若(1)式中只有一个1122i i i in n z c x c x c x =+++ ,则该问题为典型的单目标线性规

划。我们记:()ij m n A a ?=,()ij r n C c ?=,12(,,,)T m b b b b = ,12(,,,)T

n x x x x = ,

12(,,,)T r Z Z Z Z = .

则上述多目标线性规划可用矩阵形式表示为:

max Z Cx =

约束条件:0Ax b

x ≤??≥?

(3)

三.MATLAB 优化工具箱常用函数[3]

在MA TLAB 软件中,有几个专门求解最优化问题的函数,如求线性规划问题的linprog 、求有约束非线性函数的fmincon 、求最大最小化问题的fminimax 、求多目标达到问题的fgoalattain 等,它们的调用形式分别为:

①.[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub)

f 为目标函数系数,A,b 为不等式约束的系数, Aeq,beq 为等式约束系数, lb,ub 为x 的下

限和上限, fval 求解的x 所对应的值。

算法原理:单纯形法的改进方法投影法 ②.[x,fval ]=fmincon(fun,x0,A,b,Aeq,beq,lb,ub )

fun 为目标函数的M 函数, x0为初值,A,b 为不等式约束的系数, Aeq,beq 为等式约束

系数, lb,ub 为x 的下限和上限, fval 求解的x 所对应的值。

算法原理:基于K-T (Kuhn-Tucker )方程解的方法。 ③.[x,fval ]=fminimax(fun,x0,A,b,Aeq,beq,lb,ub)

fun 为目标函数的M 函数, x0为初值,A,b 为不等式约束的系数, Aeq,beq 为等式约束

系数, lb,ub 为x 的下限和上限, fval 求解的x 所对应的值。

算法原理:序列二次规划法。

④.[x,fval ]=fgoalattain(fun,x0,goal,weight,A,b,Aeq,beq,lb,ub)

fun 为目标函数的M 函数, x0为初值,goal 变量为目标函数希望达到的向量值, wight

参数指定目标函数间的权重,A,b 为不等式约束的系数, Aeq,beq 为等式约束系数, lb,ub 为x 的下限和上限, fval 求解的x 所对应的值。

算法原理:目标达到法。

四.多目标线性规划的求解方法及MA TLAB 实现

4.1理想点法

在(3)中,先求解r 个单目标问题:min (),1,2,j x D

Z x j r ∈= ,设其最优值为*

j Z ,称

***

*12(,,)r Z Z Z Z = 为值域中的一个理想点,

因为一般很难达到。于是,在期望的某种度量之下,寻求距离*Z 最近的Z 作为近似值。一种最直接的方法是最短距离理想点法,构造评价函数

*21

()[]r

i

i i Z Z

Z ?==

-∑,

然后极小化[()]Z x ?,即求解

*2

1

min [()][()]r

i

i

x D

i Z x Z x Z

?∈==

-∑,

并将它的最优解*

x 作为(3)在这种意义下的“最优解”。

例1:利用理想点法求解

112212121212max ()32max ()43.2318210,0

f x x x f x x x s t x x x x x x =-+=+ +≤ +≤ ≥

解:先分别对单目标求解:

①求解1()f x 最优解的MA TLAB 程序为

>> f=[3;-2]; A=[2,3;2,1]; b=[18;10]; lb=[0;0]; >> [x,fval]=linprog(f,A,b,[],[],lb) 结果输出为:x = 0.0000 6.0000

fval = -12.0000

即最优解为12.

②求解2()f x 最优解的MA TLAB 程序为 >> f=[-4;-3]; A=[2,3;2,1]; b=[18;10]; lb=[0;0]; >> [x,fval]=linprog(f,A,b,[],[],lb) 结果输出为:x =3.0000 4.0000

fval =-24.0000

即最优解为24. 于是得到理想点:(12,24). 然后求如下模型的最优解

22

12121212min [()][()12][()24].2318210,0

x D

f x f x f x s t x x x x x x ?∈=-+- +≤ +≤ ≥

MATLAB 程序如下:

>> A=[2,3;2,1]; b=[18;10]; x0=[1;1]; lb=[0;0];

>> x=fmincon('((-3*x(1)+2*x(2)-12)^2+(4*x(1)+3*x(2)-24)^2)^(1/2)',x0,A,b,[],[],lb,[]) 结果输出为:x = 0.5268 5.6488

则对应的目标值分别为1()9.7172f x =,2()19.0536f x =.

4.2线性加权和法

在具有多个指标的问题中,人们总希望对那些相对重要的指标给予较大的权系数,因而将多目标向量问题转化为所有目标的加权求和的标量问题,基于这个现实,构造如下评价函数,即

1

min ()()r

i i x D

i Z x Z x ω∈==∑

将它的最优解*

x 作为(3)在线性加权和意义下的“最优解”。(i ω为加权因子,其选取的方法很多,有专家打分法、容限法和加权因子分解法等).

例2:对例1进行线性加权和法求解。(权系数分别取10.5ω=,20.5ω=) 解:构造如下评价函数,即求如下模型的最优解。

1212121212min{0.5(32)0.5(43)}.2318210,0

x x x x s t x x x x x x ?-+?-- +≤ +≤ ≥

MATLAB 程序如下:

>> f=[-0.5;-2.5; A=[2,3;2,1]; b=[18;10]; lb=[0;0]; >> x=linprog(f,A,b,[],[],lb)

结果输出为:x =0.0000 6.0000

则对应的目标值分别为1()12f x =,2()18f x =.

4.3最大最小法

在决策的时候,采取保守策略是稳妥的,即在最坏的情况下,寻求最好的结果,按照此想法,可以构造如下评价函数,即

1()max i i r

Z Z ?≤≤=

然后求解: 1[()]max ()i x D

x D i r

min Z x min Z x ?∈∈≤≤=

并将它的最优解*

x 作为(3)在最大最小意义下的“最优解”。

例3:对例1进行最大最小法求解:

解:MATLAB 程序如下,首先编写目标函数的M 文件:

function f=myfun12(x) f(1)=3*x(1)-2*x(2); f(2)=-4*x(1)-3*x(2);

>> x0=[1;1];A=[2,3;2,1];b=[18;10];lb=zeros(2,1); >> [x,fval]=fminimax('myfun12',x0,A,b,[],[],lb,[]) 结果输出为:x =0.0000 6.0000

fval = -12 -18 则对应的目标值分别为1()12f x =,2()18f x =.

4.4目标规划法

0()x D

Appr Z x Z ∈→ (4)

并把原多目标线性规划(3)min ()x D

Z x ∈称为和目标规划(4)相对应的多目标线性规划。

为了用数量来描述(4),我们在目标空间r E 中引进点0

()Z x Z 与之间的某种“距离”

*21/21

[()][(())]r

i i i i D Z x Z Z x Z λ==-∑,

这样(4)便可以用单目标0

min [()]x D

D Z x Z ∈,来描述了。

例4:对例1对进行目标规划法求解:

解:MATLAB 程序如下,首先编写目标函数的M 文件:

function f=myfun3(x) f(1)=3*x(1)-2*x(2); f(2)=-4*x(1)-3*x(2);

>> goal=[18,10]; weight=[18,10]; x0=[1,1]; A=[2,3;2,1]; b=[18,10]; lb=zeros(2,1); >> [x,fval]=fgoalattain('myfun3',x0,goal,weight,A,b,[],[],lb,[]) 结果输出为:x = 0.0000 6.0000

fval = -12 -18 则对应的目标值分别为1()12f x =,2()18f x =.

4.5模糊数学求解方法[4]

由于多目标线性规划的目标函数不止一个,要想求得某一个点作*

x ,使得所有的目标函数都达到各自的最大值,这样的绝对最优解通常是不存在的。因此,在具体求解时,需要采取折衷的方案,使各目标函数都尽可能的大。模糊数学规划方法可对其各目标函数进行模糊化处理,将多目标问题转化为单目标,从而求该问题的模糊最优解。 具体的方法为:先求在约束条件:0

Ax b x ≤??

≥? 下各个单目标,1,2,i Z i r = 的最大值*

i Z 和

最小值i Z -

,伸缩因子为*

,1,2,i i i d Z Z i r -

=-=

得到*1

112max 1,2,,1,2,,0,,,,0

n

ij j i i i j n kj j k

j n Z c x d Z d i r a x b k m

x x x λλλ===???-≥-,= ????≤=??≥≥??∑∑ (5)

式(5)是一个简单的单目标线性规划问题。

最后求得模糊最优解为:**

**1(,,)T

n Z

C x x = .

利用(5)式来求解的关键是对伸缩指标的i d 确定,i d 是我们选择的一些常数,由于在多目标线性规划中,各子目标难以同时达到最大值*

i Z ,但是可以确定的是各子目标的取值范围,它满足:*

i i i Z Z Z -

≤≤,所以,伸缩因子为i d 可以按如下取值:*

i i i d Z Z -

=-.

例5:对例1进行模糊数学方法求解:

解:①分别求得1()f x ,2()f x 在约束条件下的最大值为:*

(12,24)Z =.

②分别求得1()f x ,2()f x 在约束条件下的最小值为:(15,0)Z -=-. 伸缩因子为(27,24)i d = 然后求如下模型的最优解:

1212121212max .322715432402318210,,0

Z s t x x x x x x x x x x λ

λλλ= -+-≥- +-≥ +≤ +≤ ≥

MATLAB 程序如下:

>>f=[0;0;-1]; A=[3,-2,27;-4,-3,24;2,3,0;2,1,0]; b=[15;0;18;10]; lb=[0;0;0] >> [x,fval]=linprog(f,A,b,[],[],lb)

结果输出为:x = 1.0253 5.3165 0.8354

fval =-0.8354 于是原多目标规划问题的模糊最优值为**

(7.5571,20.0507)Z =.

五.结论

多目线性标规划是优化问题的一种,由于其存在多个目标,要求各目标同时取得较优的值,使得求解的方法与过程都相对复杂. 通过将目标函数进行模糊化处理,可将多目标问题转化为单目标,借助工具软件,从而达到较易求解的目标。

参考文献:

[1] 林锉云,董加礼. 多目标优化的方法与理论[M]. 长春:吉林教育出版社,1992.8

[2] 宋业新,胡伟文,张建军. 具有模糊系数约束的多目标线性规划[J]. 海军工程大学学报, 2004,16(1):40-44.

[3] 龚纯,王正林. 精通MATLAB 最优化计算[M]电子工业出版社,2009

[4] 王嫣,张志宏. 模糊线性规划的最优解分析[J]. 北京工商大学学报(自然科学版), 2007,25(5):67-69.

粒子群算法(1)----粒子群算法简介

二、粒子群算法的具体表述

上面罗嗦了半天,那些都是科研工作者写论文的语气,不过,PSO的历史就像上面说的那样。下面通俗的解释PSO算法。

PSO算法就是模拟一群鸟寻找食物的过程,每个鸟就是PSO中的粒子,也就是我们需要求解问题的可能解,这些鸟在寻找食物的过程中,不停改变自己在空中飞行的位置与速度。大家也可以观察一下,鸟群在寻找食物的过程中,开始鸟群比较分散,逐渐这些鸟就会聚成一群,这个群忽高忽低、忽左忽右,直到最后找到食物。这个过程我们转化为一个数学问题。寻找函数y=1-cos(3*x)*exp(-x)的在[0,4]最大值。该函数的图形如下:

当x=0.9350-0.9450,达到最大值y=1.3706。为了得到该函数的最大值,我们在[0,4]之间随机的洒一些点,为了演示,我们放置两个点,并且计算这两个点的函数值,同时给这两个点设置在[0,4]之间的一个速度。下面这些点就会按照一定的公式更改自己的位置,到达新位置后,再计算这两个点的值,然后再按照一定的公式更新自己的位置。直到最后在y=1.3706这个点停止自己的更新。这个过程与粒子群算法作为对照如下:这两个点就是粒子群算法中的粒子。

该函数的最大值就是鸟群中的食物

计算两个点函数值就是粒子群算法中的适应值,计算用的函数就是粒子群算法中的适应度函数。

更新自己位置的一定公式就是粒子群算法中的位置速度更新公式。

下面演示一下这个算法运行一次的大概过程:

第一次初始化

第一次更新位置

第二次更新位置

数学建模算法分类

数学模型按照不同的分类标准有许多种类: 1.按照模型的数学方法分,有几何模型,图论模型,微分方程模型。概率模型,最优控制模型,规划论模型,马氏链模型。 2.按模型的特征分,有静态模型和动态模型,确定性模型和随机模型,离散模型和连续性模型,线性模型和非线性模型。 3.按模型的应用领域分,有人口模型,交通模型,经济模型,生态模型,资源模型。环境模型。 4.按建模的目的分,有预测模型,优化模型,决策模型,控制模型等。 5.按对模型结构的了解程度分,有白箱模型,灰箱模型,黑箱模型。 数学建模的十大算法: 蒙特卡洛算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,比较好用的算法。) 数据拟合、参数估计、插值等数据处理算法(比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用matlab作为工具。) 线性规划、整数规划、多元规划、二次规划等规划类问题(建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用lingo、lingdo软件实现)图论算法(这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备。) 动态规划、回溯搜索、分治算法、分支定界等计算机算法(这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中) 最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法(这些问题时用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需谨慎使用) 网格算法和穷举法(当重点讨论模型本身而情史算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具) 一些连续离散化方法(很多问题都是从实际来的,数据可以是连续的,而计算机只认得是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的。 数值分析算法(如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用。) 图像处理算法(赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用matlab来处理问题。) 数学建模方法 统计:1.预测与预报2.评价与决策3.分类与判别4.关联与因果 优化:5.优化与控制 预测与预报 ①灰色预测模型(必须掌握) 满足两个条件可用: a数据样本点个数少,6-15个 b数据呈现指数或曲线的形式 ②微分方程预测(备用) 无法直接找到原始数据之间的关系,但可以找到原始数据变化速度之间的关系,通过公式

数学建模算法动态规划

第四章动态规划 §1 引言 1.1 动态规划的发展及研究内容 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初R. E. Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优性原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,逐个求解,创立了解决这类过程优化问题的新方法—动态规划。1957年出版了他的名著《Dynamic Programming》,这是该领域的第一本著作。 动态规划问世以来,在经济管理、生产调度、工程技术和最优控制等方面得到了广泛的应用。例如最短路线、库存管理、资源分配、设备更新、排序、装载等问题,用动态规划方法比用其它方法求解更为方便。 虽然动态规划主要用于求解以时间划分阶段的动态过程的优化问题,但是一些与时间无关的静态规划(如线性规划、非线性规划),只要人为地引进时间因素,把它视为多阶段决策过程,也可以用动态规划方法方便地求解。 应指出,动态规划是求解某类问题的一种方法,是考察问题的一种途径,而不是一种特殊算法(如线性规划是一种算法)。因而,它不象线性规划那样有一个标准的数学表达式和明确定义的一组规则,而必须对具体问题进行具体分析处理。因此,在学习时,除了要对基本概念和方法正确理解外,应以丰富的想象力去建立模型,用创造性的技巧去求解。 例1 最短路线问题 下面是一个线路网,连线上的数字表示两点之间的距离(或费用)。试寻求一条由A 到G距离最短(或费用最省)的路线。 例2 生产计划问题 工厂生产某种产品,每单位(千件)的成本为1(千元),每次开工的固定成本为3(千元),工厂每季度的最大生产能力为6(千件)。经调查,市场对该产品的需求量第一、二、三、四季度分别为2,3,2,4(千件)。如果工厂在第一、二季度将全年的需求都生产出来,自然可以降低成本(少付固定成本费),但是对于第三、四季度才能上市的产品需付存储费,每季每千件的存储费为0.5(千元)。还规定年初和年末这种产品均无库存。试制定一个生产计划,即安排每个季度的产量,使一年的总费用(生产成本和存储费)最少。 1.2 决策过程的分类 根据过程的时间变量是离散的还是连续的,分为离散时间决策过程(discrete-time decision process)和连续时间决策过程(continuous-time decision process);根据过程的演变是确定的还是随机的,分为确定性决策过程(deterministic decision process)和随

数学建模算法大全层次分析法

第八章 层次分析法 层次分析法(Analytic Hierarchy Process ,简称AHP )是对一些较为复杂、较为模糊的问题作出决策的简易方法,它特别适用于那些难于完全定量分析的问题。它是美国运筹学家T. L. Saaty 教授于70年代初期提出的一种简便、灵活而又实用的多准则决策方法。 §1 层次分析法的基本原理与步骤 人们在进行社会的、经济的以及科学管理领域问题的系统分析中,面临的常常是一个由相互关联、相互制约的众多因素构成的复杂而往往缺少定量数据的系统。层次分析法为这类问题的决策和排序提供了一种新的、简洁而实用的建模方法。 运用层次分析法建模,大体上可按下面四个步骤进行: (i )建立递阶层次结构模型; (ii )构造出各层次中的所有判断矩阵; (iii )层次单排序及一致性检验; (iv )层次总排序及一致性检验。 下面分别说明这四个步骤的实现过程。 1.1 递阶层次结构的建立与特点 应用AHP 分析决策问题时,首先要把问题条理化、层次化,构造出一个有层次的结构模型。在这个模型下,复杂问题被分解为元素的组成部分。这些元素又按其属性及关系形成若干层次。上一层次的元素作为准则对下一层次有关元素起支配作用。这些层次可以分为三类: (i )最高层:这一层次中只有一个元素,一般它是分析问题的预定目标或理想结果,因此也称为目标层。 (ii )中间层:这一层次中包含了为实现目标所涉及的中间环节,它可以由若干个层次组成,包括所需考虑的准则、子准则,因此也称为准则层。 (iii )最底层:这一层次包括了为实现目标可供选择的各种措施、决策方案等,因此也称为措施层或方案层。 递阶层次结构中的层次数与问题的复杂程度及需要分析的详尽程度有关,一般地层次数不受限制。每一层次中各元素所支配的元素一般不要超过9个。这是因为支配的元素过多会给两两比较判断带来困难。 下面结合一个实例来说明递阶层次结构的建立。 例1 假期旅游有1P 、2P 、3P 3个旅游胜地供你选择,试确定一个最佳地点。 在此问题中,你会根据诸如景色、费用、居住、饮食和旅途条件等一些准则去反复比较3个侯选地点。可以建立如下的层次结构模型。 目标层O 选择旅游地 准则层C 景色 费用 居住 饮食 旅途 措施层P 1P 2P 3P 1.2 构造判断矩阵 层次结构反映了因素之间的关系,但准则层中的各准则在目标衡量中所占的比重并不一定相同,在决策者的心目中,它们各占有一定的比例。 在确定影响某因素的诸因子在该因素中所占的比重时,遇到的主要困难是这些比重常常不易定量化。此外,当影响某因素的因子较多时,直接考虑各因子对该因素有多大程度的影响时,常常会因考虑不周全、顾此失彼而使决策者提出与他实际认为的

MATLAB及在数学建模中的应用

第1讲MATLAB及 在数学建模中的应用 ? MatLab简介及基本运算?常用计算方法 ?应用实例

一、 MatLab简介及基本运算 1.1 MatLab简介 1.2 MatLab界面 1.3 MatLab基本数学运算 1.4 MatLab绘图

1.1 MatLab简介?MATLAB名字由MATrix和 LABoratory 两词组成。20世纪七十年代后期, 美国新墨西哥大学计算机科学系主任Cleve Moler教授为减轻学生编程负担,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。

?经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。

?1997年春,MATLAB5.0版问世,紧接着是5.1、5.2、5.3、6.0、6.1、6.5、7.0版。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。 ?20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。

?MATLAB具有用法简易、可灵活运用、程式结构强又兼具延展性。以下为其几个特色: ①可靠的数值运算和符号计算。在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函 数可使用。 ②强大的绘图功能。 MATLAB可以绘制各种图形,包括二维和三维图形。 ③简单易学的语言体系。 ④为数众多的应用工具箱。

数学建模常用方法

数学建模常用方法 建模常用算法,仅供参考: 1、蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必 用的方法) 2、数据拟合、参数估计、插值等数据处理算法(比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用M a t l a b作为工具) 3、线性规划、整数规划、多元规划、二次规划等规划类问题(建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通 常使用L i n d o、L i n g o软件实现) 4、图论算法(这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备) 5、动态规划、回溯搜索、分治算法、分支定界等计算机算法(这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中) 6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法(这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用) 7、网格算法和穷举法(网格算法和穷举法都是暴力搜索最优点的算法,在很多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种 暴力方案,最好使用一些高级语言作为编程工具) 8、一些连续离散化方法(很多问题都是实际来的,数据可以是连续的,而计 算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的) 9、数值分析算法(如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用) 10、图象处理算法(赛题中有一类问题与图形有关,即使与图形无关,论文 中也应该要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用M a t l a b进行处理) 一、在数学建模中常用的方法: 1.类比法 2.二分法 3.量纲分析法 4.差分法 5.变分法 6.图论法 7.层次分析法 8.数据拟合法 9.回归分析法 10.数学规划(线性规划、非线性规划、整数规划、动态规划、目标规划) 11.机理分析 12.排队方法

数学建模十种常用算法

数学建模有下面十种常用算法, 可供参考: 1.蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问 题的算法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法) 2.数据拟合、参数估计、插值等数据处理算法(比赛中通常会遇到大量的数 据需要处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具) 3.线性规划、整数规划、多元规划、二次规划等规划类问题(建模竞赛大多 数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo软件实现) 4.图论算法(这类算法可以分为很多种,包括最短路、网络流、二分图等算 法,涉及到图论的问题可以用这些方法解决,需要认真准备) 5.动态规划、回溯搜索、分治算法、分支定界等计算机算法(这些算法是算 法设计中比较常用的方法,很多场合可以用到竞赛中) 6.最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法(这些 问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用) 7.网格算法和穷举法(网格算法和穷举法都是暴力搜索最优点的算法,在很 多竞赛题中有应用,当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具) 8.一些连续离散化方法(很多问题都是实际来的,数据可以是连续的,而计 算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的) 9.数值分析算法(如果在比赛中采用高级语言进行编程的话,那一些数值分 析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用) 10.图象处理算法(赛题中有一类问题与图形有关,即使与图形无关,论文中 也应该要不乏图片的,这些图形如何展示以及如何处理就是需要解决的问题,通常使用Matlab 进行处理)

数学建模matlab例题参考及练习

数学实验与数学建模 实验报告 学院: 专业班级: 姓名: 学号: 完成时间:年月日

承 诺 书 本人承诺所呈交的数学实验与数学建模作业都是本人通过学习自行进行编程独立完成,所有结果都通过上机验证,无转载或抄袭他人,也未经他人转载或抄袭。若承诺不实,本人愿意承担一切责任。 承诺人: 年 月 日 数学实验学习体会 (每个人必须要写字数1200字以上,占总成绩的20%) 练习1 一元函数的图形 1. 画出x y arcsin =的图象. 2. 画出x y sec =在],0[π之间的图象. 3. 在同一坐标系中画出x y =,2x y =,3 x y = ,3x y =,x y =的图象. 4. 画出3 2 3 2)1()1()(x x x f + +-=的图象,并根据图象特点指出函数)(x f 的奇偶性. 5. 画出)2ln(1++=x y 及其反函数的图象. 6. 画出3 21+=x y 及其反函数的图象.

练习2 函数极限 1.计算下列函数的极限. (1) x x x 4 cos 1 2 sin 1 lim 4 - + π → . 程序: sym x; f=(1+sin(2*x))/(1-cos(4*x)); limit(f,x,pi/4) 运行结果: lx21 ans = 1 (2). 程序: sym x; f=(1+cos(x))^(3*sec(x)); limit(f,x,pi/2) 运行结果: lx22 ans = exp(3) (3) 2 2 ) 2 ( sin ln lim x x x - π π → . 程序: sym x; f=log(sin(x))/(pi-2*x)^2; limit(f,x,pi/2) 运行结果: lx23 ans = -1/8 (4) 2 1 2 lim x x e x →. 程序: x x x sec 3 2 ) cos 1( lim+ π →

插值拟合数学建模算法

1 20/"geometry.cfg" 20/"natbib.cfg" 20/"bblopts.cfg" 20/"english.cfg"20/"____________.aux"

插值算法February3,2020

需要根据已知的函数点进行数据,模型的处理和分析,有时候现有的数据是极少的,不足以分析支撑的比较,这时候需要数学的方法,模拟产生一些洗呢但又比较靠谱的值来满足需求。 一维插值问题多项式插值分段插值 拉格朗日插值多项式公式 L n(x)= n ∑ k=0 y k ωn+1(x) (x?x k)ω′ n+! (x k) 其中ωn+1(x)=(x?x0)(x?x1)....(x?x n) 龙格现象(runge phenomenon)高次插值会产生龙格现象,在两端处的波动计大,产生明显的震荡.在不熟悉曲线的运动趋势下,不要轻易使用高次插值. 采用分段低次插值的思路:在随便两个点之间,采用分段二次或者三次插值的方法/又叫分段抛物插值. 牛顿插值法:f(x)=f(x0)+f|x0,x1|(x?x0)+f|x0,x1,x2|(x?x0)(x?x1)+.....差商的定义:称f|x0,x k|=f(x k)?f(x0) x k?x0 两种插值的区别在于没有体现在导数的一致上 埃尔米特插值法:要求节点处的函数值相同,同时要求对应的导数值也相同分段三次埃尔米特插值法: matlab里有内存的函数pchip(x,y,new_w)x是已知样本点的横坐标,y是已知样本点的纵坐标,new_x是要插入的对应的横坐标 n维数据的插值了解:p=interpn(x1,x2,...xn,y,new_x1,newx_2,....newx_n,method) x1,x2,x3...是样本点的横坐标 y是样本点的纵坐标 输入的new是要输入点的横坐标 method是要插值的方法拟合算法 拟合和插值的区别:找到一个确定的曲线保证误差足够小,不要求曲线经过每一个样本点,只要足够接近就可以.

数学建模方法详解种最常用算法

数学建模方法详解--三种最常用算法 一、层次分析法 层次分析法[1] (analytic hierarchy process,AHP)是美国著名的运筹学家T.L.Saaty教授于20世纪70年代初首先提出的一种定性与定量分析相结合的多准则决策方法[2,3,4].该方法是社会、经济系统决策的有效工具,目前在工程计划、资源分配、方案 排序、政策制定、冲突问题、性能评价等方面都有广泛的应用. (一) 层次分析法的基本原理 层次分析法的核心问题是排序,包括递阶层次结构原理、测度原理和排序原理[5].下面分别予以介绍. 1.递阶层次结构原理 一个复杂的结构问题可以分解为它的组成部分或因素,即目标、准则、方案等.每一个因素称为元素.按照属性的不同把这 些元素分组形成互不相交的层次,上一层的元素对相邻的下一层的全部或部分元素起支配作用,形成按层次自上而下的逐层支配 关系.具有这种性质的层次称为递阶层次. 2.测度原理 决策就是要从一组已知的方案中选择理想方案,而理想方案一般是在一定的准则下通过使效用函数极大化而产生的.然而对 于社会、经济系统的决策模型来说,常常难以定量测度.因此,层次分析法的核心是决策模型中各因素的测度化.3.排序原理

层次分析法的排序问题,实质上是一组元素两两比较其重要性,计算元素相对重要性的测度问题.(二) 层次分析法的基本步骤 层次分析法的基本思路与人对一个复杂的决策问题的思维、判断过程大体上是一致的[1] . 1.成对比较矩阵和权向量 为了能够尽可能地减少性质不同的诸因素相互比较的困难,提高结果的准确度.T .L .Saaty 等人的作法,一是不把所有因 素放在一起比较,而是两两相互对比,二是对比时采用相对尺度. 假设要比较某一层n 个因素n C C ,,1对上层一个因素O 的影响,每次取两个因素i C 和j C ,用ij a 表示i C 和j C 对O 的影响之比, 全部比较 结 果 可 用 成 对 比 较 阵 1 ,0,ij ij ji n n ij A a a a a 表示,A 称为正互反矩阵.一般地,如果一个正互反阵 A 满足: , ij jk ik a a a ,,1,2,,i j k n (1) 则A 称为一致性矩阵,简称一致阵.容易证明n 阶一致阵A 有下列性质: ①A 的秩为1,A 的唯一非零特征根为n ;②A 的任一列向量都是对应于特征根 n 的特征向量. 如果得到的成对比较阵是一致阵,自然应取对应于特征根n 的、归一化的特征向量(即分量之和为1)表示诸因素n C C ,, 1对 上层因素O 的权重,这个向量称为权向量.如果成对比较阵A 不是一致阵,但在不一致的容许范围内,用对应于A 最大特征根(记

matlab在数学建模中的应用

Matlab在数学建模中的应用 数学建模是通过对实际问题的抽象和简化,引入一些数学符号、变量和参数,用数学语言和方法建立变量参数间的内在关系,得出一个可以近似刻画实际问题的数学模型,进而对其进行求解、模拟、分析检验的过程。它大致分为模型准备、模型假设、模型构成、模型求解、模型分析、模型检验及应用等步骤。这一过程往往需要对大量的数据进行分析、处理、加工,建立和求解复杂的数学模型,这些都是手工计算难以完成的,往往在计算机上实现。在目前用于数学建模的软件中,matlab 强大的数值计算、绘图以及多样化的工具箱功能,能够快捷、高效地解决数学建模所涉及的众多领域的问题,倍受数学建模者的青睐。 1 Matlab在数学建模中的应用 下面将联系数学建模的几个环节,结合部分实例,介绍matlab 在数学建模中的应用。 1.1 模型准备阶段 模型准备阶段往往需要对问题中的给出的大量数据或图表等进行分析,此时matlab的数据处理功能以及绘图功能都能得到很好的应用。 1.1.1 确定变量间关系 例1 已知某地连续20年的实际投资额、国民生产总值、物价指数的统计数据(见表),由这些数据建立一个投资额模型,根据对未来国民生产总值及物价指数的估计,预测未来的投资额。

表1 实际投资额、国民生产总值、物价指数的统计表 记该地区第t年的投资为z(t),国民生产总值为x(t),物价指数为y(t)。 赋值: z=[90.9 97.4 113.5 125.7 122.8 133.3 149.3 144.2 166.4 195 229.8 228.7 206.1 257.9 324.1 386.6 423 401.9 474.9 424.5]' x=[596.7 637.7 691.1 756 799 873.4 944 992.7 1077.6 1185.9 1326.4 1434.2 1549.2 1718 1918.3 2163.9 2417.8 2631.6 2954.7 3073]' y=[0.7167 0.7277 0.7436 0.7676 0.7906 0.8254 0.8679 0.9145 0.9601 1 1.0575 1.1508 1.2579 1.3234 1.4005 1.5042 1.6342 1.7842 1.9514 2.0688]' 先观察x与z之间,y与z之间的散点图 plot(x,z,'*') plot(y,z,'*') 由散点图可以看出,投资额和国民生产总值与物价指数都近似呈

数学建模算法大全排队论

第六章排队论模型 排队论起源于1909年丹麦电话工程师A. K.爱尔朗的工作,他对电话通话拥挤问题进行了研究。1917年,爱尔朗发表了他的著名的文章—“自动电话交换中的概率理论的几个问题的解决”。排队论已广泛应用于解决军事、运输、维修、生产、服务、库存、医疗卫生、教育、水利灌溉之类的排队系统的问题,显示了强大的生命力。 排队是在日常生活中经常遇到的现象,如顾客到商店购买物品、病人到医院看病常常要排队。此时要求服务的数量超过服务机构(服务台、服务员等)的容量。也就是说,到达的顾客不能立即得到服务,因而出现了排队现象。这种现象不仅在个人日常生活中出现,电话局的占线问题,车站、码头等交通枢纽的车船堵塞和疏导,故障机器的停机待修,水库的存贮调节等都是有形或无形的排队现象。由于顾客到达和服务时间的随机性。可以说排队现象几乎是不可避免的。 排队论(Queuing Theory)也称随机服务系统理论,就是为解决上述问题而发展的一门学科。它研究的内容有下列三部分: (i)性态问题,即研究各种排队系统的概率规律性,主要是研究队长分布、等待时间分布和忙期分布等,包括了瞬态和稳态两种情形。 (ii)最优化问题,又分静态最优和动态最优,前者指最优设计。后者指现有排队系统的最优运营。 (iii)排队系统的统计推断,即判断一个给定的排队系统符合于那种模型,以便根据排队理论进行分析研究。 这里将介绍排队论的一些基本知识,分析几个常见的排队模型。 §1 基本概念 1.1 排队过程的一般表示 下图是排队论的一般模型。 凡要求服务的对象统称为顾客,为顾客服务的人或物称为服务员,由顾客和服务员组成服务系统。对于一个服务系统来说,如果服务机构过小,以致不能满足要求服务的众多顾客的需要,那么就会产生拥挤现象而使服务质量降低。因此,顾客总希望服务机构越大越好,但是,如果服务机构过大,人力和物力方面的开支也就相应增加,从而会造成浪费,因此研究排队模型的目的就是要在顾客需要和服务机构的规模之间进行权衡决策,使其达到合理的平衡。 1.2 排队系统的组成和特征 一般的排队过程都由输入过程、排队规则、服务过程三部分组成,现分述如下: 1.2.1 输入过程 输入过程是指顾客到来时间的规律性,可能有下列不同情况: (i)顾客的组成可能是有限的,也可能是无限的。 (ii)顾客到达的方式可能是一个—个的,也可能是成批的。 (iii)顾客到达可以是相互独立的,即以前的到达情况对以后的到达没有影响;否则是相关的。 (iv)输入过程可以是平稳的,即相继到达的间隔时间分布及其数学期望、方差等数字特征都与时间无关,否则是非平稳的。

matlab数学建模实例

第四周 3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj() for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769; if (abs(x1)<1.0e-8) x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20; k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1; end x1 k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0); k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1; end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

数学建模常用算法模型

数学模型的分类 按模型的数学方法分: 几何模型、图论模型、微分方程模型、概率模型、最优控制模型、规划论模型、马氏链模型等 按模型的特征分: 静态模型和动态模型,确定性模型和随机模型,离散模型和连续性模型,线性模型和非线性模型等 按模型的应用领域分: 人口模型、交通模型、经济模型、生态模型、资源模型、环境模型等。 按建模的目的分: 预测模型、优化模型、决策模型、控制模型等 一般研究数学建模论文的时候,是按照建模的目的去分类的,并且是算法往往也和建模的目的对应 按对模型结构的了解程度分: 有白箱模型、灰箱模型、黑箱模型等 比赛尽量避免使用,黑箱模型、灰箱模型,以及一些主观性模型。 按比赛命题方向分: 国赛一般是离散模型和连续模型各一个,2016美赛六个题目(离散、连续、运筹学/复杂网络、大数据、环境科学、政策) 数学建模十大算法 1、蒙特卡罗算法 (该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算法,同时可以通过模拟可以来检验自己模型的正确性,比较好用的算法) 2、数据拟合、参数估计、插值等数据处理算法 (比赛中通常会遇到大量的数据需要处理,而处理数据的关键就在于这些算法,通常使用Matlab作为工具) 3、线性规划、整数规划、多元规划、二次规划等规划类问题 (建模竞赛大多数问题属于最优化问题,很多时候这些问题可以用数学规划算法来描述,通常使用Lindo、Lingo软件实现) 4、图论算法 (这类算法可以分为很多种,包括最短路、网络流、二分图等算法,涉及到图论的问题可以用这些方法解决,需要认真准备)

5、动态规划、回溯搜索、分治算法、分支定界等计算机算法 (这些算法是算法设计中比较常用的方法,很多场合可以用到竞赛中) 6、最优化理论的三大非经典算法:模拟退火法、神经网络、遗传算法 (这些问题是用来解决一些较困难的最优化问题的算法,对于有些问题非常有帮助,但是算法的实现比较困难,需慎重使用) 7、网格算法和穷举法 (当重点讨论模型本身而轻视算法的时候,可以使用这种暴力方案,最好使用一些高级语言作为编程工具) 8、一些连续离散化方法 (很多问题都是从实际来的,数据可以是连续的,而计算机只认的是离散的数据,因此将其离散化后进行差分代替微分、求和代替积分等思想是非常重要的) 9、数值分析算法 (如果在比赛中采用高级语言进行编程的话,那一些数值分析中常用的算法比如方程组求解、矩阵运算、函数积分等算法就需要额外编写库函数进行调用) 10、图象处理算法 (赛题中有一类问题与图形有关,即使与图形无关,论文中也应该要不乏图片的这些图形如何展示,以及如何处理就是需要解决的问题,通常使用Matlab进行处理) 算法简介 1、灰色预测模型(必掌握) 解决预测类型题目。由于属于灰箱模型,一般比赛期间不优先使用。 满足两个条件可用: ①数据样本点个数少,6-15个 ②数据呈现指数或曲线的形式 2、微分方程预测(高大上、备用) 微分方程预测是方程类模型中最常见的一种算法。近几年比赛都有体现,但其中的要求,不言而喻。学习过程中 无法直接找到原始数据之间的关系,但可以找到原始数据变化速度之间的关系,通过公式推导转化为原始数据的关系。 3、回归分析预测(必掌握) 求一个因变量与若干自变量之间的关系,若自变量变化后,求因变量如何变化; 样本点的个数有要求: ①自变量之间协方差比较小,最好趋近于0,自变量间的相关性小; ②样本点的个数n>3k+1,k为自变量的个数;

MATLAB及其在数学建模中的应用

Modeling and Simulation 建模与仿真, 2015, 4(3), 61-71 Published Online August 2015 in Hans. https://www.360docs.net/doc/0714676215.html,/journal/mos https://www.360docs.net/doc/0714676215.html,/10.12677/mos.2015.43008 Study of MATLAB and Its Application in Mathematical Modeling Chuanqi Qin, Ting Wang, Yuanfeng Jin School of Science, Yanbian University, Yanji Jilin Email: yfkim@https://www.360docs.net/doc/0714676215.html, Received: Jul. 22nd, 2015; accepted: Aug. 11th, 2015; published: Aug. 18th, 2015 Copyright ? 2015 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). https://www.360docs.net/doc/0714676215.html,/licenses/by/4.0/ Abstract This article firstly introduces the development and the features of MATLAB software. And then the concept and the process of mathematical modeling are explained. After, the article briefly intro-duces some MATLAB solution methods of mathematical modeling problems, giving several in-stances of some methods. At the last of this article, through a relatively complete example, it fo-cuses on the application of MATLAB in mathematical modeling. It has been found that the applica-tion of MATLAB in mathematical modeling can improve the efficiency and quality of mathematical modeling, enrich the means and methods of mathematical modeling, and play a very important role in the teaching of mathematical modeling course. Keywords MATLAB, Mathematical Modeling, Mathematic Model MATLAB及其在数学建模中的应用 秦川棋,王亭,金元峰 延边大学理学院,吉林延吉 Email: yfkim@https://www.360docs.net/doc/0714676215.html, 收稿日期:2015年7月22日;录用日期:2015年8月11日;发布日期:2015年8月18日

数学建模方法详解--三十四种常用算法

数学建模方法详解--三十四种常用算法 目录 一、主成分分析法 (2) 二、因子分析法 (5) 三、聚类分析 (9) 四、最小二乘法与多项式拟合 (16) 五、回归分析(略) (22) 六、概率分布方法(略) (22) 七、插值与拟合(略) (22) 八、方差分析法 (23) 九、逼近理想点排序法 (28) 十、动态加权法 (29) 十一、灰色关联分析法 (31) 十二、灰色预测法 (33) 十三、模糊综合评价 (35) 十四、隶属函数的刻画(略) (37) 十五、时间序列分析法 (38) 十六、蒙特卡罗(MC)仿真模型 (42) 十七、BP神经网络方法 (44) 十八、数据包络分析法(DEA) (51) 十九、多因素方差分析法()基于SPSS) (54) 二十、拉格朗日插值 (70) 二十一、回归分析(略) (75) 二十二、概率分布方法(略) (75) 二十三、插值与拟合(略) (75) 二十四、隶属函数的刻画(参考《数学建模及其方法应用》) (75) 二十五、0-1整数规划模型(参看书籍) (75) 二十六、Board评价法(略) (75) 二十七、纳什均衡(参看书籍) (75) 二十八、微分方程方法与差分方程方法(参看书籍) (75) 二十九、莱斯利离散人口模型(参看数据) (75) 三十、一次指数平滑预测法(主要是软件的使用) (75) 三十一、二次曲线回归方程(主要是软件的使用) (75) 三十二、成本-效用分析(略) (75) 三十三、逐步回归法(主要是软件的使用) (75) 三十四、双因子方差分析(略) (75)

一、主成分分析法 一)、主成分分析法介绍: 主成分分析(principal components analysis,PCA)又称:主分量分析,主成分回归分析法。旨在利用降维的思想,把多指标转化为少数几个综合指标。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但是,这也不是一定的,要视具体应用而定。 二)、主成分分析法的基本思想: 在实证问题研究中,为了全面、系统地分析问题,我们必须考虑众多影响因素。这些涉及的因素一般称为指标,在多元统计分析中也称为变量。因为每个变量都在不同程度上反映了所研究问题的某些信息,并且指标之间彼此有一定的相关性,因而所得的统计数据反映的信息在一定程度上有重叠。在用统计方法研究多变量问题时,变量太多会增加计算量和增加分析问题的复杂性,人们希望在进行定量分析的过程中,涉及的变量较少,得到的信息量较多。主成分分析正是适应这一要求产生的,是解决这类题的理想工具。 同样,在科普效果评估的过程中也存在着这样的问题。科普效果是很难具体量化的。在实际评估工作中,我们常常会选用几个有代表性的综合指标,采用打分的方法来进行评估,故综合指标的选取是个重点和难点。如上所述,主成分分析法正是解决这一问题的理想工具。因为评估所涉及的众多变量之间既然有一定的相关性,就必然存在着起支配作用的因素。根据这一点,通过对原始变量相关矩阵内部结构的关系研究,找出影响科普效果某一要素的几个综合指标,使综合指标为原来变量的线性拟合。这样,综合指标不仅保留了原始变量的主要信息,且彼此间不相关,又比原始变量具有某些更优越的性质,就使我们在研究复杂的科普效果评估问题时,容易抓住主要矛盾。上述想法可进一步概述为:设某科普效果评估要素涉及个指标,这指标构成的维随机向量为。对作正交变换,令,其中为正交阵,的各分量是不相关的,使得的各分量在某个评估要素中的作用容易解释,这就使得我们有可能从主分量中选择主要成分,削除对这一要素影响微弱的部分,通过对主分量的重点分析,达到对原始变量进行分析的目的。的各分量是原始变量线性组合,不同的分量表示原始变量之间不同的影响关系。由于这些基本关系很可能与特定的作用过程相联系,主成分分析使我们能从错综复杂的科普评估要素的众多指标中,找出一些主要成分,以便有效地利用大量统计数据,进行科普效果评估分析,使我们在研究科普效果评估问题中,可能得到深层次的一些启发,把科普效果评估研究引向深入。 例如,在对科普产品开发和利用这一要素的评估中,涉及科普创作人数百万人、科普作品发行量百万人、科普产业化(科普示范基地数百万人)等多项指标。经过主成分分析计算,最后确定个或个主成分作为综合评价科普产品利用和开发的综合指标,变量数减少,并达到一定的可信度,就容易进行科普效果的评估。 三)、主成分分析法的数学模型: 其中:

matlab数学建模实例

第四周3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj()for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769;if (abs(x1)<1.0e-8)x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20;k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1;end x1k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1;end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while(abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

相关文档
最新文档