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

数学建模小实例

数学建模小实例
Document serial number【KKGB-LBS98YT-BS8CB-BSUT-BST108】
1、司乘人员配备问题
某昼夜服务的公交路线每天各时间区段内需司机和乘务人员如下:
设司机和乘务人员分别在各时间区段一开始上班,并连续工作八小时,问该公交线路至少配备多少名司机和乘务人员
解: 设i x为第i班应报到的人员
i,建立线性模型如下:
)6,
(
,2,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 ,12,,,n a a a 为初始状态。

当n=3时
步数 状态(舍掉偶次项) 0 1a 2a 3a 1 21a a 32a a 13a a 2 31a a 21a a 32a a 3 32a a 31a a 21a a
4 12a a 23a a 31a a 说明当n=3时,经过3步进入初始状态。

当n=4时
步数 状态(舍掉偶次项)
0 1a 2a 3a 4a 1 21a a 32a a 43a a 14a a 2 31a a 42a a 31a a 42a a 3 4321a a a a 4321a a a a 4321a a a a 4321a a a a
4 242322
21a a a a 24232221a a a a 24232221a a a a 24232221a a a a 说明当n=4时,经过4步全变为黑色棋子。

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

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> 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
程序语句解释:
(m,n),产生一个m ×n 的0矩阵,通常用于定义一个指定大小的矩阵.zeros(1,n)则产生一个全部为0的行向量。

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

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

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

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

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

设1=i x 表示第i 门课程选修,0=i x 表示第i 门课程不选。

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

这样,所有课
程的先修课要求可表为如下的约束
“最优化方法”的先修课是“微积分”和“线性代数”,有:
“数据结构”的先修课程是“计算机编程”,有:
“应用统计”的先修课是“微积分”和“线性代数”,有: “计算机模拟”的先修课程是“计算机编程”,有: “预测理论”的先修课程是“应用统计”,有: “数学实验”是“微积分”和“线性代数”,有:
这样一来,总的0-1规划模型为:
解得:
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 考虑学分情形:
当要求学分最多时,设各门课程学分为i c ,则增加学分最大的目标函数为: 这样总的双目标0-1规划模型为:
当把选修课程指定为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。

相关主题