Python小白的数学建模课-05.0-1规划


0-1 规划不仅是数模竞赛中的常见题型,也具有重要的现实意义。

双十一促销中网购平台要求二选一,就是互斥的决策问题,可以用 0-1规划建模。

小白学习 0-1 规划,首先要学会识别 0-1规划,学习将问题转化为数学模型。

『Python小白的数学建模课 @ Youcans』带你从数模小白成为国赛达人。



1. 什么是 0-1 规划?

0-1 整数规划是一类特殊的整数规划,变量的取值只能是 0 或 1。

0-1 变量可以描述开关、取舍、有无等逻辑关系、顺序关系,可以处理背包问题、指派问题、选址问题 、计划安排、线路设计 、人员安排等各种决策规划问题。进而,任何整数都可以用二进制表达,整数变量就可以表示为多个 0-1 变量的组合,因此任何整数规划都可以转化为 0-1 规划问题来处理。0-1 规划问题与运筹学中的很多经典问题也都有紧密联系。

在数学建模学习中,0-1 规划主要用于求解互斥的决策问题、互斥的约束条件问题、固定费用问题和分派问题。0-1 规划是数模竞赛的常见题型,国赛 B题经常有 0-1规划问题或可以转化为 0-1 规划问题。

0-1 规划的算法都比较复杂,大规模问题一般没有精确解法。本文仍然使用 PuLP 工具包求解 0-1 规划问题,该工具包的使用比较简单。建议本文读者重点关注 0-1 规划问题的分类及建模方法,把握哪些问题是 0-1 规划问题,是哪一类的 0-1 规划问题,如何对这些典型问题进行建模。在此基础上,才能调用 PuLP 函数进行求解。


欢迎关注『Python小白的数学建模课 @ Youcans』系列,每周持续更新
Python小白的数学建模课-01.新手必读
Python小白的数学建模课-02.数据导入
Python小白的数学建模课-03.线性规划
Python小白的数学建模课-04.整数规划
Python小白的数学建模课-05.0-1规划
Python小白的数学建模课-06.固定费用问题
Python小白的数学建模课-07.选址问题
Python小白的数学建模课-09.微分方程模型
Python小白的数学建模课-10.微分方程边值问题
Python小白的数学建模课-12.非线性规划
Python小白的数学建模课-15.图论的基本概念
Python小白的数学建模课-16.最短路径算法
Python小白的数学建模课-17.条件最短路径算法
Python小白的数学建模课-18.最小生成树问题
Python小白的数学建模课-19.网络流优化问题
Python小白的数学建模课-20.网络流优化案例




2. 0-1 规划的分类及建模方法

规划问题的数学模型包括决策变量、约束条件和目标函数,围绕这三个要素都可能存在互斥的情况,从而导出不同类型的0-1规划问题,其建模方法也有差别。

2.1 互斥的决策问题

互斥的决策问题,是指决策方案、计划互斥,如决定投资项目、确定投资场所、选择投产产品等。

例如,双十一的促销活动,淘宝、京东、拼多多要求店铺二选一,最多只能选择参加一家平台,否则可能会被封杀,这是典型的互斥决策问题。

背包问题就是经典的互斥决策问题。给定一组 n 个物品,每种物品 i 的价值为 viv_ivi、重量/体积为 wiw_iwi,背包所能容纳的总重量/总容量为(B),如何选择其中若干种物品(每种物品选 0 个或 1 个),使得物品的总价值最高?

背包问题的建模方法如下:

定义决策变量为:
xi={0,不选择第i个物品1,选择第i个物品x_i = \begin{cases} 0,不选择第\;i\;个物品\\ 1,选择第\;i\;个物品 \end{cases} xi={0i1i
定义目标函数为:
maxf(x)=∑i=1nvixis.t.:{∑i=inwixi≤B,xi=0,1max\;f(x) = \sum_{i=1}^n v_i x_i\\ s.t.:\begin{cases} \sum_{i=i}^n w_i x_i \leq B, \\ x_i = 0,1 \end{cases} maxf(x)=i=1nvixis.t.:{i=inwixiB,xi=0,1

很多应用问题都可以用上述的背包问题数学模型来表达,例如:

  • 有 n个项目,每个项目所需投资额为 wiw_iwi,投产后的利润为 viv_ivi,投资总限额为 B,求利润最大的投资方案;
  • 处理器能力有限,任务很多,如何选择使处理器的效用最大;

2.2 互斥的约束问题

互斥的约束问题,是指具有多个互斥的约束条件,这些约束条件只有一个起作用。

例如,货物运输有车运或者船运两种运输方式可供选择,已知采用车运的约束条件和船运的约束条件,必须且只能选择其中一种运输方式。这两个约束条件互斥,有且只有一个起作用,这是可以引入一个 0-1变量来处理。

一般地,设有 m 个互斥的约束条件:
ai1x1+...ainxn≤bi,i=1,...ma_{i1}x_1 + ...a_{in}x_n \leq b_i,i=1,...m ai1x1+...ainxnbii=1,...m

该类问题的建模方法,为了保证只有一个约束条件起作用,可以引入一个充分大的常数 M 和 m 个 0-1 变量表示约束是否起作用:
yi={0,第i个约束不起作用1,第i个约束起作用y_i = \begin{cases} 0,第 i 个约束不起作用\\ 1,第 i 个约束起作用 \end{cases} yi={0i1i

于是可以构造新的 m+1 个约束条件:
s.t.:{ai1x1+...ainxn≤bi+(1−yi)M,i=1,...my1+...+ym=1yi=0,1s.t.:\begin{cases} a_{i1}x_1 + ...a_{in}x_n \leq b_i + (1-y_i)M,i=1,...m\\ y_1 + ... + y_m = 1\\ y_i = 0,1 \end{cases} s.t.:ai1x1+...ainxnbi+(1yi)Mi=1,...my1+...+ym=1yi=0,1

由于 M 足够大,新的约束条件就能保证只有 y_i=1 的约束条件起作用,而其它约束条件都不起作用。


2.3 固定费用问题(Fixed cost problem)

固定费用问题,是指求解生产成本最小问题时,总成本包括固定成本和变动成本,而选择不同生产方式会有不同的固定成本,因此总成本与选择的生产方式有关。

固定费用问题,实际上是互斥的目标函数问题,对于不同的生产方式具有多个互斥的目标函数,但只有一个起作用。固定费用问题不能用一般的线性规划模型求解。

一般地,设有 m 种生产方式可供选择,采用第 jjj 种方式时的固定成本为 KjK_jKj、变动成本为 cjc_jcj、产量为 xjx_jxj,则采用各种生产方式的总成本分别为:

minPj={kj+cjxj,xj≥00,xj=0,j=1,...mmin\;P_j = \begin{cases} k_j + c_j x_j,&x_j \geq 0\\ 0,&x_j = 0, j=1,...m \end{cases} minPj={kj+cjxj0xj0xj=0,j=1,...m

该类问题的建模方法,为了构造统一的目标函数,可以引入 m 个 0-1 变量 y_j 表示是否采用第 j 种生产方式:
yj={0,不采用第j种生产方式1,采用第j种生产方式y_j = \begin{cases} 0,不采用第\;j\;种生产方式\\ 1,采用第\;j\; 种生产方式 \end{cases} yj={0j1j

于是可以构造新的目标函数和约束条件:
minf(x)=∑j=1m(kjyj+cjxj)s.t.:xj≤yjM,j=1,...mmin\;f(x) = \sum_{j=1} ^m (k_j y_j + c_j x_j)\\ s.t.:\;x_j \leq y_j M,j=1,...m minf(x)=j=1m(kjyj+cjxj)s.t.:xjyjMj=1,...m

M 是一个充分大的常数。


2.4 指派问题

分配 n 个人去做 n 件工作,每人只做一件工作,每件工作只有一个人做,已知每个人做每件事的用时为cijc_{ij}cij,如何安排才能使花费的总时间最少。

引入 0-1 变量 xijx_{ij}xij
xi,j={0,第i人不做第j件工作1,第i人做第j件工作,i,j=1,...,nx_{i,j} = \begin{cases} 0,第\;i\;人不做第\;j\;件工作\\ 1,第\;i\;人做第\;j\;件工作,i,j=1,...,n \end{cases} xi,j={0ij1iji,j=1,...,n

指派问题的数学模型就可以描述为:
minf(x)=∑i=1n∑j=1n(cijxij)s.t.:{∑j=1nxij=1,i=1,...,n∑i=1nxij=1,j=1,...,nxij=0,1,i,j=1,...,nmin\;f(x) = \sum_{i=1} ^n \sum_{j=1} ^n (c_{ij} x_{ij})\\ s.t.:\;\begin{cases} \sum_{j=1} ^n x_{ij} = 1,i=1,...,n\\ \sum_{i=1} ^n x_{ij} = 1,j=1,...,n\\ x_{ij} = 0,1,i,j=1,...,n \end{cases} minf(x)=i=1nj=1n(cijxij)s.t.:j=1nxij=1i=1,...,ni=1nxij=1j=1,...,nxij=0,1i,j=1,...,n

在此基础上,还可以衍生出新的问题:

  • 分配 m 个人去做 n 件工作,已知每个人做每件事的用时,当 m<n(不限定每人工作的件数)、m>n(不限定每件工作的参与人数)时,如何安排使花费的总时间最少。
  • 分配 m 个人去做 n 件工作,已知每个人做每件事的用时,如果允许某人完成自己的工作后去帮助别人,如何安排使花费的总时间最少。


3. 0-1 规划的求解方法

目前 0-1 规划问题并没有通用、高效、精确的求解方法,常用的方法或是针对特殊问题,或是近似方法。

需要特别指出的是,我们在数学建模的学习中会遇到越来越多的问题都没有通用、高效、精确的求解方法,而是借助于计算机算法和程序来得到近似解。

3.1 隐枚举法(Implicit enumeration)

求解 0-1 规划问题的思路,首先是穷举法,遍历决策变量的所有的组合,求出目标函数的最优值。随着问题规模的增大,变量的组合成指数增长,穷举法就不可能实现了。

隐枚举法是通过反复构造过滤条件,不断删除比当前解差的解集,并把优于当前最优解的结果作为新的最优解,再以新的最优解构造新的过滤条件,如此反复直到求出最优解。

隐枚举法通过过滤条件对穷举法进行改进,可以较快地求出最优解。分支定界法也是一种隐枚举法。

3.2 蒙特卡洛法(Monte Carlo)

既然对较大规模问题无法穷举,无法获得数学意义上的最优解,那么另一个思路就是随机搜索。于是大名鼎鼎、无所不能的蒙特卡洛法出场了。

蒙特卡洛法是一类随机方法的统称,也称随机取样法。顾名思义,蒙特卡洛法就是大量地对决策变量随机取值——如果能在满足约束条件的前提下随机取值就更好了,通过比较其目标函数值来不断获得更好的解,最后就能得到近似的最优解。

蒙特卡洛法的特点是,可以在随机采样上计算得到近似结果,采样越多,越近似最优解 ,但无法保证得到的结果是不是全局最优解。可以证明,在一定的计算量的情况下,蒙特卡洛法可以获得较好的满意解。

蒙特卡洛法的思想很简单,看起来算法也很简单,但实际上也涉及了深刻的数学理论,算法理论与实践也都在不断的发展。

蒙特卡洛法不仅可以处理几乎所有的决策问题、优化问题,而且在各种学科领域都得到了广泛的应用。这样的方法我们当然不能错过,后文将专题进行讨论。

3.3 启发式算法(Heuristic algorithms)

设计高效的启发式算法解决实际问题,是解决 0-1 规划问题的另一个思路。

启发式算法通常是以问题为导向的,没有一个通用的框架,根据具体问题的特殊结构来识别启发性信息,构造启发式优化过程来高效地寻找近似最优解。

启发式算法获得的近似最优解,通常是局部最优解。而且,启发式算法的解需要借助其他方法来评估其质量,并且在实际应用中不能保证为各种算例稳定地生成接近全局最优的可行解。

3.4 近似算法(Approximation algorithms)

本来不想在这里谈近似算法的,只是为了说明启发式算法并不是近似算法。

近似算法与启发式算法是不同的,近似算法往往通过巧妙的设计,得到的解是在全局最优解的某个邻域范围之内,或一定比例范围内。近似算法的解可以用严格的数学证明是“比较好”的,因而被认为是有保证的。

3.5 0-1 规划问题的编程方案

总结 0-1 规划的求解方法,就是没有通用、高效、精确的求解方法。

对于小白来说,其实这样更简单,不要操心学习哪种算法了,我们还是用 PuLP 工具包来求解。



4. PuLP 求解 0-1 规划问题

不仅继续用 PuLP 工具包,而且解题过程和编程步骤也与求解线性规划问题完全一致。

下面我们以一个简单的数学模型练习,来讲解整个解题过程,而不仅给出例程。

4.1 案例问题描述

例题 1:
公司有 5 个项目被列入投资计划,各项目的投资额和预期投资收益如下表所示(万元):

项目ABCDE
投资额210300100130260
投资收益1502106080180

公司只有 600万元资金可用于投资,综合考虑各方面因素,需要保证:

(1)项目 A、B、C 中必须且只能有一项被选中;
(2)项目 C、D 中最多只能选中一项;
(3)选择项目 E 的前提是项目 A被选中。

如何在上述条件下,进行投资决策,使收益最大。


4.2 建模过程分析

定义决策变量为:
xi={0,不选择第i个项目1,选择第i个项目x_i = \begin{cases} 0,不选择第\;i\;个项目\\ 1,选择第\;i\;个项目 \end{cases} xi={0i1i
定义目标函数为:
maxf(x)=150x1+210x2+60x3+80x4+180x5s.t.:{210x1+300x2+100x3+130x4+260x5≤600x1+x2+x3=1x3+x4≤1x5≤x1xi=0,1,i=1,...5max\;f(x) = 150x_1+210x_2+60x_3+80x_4+180x_5\\ s.t.:\begin{cases} 210x_1+300x_2+100x_3+130x_4+260x_5 \leq 600\\ x_1 + x_2 + x_3 = 1\\ x_3 + x_4 \leq 1\\ x_5 \leq x_1\\ x_i = 0,1,i=1,...5 \end{cases} maxf(x)=150x1+210x2+60x3+80x4+180x5s.t.:210x1+300x2+100x3+130x4+260x5600x1+x2+x3=1x3+x41x5x1xi=0,1i=1,...5


4.3 模型求解的编程

模型求解,用标准模型的优化算法对模型求解,得到优化结果。模型求解的编程步骤如下:

(0)导入 PuLP库函数

    import pulp

(1)定义一个规划问题

     InvestLP = pulp.LpProblem("Invest decision problem", sense=pulp.LpMaximize)

pulp.LpProblem 用来定义问题的构造函数。"InvestLP"是用户定义的问题名。
参数 sense 指定问题求目标函数的最小值/最大值 。本例求最大值,选择 “pulp.LpMaximize” 。

(2)定义决策变量
对于问题 1:

    x1 = pulp.LpVariable('A', cat='Binary')  # 定义 x1,A 项目x2 = pulp.LpVariable('B', cat='Binary')  # 定义 x2,B 项目x3 = pulp.LpVariable('C', cat='Binary')  # 定义 x3,C 项目x4 = pulp.LpVariable('D', cat='Binary')  # 定义 x4,D 项目x5 = pulp.LpVariable('E', cat='Binary')  # 定义 x5,E 项目

pulp.LpVariable 用来定义决策变量的函数。‘x1’~‘x5’ 是用户定义的变量名。
参数 cat 用来设定变量类型,’ Binary ’ 表示0/1变量(用于0/1规划问题)。

(3)添加目标函数

    InvestLP += (150*x1 + 210*x2 + 60*x3 + 80*x4 + 180*x5)  # 设置目标函数 f(x)

(4)添加约束条件

    InvestLP += (210*x1 + 300*x2 + 100*x3 + 130*x4 + 260*x5 <= 600)  # 不等式约束InvestLP += (x1 + x2 + x3 == 1)  # 等式约束InvestLP += (x3 + x4 <= 1)  # 不等式约束InvestLP += (x5 - x1 <= 0)  # 不等式约束

添加约束条件使用 “问题名 += 约束条件表达式” 格式。
  约束条件可以是等式约束或不等式约束,不等式约束可以是 小于等于 或 大于等于,分别使用关键字">="、"<=“和”=="。

(5)求解

    InvestLP.solve()print(InvestLP.name)  # 输出求解状态print("Status youcans:", pulp.LpStatus[InvestLP.status])  # 输出求解状态for v in InvestLP.variables():print(v.name, "=", v.varValue)  # 输出每个变量的最优值print("Max f(x) =", pulp.value(InvestLP.objective))  # 输出最优解的目标函数值

solve() 是求解函数,可以对求解器、求解精度进行设置。


4.4 Python 例程

# mathmodel06_v1.py
# Demo05 of mathematical modeling algorithm
# Solving 0-1 binary programming with PuLP.
# Copyright 2021 Youcans, XUPT
# Crated:2021-06-02
# Python小白的数学建模课 @ Youcansimport pulp      # 导入 pulp 库# 主程序
def main():# 投资决策问题:# 公司现有 5个拟投资项目,根据投资额、投资收益和限制条件,问如何决策使收益最大。"""问题建模:决策变量:x1~x5:0/1 变量,1 表示选择第 i 个项目, 0 表示不选择第 i 个项目目标函数:max fx = 150*x1 + 210*x2 + 60*x3 + 80*x4 + 180*x5约束条件:210*x1 + 300*x2 + 100*x3 + 130*x4 + 260*x5 <= 600x1 + x2 + x3 = 1x3 + x4 <= 1x5 <= x1x1,...,x5 = 0, 1"""InvestLP = pulp.LpProblem("Invest decision problem", sense=pulp.LpMaximize)  # 定义问题,求最大值x1 = pulp.LpVariable('A', cat='Binary')  # 定义 x1,A 项目x2 = pulp.LpVariable('B', cat='Binary')  # 定义 x2,B 项目x3 = pulp.LpVariable('C', cat='Binary')  # 定义 x3,C 项目x4 = pulp.LpVariable('D', cat='Binary')  # 定义 x4,D 项目x5 = pulp.LpVariable('E', cat='Binary')  # 定义 x5,E 项目InvestLP += (150*x1 + 210*x2 + 60*x3 + 80*x4 + 180*x5)  # 设置目标函数 f(x)InvestLP += (210*x1 + 300*x2 + 100*x3 + 130*x4 + 260*x5 <= 600)  # 不等式约束InvestLP += (x1 + x2 + x3 == 1)  # 等式约束InvestLP += (x3 + x4 <= 1)  # 不等式约束InvestLP += (x5 - x1 <= 0)  # 不等式约束InvestLP.solve()print(InvestLP.name)  # 输出求解状态print("Status youcans:", pulp.LpStatus[InvestLP.status])  # 输出求解状态for v in InvestLP.variables():print(v.name, "=", v.varValue)  # 输出每个变量的最优值print("Max f(x) =", pulp.value(InvestLP.objective))  # 输出最优解的目标函数值returnif __name__ == '__main__':  # Copyright 2021 YouCans, XUPTmain()  # Python小白的数学建模课 @ Youcans

4.5 Python 例程运行结果

Welcome to the CBC MILP Solver 
Version: 2.9.0 
Build Date: Feb 12 2015 Result - Optimal solution foundInvest_decision_problem
Status youcans: Optimal
A = 1.0
B = 0.0
C = 0.0
D = 1.0
E = 1.0
Max f(x) = 410.0

从 0-1 规划模型的结果可知,选择 A、C、E 项目进行投资,可以满足限定条件并获得最大收益 410万元。



5. 小结

  1. 对于小白学数模,能识别哪些问题是 0-1 规划问题,是哪种 0-1规划问题,才能将问题描述转化为数学模型的表达形式。这是数模学习中最重要的内容。
  2. 至于模型的求解,对于算法能了解一些最好,不求甚解也没关系,先学会用工具包解决问题就可以了。
  3. 从线性规划、整数规划到本文的 0-1 规划,我们都选择了 PuLP 工具包。虽然这些问题的类型不同,求解算法差别非常大,但是 PuLp 工具包使用了一致的处理步骤:定义问题、定义变量、定义目标函数和约束条件,调用求解器求解。
  4. 所以我们在求解不同问题时的编程方法和步骤如出一辙,完全感受不到不同类型问题之间的巨大差异。这就是为什么在线性规划问题时不选择 Scipy 的原因,这就是本系列课程的特点,让小白能快速入门求解问题。
  5. 对于更为复杂的问题,PuLP 还提供了快捷方式,可以结合 Python语言的循环和容器,使用字典来创建问题,我们下节再讲。

【本节完】


版权声明:

欢迎关注『Python小白的数学建模课 @ Youcans』 原创作品

原创作品,转载必须标注原文链接:(https://blog.csdn.net/youcans/article/details/117463682)。

Copyright 2021 Youcans, XUPT

Crated:2021-06-02


欢迎关注 『Python小白的数学建模课 @ Youcans』 系列,持续更新
Python小白的数学建模课-01.新手必读
Python小白的数学建模课-02.数据导入
Python小白的数学建模课-03.线性规划
Python小白的数学建模课-04.整数规划
Python小白的数学建模课-05.0-1规划
Python小白的数学建模课-06.固定费用问题
Python小白的数学建模课-07.选址问题
Python小白的数学建模课-09.微分方程模型
Python小白的数学建模课-10.微分方程边值问题
Python小白的数学建模课-12.非线性规划
Python小白的数学建模课-15.图论的基本概念
Python小白的数学建模课-16.最短路径算法
Python小白的数学建模课-17.条件最短路径算法
Python小白的数学建模课-18.最小生成树问题
Python小白的数学建模课-19.网络流优化问题
Python小白的数学建模课-20.网络流优化案例
Python小白的数学建模课-A1.国赛赛题类型分析
Python小白的数学建模课-A2.2021年数维杯C题探讨
Python小白的数学建模课-A3.12个新冠疫情数模竞赛赛题及短评
Python小白的数学建模课-B2. 新冠疫情 SI模型
Python小白的数学建模课-B3. 新冠疫情 SIS模型
Python小白的数学建模课-B4. 新冠疫情 SIR模型
Python小白的数学建模课-B5. 新冠疫情 SEIR模型
Python小白的数学建模课-B6. 新冠疫情 SEIR改进模型
Python数模笔记-PuLP库
Python数模笔记-StatsModels统计回归
Python数模笔记-Sklearn
Python数模笔记-NetworkX
Python数模笔记-模拟退火算法


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mac下一些终端命令的使用

mac基础终端命令入门作为一名编程人员&#xff0c;&#xff08;叫程序猿显得屌丝&#xff0c;叫攻城狮感觉还达不到&#xff09;&#xff0c;我经常看到许多大神在终端里面进行一些神操作。鉴于此&#xff0c;我今天就百度了一下&#xff0c;别问我为什么不Google&#xff0c;穷…

Python小白的数学建模课-06.固定费用问题

Python 实例介绍固定费用问题的建模与求解。 学习 PuLP工具包中处理复杂问题的快捷使用方式。 『Python小白的数学建模课 Youcans』带你从数模小白成为国赛达人。 前文讲到几种典型的 0-1 规划问题&#xff0c;给出了 PuLP 求解的案例。由于 0-1 规划问题种类很多&#xff0…

Python小白的数学建模课-07.选址问题

选址问题是要选择设施位置使目标达到最优&#xff0c;是数模竞赛中的常见题型。 小白不一定要掌握所有的选址问题&#xff0c;但要能判断是哪一类问题&#xff0c;用哪个模型。 进一步学习 PuLP工具包中处理复杂问题的字典格式快捷建模方法。 欢迎关注『Python小白的数学建模…

Python小白的数学建模课-09.微分方程模型

小白往往听到微分方程就觉得害怕&#xff0c;其实数学建模中的微分方程模型不仅没那么复杂&#xff0c;而且很容易写出高水平的数模论文。 本文介绍微分方程模型的建模与求解&#xff0c;通过常微分方程、常微分方程组、高阶常微分方程 3个案例手把手教你搞定微分方程。 通过…

Python小白的数学建模课-B2. 新冠疫情 SI模型

传染病的数学模型是数学建模中的典型问题&#xff0c;常见的传染病模型有 SI、SIR、SIRS、SEIR 模型。 SI 模型是最简单的传染病模型&#xff0c;适用于只有易感者和患病者两类人群。 我们就从 SI 模型开始吧&#xff0c;从模型、例程、运行结果到模型分析&#xff0c;全都在…

Python小白的数学建模课-B3. 新冠疫情 SIS模型

传染病的数学模型是数学建模中的典型问题&#xff0c;常见的传染病模型有 SI、SIR、SIRS、SEIR 模型。 SIS 模型型将人群分为 S 类和 I 类&#xff0c;考虑患病者可以治愈而变成易感者&#xff0c;但不考虑免疫期。 本文详细给出了 SIS 模型的建模、例程、运行结果和模型分析…

html里面Meta标签的使用

HTML meta标签使用 先上思维导图&#xff0c;接下来在是文章内容。一、meta标签的组成 meta标签共有两个属性&#xff0c;它们分别是http-equiv属性和name属性&#xff0c;不同的属性又有不同的参数值&#xff0c;这些不同的参数值就实现了不同的网页功能。 1、name属性 name属…

Python小白的数学建模课-B4. 新冠疫情 SIR模型

传染病的数学模型是数学建模中的典型问题&#xff0c;常见的传染病模型有 SI、SIR、SIRS、SEIR 模型。 SIR 模型将人群分为易感者&#xff08;S类&#xff09;、患病者&#xff08;I类&#xff09;和康复者&#xff08;R 类&#xff09;&#xff0c;考虑了患病者治愈后的免疫能…

Python小白的数学建模课-B5. 新冠疫情 SEIR模型

传染病的数学模型是数学建模中的典型问题&#xff0c;常见的传染病模型有 SI、SIR、SIRS、SEIR 模型。 考虑存在易感者、暴露者、患病者和康复者四类人群&#xff0c;适用于具有潜伏期、治愈后获得终身免疫的传染病。 本文详细给出了 SEIR 模型微分方程的建模、例程、结果和分…

Python小白的数学建模课-B6. 新冠疫情 SEIR 改进模型

传染病的数学模型是数学建模中的典型问题&#xff0c;常见的传染病模型有 SI、SIR、SIRS、SEIR 模型。 SEIR 模型考虑存在易感者、暴露者、患病者和康复者四类人群&#xff0c;适用于具有潜伏期、治愈后获得终身免疫的传染病。 本文详细给出了几种改进 SEIR 模型微分方程的思…

iOS里面MVC模式详解

iOS里面MVC模式详解MVC是IOS里面也是很多程序设计里面的一种设计模式&#xff0c;M是model&#xff0c;V是view&#xff0c;C是controller。MVC模式在ios开发里面可谓是用得淋漓尽致。 以下是对斯坦福大学ios开发里面MVC模式的一段话的翻译 主要的宗旨是把所有的对象分为3个阵营…

Python小白的数学建模课-10.微分方程边值问题

小白往往听到微分方程就觉得害怕&#xff0c;其实数学建模中的微分方程模型不仅没那么复杂&#xff0c;而且很容易写出高水平的数模论文。 本文介绍微分方程模型边值问题的建模与求解&#xff0c;不涉及算法推导和编程&#xff0c;只探讨如何使用 Python 的工具包&#xff0c;…

千帆起航:探索百度智能云千帆AppBuilder在AI原生应用开发中的革新之路

千帆起航&#xff1a;探索百度千帆AppBuilder在AI原生应用开发中的革新之路 1.揭开帷幕&#xff0c;大模型第二次战役 自从 ChatGPT 横空出世后&#xff0c;一石激起千层浪&#xff0c;人工智能也正在从感知理解走向生成创造&#xff0c;这是一个关键里程碑。生成式大模型完成…

iOS开发里面的4个层次

iOS开发里面的4个层次ios开发具体体现为4个层次&#xff0c;你可以看我下面的思维导图。 Media 虽然是媒体层了&#xff0c;然而还是和硬件比较接近。 Core OS 主要是mach 4.x BSD UNIX 内核&#xff0c;也就是Mac OS 10操作系统&#xff0c;一个在硬件上能执行多任务的UNIX内核…

Python小白的数学建模课-12.非线性规划

非线性规划是指目标函数或约束条件中包含非线性函数的规划问题&#xff0c;实际就是非线性最优化问题。从线性规划到非线性规划&#xff0c;不仅是数学方法的差异&#xff0c;更是解决问题的思想方法的转变。非线性规划问题没有统一的通用方法&#xff0c;我们在这里学习的当然…

小程序真机如何清除订阅数据

在做小程序订阅消息开发的过程中发现&#xff0c;真机上如果是选择了‘总是保持以上选择’&#xff0c;一旦用户授权后&#xff0c;后面就不会再弹出申请改订阅消息的授权弹窗&#xff0c;这对于开发过程中是很不方便的。 曾试过清除缓存&#xff0c;重进小程序也不能清除掉 解…

Python小白的数学建模课-15.图论的基本概念

图论中所说的图&#xff0c;不是图形图像或地图&#xff0c;而是指由顶点和边所构成的图形结构。图论不仅与拓扑学、计算机数据结构和算法密切相关&#xff0c;而且正在成为机器学习的关键技术。本系列结合数学建模的应用需求&#xff0c;来介绍 NetworkX 图论与复杂网络工具包…

swift面向对象之属性

swift面向对象之属性 swift属性存储属性 可以存储常量和变量 惰性存储属性 语法&#xff1a;lazy var 变量 惰性存储属性只有在用的时候才会完成真正的初始化&#xff0c;刚开始的初始化代码只是类型占位&#xff0c;并没有分配存储空间。 比如 class people{ var name:Strin…