学习笔记
未读种群竞争模型 当两个种群为争夺同一食物来源和生活空间相互竞争时,常见的结局是一方被淘汰,另一方获得优势。这种现象在生物学中被称为“竞争”。在数学建模中,我们可以通过种群竞争模型来模拟这种现象。 数学模型 有甲乙两个种群,它们独自生存时的数量变化均服从 Logistic 规律: dN1dt=r1N1(1−N1K1)dN2dt=r2N2(1−N2K2)\begin{aligned} \frac{dN_1}{dt} &= r_1 N_1 \left(1-\frac{N_1}{K_1}\right) \\ \frac{dN_2}{dt} &= r_2 N_2 \left(1-\frac{N_2}{K_2}\right) \end{aligned} dtdN1dtdN2=r1N1(1−K1N1)=r2N2(1−K2N2) 其中 N1N_1N1 为甲种群数量,N2N_2N2 为乙种群数量,r1r_1r1 为甲种群的增长率,r2r_2r2 为乙种群的增长率,K1K_1K1 为甲种群的容量,K2K_2K2 为乙种群的容量。 两种群在一起生存 ...
学习笔记
未读背包问题 背包问题是数学建模中的一个经典问题,其目的是在给定的背包容量下,选择一组物品,使得物品的价值最大化。在实际生活中,背包问题可以用于物流运输、物资调度等领域。 常见的背包问题有 0-1 背包问题、完全背包问题、多重背包问题等。 0-1 背包问题 0-1 背包问题是最基本的背包问题,即每个物品只能选择 0 个或 1 个。 通常使用动态规划的方法求解 0-1 背包问题。 例 有 4 件物品,重量分别为 2、2、6、5,价值分别为 6、3、5、4,背包容量为 10,求背包中物品的最大价值。 解 将原问题分解为子问题:将问题分解为前 i 件物品放入容量为 j 的背包中所能获得的最大价值。 确定状态:i 件物品放入容量为 j 的背包中所能获得的最大价值。 确定一些初始状态(边界状态)的值:当 i = 0 时,j 件物品放入容量为 j 的背包中所能获得的最大价值为 0;当 j = 0 时,i 件物品放入容量为 j 的背包中所能获得的最大价值为 0。 确定状态转移方程:当 i 件物品放入容量为 j 的背包中所能获得的最大价值为 max{f(i-1,j),f(i-1,j-w(i) ...
学习笔记
未读最小生成树 最小生成树(Minimum Spanning Tree) 是一种用于寻找连通图中的最小权重生成树的算法。最小生成树的应用非常广泛,例如在网络规划中,我们需要在一定的成本下,使得网络中的所有节点都能够相互连接,这时候就可以使用最小生成树来解决这个问题。 常用的最小生成树算法有 Prim 算法和 Kruskal 算法,这两种算法都是贪心算法,都是通过不断地选择权重最小的边来构建最小生成树。 如何使用 MATLAB 求解最小生成树 MATLAB 中提供了 minspantree 函数来求解最小生成树。 minspantree 函数的语法如下: 1T = minspantree(G) 其中,G 是一个图,T 是最小生成树。 例 使用加权边创建并绘制一个立方体图。 12345s = [1 1 1 2 5 3 6 4 7 8 8 8];t = [2 3 4 5 3 6 4 7 2 6 7 5];weights = [100 10 10 10 10 20 10 30 50 10 70 10];G = graph(s,t,weights);p = plot(G,'EdgeLab ...
学习笔记
未读最短路 最短路是指在一个有向图中,从一个顶点到另一个顶点的最短路径。在数学建模中,最短路问题可以用来表示物流运输问题,例如:从一个城市到另一个城市的最短路程,从一个城市到另一个城市的最短时间,从一个城市到另一个城市的最少运输成本等等。 如何使用 MATLAB 解决最短路问题 MATLAB 中的最短路问题可以使用 shortestpath 函数来解决。 shortestpath 函数的语法如下: 1[P,d] = shortestpath(G,s,t) 其中,G 是一个图,s 是起点,t 是终点,P 是从起点到终点的最短路径,d 是从起点到终点的最短路径的长度。 例1 创建并绘制一个有向图。 1234s = [1 1 2 3 3 4 4 6 6 7 8 7 5];t = [2 3 4 4 5 5 6 1 8 1 3 2 8];G = digraph(s,t);plot(G) 计算节点 7 和 8 之间的最短路径。 1[P,d] = shortestpath(G,7,8) 结果: 12345P = 7 1 3 5 8d = 4 例2 创建并 ...
学习笔记
未读网络流 网络流是一种数学模型,用于描述在网络中流动的物质或信息。网络流模型可以用于描述物流、交通、通信、生物学等领域的问题。 最大流问题 最大流问题是网络流模型中的一个重要问题,它的目标求出网络中一点到另一点的最大流量。 如何使用 MATLAB 解决最大流问题 MATLAB 中的 maxflow 函数可以用于求解最大流问题。 maxflow 函数的语法格式如下: 1[mf,GF] = maxflow(G,s,t) 其中,G 为网络图,s 为源点,t 为汇点,mf 为最大流量,GF 为最大流量对应的网络图。 例1 创建并绘制一个加权图。加权边表示流量。 12345s = [1 1 2 2 3 4 4 4 5 5];t = [2 3 3 4 5 3 5 6 4 6];weights = [0.77 0.44 0.67 0.75 0.89 0.90 2 0.76 1 1];G = digraph(s,t,weights);plot(G,'EdgeLabel',G.Edges.Weight,'Layout','layered'); ...
学习笔记
未读多目标规划 多目标规划是指在一定的约束条件下,求解多个目标函数的最优解。 数学模型 正负偏差变量 设 d 为决策变量的函数,d0 为目标值。 正负偏差变量 d+ = max{0, d - d0} 表示决策值超过目标值的部分;d- = max{0, d0 - d} 表示决策值低于目标值的部分。 因为决策值不可能既高于目标值,又低于目标值,所以恒有 d+ × d- = 0。 绝对约束和目标约束 绝对约束:线性规划直接给出的约束条件,一定要满足的约束 目标约束:由决策目标得出的约束条件,尽量满足的约束,允许存在一定的正负偏差 优先因子 为各个目标主观设定一个因子,表示各个目标的重要程度。优先因子越高的目标拥有越高的权重,将会被优先考虑。 多目标规划的目标函数 对于每个目标,有以下三种情况: 恰好达到:正负偏差都尽可能小,minz=f(d++d−)min \quad z=f(d^+ + d^-)minz=f(d++d−) 不超过:正偏差尽可能小,minz=f(d+)min \quad z=f(d^+)minz=f(d+) 不少于:负偏差尽可能小,minz=f(d−)min \quad ...
学习笔记
未读什么是动态规划 动态规划是一种数学优化方法,它是一种在给定约束条件下,求解最优化问题的方法。动态规划的基本思想是将原问题分解为若干个子问题,先求解子问题的最优解,然后根据子问题的最优解,求解原问题的最优解。 动态规划的步骤通常为: 将原问题分解为子问题 确定状态 确定一些初始状态(边界状态)的值 确定状态转移方程 思想上类似于递归,但动态规划采用记录子问题的最优解的方法,避免了重复计算子问题的最优解,从而提高了计算效率;除此之外,动态规划通常采用自底向上的方法,而递归通常采用自顶向下的方法。 斐波那契数列 斐波那契数列作为递归算法的经典教学案例也可以用动态规划来解决,并且效率更高。 递归算法 1234567function f = fib(n) if n == 1 || n == 2 f = 1; else f = fib(n-1) + fib(n-2); endend 计算 fib(40) : 12>> tic; fib(40); toc历时 9.110819 秒。 计算 fib(400) : 12>> ti ...
自用头像 以下头像已经被博主用作各个平台头像、个人网站logo等。 精选头像 以下是博主从AI生成的大量图片中挑选出来的部分优质头像: 生成底图 以下是AI模型生成上面头像的参考图:
非线性整数规划问题 非线性整数规划问题是指目标函数和约束条件都可能是非线性的,且变量为整数的优化问题。 在 MATLAB 中,没有专门的函数来求解非线性整数规划问题,但是可以通过蒙特卡洛方法来求得近似解。 蒙特卡洛方法 蒙特卡洛方法是一种用随机数来解决问题的方法,它的基本思想是:通过随机的方法来模拟问题的解,从而得到问题的近似解。 例 求解下列非线性整数规划问题: maxZ=x12+x22+3x32+4x42+2x52−8x1−2x2−3x3−x4−2x5\begin{equation} \max \quad Z=x_{1}^2 + x_{2}^2 + 3x_{3}^2 + 4x_{4}^2 + 2x_{5}^2 - 8x_{1} - 2x_{2} - 3x_{3} - x_{4} - 2x_{5} \end{equation} maxZ=x12+x22+3x32+4x42+2x52−8x1−2x2−3x3−x4−2x5 s.t. {x1+x2+x3+x4+x5≤400x1+2x2+2x3+x4+6x5≤8002x1+x2+6x3≤200x3+x4+5 ...
学习笔记
未读简介 MATLAB R2017b 中推出的优化工具箱提供了一系列的优化算法,可以用来求解优化问题。 它包括以下方法: 12345678910111213141516171819% 创建优化问题prob = optimproblem(Name,Value);% 创建优化变量x = optimvar(name,[n1,n2,...,nk],Name,Value);% 设置优化目标prob.Objective = f(x);% 添加约束prob.Constraints.cons1 = cons1;prob.Constraints.cons2 = cons2;prob.Constraints.cons3 = cons3;% 检查优化问题show(prob)% 求解优化问题[sol,fval] = solve(prob,x0,Name,Value); 通过自定义优化模型,可以解决多种类型的优化问题,并且具有更好的可读性。 线性规划 例 maxZ=2x1+3x2+4x3\begin{equation} \max \quad Z=2 x_{1}+3 x_{2} + 4 x_{3} \end ...