数学建模求解

有四名同学到一家公司参加三个阶段的面试:公司要求每个同学都必须首先找公司秘书初试,然后到部门主管处复试,最后到经理处参加面试,并且不允许插队(即在任何一个阶段四名同学的顺序是一样的)由于四名同学的专业背景不同,所以每人在三个阶段的面试时间也不同,如下表所示:
同学甲:(秘书初试:13分钟,主管复式:15分钟,经理面试:20分钟)
同学已:(秘书初试:10分钟,主管复式:20分钟,经理面试:18分钟)
同学丙:(秘书初试:20分钟,主管复式:16分钟,经理面试:10分钟)
同学丁:(秘书初试:8分钟,主管复式:10分钟,经理面试:15分钟)
这四名同学约定他们全部面试完以后一起离开公司,假定现在时间是早晨8点,问他们最早何时离开公司。

本问题是一个排列排序问题。对于阶段数不小于3的问题没有有效算法,也就是说对于学生数稍多一点儿(比如20)的情况是无法精确求解的。为此人们找到了很多近似算法。这里我们建立的规划模型可以实现该问题的精确求解,但你会看到它的变量和约束是学生数的平方。因此,当学生数稍多一点儿规划模型的规模经很大,求解会花费很长时间。
!三阶段面试模型;
model:
sets:
students; !学生集三阶段面试模型;
phases; !阶段集;
sp(students,phases):t,x;
ss(students,students) | &1 #LT# &2:y;
endsets
data:
students = s1..s4;
phases = p1..p3;
t=
13 15 20
10 20 18
20 16 10
8 10 15;
enddata
ns=@size(students); !学生数;
np=@size(phases); !阶段数;
!单个学生面试时间先后次序的约束;
@for(sp(I,J) | J #LT# np:
x(I,J)+t(I,J)<=x(I,J+1)
);
!学生间的面试先后次序保持不变的约束;
@for(ss(I,K):
@for(phases(J):
x(I,J)+t(I,J)-x(K,J)<=200*y(I,K);
x(K,J)+t(K,J)-x(I,J)<=200*(1-y(I,K));
)
);
!目标函数;
min=TMAX;
@for(students(I):
x(I,3)+t(I,3)<=TMAX
);
!把Y定义0-1变量;
@for(ss: @bin(y));
End
计算的部分结果为:
Global optimal solution found at iteration: 898
Objective value: 84.00000
Variable Value Reduced Cost
NS 4.000000 0.000000
NP 3.000000 0.000000
TMAX 84.00000 0.000000
X( S1, P1) 8.000000 0.000000
X( S1, P2) 21.00000 0.000000
X( S1, P3) 36.00000 0.000000
X( S2, P1) 21.00000 0.000000
X( S2, P2) 36.00000 0.000000
X( S2, P3) 56.00000 0.000000
X( S3, P1) 31.00000 0.000000
X( S3, P2) 56.00000 0.000000
X( S3, P3) 74.00000 0.000000
X( S4, P1) 0.000000 1.000000
X( S4, P2) 8.000000 0.000000
X( S4, P3) 18.00000 0.000000
Y( S1, S2) 0.000000 -200.0000
Y( S1, S3) 0.000000 0.000000
Y( S1, S4) 1.000000 200.0000
Y( S2, S3) 0.000000 -200.0000
Y( S2, S4) 1.000000 0.000000
Y( S3, S4) 1.000000 0.000000
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-12-08

数学建模建模分为几种类型,分别用什么法求解?
数学建模的类型及其解法概述 1. 蒙特卡罗算法:这种算法以随机性模拟为基础,利用计算机仿真解决问题,并可用于验证模型的准确性。在比赛中经常使用。2. 数据处理算法:包括数据拟合、参数估计和插值等。这些算法对于处理比赛中遇到的大量数据至关重要,通常结合Matlab工具应用。3. 数学规划算法:涵盖线性规划...

数学建模模型解题法(应用于实际问题的数学求解方法)
步骤一:问题理解和分析 在解决实际问题之前,首先需要对问题进行充分的理解和分析。这包括确定问题的背景、目标和约束条件,以及收集相关的数据和信息。步骤二:建立数学模型 根据问题的特点和要求,选择合适的数学模型。数学模型可以是代数方程、微分方程、优化模型等。在建立数学模型时,需要将实际问题中的...

数学建模算法,用牛顿法求解
要用牛顿法求解函数 f(x) = x1^2 + 4x2^2 的最小值,可以按照以下步骤进行:计算函数 f(x) 的梯度向量 g(x) 和 Hessian 矩阵 H(x),分别为:g(x) = [2x1, 8x2]T H(x) = [2, 0; 0, 8]其中,T 表示向量的转置。选择一个起始点 x0,计算函数 f(x) 和梯度...

数学建模与求解一道数学题有何区别?
数学建模是根据题目所给的实际问题,然后利用你的知识,建立一个分析问题的模型,并且你要将整个过程写成论文的形式。而且数学建模的问题答案并不只是一个。求解一道数学题,有固定思路和结题答案。数学题简单一些。

数学建模建模分为几种类型,分别用什么法求解?
数学建模应当掌握的十类算法 1、蒙特卡罗算法(该算法又称随机性模拟算法,是通过计算机仿真来解决问题的算 法,同时可以通过模拟可以来检验自己模型的正确性,是比赛时必用的方法) 2、数据拟合、参数估计、插值等数据处理算法(比赛中通常会遇到大量的数据需要 处理,而处理数据的关键就在于这些算法,通常...

求几种常用的数学建模的方法。。
6.数学归纳法 一般地,证明一个与正整数n有关的命题,有如下步骤:(1)证明当n取第一个值时命题成立;(2)假设当n=k(k≥n的第一个值,k为自然数)时命题成立,证明当n=k+1时命题也成立。例:求证:1×2×3×4 + 2×3×4×5 + 3×4×5×6 + …… + n(n+1)(n+2)(n+3...

数学建模是啥
数学建模就是根据实际问题来建立数学模型,对数学模型来进行求解,然后根据结果去解决实际问题。一、理解问题 在进行数学建模之前,首先需要对问题进行深入的理解。要明确问题的实际背景、目标和限制条件。这涉及到对问题的抽象和简化,将实际问题转化为一个可以数学化的模型。二、建立数学模型 在理解问题的...

Excel数学建模怎么求极值
在使用Excel进行数学建模时,求解函数极值的方法之一是通过分析函数的单调性。首先,我们需要建立一个三行的表格来组织数据。第一行列出函数的定义域被驻点和不可导点分割成的各个区间以及相应的分界点。例如,如果定义域被点a、b、c、d等分割,我们可以这样列出:x (a,b) b (b,c) c (c,d) …...

数学建模方法和步骤
数学建模的步骤:一、模型准备:了解问题的实际背景,明确建模目的,搜集必需的各种信息,尽量弄清对象的特征。二、模型假设:根据对象的特征和建模目的,对问题进行必要的、合理的简化,用精确的语言作出假设。三、模型构成:根据所作的假设分析对象的因果关系,利用对象的内在规律和适当的数学工具,构造各个...

如何在实际问题中使用函数和导数进行建模和求解?
在实际问题中,函数和导数是数学建模和求解的重要工具。它们可以用来描述和分析各种现象和过程,从而帮助我们理解和解决实际问题。首先,函数可以用来建立问题的数学模型。例如,如果我们要研究一个物体在重力作用下的运动,我们可以使用二次函数来描述其位置与时间的关系。通过建立这样的数学模型,我们可以更好...

相似回答