- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 python 2.6 + Simpy 进行关于地铁系统的模拟。这是我的代码:
import sys
import random
from math import*
from math import ceil, log
from random import*
from random import random, uniform, seed, expovariate
from SimPy import*
from SimPy.Simulation import*
from math import ceil, log
totalusuarios = 0
cantgrupos=0
def triangulo(inf,sup,moda):
return random.triangular((inf),(sup),(moda))
def geometric(q):
if q == 1.0:
return 1
U = 1.0 - random.random()
G = int(ceil(log(U) / log(1.0 - q)))
return G
# A class that represents the process of generation of Groups (arrivals)
class Generador(Process):
def generar(self, prob,interarribo, porc_torniq, porc_taq, porc_maq, min, max, moda, tsertaq, tsertor, tsermaq, loncal):
global totalusuarios
global cantgrupos
totalusuarios=0
cantgrupos=0
while True:
size_g = geometric (prob)
if (now()>loncal):
cantgrupos+=1
totalusuarios=totalusuarios+size_g
for j in range (size_g):
c = Customer(name = "Usuario%02d"%(j,))
q = uniform (0,1)
##******************the userr go to the tourniquet-------------------------
if (q<=porc_torniq): #the userr go to the tourniquet
activate(c,c.go_torn(min=min, max=max, moda=moda, tsertor=tsertor)) #el cliente se desplaza
##******************the user walks to buy ticket on the office-------------------------
if (q>porc_torniq and q<=porc_torniq+porc_taq): #user go to ticket station to buy
activate(c,c.go_tickets(min, max, moda, tsertaq=tsertaq, tsertor=tsertor))
##******************the user walks to buy ticket machines-------------------------
if (q>porc_torniq+porc_taq): #user go to machines
activate(c,c.go_machines(min= min, max=max, moda=moda, tsermaq=tsermaq, tsertor=tsertor))
t = expovariate(interarribo) #time between groups of users
yield hold, self, t
class Customer(Process):
def move(self, min, max ,moda):
t1= triangulo(min_, max_, moda_)
yield hold, self,t1
def go_torn(self, min, max ,moda, tsertor):
move(min, max, moda)
yield request, self, torniquete
t2= expovariate(tsertor)
yield hold, self, t2
yield release, self, torniquete
def go_tickets(self, min, max ,moda, tsertaq, tsertor):
move(min, max, moda)
yield request, self, taquilla
t3= expovariate(tsertaq)
yield hold, self, t3
yield release, self, taquilla
go_torn(self, min, max,moda, tsertor)
def go_machines(self, min, max ,moda, tsermaq, tsertor):
move(min, max, moda)
yield request, self, taquilla
t4= expovariate(tsermaq)
yield hold, self, t4
yield release, self, taquilla
go_torn(self, min, max ,moda, tsertor)
## Experiment data ------------------------------
MedGru= 2.0
p= 1/MedGru
TasGru= 5.0
LonCor = 24.0
CanCor= 30
CanTor = 2
CanTaq=2
CanMaq=2
PorTor= 60.0/100.0
PorTaq= 20.0/100.0
PorMaq=20.0/100.0
MinDes= 0.1
MaxDes= 0.2
LonCal= 2.0*60
ModaDes= 0.15
TSerTaq= 1/0.35
TSerTor=1/0.1
TSerMaq= 1/0.5
## Model/Experiment ------------------------------
torniquete = Resource(capacity=CanTor, monitored=True, monitorType= Monitor)
maquina = Resource(capacity=CanMaq, monitored=False)
taquilla = Resource(capacity=CanTaq, monitored=False)
def simulate_():
generador = Generador(name="Grupo")
initialize() #inicializa el reloj de simulacion
activate(generador,generador.generar(p, TasGru,PorTor, PorTaq, PorMaq,
MinDes,MaxDes ,ModaDes, TSerTaq, TSerTor, TSerMaq, LonCal ))
simulate(until=60*LonCor)
for i in range(CanCor):
simulate_()
print "Groups:",cantgrupos, "Users:",totalusuarios
该代码由 User 类滚动中的 4 个函数组成,它使用三角形分布来模拟乘客在车站内、任何区域(售票处、机器或止血带)入口处以及从一个区域到另一个区域的位移, 有一个具有参数 min、mode 和 Max 分钟的三角分布随机项。
在售票处为每位乘客提供服务所需的时间是分配的遗嘱TSerTaq 在半分钟内呈指数增长。每位使用自动售货机的乘客票证在随机时间内被占用,且与平均 TSerMaq 呈指数分布分钟。通过旋转栅门每位乘客所花费的时间是随机分配的TSerTor 在半分钟内呈指数增长。
当我尝试运行代码时,它会告诉我以下消息:
C:\Documents and Settings>python llegada.py
Traceback (most recent call last):
File "llegada.py", line 111, in <module>
simulate_()
File "llegada.py", line 109, in simulate_
simulate(until=60*LonCor)
File "C:\Python26\SimPy\Globals.py", line 39, in simulate
return sim.simulate(until = until)
File "C:\Python26\SimPy\Simulation.py", line 689, in simulate
a = nextev()
File "C:\Python26\SimPy\Simulation.py", line 408, in _nextev
resultTuple = nextEvent._nextpoint.next()
File "llegada.py", line 65, in go_tickets
move(min, max, moda)
NameError: global name 'move' is not defined
我不明白我做错了什么以及为什么我移动表明该对象未定义。请提供一些帮助
最佳答案
您需要self.move()
而不是move()
。 move()
将是模块中的顶级函数,因此 Python 提示找不到它作为全局名称; self.move()
是类实例上的一个方法,这是您实际拥有的。
所有其他方法调用也需要在前面添加 self.
。
关于Python + simPy : name 'move' is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9168813/
我简化了我正在尝试建模的问题的一个版本,我使用 Simpy 来描述旅行者沿路径的移动。 路径由 Node() 对象的集合表示,其中每个节点都包含一个 Simpy.Resource。每个节点都通过 co
我开始学习SimPy DES框架。我想实现一个模拟,其中请求在不同时间到达服务器。有不同类型的请求,每一种请求都会向服务器加载特定的内存/CPU 负载。例如,某些请求通常使用 10% 的 CPU 和
在模拟中,我希望能够在调用另一个释放资源的函数之前在一个函数中请求资源。当我使用下面所示的方法时,它不起作用并且出现错误。提前致谢。 (在函数 1 中): req = resource.request
我已经在线搜索了许多与 TypeError 相关的答案,并多次扫描了我的代码,但我似乎看不到我缺少的第三个参数是什么。我正在使用 Python 2.7 和 Simpy 3 我的代码如下: im
我想加快 SimPy 模拟速度(如果可能的话),但我不确定插入计时器的最佳方法,甚至看看什么花费了很长时间。 有办法做到这一点吗? 最佳答案 我建议使用runsnakerun (或者我猜是py3x中的
我正在尝试中断一组简单的嵌套进程。从下面的代码看来,只有第一层进程被中断事件中断,并且我似乎无法找到一种方法从外部进程外部引用另一个进程中定义的进程以中断它们。下面是一个最小的可重现示例: impor
我需要帮助在 SimPy 中模拟火车系统(如地铁系统),问题是我的“模拟”老师要我使用 Python + SimPy 而我不知道如何使用它,经过一周阅读 SimPy 我设法理解了银行的例子,这很容易,
我想创建一个带有回调的计时器,该回调可以使用 SimPy 中断或重置。如果中断,我不想执行回调,如果重置,我希望计时器以与 env.now 相同的延迟重新启动。最初,这似乎是一件简单的事情,只需使用
我是 Simpy 的新手,我在弄清楚如何为具有复杂依赖关系的进程调度程序建模时遇到了麻烦。 我的问题的高级摘要: 我有一个仓库,通过入口接收装有元素的箱子。这些箱子被放入队列中等待处理。 每个箱子都有
我目前正在尝试使用 SimPy 为服务计数器建模,但在使用 Yield 来保存资源时遇到了困难。在 Counter.arrive() 函数下,如果存在“yield req”行,则整个函数将跳过执行(至
我正在尝试创建一个类实例的副本,我可以在不影响该类的原始实例的情况下模拟它。我尝试过使用 copy.copy,但遇到了这个问题: system.simulate(until=100) print(sy
假设我有 3 项任务: def task1(): if check_if_theres_work_to_do(): #just checking takes 2us do_w
我想模拟两个过程: (1) 一个简单的实时消息广播器(确定性的)和 (2) 另一个进程从外部实时接收数据(从 Redis 数据库),然后将自己的消息与 (1) 广播的最后一条消息的值进行比较 我一直在
我已经为此搜索了其他问题/答案并实现了所有内容,但我仍然无法访问该对象的值。这是我正在使用的代码: function apply_voucher(voucher) { var dates =
我正在使用 python 2.6 + Simpy 进行关于地铁系统的模拟。这是我的代码: import sys import random from math import* from math im
我正在尝试模拟一种情况,即我们有 5 台机器出现 1 -> 3 -> 1 的情况。即中间的3个并行运行,以减少它们所花费的有效时间。 我可以通过创建一个值为 3 的 SimPy 资源来轻松模拟这一点,
我正在使用 Python(主要是 SimPy 包,但它与我认为的问题无关),对一些系统进行建模并运行模拟。为此,我需要生成服从分布的随机数。到目前为止,我通过导入随机数(例如来自随机导入 *)并使用
我想创建一个仿真模型来模拟具有 3 个柜台的银行。我希望有一个客户队列,如果有任何一个柜台可用,它将为该柜台服务一段时间。每个柜台都是自己的简单资源(我不能做一个容量为 3 的资源),我需要知道哪个柜
我正在尝试使用 Simpy 对围绕城市网格移动的汽车的某些行为进行建模。但是,我在概念上无法理解何时使用类似 的东西 yield self.env.timeout(delay) 或 yield env
我在构建模拟时遇到了问题,我不确定如何解决这些问题。本次模拟的思路如下: 系统中一共有10台机器。当模拟开始时,其中 6 台机器将开始工作,而其他 4 台机器将作为备件保留在库存中。 要求系统中任意时
我是一名优秀的程序员,十分优秀!