数学模型 DAY4

文章探讨了规划模型中的线性表达和微分方程模型,提到了如何将非线性问题转化为线性形式。文章还强调了软约束在规划模型中的应用,如在成本限制方面的处理。此外,介绍了协方差矩阵的概念,它用于衡量随机变量之间的关联性,正负值表示正负相关性,而零值意味着不相关。文章最后提及了二次规划在解决某些问题中的角色,并预告了对微分方程模型的进一步学习。
摘要由CSDN通过智能技术生成

今天看完了规划模型,然后看了部分微分方程模型,微分方程模型真的好难QAQ

首先y1=min {x1+2x2+4x4, 10x1+4x2+16x3+5x4/2} 这不是线性表达

可以转化为线性表达:

y1<=x1+2x2+4x4

y1<=10x1+4x2+16x3+5x4/2

在规划模型中有一部分约束为软约束,不是硬性要求,比如尽可能不超过600万元。因此需要引入非负变量 d_{1}^{+}\ d_{1}^{-} , 分别表示决策值超过目标值的部分,表示决策值小于目标值的部分

一般d_{1}^{+}\ d_{1}^{-}格式如下

9+x_1-d_{1}^{+}+d_{1}^{-}=12

\min\text{\ }z\ =\ P_1d_{1}^{+}+P_2\left( d_{2}^{+}+d_{3}^{+}+d_{4}^{+} \right) +P_3\left( d_{5}^{-}+d_{6}^{-} \right) -P_4x_3

要仔细品味“尽可能”后面的意思

尽可能不超过600万,意思是让决策值超过目标值的部分尽可能的少

尽可能不超过定编规定的人数,意思是让决策值超过目标值的部分尽可能的少

尽可能达到现有相应等级人数的20%,意思是让决策值小于目标值的部分尽可能的少

尽可能多录新员工,意思是让x3尽可能大,公式如上

协方差矩阵

协方差矩阵是指在几个变量里,两两之间会有一个协方差值,会代表两个随机变量的相关程度

协方差为0时两者不相关

协方差为正时,表示两者正相关,协方差越大,正相关性越强

协方差为负时,表示两者负相关,协方差越小,负相关性越弱

协方差公式可以通过如下等式来感受一波

V=D\left( x_1R_1+x_2R_2+x_3R_3 \right) =D\left( x_1R_1 \right) +D\left( x_2R_2 \right) +D\left( x_3R_3 \right) +2cov\left( x_1R_1,x_2R_2 \right) +2cov\left( x_1R_1,x_3R_3 \right) +2cov\left( x_2R_2,x_3R_3 \right) =x_{1}^{2}DR_1+x_{2}^{2}DR_2+x_{3}^{2}DR_3+2x_1x_2cov\left( R_1,R_2 \right) +2x_2x_3cov\left( R_2,R_3 \right) +2x_1x_3cov\left( R_1,R_3 \right) =\sum_{j=1}^3{\sum_{i=1}^3{x_ix_jcov\left( R_i,R_j \right)}}

V为二次型,因此为二次规划

微分方程模型:更多的是在于自己创造公式,在于一个变化率,那个微分就代表变化率。

dy/dx,就表示单位自变量所带来的因变量变化率,再根据这个变化率的含义,等式右边再联立其他变量,最后通过不断的代换求解。

这个问题的答案取决于两班倒的具体定义和优化目标。以下是一个可能的模型和MATLAB代码的示例: 假设一个工厂有两个班次,分别为“白班”和“夜班”。工人在白班和夜班之间轮流工作,每个班次的工作时间为8个小时。为了最大限度地利用工人的时间并确保生产计划的实现,我们需要确定每个员工在白班和夜班之间的最佳切换时间。 我们可以将这个问题建模为一个线性规划问题。令 $x_{i,j}$ 表示员工 $i$ 在第 $j$ 天结束夜班后开始白班的时间(以小时为单位)。假设工厂的生产计划需要 $n$ 天完成,那么我们的目标是最小化所有员工中最晚开始白班的时间: $$\min \max_{i=1,\dots,m} x_{i,2n}$$ 其中 $m$ 是员工的数量。 我们需要遵守以下约束条件: - 对于每个员工 $i$,他/她必须在白班和夜班之间轮流工作。因此,对于每个 $j=1,\dots,n$,有 $x_{i,j}+8=x_{i,j+1}$。 - 对于每个员工 $i$,他/她必须在 $n$ 天内完成 $16$ 小时的工作。因此,对于每个 $i=1,\dots,m$,有 $x_{i,2n}-x_{i,1}=16$。 - 对于每个员工 $i$,他/她必须在 $n$ 天内完成 $2$ 次白班和 $2$ 次夜班。因此,对于每个 $i=1,\dots,m$,有 $x_{i,2}-x_{i,1}=8$ 和 $x_{i,4}-x_{i,3}=8$。 现在,我们可以使用MATLAB的线性规划求解器来解决这个问题。假设我们有 $m=4$ 个员工和 $n=5$ 天的工作计划。我们可以使用以下代码: ``` m = 4; % number of employees n = 5; % number of days f = zeros(m,1); % objective function coefficients f(m) = 1; % minimize the latest start time lb = zeros(m*n,1); % lower bounds ub = ones(m*n,1)*n*8; % upper bounds Aeq = zeros(3*m,n*m); % equality constraints beq = zeros(3*m,1); % equality constraint values % set up equality constraints for i = 1:m for j = 1:n-1 Aeq(i,j+(i-1)*n) = 1; % white shift to night shift Aeq(i,j+i*n) = -1; beq(i) = -8; end Aeq(m+i,(i-1)*n+1) = 1; % total hours worked Aeq(m+i,i*n) = -1; beq(m+i) = 16; Aeq(2*m+i,1+(i-1)*n) = 1; % number of shifts Aeq(2*m+i,2+(i-1)*n) = -1; Aeq(2*m+i,3+(i-1)*n) = 1; Aeq(2*m+i,4+(i-1)*n) = -1; beq(2*m+i) = 0; end % set up inequality constraints A = []; b = []; % solve the linear program [x,fval,exitflag,output] = linprog(f,A,b,Aeq,beq,lb,ub); ``` 这个代码使用 `linprog` 函数来求解线性规划问题。我们需要指定目标函数系数、约束条件、上下界和等式约束的值。在这个例子中,我们使用一个大小为 $4\times 1$ 的零向量作为目标函数系数,并将最后一个元素设置为 $1$,以便最小化最晚开始白班的时间。我们设置 $0$ 作为变量的下界,将 $n\times 8$ 作为变量的上界。我们使用 `Aeq` 矩阵和 `beq` 向量来表示等式约束条件,使用 `A` 矩阵和 `b` 向量来表示不等式约束条件。在此示例中,我们只使用等式约束条件。 我们可以运行上面的代码并检查结果。`x` 向量包含每个员工在每个时间点的开始时间,`fval` 是最优解的目标函数值,`exitflag` 是线性规划求解器的退出标志,`output` 是求解器的输出结构体。我们可以将 `x` 向量重新形状为一个 $m\times n$ 的矩阵,并可视化结果,如下所示: ``` X = reshape(x,n,m)'; disp(X); bar(X,'stacked'); legend('day 1','day 2','day 3','day 4','day 5'); xlabel('Employee'); ylabel('Starting time'); ``` 这个代码将 `x` 向量重新形状为一个 $m\times n$ 的矩阵,并将其转置,以使每行对应一个员工。然后,它使用条形图可视化每个员工在每个时间点的开始时间。以下是一个示例输出: ``` 0 8 16 24 32 8 16 24 32 39 16 24 32 39 47 24 32 39 47 55 ``` 这个输出表明,第一个员工在第一天从白班开始工作,第二天从夜班开始工作,以此类推。所有员工在第五天的白班都结束了,最晚的员工在第五天的夜班开始于第 $39$ 小时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值