数学建模小实例
1 1、司乘人员配备问题、司乘人员配备问题 某昼夜服务的公交路线每天各时间区段内 需司机和乘务人员如下: 班次时间最少需 要人数 16:00—10:0060 210:00—14:0070 314:00—18:0060 418:00—22:0050 522:00—2:0020 62:00—6:0030 设司机和乘务人员分别在各时间区段一开始上 班,并连续工作八小时,问该公交线路至少配 备多少名司机和乘务人员? 解: 设 x i 为第 i 班应报到的人员(i1,2,,6), 建立线性模型如下: 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 2、铺瓷砖问题、铺瓷砖问题 要用 40 块方形瓷砖铺下图所示形状的地面,但 当时市场上只有长方形瓷砖,每块大小等于方 形的两块。一人买了20 块长方形瓷砖,试着铺 地面,结果无法铺好。试问是这人的功夫不到 家还是这个问题根本无解呢? 解答: 0 01 10 01 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 3 3、、 棋子颜色问题棋子颜色问题 在任意拿出黑白两种颜色的棋子共 n 个,随机排成一个圆圈。然后在两颗颜 色相同的棋子中间放一颗黑色棋子,在两颗颜色不同的棋子中间放一颗白色棋 子,放完后撤掉原来所放的棋子,再重复以上的过程,这样放下一圈后就拿走前 次的一圈棋子,问这样重复进行下去各棋子的颜色会怎样变化呢? 分析与求解:分析与求解: 由于在两颗同色棋子中放一颗黑色棋子, 两颗不同色的棋子中间放一颗白色 棋子,故可将黑色棋子用 1 表示,白色棋子用-1 表示。这是因为-1×(-1)=1,1 ×1=1,这代表两颗同色棋子中放一颗黑色棋子;1×(-1)= -1,这代表两颗不同 色的棋子中间放一颗白色棋子。 设棋子数为n,a 1,a2 ,,a n 为初始状态。 当 n=3 时 步数状态(舍掉偶次项) 0 a 1 1 2 a 2 a 3 a 1a2 a 2a3 a 3a1 a 1a3 a 1a2 a 2a3 a 1a3 3 a 2a3 4 a 1a2 a 1a2 a 2a3 a 3a1 说明当 n=3 时,经过 3 步进入初始状态。 当 n=4 时 步数状态(舍掉偶次项) 0a 1 1 2 a 2 a 3 a 4 a 1a2 a 2a3 a 3a4 a 4a1 a 1a3 a 2a4 a 1a3 a 2a4 3 a 1a2a3a4 a 1a2a3a4 a 1a2a3a4 a 1a2a3a4 4 a 1 a 2 a 3 a 4 a 1 a 2 a 3 a 4 a 1 a 2 a 3 a 4 a 1 a 2 a 3 a 4 说明当 n=4 时,经过 4 步全变为黑色棋子。 既不循环也不全为黑子 结论:当棋子数为2n时,至多经过2n次操作,就可以全部变为黑子,当棋子数不为2n时则一般不能全变为黑 子。 Matlab 程序:进行实验 %棋子颜色问题演示 %1---黑子,-1 -----白子 n=4; %定义棋子数 times=6;%定义迭代次数 x0=zeros(1,n); x1=zeros(1,n); %定义数组 for i=1:n k=rand(1,1); if(k0.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. 4. 选修课策略问题选修课策略问题 某学校规定,运筹学专业的学生毕业时必须至少学习过两门数学课、三门运筹学课和两门计算机课。这些 课程的编号、名称、学分、所属类别和先修课要求如表 1 所示。那么,毕业时学生最少可以学习这些课程中哪些 课程。 2222222222222222 如果某个学生既希望选修课程的数量少, 又希望所获得的学分多, 他可以选修哪些课程? 表表 1 1课程情况课程情况 课程编号 1 2 3 4 课程名称 微积分 线性代数 最优化方法 数据结构 学分 5 4 4 3 所属类别 数学 数学 数学;运筹学 数学;计算机 先修课要求 微积分;线性代数 计算机编程 5 6 7 8 9 应用统计 计算机模拟 计算机编程 预测理论 数学实验 模型的建立模型的建立 1 1 不考虑学分情形:不考虑学分情形: 4 3 2 2 3 数学;运筹学 计算机;运筹学 计算机 运筹学 运筹学;计算机 微积分;线性代数 计算机编程 应用统计 微积分;线性代数 记 i=1,2,…,9 表示 9 门课程的编号。设xi 1表示第 i 门课程选修,x i 0表示第 i 门课程不选。问题 的目标为选修的课程总数最少,即 约束条件包括两个方面: 第一方面是课程数量的约束: 每个人最少要学习 2 门数学课,则 每个人最少要学习 3 门运筹学课 ,则 每个人最少要学习 2 门计算机课,则有: 第二方面是先修课程的关系约束: 如“数据结构”的先修课程是“计算机编程”,这意味着如果 x41,必须x 7 1,这个条件可以表示为 x 4 x 7 (注意当x4 0时对x 7没有限制)。这样,所有课程的先修课要求可表为如下的约束 “最优化方法”的先修课是“微积分”和“线性代数”,有: “数据结构”的先修课程是“计算机编程”,有: “应用统计”的先修课是“微积分”和“线性代数”,有: “计算机模拟”的先修课程是“计算机编程”,有: “预测理论”的先修课程是“应用统计”,有: “数学实验”是“微积分”和“线性代数”,有: 这样一来,总的 0-1 规划模型为: 解得: x 1 1,x 2 1,x 3 1,x 6 1,x 7 1,x 9 1。 即选修课程为:微积分,线性代数.最优化方法,计算机模拟,计算机编程,数学实验。 LINGO 程序为: model: sets: item/19/: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)=3; x(4)+x(6)+x(7)+x(9)=2; x