SimPy를 사용한 이산 이벤트 모델링의 기초

Python functions

설치:
SimPy를 설치하려면 다음 명령을 사용하십시오. —

pip install simpy 

기본 개념:

`Äã`ÄãSimPy — 이것은 파이썬의 생성기 함수입니다. 일반 함수와 제너레이터의 차이점은 일반 함수는 return 문을 사용하고 제너레이터는 — yield 문.

함수에 return 문이 있으면 여러 번 함수를 호출해도 동일한 값을 반환합니다. 예를 들어 —


def func():

return 1

return <코드 클래스 = "값"> 2

때 func()는 런타임에 호출되며 항상 return 문의 첫 번째 인스턴스에서 반환됩니다. 즉, func()는 항상 1을 반환하고 다음 return 문은 실행되지 않습니다.

하지만, 이산 이벤트를 시뮬레이션하려면 주어진 시간 T에서 시스템의 상태를 찾아야 할 수도 있습니다. 이렇게 하려면 T 직전의 간격 상태를 기억한 다음 이 시뮬레이션을 수행하고 T 동안 상태로 돌아갑니다.

여기서 생성기 기능은 매우 간단합니다. 예를 들어, 다음 함수를 고려하십시오.


def func ():

동안 True :

산출량 1

<코드 클래스 = "키워드"> 수익률 <코드 클래스 = "값"> 2

이제 이 함수가 처음 호출될 때 1을 "제공"합니다. 그러나 다음에 호출될 때 2를 반환합니다. 어떤 의미에서는 함수가 무엇을 기억하는지 기억합니다. 마지막 호출 후 반환되고 다음 종료 문으로 이동합니다.

SimPy의 이벤트는 자체 생성기 함수로 정의되는 프로세스 라고 합니다. 이러한 프로세스는 환경 내에서 발생합니다. (환경이 내부에 프로세스를 저장하는 큰 상자라고 상상해보십시오.)

신호등 시뮬레이션과 관련된 간단한 예를 살펴보겠습니다.


# SimPy 패키지의 기본 사항을 보여주는 Python 2.7 코드
# 신호등 시뮬레이션


# SimPy 패키지 가져오기

가져오기 단순


# 생성기 함수 신호등이 작동하는 방식을 결정합니다.
# timeout() 함수는 다음 yield 문을 기다리게 합니다.
# this 시간이 인수로 전달되었습니다.

def Traffic_Light(en v):


동안 True :


<코드 클래스 ="functions "> 인쇄 " 조명은 " + str에서 GRN을 켭니다. (env.now)


# 25초 동안 녹색으로 켜짐

yield env.timeout ( 25 )


print "조명은 " < 코드 클래스 = "키워드"> + <코드 클래스 = "함수"> str <코드 클래스 = "일반"> (env.now)

< br>

# 5초 동안 밝은 노란색

yield env.timeout ( <코드 클래스 = "값"> 5 <코드 클래스 = "일반">)


인쇄 "빛이 빨간색으로 바뀌면" + str (env.now)


# 빨간색으로 켜짐 60초

yield env.timeout ( 60 )


# 환경 변수

<코드 클래스 = "일반"> 환경 <코드 클래스 = "키워드"> = <코드 클래스 = "일반"> simpy.Environment()


# Traffic_Light(env)에 의해 정의된 프로세스
# 수요일에 추가됨
env.process (Traffic_Light (env) )


# 프로세스는 처음 180초 이내에 시작됩니다(180은 포함)

e nv.run ( = 180 )

종료:

조명이 0에서 GRN으로 변합니다. 조명이 25에서 YEL로 변합니다. 조명이 30에서 빨간색으로 변합니다. 조명이 GRN으로 변합니다. 90에서 빛이 115에서 YEL로 바뀌면 120에서 빛이 빨간색으로 바뀝니다. 

이 코드에서 Traffic_Light(env) 생성기 함수는 환경 변수를 인수로 사용하고 다음과 같이 전달된 기간 동안 신호등을 시뮬레이션합니다. env.run에 대한 인수( ). (실제로 SimPy의 시간은 단위가 없습니다. 편의상 시, 분 또는 초로 변환할 수 있지만). env.now는 현재 경과 시간을 반환합니다.

env.timeout() 함수는 전달된 시간이 컴퓨터의 시뮬레이션 시계( 실시간 시계가 아님) 그리고 env.run()에 인수로 전달된 시간이 다 될 때까지 다음 yield 문을 트리거합니다.

env.run()은 환경과 관련된 모든 프로세스를 시작합니다. 동시에 = 0 .

Shop

Gifts for programmers

Best Python online courses for 2022

$FREE
Gifts for programmers

Best laptop for Excel

$
Gifts for programmers

Best laptop for Solidworks

$399+
Gifts for programmers

Best laptop for Roblox

$399+
Gifts for programmers

Best computer for crypto mining

$499+
Gifts for programmers

Best laptop for Sims 4

$
Gifts for programmers

Best laptop for Zoom

$499
Gifts for programmers

Best laptop for Minecraft

$590

Latest questions

PythonStackOverflow

Common xlabel/ylabel for matplotlib subplots

1947 answers

PythonStackOverflow

Check if one list is a subset of another in Python

1173 answers

PythonStackOverflow

How to specify multiple return types using type-hints

1002 answers

PythonStackOverflow

Printing words vertically in Python

909 answers

PythonStackOverflow

Python Extract words from a given string

798 answers

PythonStackOverflow

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

606 answers

PythonStackOverflow

Python os.path.join () method

384 answers

PythonStackOverflow

Flake8: Ignore specific warning for entire file

360 answers


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

How to specify multiple return types using type-hints

Printing words vertically in Python

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically