当前位置:文档之家› 数学建模小实例

数学建模小实例

1、司乘人员配备问题
某昼夜服务得公交路线每天各时间区段内需司机与乘务人员如下:
设司机与乘务人员分别在各时间区段一开始上班,并连续工作八小时,问该公交线路至少配备多少名司机与乘务人员?
解: 设为第班应报到得人员,建立线性模型如下:
LINGO程序如下:
MODEL:
min=x1+x2+x3+x4+x5+x6;
x1+x6>=60;
x1+x2>=70;
x2+x3>=60;
x3+x4>=50;
x4+x5>=20;
x5+x6>=30;
END
得到得解为:
x1=60,x2=10,x3=50,x4=0,x5=30 ,x6=0;
配备得司机与乘务人员最少为150人。

2、铺瓷砖问题
要用40块方形瓷砖铺下图所示形状得地面,但当时市场上只有长方形瓷砖,每块大小等于方形得两块。

一人买了20块长方形瓷砖,试着铺地面,结果无法铺好。

试问就是这人得功夫不到家还就是这个问题根本无解呢?
3、棋子颜色问题
在任意拿出黑白两种颜色得棋子共n个,随机排成一个圆圈。

然后在两颗颜色相同得棋子中间放一颗黑色棋子,在两颗颜色不同得棋子中间放一颗白色棋子,放完后撤掉原来所放得棋子,再重复以上得过程,这样放下一圈后就拿走前次得一圈棋子,问这样重复进行下去各棋子得颜色会怎样变化呢?
分析与求解:
由于在两颗同色棋子中放一颗黑色棋子,两颗不同色得棋子中间放一颗白色棋子,故可将黑色棋子用1表示,白色棋子用-1表示。

这就是因为-1×(-1)=1,1×1=1,这代表两颗同色棋子中放一颗黑色棋子;1×(-1)= -1,这代表两颗不同色得棋子中间放一颗白色棋子。

设棋子数为,为初始状态。

当n=3时
步数状态(舍掉偶次项)
1
2
3
4
说明当n=3时,经过3步进入初始状态。

当n=4时
步数状态(舍掉偶次项)
1
2
3
4
说明当n=4时,经过4步全变为黑色棋子。

既不循环也不全为黑子
结论:当棋子数为时,至多经过次操作,就可以全部变为黑子,当棋子数不为时则一般不能全变为黑子。

Matlab程序:进行实验
%棋子颜色问题演示
% 1---黑子,-1 -----白子
n=4; %定义棋子数
times=6;%定义迭代次数
x0=zeros(1,n);
x1=zeros(1,n); %定义数组
for i=1:n
k=rand(1,1);
if(k>0、5) x0(i)=1;
else x0(i)=-1;
end
end; % 赋初值
x0
for i=1:times
i
for k=1:n-1
x1(k)=x0(k)*x0(k+1);
end
x1(n)=x0(n)*x0(1);
x1 %显示各次结果
x0=x1;
end
程序语句解释:
1、zeros(m,n),产生一个m×n得0矩阵,通常用于定义一个指定大小得矩阵、zeros(1,n)
则产生一个全部为0得行向量。

2、rand(m,n),产生一个m×n得随机矩阵,每个元素都服从[0,1]上得均匀分布、rand(1,1)则产生一个服从[0,1]上得均匀分布得数字。

4、选修课策略问题
某学校规定,运筹学专业得学生毕业时必须至少学习过两门数学课、三门运筹学课与两门计算机课。

这些课程得编号、名称、学分、所属类别与先修课要求如表1所示。

那么,毕业时学生最少可以学习这些课程中哪些课程。

如果某个学生既希望选修课程得数量少,又希望所获得得学分多,她可以选修哪些课程?
模型得建立
1不考虑学分情形:
记i=1,2,…,9表示9门课程得编号。

设表示第i门课程选修,表示第i门课程不选。

问题得目标为选修得课程总数最少,即
约束条件包括两个方面:
第一方面就是课程数量得约束:
每个人最少要学习2门数学课,则
每个人最少要学习3门运筹学课,则
每个人最少要学习2门计算机课,则有:
第二方面就是先修课程得关系约束:
如“数据结构”得先修课程就是“计算机编程”,这意味着如果,必须,这个条件可以表示为(注意当时对没有限制)。

这样,所有课程得先修课要求可表为如下得约束
“最优化方法”得先修课就是“微积分”与“线性代数”,有:
“数据结构”得先修课程就是“计算机编程”,有:
“应用统计”得先修课就是“微积分”与“线性代数”,有:
“计算机模拟”得先修课程就是“计算机编程”,有:
“预测理论”得先修课程就是“应用统计”,有:
“数学实验”就是“微积分”与“线性代数”,有:
这样一来,总得0-1规划模型为:
12345356894679313247
5
1526785
9192
129232,..,,,,,01
x x x x x x x x x x x x x x x x x x x x s t x x x x x x x x x x x x
x x x ++++≥⎧⎪++++≥⎪⎪+++≥⎪
≤≤⎪⎪≤⎪⎨
≤≤⎪⎪≤⎪
≤⎪⎪≤≤⎪⎪=⎩L 或 解得:
1236791,1,1,1,1,1x x x x x x ======。

即选修课程为:微积分,线性代数、最优化方法,计算机模拟,计算机编程,数学实验。

LINGO 程序为: model: sets:
item/1、、9/:c,x; endsets data:
c=5,4,4,3,4,3,2,2,3; enddata
min=@sum(item(i):x(i));!课程最少; x(1)+x(2)+x(3)+x(4)+x(5)>=2; x(3)+x(5)+x(6)+x(8)+x(9)>=3; x(4)+x(6)+x(7)+x(9)>=2; x(3)<=x(1); x(3)<=x(2); x(4)<=x(7); x(5)<=x(1); x(5)<=x(2); x(6)<=x(7); x(8)<=x(5); x(9)<=x(1); x(9)<=x(2);
@for(item(i):@bin(x(i)));
end
2 考虑学分情形:
当要求学分最多时,设各门课程学分为,则增加学分最大得目标函数为:
这样总得双目标0-1规划模型为:
12345356894679313247
5
1526785
9192
129232,..,,,,,01
x x x x x x x x x x x x x x x x x x x x s t x x x x x x x x x x x x
x x x ++++≥⎧⎪++++≥⎪⎪+++≥⎪
≤≤⎪⎪≤⎪⎨
≤≤⎪⎪≤⎪
≤⎪⎪≤≤⎪⎪=⎩L 或 当把选修课程指定为6门时,对学分最大求最优,解得:
1235791,1,1,1,1,1x x x x x x ======。

最大学分为z=22。

即选修课程为:微积分,线性代数、最优化方法, 应用统计,计算机编程,数学实验。

学分达到22分。

LINGO 程序为: model: sets:
item/1、、9/:c,x; endsets data:
c=5,4,4,3,4,3,2,2,3; enddata
max=@sum(item(i):c(i)*x(i)); @sum(item(i):x(i))=6; !课程为6门; x(1)+x(2)+x(3)+x(4)+x(5)>=2; x(3)+x(5)+x(6)+x(8)+x(9)>=3; x(4)+x(6)+x(7)+x(9)>=2; x(3)<=x(1); x(3)<=x(2); x(4)<=x(7); x(5)<=x(1); x(5)<=x(2); x(6)<=x(7); x(8)<=x(5);
x(9)<=x(1);
x(9)<=x(2);
@for(item(i):@bin(x(i))); end。

相关主题