📜  Python仿真建模简介

📅  最后修改于: 2022-05-13 01:55:00.613000             🧑  作者: Mango

Python仿真建模简介

模拟是模仿系统内发生的操作以研究其行为。分析和创建系统模型以预测其性能称为仿真建模。

仿真模拟现实生活中的过程,以确定或预测整个系统的响应。这有助于了解系统每个部分的依赖关系、它们的关系和相互作用。在现实生活中进行模拟的过程可能代价高昂。因此,我们构建了一个模型来有效地解决昂贵且复杂的想法。在机构或组织中建立模拟模型会增加利润。

模型是原始/真实事物的复制品。模型可以是确定性的或概率性的。确定性模型是不涉及任何随机性的模型。对于给定的初始条件,您总是会得到相同的最终条件。

概率模型包括元素的随机性。例如:抛硬币,可以是正面也可以是反面。



现在让我们一口气了解仿真模型。

假设您必须开一家比萨饼店,并且知道需要多少员工才能正常运营。不同的比萨需要不同的时间来准备。此外,订单不会随着时间的推移而统一出现。您希望在保持预算的同时为他们提供最好的服务。你不能先雇佣然后解雇员工来寻找设计仿真模型所需的最佳人数。我们可以通过以下方式建立模拟模型来解决上述寻找最佳员工人数的问题:

  • 设计:查看公司提供的各种服务,因此,查看各种工作所需的不同类型的员工。
  • 实验:客户在工作日、周末和特殊场合到达的趋势,因此需要相应的员工。
  • 优化:通过查看实验来优化永久雇用的工人数量。
  • 分析:如果给那些负担得起的人就业或要求员工加班,可以在节日期间获得额外的工人。
  • 改进:进一步减少对可视化分析结果的使用。

仿真模型是在构建新系统或改变现有系统以优化系统性能并减少故障机会之前构建的。当今场景中领先的模拟模型之一是蒙特卡罗模拟。

蒙特卡罗模拟

蒙特卡罗模拟是一种数学技术,可帮助估计各种事件结果的概率分布。基于这些概率,风险分析团队决定他们是否准备好承担风险。该技术反复在最小和最大限制之间取随机数并预测其结果。通常,抽样是大规模进行的,因此我们会得到所有可能的结果。然后我们使用风险分析师计算风险概率来绘制概率分布。

例如,让我们考虑上面的示例,客户的到达可以在特定范围内变化。我们可以创建一个模型,该模型在最大和最小数量之间绘制一个随机数,并可以相应地可视化所需的工人范围。

让我们再举一个基本的例子,通过掷骰子来理解蒙特卡罗模拟。假设我们掷两个骰子,我们想预测得到总和的概率为 12。

下面是实现的Python代码,带有注释以便更好地理解:

Python3
# importing the required libraries
import random
import numpy as np
import matplotlib.pyplot as plt
  
  
# function to generate a random number
def roll():
    return random.randint(1, 6)
  
  
# rolling dice 1000000 times and 
# storing in list
val = []
for i in range(0, 1000000):
    sum_of_roll = roll()+roll()
    val.append(sum_of_roll)
  
  
# plotting the graph
plt.hist(val, bins=11, density=True)


输出:

从上面的概率分布曲线,我们得到12的概率值为0.025。同样,我们可以应用蒙特卡罗技术来解决各种问题。