KR102309714B1 - 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치 - Google Patents

병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치 Download PDF

Info

Publication number
KR102309714B1
KR102309714B1 KR1020190178347A KR20190178347A KR102309714B1 KR 102309714 B1 KR102309714 B1 KR 102309714B1 KR 1020190178347 A KR1020190178347 A KR 1020190178347A KR 20190178347 A KR20190178347 A KR 20190178347A KR 102309714 B1 KR102309714 B1 KR 102309714B1
Authority
KR
South Korea
Prior art keywords
link
vehicles
cell
vehicle
traffic simulation
Prior art date
Application number
KR1020190178347A
Other languages
English (en)
Other versions
KR20210085375A (ko
Inventor
민덕기
신인수
Original Assignee
건국대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 건국대학교 산학협력단 filed Critical 건국대학교 산학협력단
Priority to KR1020190178347A priority Critical patent/KR102309714B1/ko
Publication of KR20210085375A publication Critical patent/KR20210085375A/ko
Application granted granted Critical
Publication of KR102309714B1 publication Critical patent/KR102309714B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Traffic Control Systems (AREA)

Abstract

본 발명의 실시예에 따른 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치가 제공된다. 본 발명의 실시예에 따른 교통 시뮬레이션 방법은, 도로를, 동일 특성을 가지도록 분할한 복수의 링크(link) 중 제1 링크에서 다음 링크인 제2 링크로 이동 가능한 제1 차량 수를 결정하여 상기 결정된 제1 차량 수를 링크 사이에 위치한 커넥션 셀(connection cell)을 통해 상기 제2 링크로 전달하는 제1 단계; 상기 커넥션 셀을 통해 상기 제2 링크에서 수용 가능한 제2 차량 수를 획득하는 제2 단계; 및 상기 제1 차량 수에 해당하는 차량 중 상기 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 제2 링크로 이동시키도록 시뮬레이션하는 제3 단계를 포함하고, 상기 제1 단계, 상기 제2 단계 및 상기 제3 단계는, 상기 복수의 링크 각각에 대응하여 상기 교통 시뮬레이션 장치의 GPU(Graphic Processing Unit)에 포함된 복수의 코어 각각에 스레드(thread)로서 할당되고, 상기 할당된 스레드는, 상기 복수의 코어 각각에서 병렬적으로 적어도 동시에 실행된다.

Description

병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치{TRAFFIC SIMULATION METHOD BASED ON PARALLEL PROCESSING AND APPRATUS THEREFOR}
본 발명은 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치에 관한 것이다.
최근 지속적인 차량의 증가로 인한 주행차량의 폭증으로 교통 체증, 교통사고, 교통 환경, 및 교통 서비스 등의 다양한 교통 문제가 발생하고 있다. 이러한 교통 문제를 해결하기 위해 현실의 도로별 교통 흐름 또는 차량 이동과 같은 교통 상황을 모델링하여 가상으로 수행시키는 교통 시뮬레이션 장치(traffic simulation device)가 주목받고 있다.
일반적으로, 교통 시뮬레이션 장치는 하이패스, 스마트 교통 카드 시스템 등을 통해 수집된 도로 교통 빅데이터를 이용하여 적어도 하나의 시나리오에 따라 도로별 차량 흐름 또는 차량 이동 등을 시뮬레이션한다.
그러나, 교통 시뮬레이션 장치는 교통 시뮬레이션을 위해 많은 양의 데이터를 순차적으로 처리해야 하므로, 데이터 처리를 위해 소요되는 시간 및 리소스가 증가하는 문제점이 있다.
따라서, 교통 시뮬레이션을 위해 소요되는 시간 및 리소스 등을 최소화하면서 효율적이고, 빠른 교통 시뮬레이션을 수행하는 방법 및 이를 위한 장치가 요구된다.
본 발명이 해결하고자 하는 과제는 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치를 제공하는 것이다.
구체적으로, 본 발명이 해결하고자 하는 과제는 교통 시뮬레이션을 위해 소요되는 시간 및 리소스 등을 최소화하면서 효율적이고, 빠른 교통 시뮬레이션을 수행하기 위해 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치를 제공하는 것이다.
본 발명의 과제들은 이상에서 언급한 과제들로 제한되지 않으며, 언급되지 않은 또 다른 과제들은 아래의 기재로부터 당업자에게 명확하게 이해될 수 있을 것이다.
상술한 바와 같은 과제를 해결하기 위하여 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치가 제공된다. 본 발명의 실시예에 따른 교통 시뮬레이션 방법은, 도로를, 동일 특성을 가지도록 분할한 복수의 링크(link) 중 제1 링크에서 다음 링크인 제2 링크로 이동 가능한 제1 차량 수를 결정하여 상기 결정된 제1 차량 수를 링크 사이에 위치한 커넥션 셀(connection cell)을 통해 상기 제2 링크로 전달하는 제1 단계; 상기 커넥션 셀을 통해 상기 제2 링크에서 수용 가능한 제2 차량 수를 획득하는 제2 단계; 및 상기 제1 차량 수에 해당하는 차량 중 상기 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 제2 링크로 이동시키도록 시뮬레이션하는 제3 단계를 포함하고, 상기 제1 단계, 상기 제2 단계 및 상기 제3 단계는, 상기 복수의 링크 각각에 대응하여 상기 교통 시뮬레이션 장치의 GPU(Graphic Processing Unit)에 포함된 복수의 코어 각각에 스레드(thread)로서 할당되고, 상기 할당된 스레드는, 상기 복수의 코어 각각에서 병렬적으로 적어도 동시에 실행된다.
본 발명의 실시예에 따른 교통 시뮬레이션 방법은, 도로를, 동일 특성을 가지도록 분할한 복수의 링크(link) 중 제1 링크에서 다음 링크인 제2 링크로 이동 가능한 제1 차량 수를 결정하여 상기 결정된 제1 차량 수를 링크 사이에 위치한 커넥션 셀(connection cell)을 통해 상기 제2 링크로 전달하는 제1 단계; 상기 커넥션 셀을 통해 상기 제2 링크의 차량 속도, 차량 밀도 및 상기 제2 링크를 구성하는 복수의 셀(cell) 각각에서 수용 가능한 제2 차량 수를 포함하는 차량 데이터를 획득하는 제2 단계; 및 상기 제1 차량 수에 해당하는 차량 중 상기 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 제2 링크로 이동시키도록 시뮬레이션하는 제3 단계를 포함하고, 상기 제1 단계, 상기 제2 단계 및 상기 제3 단계가 수행된 이후 다음 시뮬레이션 동작에서 상기 차량 데이터를 이용하여 상기 제2 링크에서 수용 가능한 제2 차량 수를 예측하는 제4 단계; 및 상기 예측된 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 제2 링크로 이동시키도록 시뮬레이션하는 제5 단계를 포함하고, 상기 제4 단계 및 상기 제5 단계는 기 설정된 횟수동안 수행된다.
본 발명의 실시예에 따른 교통 시뮬레이션 장치는, 데이터를 저장하는 저장부; 및 상기 저장부와 연결되고, 교통 시뮬레이션을 위해 사용되는 시뮬레이션 요소 데이터, 도로 네트워크 데이터 및 교통 수요 데이터를 이용하여 상기 교통 시뮬레이션을 수행하도록 구성된 제어부를 포함하고, 상기 제어부는, GPU(Graphic Processing Unit)를 포함하도록 구성되고, 상기 GPU는, 복수의 코어를 포함하도록 구성되고, 상기 복수의 코어 중 제1 코어는, 도로를, 동일 특성을 가지도록 분할한 복수의 링크(link) 중 제1 링크에서 다음 링크인 제2 링크로 이동 가능한 제1 차량 수를 결정하여 상기 결정된 제1 차량 수를 링크 사이에 위치한 커넥션 셀(connection cell)을 통해 상기 제2 링크로 전달하는 제1 동작, 상기 커넥션 셀을 통해 상기 제2 링크에서 수용 가능한 제2 차량 수를 획득하는 제2 동작, 상기 제1 차량 수에 해당하는 차량 중 상기 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 제2 링크로 이동시키는 제3 동작을 수행하도록 구성되고, 상기 제1 동작, 상기 제2 동작 및 상기 제3 동작은, 상기 복수의 링크 각각에 대응하여 상기 복수의 코어 각각에 스레드(thread)로서 할당되고, 상기 할당된 스레드는, 상기 복수의 코어 각각에서 병렬적으로 적어도 동시에 실행된다.
본 발명의 실시예에 따른 교통 시뮬레이션 장치는, 데이터를 저장하는 저장부; 및 상기 저장부와 연결되고, 교통 시뮬레이션을 위해 사용되는 시뮬레이션 요소 데이터, 도로 네트워크 데이터 및 교통 수요 데이터를 이용하여 상기 교통 시뮬레이션을 수행하도록 구성된 제어부를 포함하고, 상기 제어부는, GPU(Graphic Processing Unit)를 포함하도록 구성되고, 상기 GPU는, 복수의 코어를 포함하도록 구성되고, 상기 복수의 코어 중 제1 코어는, 도로를, 동일 특성을 가지도록 분할한 복수의 링크(link) 중 제1 링크에서 다음 링크인 제2 링크로 이동 가능한 제1 차량 수를 결정하여 상기 결정된 제1 차량 수를 링크 사이에 위치한 커넥션 셀(connection cell)을 통해 상기 제2 링크로 전달하는 제1 동작, 상기 커넥션 셀을 통해 상기 제2 링크의 차량 속도, 차량 밀도 및 상기 다음 링크를 구성하는 복수의 셀(cell) 각각에서 수용 가능한 제2 차량 수를 포함하는 차량 데이터를 획득하는 제2 동작, 상기 제1 차량 수에 해당하는 차량 중 상기 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 다음 링크로 이동시키는 제3 동작을 수행하도록 구성되고, 상기 제1 동작, 상기 제2 동작 및 상기 제3 동작이 수행된 이후 상기 제어부는, 다음 시뮬레이션 동작에서 상기 차량 데이터를 이용하여 상기 제2 링크에서 수용 가능한 제2 차량 수를 예측하는 제4 동작, 및 상기 예측된 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 제2 링크로 이동시키도록 시뮬레이션하는 제4 동작을 수행하도록 구성되며, 상기 제4 동작 및 상기 제5 동작은 기 설정된 횟수동안 수행된다.
기타 실시예의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 발명은 교통 시뮬레이션을 위해 소요되는 시간 및 리소스 등을 최소화하면서 효율적이고, 빠른 교통 시뮬레이션을 수행하는 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치를 제공할 수 있다.
본 발명에 따른 효과는 이상에서 예시된 내용에 의해 제한되지 않으며, 더욱 다양한 효과들이 본 발명 내에 포함되어 있다.
도 1은 본 발명의 실시예에 따른 교통 시뮬레이션 장치의 블록도이다.
도 2는 본 발명의 실시예에 따른 제어부에 대한 개략도이다.
도 3a, 도 3b, 도 3c 및 도 3d는 본 발명의 실시예에 따른 병렬 처리 기반의 교통 시뮬레이션 방법을 설명하기 위한 예시도들이다.
도 4는 본 발명의 실시예에 따른 교통 시뮬레이션 장치에서 버퍼를 이용하여 교통 시뮬레이션을 수행하는 방법을 설명하기 위한 예시도이다.
도 5는 본 발명의 실시예에 따른 교통 시뮬레이션 장치에서 교차로를 구성하는 링크 간의 차량 이동을 수행하는 방법을 설명하기 위한 예시도이다.
도 6은 본 발명의 실시예에 따른 교통 시뮬레이션 장치에서 병렬 처리 기반의 교통 시뮬레이션을 수행하는 방법을 나타내는 흐름도이다.
도 7은 본 발명의 실시예에 따른 교통 시뮬레이션 장치에서 링크 간의 차량 이동을 수행하는 방법을 나타내는 흐름도이다.
도 8은 본 발명의 또 다른 실시예에 따른 교통 시뮬레이션 장치에서 링크 간의 차량 이동을 수행하는 방법을 나타내는 흐름도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나, 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 것이며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조부호가 사용될 수 있다.
본 문서에서, "가진다," "가질 수 있다," "포함한다," 또는 "포함할 수 있다" 등의 표현은 해당 특징(예: 수치, 기능, 동작, 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, "A 또는 B," "A 또는/및 B 중 적어도 하나," 또는 "A 또는/및 B 중 하나 또는 그 이상" 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, "A 또는 B," "A 및 B 중 적어도 하나," 또는 "A 또는 B 중 적어도 하나"는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함, 또는(3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 문서에서 사용된 "제1," "제2," "첫째," 또는 "둘째," 등의 표현들은 다양한 구성요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성요소를 다른 구성요소와 구분하기 위해 사용될 뿐 해당 구성요소들을 한정하지 않는다. 예를 들면, 제1 사용자 기기와 제2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 문서에 기재된 권리범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제 2 구성요소도 제1 구성요소로 바꾸어 명명될 수 있다.
어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)" 있다거나 "접속되어(connected to)" 있다고 언급된 때에는, 상기 어떤 구성요소가 상기 다른 구성요소에 직접적으로 연결되거나, 다른 구성요소(예: 제3 구성요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소(예: 제1 구성요소)가 다른 구성요소(예: 제2 구성요소)에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 상기 어떤 구성요소와 상기 다른 구성요소 사이에 다른 구성요소(예: 제3 구성요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 "~하도록 구성된(또는 설정된)(configured to)"은 상황에 따라, 예를 들면, "~에 적합한(suitable for)," "~하는 능력을 가지는(having the capacity to)," "~하도록 설계된(designed to)," "~하도록 변경된(adapted to)," "~하도록 만들어진(made to)," 또는 "~ 를 할 수 있는(capable of)"과 바꾸어 사용될 수 있다. 용어 "~하도록 구성된(또는 설정된)"은 하드웨어적으로 "특별히 설계된(specifically designed to)" 것만을 반드시 의미하지 않을 수 있다. 대신, 어떤 상황에서는, "~하도록 구성된 장치"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 "~할 수 있는" 것을 의미할 수 있다. 예를 들면, 문구 "A, B, 및 C를 수행하도록 구성된(또는 설정된)프로세서"는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시 예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 문서에 기재된 기술분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 문서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 문서의 실시 예들을 배제하도록 해석될 수 없다.
본 발명의 여러 실시예들의 각각 특징들이 부분적으로 또는 전체적으로 서로 결합 또는 조합 가능하며, 당업자가 충분히 이해할 수 있듯이 기술적으로 다양한 연동 및 구동이 가능하며, 각 실시예들이 서로에 대하여 독립적으로 실시 가능할 수도 있고 연관 관계로 함께 실시 가능할 수도 있다.
본 명세서에서, 도로는 동일 특성을 갖는 복수의 링크(link)로 구분되며, 링크는 차선(lane) 및 도로 방향으로 링크의 길이를 나타내는 섹션(section)으로 나뉜다.
본 명세서에서, 셀(cell)은 링크, 섹션 및 차선으로 이루어진 세부 단위로서, 차량 이동, 도로에서의 차량 속도 및 밀도 등을 평가하기 위한 기준이 된다.
본 명세서에서, 커넥션 셀(connection cell)은 링크와 링크를 잇는 단위로, 링크의 도로별 연결 데이터 및 교통 신호 데이터에 기반하여 링크 간의 차량을 분배하는 역할을 수행한다. 여기서, 도로별 연결 데이터는 링크에서 연결되는 다음 링크에 대한 정보를 포함하고, 교통 신호 데이터는 링크 사이의 교통 신호에 대한 정보를 포함할 수 있다.
본 명세서에서, 소스(source)는 차량이 링크로 들어가기 전에 저장되는 공간으로, 주차장, 건물 등과 같은 공간에 대응할 수 있다. 시뮬레이션 주기마다 소스에 차량이 생성되며, 링크의 수용 여부에 따라 소스에 존재하는 차량이 링크에 진입할 수 있다. 소스에 생성된 차량은 주행 시작 시간, 주행 경로, 타겟 차로 범위를 가질 수 있다.
본 명세서에서, 싱크(sink)는 주행을 끝낸 차량이 진출하는 공간으로, 주행이 끝난 차량에 대한 정보를 저장할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 다양한 실시예들을 상세히 설명한다.
도 1은 본 발명의 실시예에 따른 교통 시뮬레이션 장치의 블록도이다.
도 1을 참조하면, 교통 시뮬레이션 장치(100)는 도로를 복수개로 분할한 링크 간의 차량 흐름을 시뮬레이션(simulation)하기 위한 장치로서, 통신부(110), 표시부(120), 저장부(130) 및 제어부(140)를 포함한다. 예를 들어, 교통 시뮬레이션 장치(100)는 PC(Personal Computer), 노트북, 태블릿 PC 등과 같은 컴퓨팅 장치일 수 있으나, 이에 한정되지 않으며, 교통 시뮬레이션이 가능한 다양한 장치가 이용될 수 있다.
이러한 교통 시뮬레이션 장치(100)는 도로에 대한 차량 데이터(예: 차량의 속도, 밀도, 주행 방향 등), 링크 데이터(예: 링크의 수, 링크의 크기 등) 및 커넥션 셀 데이터(예: 링크 간의 도로별 연결 데이터 및 교통 신호 데이터 등)를 포함하는 시뮬레이션 요소 데이터에 기반하여 링크 간의 차량 흐름을 시뮬레이션할 수 있다.
먼저, 통신부(110)는 교통 시뮬레이션 장치(100)가 외부 장치와 통신이 가능하도록 연결한다. 예를 들어, 통신부(110)는 유/무선 통신을 이용하여 외부 장치와 연결되어 다양한 데이터를 송수신할 수 있다.
표시부(120)는 사용자에게 각종 콘텐츠(예: 텍스트, 이미지, 비디오, 아이콘, 배너 또는 심볼 등)를 표시할 수 있다. 구체적으로, 표시부(120)는 교통 시뮬레이션 결과를 나타내는 인터페이스 화면을 표시할 수 있다.
다양한 실시예에서 표시부(120)는 터치스크린을 포함할 수 있으며, 예를 들면, 전자 펜 또는 사용자의 신체의 일부를 이용한 터치(touch), 제스처(gesture), 근접, 드래그(drag), 스와이프(swipe) 또는 호버링(hovering) 입력 등을 수신할 수 있다.
저장부(130)는 링크 간의 차량 흐름을 시뮬레이션하기 위해 사용되는 다양한 데이터를 저장할 수 있다. 특히, 저장부(130)는 교통 시뮬레이션을 위해 사용되는 도로별 차량 데이터, 링크 데이터 및 커넥션 셀 데이터를 포함하는 시뮬레이션 요소 데이터를 저장할 수 있다.
다양한 실시예에서 저장부(130)는 플래시 메모리 타입(flash memory type), 하드디스크 타입(hard disk type), 멀티미디어 카드 마이크로 타입(multimedia card micro type), 카드 타입의 메모리(예를 들어 SD 또는 XD 메모리 등), 램(Random Access Memory, RAM), SRAM(Static Random Access Memory), 롬(Read-Only Memory, ROM), EEPROM(Electrically Erasable Programmable Read-Only Memory), PROM(Programmable Read-Only Memory), 자기 메모리, 자기 디스크, 광디스크 중 적어도 하나의 타입의 저장매체를 포함할 수 있다. 교통 시뮬레이션 장치(100)는 인터넷(internet)상에서 상기 저장부(130)의 저장 기능을 수행하는 웹 스토리지(web storage)와 관련되어 동작할 수도 있다.
제어부(140)는 통신부(110), 표시부(120) 및 저장부(130)와 동작 가능하게 연결되며, 링크 간의 차량 흐름을 시뮬레이션하기 위한 다양한 명령들을 수행할 수 있다.
제어부(140)는 교통 시뮬레이션을 위해 사용되는 시뮬레이션 요소 데이터를 이용하여 도로를 동일 특성을 가지도록 분할한 복수의 링크 간의 차량 이동 시뮬레이션 동작을 수행할 수 있다.
이를 위해 제어부(140)는 제1 처리부(150) 및 제2 처리부(160)를 포함할 수 있다.
제1 처리부(150)는 도로 교통 빅데이터에 기반하여 적어도 하나의 교통 시나리오에 따라 교통 시뮬레이션을 위한 시뮬레이션 요소 데이터, 도로 네트워크 데이터 및 교통 수요 데이터를 생성할 수 있다. 예를 들어, 제1 처리부(150)는 CPU(Central Processing Unit)일 수 있으나, 이에 한정되지 않는다. 여기서, 도로 교통 빅데이터는 실제 도로에 대한 구성, 주행 방향, 교통 신호, 차량 수요 및 교통 상황 등을 나타내는 데이터로서, 주기적으로 수집될 수 있다. 또한, 시뮬레이션 요소 데이터는 교통 시뮬레이션을 위한 차량의 속도, 밀도 및 주행 방향 등을 포함하는 차량 데이터, 링크의 수 및 크기 등을 포함하는 링크 데이터, 및 링크 간의 도로별 연결 데이터 및 교통 신호 데이터 등을 포함하는 커넥션 셀 데이터를 포함할 수 있다. 도로 네트워크 데이터는 교통 시뮬레이션을 위한 도로를 구성하는 링크, 커넥션 셀, 소스 및 싱크를 나타내고, 교통 수요 데이터는 도로 네트워크를 기준으로 시뮬레이션용 차량의 경로를 나타낼 수 있다. 적어도 하나의 교통 시나리오는 기 저장되거나, 교통 시뮬레이션을 위해 다양하게 설정될 수 있으며, 이에 한정되지 않는다.
제2 처리부(160)는 복수의 링크 각각에 대응하여 링크 간의 차량 이동 시뮬레이션 동작을 병렬적으로 적어도 동시에 수행할 수 있다. 예를 들어, 제2 처리부(160)는 GPU(Graphic Processing Unit)일 수 있으나, 이에 한정되지 않는다.
이러한 제2 처리부(160)는 복수의 코어(core)를 포함하고, 링크 간의 차량 이동 시뮬레이션 동작은 복수의 코어 각각에 스레드(thread)로서 할당될 수 있다. 이와 같이 복수의 코어 각각에 할당된 스레드는 병렬적으로 적어도 동시에 실행될 수 있다. 예를 들어, i번째 링크에 대한 차량 이동 시뮬레이션 동작은 i번째 코어(162)에서 수행되고, i+1번째 링크에 대한 차량 이동 시뮬레이션 동작은 i+1번째 코어(164)에서 수행될 수 있다(i>0, i는 자연수).
하기에서는 i번째 링크에 대응하는 i번째 코어(162) 및 i+1번째 링크에 대응하는 i+1번째 코어(164) 각각에서 수행되는 링크 간의 차량 이동 시뮬레이션 동작을 설명하도록 한다.
i번째 코어(162)는 i번째 링크에서 다음 링크인 i+1번째 링크로 이동 가능한 제1 차량 수를 결정하고, i+1번째 링크에 대한 차량 이동 시뮬레이션을 수행하는 i+1번째 코어(164)로 결정된 제1 차량 수를 전달할 수 있다. 여기서, 제1 차량 수는 i번째 링크의 마지막 셀에 위치한 차량의 수일 수 있다.
일반적으로, 링크와 링크 사이에는 링크 간의 차량 흐름을 조절하는 커넥션 셀이 존재할 수 있다. 이러한 커넥션 셀은 특정 링크에서 연결되는 다음 링크에 대한 정보를 나타내는 도로별 연결 데이터 및 링크 간의 차량 이동 시 차량의 이동 여부를 나타내는 교통 신호 데이터를 포함하며, 이러한 데이터를 이용하여 링크 간의 차량 흐름을 조절할 수 있다. 다시 말해서, 링크와 링크 사이의 차량 이동은 커넥션 셀을 통해 이루어지므로, i번째 링크의 마지막 셀에 존재하는 차량은 i+1번째 링크의 첫번째 셀로 바로 이동하지 않는다. 즉, i번째 코어(162)는 커넥션 셀을 통해 도로별 연결 데이터를 이용하여 i번째 링크의 마지막 셀에 존재하는 차량이 이동해야 하는 다음 링크를 확인하고, 교통 신호 데이터를 이용하여 차량 이동 여부를 확인하여 링크 간의 차량 이동을 수행할 수 있다.
이러한 경우 i번째 코어(162)는 제1 차량 수를 나타내는 제1 데이터를 커넥션 셀을 통해 i+1번째 코어(164)로 전달할 수 있다. 예를 들어, i번째 코어(162)는 제1 데이터를 커넥션 셀에 복사하고, 커넥션 셀에 복사된 제1 데이터는 i+1번째 코어(164)에 의해서 i+1번째 링크의 가상 셀(virtual cell)에 추가될 수 있다. 여기서, 가상 셀은 데이터를 임시로 저장하기 위한 셀로서, 링크의 첫번째 셀 앞쪽 및 마지막 셀 뒤쪽에 위치할 수 있다.
이어서, i번째 코어(162)는 i+1번째 코어(164)로부터 i+1번째 링크에서 수용 가능한 제2 차량 수를 획득할 수 있다. 여기서, 제2 차량 수는 i+1번째 코어(164)에 의해 결정되며, i+1번째 링크의 첫번째 셀에서 수용 가능한 차량 수일 수 있다. 다시 말해서, 수용 가능한 차량은 i+1번째 링크의 가상 셀에서 i+1번째 링크의 첫번째 셀로 이동 가능한 차량 수일 수 있다. 이러한 경우 i+1번째 코어(164)는 제2 차량 수를 나타내는 제2 데이터를 커넥션 셀에 복사하고, i번째 코어(162)는 커넥션 셀에 복사된 제2 데이터를 가져올 수 있다.
i번째 코어(162)는 제1 차량 수에 해당하는 차량 중 획득된 제2 차량 수에 해당하는 차량을 i+1번째 링크로 이동시키도록 시뮬레이션할 수 있다. 구체적으로, i번째 코어(162)는 i번째 링크의 마지막 셀에 위치한 차량 중 제2 차량 수에 해당하는 차량을 i번째 링크의 마지막 셀 뒤쪽에 위치한 가상 셀로 이동시킬 수 있다. 다시 말해서, i번째 코어(162)는 제2 차량 수에 해당하는 차량의 식별 데이터(예: ID)를 가상 셀에 복사할 수 있다. 예를 들어, 제2 차량 수가 1대인 경우 마지막 셀에 18대의 차량이 존재하면 i번째 코어(162)는 그 중 1대의 차량 식별 데이터를 가상 셀에 복사할 수 있다.
i번째 코어(162)는 가상 셀로 이동한 차량을 커넥션 셀로 이동시키고, 커넥션 셀을 통해 차량이 i+1번째 링크로 이동할 수 있다. 다시 말해서, 차량 식별 데이터가 커넥션 셀에 복사되고, 커넥션 셀에 복사된 차량 식별 데이터가 i+1번째 링크의 첫번째 셀에 추가될 수 있다.
이를 통해 본 발명은 GPU 코어 각각이 각 링크에 대응하는 상술한 동작들을 병렬적으로 동시에 수행함으로써, 교통 시뮬레이션을 수행하기 위해 소요되는 시간 및 리소스 등을 줄일 수 있어 교통 시뮬레이션 성능을 향상시킬 수 있다.
다양한 실시예에서 i번째 코어(162)는 상술한 동작 중 일부를 생략하여 링크 간의 차량 이동 시뮬레이션 동작을 수행함으로써, 각 코어에서 수행하는 복수의 동작들을 일부 생략하여 교통 시뮬레이션 수행 시 소요되는 리소스 및 시간 등을 최소화할 수 있다.
이를 위해 i번째 코어(162)는 상술한 i+1번째 코어(164)로부터 i+1번째 링크의 첫번째 셀에서 수용 가능한 제2 차량 수를 획득하는 대신 i+1번째 링크의 차량 속도, 차량 밀도 및 i+1번째 링크가 포함하는 복수의 셀들 각각에서 수용 가능한 차량 수를 포함하는 차량 데이터를 획득할 수 있다.
구체적으로, i번째 코어(162)는 i번째 링크에서 다음 링크인 i+1번째 링크로 이동 가능한 제1 차량 수를 결정하여 i+1번째 코어(164)로 결정된 제1 차량 수를 전달하고, i+1번째 코어(164)로부터 i+1번째 링크의 차량 데이터를 획득할 수 있다. 예를 들어, i+1번째 링크가 포함하는 복수의 셀이 4개인 경우 차량 데이터는 i+1번째 링크에서의 평균 차량 속도, 평균 차량 밀도 및 첫번째 셀인 제1 셀 앞쪽에 위치한 가상 셀, 제1 셀, 제2 셀 및 제3 셀 각각에서 다음 셀로 이동 가능한 차량 수를 포함할 수 있다.
i번째 코어(162)는 제1 차량 수에 해당하는 차량 중 i+1번째 링크의 가상 셀에서 첫번째 셀로 이동 가능한 차량 수(즉, 제2 차량 수)에 해당하는 차량을 커넥션 셀을 통해 i+1번째 코어(164)로 전달하고, i+1번째 코어(164)는 전달된 차량을 i+1번째 링크의 첫번째 셀로 이동시킬 수 있다. 다시 말해서, i번째 코어(162)는 제2 차량 수에 해당하는 차량의 식별 데이터를 커넥션 셀에 복사하고, i+1번째 코어(164)는 커넥션 셀에 복사된 차량 식별 데이터를 i+1번째 링크의 첫번째 셀에 추가할 수 있다.
이후 i번째 코어(162)는 다음 차량 이동 시뮬레이션을 위해 상술한 제1 차량 수를 다음 링크로 전달하고, 다음 링크로부터 제2 차량 수를 획득하는 동작을 수행할 필요 없이 미리 획득된 차량 데이터를 이용하여 다음 링크의 첫번째 셀에서 수용 가능한 제2 차량 수를 예측할 수 있다.
구체적으로, i번째 코어(162)는 이전 과정에서 획득한 i+1번째 링크의 차량 데이터를 이용하여 i+1번째 링크의 첫번째 셀에서 수용 가능한 제2 차량 수를 예측하고, 제1 차량 수에 해당하는 차량 중 예측된 제2 차량 수에 해당하는 차량을 커넥션 셀로 이동시킬 수 있다. 다시 말해서, i번째 코어(162)는 i+1번째 링크의 평균 차량 속도, 평균 차량 밀도 및 i+1번째 링크의 첫번째 셀에서 두번째 셀로 이동 가능한 차량 수를 이용하여 i번째 링크의 마지막 셀에서 i+1번째 링크의 첫번째 셀로 이동 가능한 차량 수(즉, 제2 차량 수)를 예측할 수 있다.
커넥션 셀로 이동한 차량은 i+1번째 코어(164)에 의해서 i+1번째 링크의 첫번째 셀로 이동할 수 있는데, 이동되는 차량은 예측된 제2 차량 수에 대응하므로, i+1번째 링크의 첫번째 셀에서 실제 수용 가능한 제2 차량 수와 차이가 있을 수 있다. 이러한 경우 이동된 차량은 다시 i번째 링크로 이동할 수 없으므로, i+1번째 코어(164)는 실제 제2 차량 수를 제외한 나머지 차량을 i+1번째 링크의 첫번째 셀 앞에 위치한 가상 셀에 이동시킴으로써, 해당 가상 셀을 버퍼(buffer)로서 이용할 수 있다.
제2 차량 수를 예측하는 동작은 획득된 차량 데이터의 수보다 하나 작은 수만큼 수행될 수 있다. 다시 말해서, i번째 코어(162)는 i+1번째 링크가 포함하는 복수의 셀의 개수보다 하나 작은 수만큼 차량 데이터를 이용하여 제2 차량 수를 예측할 수 있다. 예를 들어, i+1번째 링크가 4개의 셀을 포함하면 i번째 코어(162)는 평균 차량 속도, 평균 차량 밀도 및 첫번째 셀에서 두번째 셀로 이동 가능한 차량 수를 이용하여 제2 차량 수를 예측하고, 다음 차량 이동을 위해 평균 차량 속도, 평균 차량 밀도 및 두번째 셀에서 세번째 셀로 이동 가능한 차량 수를 이용하여 제2 차량 수를 예측하며, 그 다음 차량 이동을 위해 평균 차량 속도, 평균 차량 밀도 및 세번째 셀에서 네번째 셀로 이동 가능한 차량 수를 이용하여 제2 차량 수를 예측하는 동작과 같이 총 3번의 예측 동작을 수행할 수 있다.
이와 같이 i+1번째 링크가 포함하는 복수의 셀의 개수보다 하나 작은 수만큼 제2 차량 수를 예측하는 동작이 완료되면 i번째 코어(162)는 다음 차량 이동 시뮬레이션을 위해 제1 차량 수를 결정하고, 결정된 제1 차량 수를 커넥션 셀을 통해 i+1번째 코어(164)로 전달하고, i+1번째 코어(164)로부터 각 셀에 대한 차량 데이터를 획득하는 등과 같은 동작을 다시 수행할 수 있다.
상술한 바와 같이 제2 차량 수를 예측하는 동작은 평균 차량 속도, 평균 차량 밀도 및 각 셀에 대하여 과거에 획득한 수용 가능한 차량 수를 이용하여 수행될 수 있으나, 이에 한정되지 않으며, 제2 차량 수를 예측하기 위해 머신 러닝(machine learning), 딥 러닝(deep learning) 등과 같은 다양한 방식이 이용될 수 있다.
다양한 실시예에서 버퍼에 저장된 차량은 i+1번째 링크의 첫번째 셀에서 수용 가능한 차량 수가 ‘0’을 초과할 때마다 i+1번째 링크의 첫번째 셀로 이동할 수 있다.
다양한 실시예에서 버퍼에 저장된 차량 수가 기 설정된 임계값을 넘는 경우 버퍼에 저장된 차량 식별 데이터는 가장 오래된 데이터부터 삭제될 수 있다.
이와 같이 본 발명은 다음 링크로부터 획득된 차량 데이터에 기반하여 다음 링크에서 수용 가능한 제2 차량 수를 예측함으로써, 제1 차량 수를 다음 링크로 전달하고, 다음 링크로부터 제2 차량 수를 획득하는 동작이 생략되어 이를 위해 소요되는 리소스 및 시간 등을 줄일 수 있다.
다양한 실시예에서 제어부(140)는 교통 시뮬레이션 결과를 나타내는 인터페이스 화면을 표시부(120)를 통해서 표시할 수 있다. 표시부(120)를 통해서 표시되는 인터페이스 화면은 링크 간의 교통 흐름을 나타내는 적어도 하나의 그래픽 객체를 포함할 수 있다.
하기에서는 제1 처리부(142) 및 제2 처리부(144)를 포함하는 제어부(140)에 대해서 도 2를 참조하여 상세하게 설명하도록 한다.
도 2는 본 발명의 실시예에 따른 제어부에 대한 개략도이다.
도 2를 참조하면, 제어부(200)는 CPU(210) 및 GPU(220)를 포함한다. 제시된 실시예에서 제어부(200), CPU(210) 및 GPU(220)는 도 1의 제어부(140), 제1 처리부(142) 및 제2 처리부(144)를 의미할 수 있다.
CPU(210)는 시뮬레이션 요소 생성부(212)를 포함하고, GPU(220)는 리소스 갱신부(222), 차로 변경부(224) 및 차량 추정부(226)를 포함한다.
시뮬레이션 요소 생성부(212)는 도로 교통 빅데이터에 기반하여 교통 시뮬레이션을 위해 사용되는 시뮬레이션 요소 데이터를 생성한다.
구체적으로, 시뮬레이션 요소 생성부(212)는 도로 교통 빅데이터를 이용하여 차량 데이터, 링크 데이터 및 커넥션 셀 데이터를 포함하는 시뮬레이션 요소 데이터를 생성하고, 도로 네트워크 데이터 및 교통 수요 데이터를 생성할 수 있다. 이와 같이 생성된 데이터는 교통 시뮬레이션을 위한 입력 데이터로서 이용될 수 있다.
리소스 갱신부(222)는 시뮬레이션 요소 데이터, 도로 네트워크 데이터 및 교통 수요 데이터에 기반하여 시뮬레이션용 도로(예: 링크, 커넥션 셀, 소스 및 싱크)를 리셋하고, 리셋된 시뮬레이션 도로에 시뮬레이션용 차량을 유입시킬 수 있다. 이러한 과정은 시뮬레이션의 일정 주기마다 수행될 수 있다.
차로 변경부(224)는 셀 내부의 차량이 다른 셀로 이동하는 경우 경로 변경을 위해 필수적인 차선 변경 및 빠른 주행으로 위해 속도가 높은 차선으로의 선택적인 차선 변경을 수행할 수 있다.
차량 추종부(226)는 셀 간의 차량 이동량을 계산하고, 교통 신호 및 교차로 등을 고려하여 차량의 실제 이동 가능량을 계산하며, 계산된 실제 이동 가능량에 따라 셀에 위치한 차량의 이동 가능 여부를 확인할 수 있다. 또한, 차량 추종부(226)는 각 셀에 따른 차량 데이터(예: 차량 식별 데이터, 다음 링크의 식별 데이터 및 타겟 차로 데이터 등)를 업데이트할 수 있다.
구체적으로, 차량 추종부(226)는 임의의 셀(예: 송신 셀(sending cell))에서 주행 방향의 다음 셀(예: 수신 셀(receiving cell))로 이동하고자 하는 차량 수, 수신 셀에서 수용할 수 있는 차량 수 및 도로 특성에 따라 시뮬레이션 시간 단위 동안 이동 가능한 차량 수의 최소값으로 셀 간 차량 이동량을 산출할 수 있다. 차량 추종부(226)는 교차로 내 도로 연결 행태와 교통 신호를 고려하여 셀에 위치한 차량의 실제 이동 가능한 차량 수(예: 유효 차량 이동량)를 계산할 수 있다.
차량 추종부(226)는 유효 차량 이동량에 따라 셀 내의 차량 대기 행렬의 선두 차량에 대한 이동 가능한 여부를 확인하고, 셀 별 유효 차량 이동량을 기반으로 셀 별 차량 대수를 업데이트하고, 이동 가능 여부에 따라 셀간 차량 데이터를 업데이트할 수 있다.
이러한 차량 추종부(226)는 도 1에서 상술한 링크 간의 차량 이동 시뮬레이션을 수행할 수 있다. 예를 들어, 차량 추종부(226)는 링크 간의 차량 이동 시 특정 링크의 마지막 셀에서 이동 가능한 제1 차량 수를 결정하고, 커넥션 셀을 통해 결정된 제1 차량 수를 다음 링크로 전달하며, 다음 링크에서 수용 가능한 제2 차량 수를 획득하고, 제1 차량 수에 해당하는 차량 중 제2 차량 수에 해당하는 차량을 커넥션 셀을 통해 다음 링크로 전달하는 동작을 수행할 수 있다.
또한, 차량 추종부(266)는 상술한 바와 같이 다음 링크의 차량 속도, 차량 밀도 및 다음 링크를 구성하는 복수의 셀 각각에서 수용 가능한 제2 차량 수를 포함하는 차량 데이터를 획득하고, 다음 시뮬레이션 동작에서 제1 차량 수를 결정하고, 다음 링크로부터 제2 차량 수를 획득하는 동작을 수행할 필요 없이 획득된 차량 데이터를 이용하여 제2 차량 수를 예측한 후 예측된 제2 차량 수에 해당하는 차량을 다음 링크로 전달함으로써, 링크 간의 차량 이동을 수행할 수도 있다.
이와 같이 본 발명은 각 링크에 대응하는 동작을 동시에 병렬적으로 처리함으로써, 교통 시뮬레이션을 위해 소요되는 시간 및 리소스 등을 줄이면서 처리 속도를 높이고, 효율적인 교통 시뮬레이션을 수행할 수 있다.
하기에서는 도로의 종류가 직선 도로인 경우 교통 시뮬레이션 장치(100)의 교통 시뮬레이션 동작에 대해서 도 3a, 도 3b, 도 3c 및 도 3d를 참조하여 구체적으로 설명하도록 한다.
도 3a, 도 3b, 도 3c 및 도 3d는 본 발명의 실시예에 따른 병렬 처리 기반의 교통 시뮬레이션 방법을 설명하기 위한 예시도들이다. 제시된 실시예에서는 도 1의 i번째 코어(162)가 i번째 링크(400)에 대응하는 동작을 수행하고, i+1번째 코어(164)가 i+1번째 링크(330)에 대응하는 동작을 수행할 수 있다.
도 3a를 참조하면, i번째 링크(300)는 제1 내지 제4 셀을 포함하고, 첫번째 셀인 제1 셀의 앞쪽에 가상 셀(302)이 위치하고, 마지막 셀인 제4 셀의 뒤쪽에 가상 셀(304)이 존재한다.
이어서, i+1번째 링크(330)는 제1 내지 제4 셀을 포함하고, 첫번째 셀인 제1 셀의 앞쪽에 가상 셀(332)이 위치하고, 마지막 셀인 제4 셀의 뒤쪽에 가상 셀(334)이 존재한다.
또한, i번째 링크(300)와 i+1번째 링크(330) 사이에는 커넥션 셀(cc)(350)이 존재하며, i번째 링크(300)와 i+1번째 링크(330) 사이의 데이터가 커넥션 셀을 통해서 이동할 수 있다.
구체적으로, 차량 시뮬레이션을 수행할 시 i번째 코어(162)는 차량 이동을 위해 i번째 링크(300)의 제4 셀(306)에 위치한 차량의 수를 나타내는 데이터(numVeh[4])를 커넥션 셀(350)로 복사할 수 있다. i+1번째 코어(164)는 커넥션 셀(350)로 복사된 데이터를 i+1번째 링크(330)의 가상 셀(332)에 추가할 수 있다.
도 3b를 참조하면, i번째 코어(162)는 i번째 링크(300)에 대한 차량 추종을 수행하고, i+1번째 코어(164)는 i+1번째 링크(330)에 대한 차량 추종이 수행하여 각 링크에서 다음 링크로 이동 가능한 차량 수를 결정할 수 있다. 이러한 차량 추종을 수행할 시 i번째 링크(300)는 가상 셀(302), 및 제1 내지 제4 셀을 포함하고, i+1번째 링크(330)는 가상 셀(332), 및 제1 내지 제4 셀을 포함할 수 있다.
구체적으로, i번째 코어(162)는 i번째 링크(300)의 각 셀에서 다음 셀로 이동 가능한 차량 수를 결정하고, i+1번째 코어(164)는 각 셀에서 다음 셀로 이동 가능한 차량 수를 결정할 수 있다. 다시 말해서, i번째 코어(162)는 i번째 링크(300)의 가상 셀(302)에서 제1 셀로 이동 가능한 차량 수(numCF[0]), 제1 셀에서 제2 셀로 이동 가능한 차량 수(numCF[1]), 제2 셀에서 제3 셀로 이동 가능한 차량 수(numCF[2]), 및 제3 셀에서 제4 셀(306)로 이동 가능한 차량 수(numCF[3])를 결정할 수 있다. i+1번째 코어(164)는 i+1번째 링크(330)의 가상 셀(332)에서 제1 셀(336)로 이동 가능한 차량 수(numCF[0]), 제1 셀(336)에서 제2 셀로 이동 가능한 차량 수(numCF[1]), 제2 셀에서 제3 셀로 이동 가능한 차량 수(numCF[2]), 및 제3 셀에서 제4 셀로 이동 가능한 차량 수(numCF[3])를 결정할 수 있다.
i+1번째 코어(164)는 i+1번째 링크(330)의 가상 셀(332)에서 제1 셀(336)로 이동 가능한 차량 수(numCF[0])(340)를 나타내는 데이터를 커넥션 셀(350)로 복사할 수 있다.
i번째 코어(162)는 커넥션 셀(350)에 복사된 데이터를 이용하여 i번째 링크(300)의 마지막 셀인 제4 셀(306)에서 i+1번째 링크(330)의 첫번째 셀(336)로 이동 가능한 차량 수(numCF[4])(310)를 업데이트할 수 있다.
i번째 코어(162)는 도 3c와 같이 각 셀에 위치한 차량 중 다음 셀로 이동 가능한 차량 수에 해당하는 차량의 식별 데이터(vehCF[1], vehCF[2], vehCF[3], vehCF[4])를 업데이트할 수 있다. 이후 i번째 코어(162)는 제4 셀(306)에 위치한 차량 중 제4 셀(306)에서 i+1번째 링크(330)의 첫번째 셀(336)로 이동 가능한 차량 수에 해당하는 차량의 식별 데이터(vehCF[4])(308)를 가상 셀(304)에 복사하고, 도 3d와 같이 가상 셀(304)에 복사된 차량 식별 데이터를 커넥션 셀(350)에 복사할 수 있다.
도 3d를 참조하면, i+1번째 코어(164)는 커넥션 셀(350)에 복사된 차량 식별 데이터를 i+1번째 링크(330)의 첫번째 셀인 제1 셀(336)에 추가할 수 있다.
이와 같이 본 발명은 복수의 코어 각각이 각 링크에 대응하는 동작을 동시에 병렬적으로 처리함으로써, 교통 시뮬레이션을 위해 소요되는 시간 및 리소스 등을 줄이면서 처리 속도를 높이고, 효율적인 교통 시뮬레이션을 수행할 수 있다.
하기에서는 교통 시뮬레이션 장치(100)에서 버퍼를 이용하여 교통 시뮬레이션을 수행하는 방법을 도 4를 참조하여 상세하게 설명하도록 한다.
도 4는 본 발명의 실시예에 따른 교통 시뮬레이션 장치에서 버퍼를 이용하여 교통 시뮬레이션을 수행하는 방법을 설명하기 위한 예시도이다. 제시된 실시예에서는 도 1의 i번째 코어(162)가 i번째 링크(400)에 대응하는 동작을 수행하고, i+1번째 코어(164)가 i+1번째 링크(430)에 대응하는 동작을 수행할 수 있다.
도 4를 참조하면, i번째 링크(400)는 4개의 셀(s1, s2, s3, s4)을 포함하고, 첫번째 셀인 제1 셀(s1)의 앞쪽에 버퍼(402)가 위치할 수 있다. 이어서, i+1번째 링크(430)는 4개의 셀(s1, s2, s3, s4)을 포함하고, 첫번째 셀인 제1 셀(s1)(432)의 앞쪽에 버퍼(434)가 위치할 수 있다. 또한, i번째 링크(400)와 i+1번째 링크(430) 사이에는 커넥션 셀(cc)(450)이 존재할 수 있다.
도 4의 (a)를 참조하면, i번째 코어(162)는 i번째 링크(400)의 마지막 셀(s4)(404)에 위치한 차량의 수를 나타내는 데이터를 커넥션 셀(cc)(450)로 복사하고, i+1번째 코어(164)는 커넥션 셀(cc)(450)에 복사된 차량 수를 나타내는 데이터를 i+1번째 링크(430)의 첫번째 셀(s1)에 추가할 수 있다.
i번째 코어(162)는 i번째 링크(400)의 4개의 셀 각각에 대한 차량 추종을 수행하여 i번째 링크(400)의 차량 속도, 차량 밀도 및 각 셀에서 다음 셀로 이동 가능한 차량 수를 포함하는 차량 데이터를 획득할 수 있다. i+1번째 코어(164)는 i+1번째 링크(430)의 4개의 셀 각각에 대한 차량 추종을 수행하여 i+1번째 링크(430)의 차량 속도, 차량 밀도 및 각 셀에서 다음 셀로 이동 가능한 차량 수를 포함하는 차량 데이터를 획득할 수 있다.
도 4의 (b)를 참조하면, i+1번째 링크(430)는 i+1번째 링크(430)의 차량 데이터를 커넥션 셀(cc)(450)로 복사하고, i번째 코어(162)는 커넥션 셀(cc)(450)에 복사된 차량 데이터를 가져올 수 있다.
도 4의 (c)를 참조하면, i번째 코어(162)는 i+1번째 링크(430)의 차량 데이터를 이용하여 i+1번째 링크(430)의 첫번째 셀(s1)(432)에서 수용 가능한 차량 수를 확인할 수 있다. i번째 코어(162)는 i번째 링크의 마지막 셀(s4)(404)에 위치한 차량 중 확인된 차량 수에 해당하는 차량의 식별 데이터를 커넥션 셀(cc)(450)로 복사하고, i+1번째 코어(164)는 커넥션 셀(cc)(450)에 복사된 차량 식별 데이터를 i+1번째 링크(430)의 첫번째 셀(s1)(432)에 추가할 수 있다.
다음 차량 이동 시뮬레이션을 위해 i번째 코어(162)는 도 4의 (b)에서 획득된 차량 데이터를 이용하여 i+1번째 링크(430)의 첫번째 셀(s1)(432)에서 수용 가능한 차량 수를 예측할 수 있다.
도 4의 (d)를 참조하면, i번째 코어(162)는 i번째 링크의 마지막 셀(s4)(404)에 위치한 차량 중 예측된 차량 수에 해당하는 차량의 식별 데이터를 커넥션 셀(cc)(450)로 복사할 수 있다. 차량 수에 대한 예측은 평균 차량 속도, 평균 차량 밀도 및 수용 가능한 차량 수에 기반하여 수행될 수 있으나, 이에 한정되지 않는다. i+1번째 코어(164)는 커넥션 셀(cc)(450)에 복사된 차량 식별 데이터를 i+1번째 링크(430)의 첫번째 셀(s1)(432) 앞쪽에 위치한 버퍼(434)에 추가할 수 있다.
도 4의 (e)를 참조하면, i+1번째 코어(164)는 첫번째 셀(s1)(432)에서 실제 수용 가능한 차량 수를 확인하고, 확인된 차량 수가 버퍼(434)에 저장된 차량 식별 데이터에 대응하는 차량 수보다 크거나 일치하면 버퍼(434)에 저장된 차량 식별 데이터를 i+1번째 링크(430)의 첫번째 셀(s1)(432)에 추가할 수 있다. 확인된 차량 수가 버퍼(434)에 저장된 차량 식별 데이터에 대응하는 차량 수보다 작으면 i+1번째 코어(164)는 버퍼(434)에 저장된 차량 식별 데이터 중 확인된 차량 수에 해당하는 차량 식별 데이터를 i+1번째 링크(430)의 첫번째 셀(s1)(432)에 추가하고, 나머지 차량 식별 데이터를 버퍼(434)에 대기시킬 수 있다.
다음 차량 이동 시뮬레이션을 위해 i+1번째 링크(430)의 셀 개수보다 하나 작은 수만큼 도 4의 (d) 및 도 4의 (e)에서의 동작이 수행될 수 있으며, 이러한 동작이 완료되면 다시 도 4의 (a), (b), (c), (d), (e)의 동작이 수행될 수 있다.
이와 같이 본 발명은 각 코어에서 처리하는 데이터 양을 줄임으로써, 각 코어의 처리 속도를 높이고, 효율적인 교통 시뮬레이션을 수행할 수 있다.
하기에서는 도로의 종류가 교차로인 경우 교통 시뮬레이션 장치(100)의 교통 시뮬레이션 동작에 대해서 도 5를 참조하여 구체적으로 설명하도록 한다.
도 5는 본 발명의 실시예에 따른 교통 시뮬레이션 장치에서 교차로를 구성하는 링크 간의 차량 이동을 수행하는 방법을 설명하기 위한 예시도이다. 제시된 실시예에서는 교차로를 구성하는 링크들 중 4개의 링크(예: 제1 링크, 제2 링크, 제4 링크 및 제6 링크) 간의 차량 이동을 설명하도록 한다. 또한, 제시된 실시예에서는 제1 링크에 대응하여 제1 코어가 동작하고, 제2 링크에 대응하여 제2 코어가 동작하며, 제4 링크에 대응하여 제4 코어가 동작하며, 제6 링크에 대응하는 제6 코어가 동작하는 것으로 설명한다.
도 5를 참조하면, 각 링크는 4개의 차선(제1 차선, 제2 차선, 제3 차선, 제4 차선) 및 4개의 셀로 이루어지고, 첫번째 셀 앞쪽 및 마지막 셀 뒤쪽에 가상 셀이 존재한다. 예를 들어, 제1 링크(500)는 제1 차선(502), 제2 차선(504), 제3 차선(506) 및 제4 차선(508)과 같은 4개의 차선과 4개의 셀로 이루어지고, 첫번째 셀(510) 앞쪽에 가상 셀(512)이 존재하며, 마지막 셀(514) 뒤쪽에 가상 셀(516)이 존재한다. 또한, 링크와 링크 사이에는 커넥션 셀(cc)(570)이 위치하여 링크 간의 차량 흐름을 조절할 수 있다.
제1 링크(500)의 제1 차선(502)에 대응하여 마지막 셀에 포함된 차량은 교차로의 주행 방향에 따라 다음 링크인 제6 링크(560)로 이동하고, 제2 차선(504)에 대응하여 마지막 셀에 포함된 차량은 제4 링크(540)로 이동하며, 제3 차선(506)에 대응하여 마지막 셀에 포함된 차량은 제4 링크(540)로 이동하며, 제4 차선(508)에 대응하여 마지막 셀에 포함된 차량은 제2 링크(520) 및 제4 링크(540) 중 적어도 하나로 이동할 수 있다. 이와 같이 다음 링크에 대한 데이터는 커넥션 셀(570)에 3(예: 주행 방향에 따라 이동 가능한 다음 링크 수)x4(예: 차선 수) 행렬(572)로서 저장될 수 있다.
제1 링크(500)에 대한 동작을 수행하는 제1 코어는 제1 차선(502)에 대응하는 마지막 셀에서 이동 가능한 제1 차량 수(numVeh[4][0])(예: 3대), 제2 차선(504)에 대응하는 마지막 셀에서 이동 가능한 제1 차량 수(numVeh[4][1])(예: 2대), 제3 차선(506)에 대응하는 마지막 셀에서 이동 가능한 제1 차량 수(numVeh[4][2])(예: 3대) 및 제4 차선(508)에 대응하는 마지막 셀에서 제1 이동 가능한 차량 수(numVeh[4][3])(예: 2대 및 1대 중 적어도 하나)를 결정할 수 있다. 이러한 동작은 각 링크에 따라 수행될 수 있다.
제1 코어는 이와 같이 결정된 차선별 이동 가능한 제1 차량 수를 커넥션 셀(570)에 복사하고, 복사된 차선별 차량 수는 다음 링크 각각에 대응하는 가상 셀에 추가될 수 있다. 여기서, 복사된 차선별 제1 차량 수는 3x4 행렬(574)로서 커넥션 셀(570)에 복사될 수 있다.
예를 들어, 제1 링크(500)의 제1 차선(502)에 대응하여 결정된 제1 차량 수(예: 3대)는 제6 링크(560)의 제1 차선에 대응하는 가상 셀에 추가되고, 제2 차선(504)에 대응하여 결정된 제1 차량 수(예: 2대)는 제4 링크(540)의 제2 차선에 대응하는 가상 셀에 추가되며, 제3 차선(506)에 대응하여 결정된 제1 차량 수(예: 3대)는 제4 링크(540)의 제3 차선에 대응하는 가상 셀에 추가되며, 제4 차선(508)에 대응하여 결정된 제1 차량 수 중 제2 링크(520)로 이동 가능한 제1 차량 수(예: 2대)는 제2 링크(520)의 제4 차선에 대응하는 가상 셀에 추가되고, 제4 링크(540)로 이동 가능한 제1 차량 수(예: 1대)는 제4 링크(540)의 제4 차선에 대응하는 가상 셀에 추가될 수 있다.
제1 코어, 제2 코어, 제4 코어 및 제6 코어 각각은 각 링크의 가상 셀, 제1 셀, 제2 셀 및 제3 셀에 대한 차량 추종을 수행하고, 각 링크에서 수용 가능한 제2 차량 수를 결정할 수 있다. 다시 말해서, 제1 코어는 각 차선에 대응하여 가상 셀(512)에서 제1 셀(510)로 이동 가능한 차량 수(numCF[0][0], numCF[0][1], numCF[0][2], numCF[0][3]), 제1 셀(510)에서 제2 셀로 이동 가능한 차량 수(numCF[1][0], numCF[1][1], numCF[1][2], numCF[1][3]), 제2 셀에서 제3 셀로 이동 가능한 차량 수(numCF[2][0], numCF[2][1], numCF[2][2], numCF[2][3]), 제3 셀에서 제4 셀(514)로 이동 가능한 차량 수(numCF[3][0], numCF[3][1], numCF[3][2], numCF[3][3])를 결정할 수 있다. 제2 코어, 제4 코어 및 제6 코어 또한 제1 코어에서 수행되는 동작과 동일한 동작을 수행할 수 있다.
예를 들어, 제6 링크(560)의 제1 차선에 대응하는 가상 셀에서 제1 셀(즉, 첫번째 셀)로 이동 가능한 차량 수(제6 링크(560)의 numCF[0][0])가 3대이고, 제4 링크(540)의 제2 차선에 대응하는 가상 셀에서 제1 셀로 이동 가능한 차량 수(제4 링크(540)의 numCF[0][1])가 2대이며, 제4 링크(540)의 제3 차선에 대응하는 가상 셀에서 제1 셀로 이동 가능한 차량 수(제4 링크(540)의 numCF[0][2])가 2대이며, 제2 링크(520)의 제4 차선에 대응하는 가상 셀에서 제1 셀로 이동 가능한 차량 수(제2 링크(520)의 numCF[0][3])가 1대이며, 제4 링크(540)의 제4 차선에 대응하는 가상 셀에서 제1 셀로 이동 가능한 차량 수(제4 링크(540)의 numCF[0][3])가 1대라고 가정한다.
이러한 경우 제2 링크(520), 제4 링크(540) 및 제6 링크(560) 각각의 차선별 수용 가능한 제2 차량 수가 커넥션 셀(570)에 복사되고, 커넥션 셀(570)에 복사된 제2 차량 수는 제1 링크(500)의 제4 셀(514)에서 각 차선별 이동 가능한 다음 링크로 이동 가능한 차량 수(numCF[4][0], numCF[4][1], numCF[4][2], numCF[4][3])로서 업데이트될 수 있다. 여기서, 복사된 각 링크의 각 차선에 대응하여 수용 가능한 제2 차량 수는 3x4 행렬(576)로서 커넥션 셀(570)에 복사될 수 있다.
제1 코어는 제1 링크(500)의 제1 차선(502)에 대응하는 마지막 셀에 위치한 차량(즉, 제1 차량 수에 대응하는 차량) 중 제6 링크(560)의 제1 차선에 대응하는 첫번째 셀로 이동 가능한 차량 수(제1 링크(500)의 numCF[4][0])에 해당하는 차량을 제1 링크(500)의 제1 차선(502)에 대응하는 가상 셀로 이동시키고, 해당 가상 셀에 위치한 차량을 커넥션 셀(570)로 이동시킬 수 있다. 이어서, 제1 코어는 제1 링크(500)의 제2 차선(504)에 대응하는 마지막 셀에 위치한 차량 중 제4 링크(540)의 제2 차선에 대응하는 첫번째 셀로 이동 가능한 차량 수(제1 링크(500)의 numCF[4][1])에 해당하는 차량을 제1 링크(500)의 제2 차선(504)에 대응하는 가상 셀로 이동시키고, 해당 가상 셀에 위치한 차량을 커넥션 셀(570)로 이동시킬 수 있다. 이어서, 제1 코어는 제1 링크(500)의 제3 차선(506)에 대응하는 마지막 셀에 위치한 차량 중 제4 링크(540)의 제3 차선에 대응하는 첫번째 셀로 이동 가능한 차량 수(제1 링크(500)의 numCF[4][2])에 해당하는 차량을 제1 링크(500)의 제3 차선(506)에 대응하는 가상 셀로 이동시키고, 해당 차량을 커넥션 셀(570)로 이동시킬 수 있다. 또한, 제1 코어는 제1 링크(500)의 제4 차선(508)에 대응하는 마지막 셀에 위치한 차량 중 제2 링크(520)의 제4 차선에 대응하는 첫번째 셀로 이동 가능한 차량 수(제1 링크(500)의 numCF[4][3])에 해당하는 차량 및 제4 링크(540)의 제4 차선에 대응하는 첫번째 셀로 이동 가능한 차량 수(제1 링크(500)의 numCF[4][3])에 해당하는 차량을 제1 링크(500)의 제4 차선(508)에 대응하는 가상 셀로 이동시키고, 해당 차량을 커넥션 셀(570)로 이동시킬 수 있다. 다시 말해서, 차량의 식별 데이터가 복사될 수 있다.
커넥션 셀(570)로 이동된 차량은 교통 신호 데이터에 기반하여 각 링크의 첫번째 셀로 이동할 수 있다. 예를 들어, 제1 링크(500)의 제1 차선(502)에 대응하는 마지막 셀에 위치한 3대의 차량은 제6 링크(560)의 제1 차선에 대응하는 첫번째 셀로 이동하고, 제1 링크(500)의 제2 차선(504)에 대응하는 마지막 셀에 위치한 2대의 차량은 제4 링크(540)의 제2 차선에 대응하는 첫번째 셀로 이동할 수 있다. 제1 링크(500)의 제3 차선(506)에 대응하는 마지막 셀에 위치한 2대의 차량은 제4 링크(540)의 제3 차선에 대응하는 첫번째 셀로 이동할 수 있다. 제1 링크(500)의 제4 차선(508)에 대응하는 마지막 셀에 위치한 1대의 차량은 제2 링크(520)의 제4 차선에 대응하는 첫번째 셀로 이동하고, 제1 링크(500)의 제4 차선(508)에 대응하는 마지막 셀에 위치한 다른 1대의 차량은 제4 링크(540)의 제4 차선에 대응하는 첫번째 셀로 이동할 수 있다.
이와 같이 본 발명은 시간적 및 비용적 측면에서 보다 효율적인 교통 시뮬레이션을 수행할 수 있다.
도 6은 본 발명의 실시예에 따른 교통 시뮬레이션 장치에서 병렬 처리 기반의 교통 시뮬레이션을 수행하는 방법을 나타내는 흐름도이다. 제시된 실시예에서 하기의 동작은 도 1의 제어부(140)에 의해서 수행될 수 있다.
도 6을 참조하면, 교통 시뮬레이션 장치(100)는 도로 교통 빅데이터에 기반하여 적어도 하나의 교통 시나리오에 따라 교통 시뮬레이션을 위한 시뮬레이션 요소 데이터, 도로 네트워크 데이터 및 교통 수요 데이터를 생성한다(S600).
교통 시뮬레이션 장치(100)는 생성된 시뮬레이션 요소 데이터, 도로 네트워크 데이터 및 교통 수요 데이터를 이용하여 제1 링크에 대한 교통 시뮬레이션을 수행하는 동작(S610), … 및 생성된 시뮬레이션 요소 데이터, 도로 네트워크 데이터 및 교통 수요 데이터를 이용하여 제n 링크에 대한 교통 시뮬레이션을 수행하는 동작(S620)을 동시에 병렬적으로 수행할 수 있다(n>0, n은 자연수).
교통 시뮬레이션 장치(100)는 이와 같이 수행된 시뮬레이션의 횟수가 기 설정된 최대값보다 작은지를 결정하여(S630) 수행된 시뮬레이션의 횟수가 최대값보다 작으면 교통 시뮬레이션 동작(S610, S620)을 계속적으로 수행한다.
수행된 시뮬레이션의 횟수가 최대값보다 작지 않으면(예를 들어, 같거나 크면) 교통 시뮬레이션 장치(100)는 교통 시뮬레이션 결과를 출력한다(S640). 다시 말해서, 제어부(140)는 교통 시뮬레이션 결과를 나타내는 인터페이스 화면을 표시부(120)를 통해 표시할 수 있다.
도 7은 본 발명의 실시예에 따른 교통 시뮬레이션 장치에서 링크 간의 차량 이동을 수행하는 방법을 나타내는 흐름도이다. 제시된 실시예에서 하기의 동작은 도 1의 i번째 코어(162)에 의해서 수행될 수 있다. 하기에서는 편의상 i번째 코어(162)를 제1 코어로 서술하고, i번째 링크를 제1 링크로 서술하며, i+1번째 코어(164)를 제2 코어로 서술하며, i+1번째 링크를 제2 링크로 서술하도록 한다.
도 7을 참조하면, 제1 코어는, 도로를, 동일 특성을 가지도록 분할한 복수의 링크 중 제1 링크에서 다음 링크인 제2 링크로 이동 가능한 제1 차량 수를 결정하여 결정된 제1 차량 수를 링크 사이에 위치한 커넥션 셀을 통해 제2 링크로 전달한다(S700). 구체적으로, 제1 코어는, 제1 링크에 포함된 복수의 셀 중 마지막 셀에 위치한 차량 수를 나타내는 제1 데이터를 커넥션 셀에 복사할 수 있다. 커넥션 셀에 복사된 제1 데이터는 제2 링크의 첫번째 셀 앞쪽에 위치한 가상 셀에 추가될 수 있다. 이러한 동작은 제2 코어에 의해서 수행될 수 있다.
제1 코어는 커넥션 셀을 통해 제2 링크에서 수용 가능한 제2 차량 수를 획득한다(S710). 구체적으로, GPU에 포함된 복수의 코어 각각은 복수의 링크 각각에 대응하여 차량 추종을 수행하고, 제1 코어는 제2 링크로부터 커넥션 셀을 통해 제2 링크를 구성하는 복수의 셀 중 가상 셀에서 첫번째 셀로 이동 가능한 차량 수를 나타내는 제2 데이터를 획득할 수 있다.
제1 코어는 제1 차량 수에 해당하는 차량 중 제2 차량 수에 해당하는 차량을, 커넥션 셀을 통해 제2 링크로 이동시키도록 시뮬레이션을 수행한다(S720). 구체적으로, 제1 코어는 마지막 셀에 위치한 차량 수에 해당하는 차량 중 제2 링크의 가상 셀에서 첫번째 셀로 이동 가능한 차량 수에 해당하는 차량을, 제1 링크의 마지막 셀에서 상기 제2 링크의 첫번째 셀로 이동 가능한 차량 수로 업데이트할 수 있다. 이어서, 제1 코어는 업데이트된 차량 수에 해당하는 차량을 커넥션 셀을 통해 제2 링크로 이동시킬 수 있다. 다시 말해서, 제1 코어는 업데이트된 차량 수에 해당하는 차량의 식별 데이터를 커넥션 셀로 복사하고, 커넥션 셀에 복사된 차량 식별 데이터가 제2 링크의 첫번째 셀에 추가될 수 있다.
이러한 동작들은 복수의 링크 각각에 대응하여 GPU에 포함된 복수의 코어 각각에 스레드로서 할당되고, 할당된 스레드는, 상기 복수의 코어 각각에서 병렬적으로 적어도 동시에 실행될 수 있다.
도 8은 본 발명의 또 다른 실시예에 따른 교통 시뮬레이션 장치에서 링크 간의 차량 이동을 수행하는 방법을 나타내는 흐름도이다. 제시된 실시예에서 하기의 동작은 도 1의 i번째 코어(162)에 의해서 수행될 수 있다. 하기에서는 편의상 i번째 코어(162)를 제1 코어로 서술하고, i번째 링크를 제1 링크로 서술하며, i+1번째 코어(164)를 제2 코어로 서술하며, i+1번째 링크를 제2 링크로 서술하도록 한다.
도 8을 참조하면, 제1 코어는, 도로를, 동일 특성을 가지도록 분할한 복수의 링크 중 제1 링크에서 다음 링크인 제2 링크로 이동 가능한 제1 차량 수를 결정하여 결정된 제1 차량 수를 링크 사이에 위치한 커넥션 셀을 통해 제2 링크로 전달한다(S800).
제1 코어는 커넥션 셀을 통해 제2 링크의 차량 속도, 차량 밀도 및 제2 링크를 구성하는 복수의 셀 각각에서 수용 가능한 제2 차량 수를 포함하는 차량 데이터를 획득한다(S810). 예를 들어, 제2 링크가 가상 셀, 제1 셀, 제2 셀, 제3 셀, 및 가상 셀로 이루어진 경우 제1 코어는 제2 링크의 평균 차량 속도, 평균 차량 밀도, 및 제2 링크의 가상 셀에서 제1 셀로 이동 가능한 차량 수, 제1 셀에서 제2 셀로 이동 가능한 차량 수, 및 제2 셀에서 제3 셀로 이동 가능한 차량 수를 포함하는 차량 데이터를 획득할 수 있다.
제1 코어는 제1 차량 수에 해당하는 차량 중 제2 차량 수에 해당하는 차량을, 커넥션 셀을 통해 제2 링크로 이동시키도록 시뮬레이션을 수행한다(S820). 구체적으로, 제1 코어는 제2 링크의 가상 셀에서 제1 셀로 이동 가능한 차량 수를, 제1 링크의 마지막 셀에서 제2 링크의 첫번째 셀로 이동 가능한 차량 수로 업데이트하고, 업데이트된 차량 수에 해당하는 차량을 커넥션 셀을 통해 제2 링크로 이동시킬 수 있다.
S800, S810, 및 S820 동작 이후에 다음 시뮬레이션 동작에서 제1 코어는 S800, 및 S810 동작을 수행할 필요 없이 S810 동작에서 획득된 차량 데이터를 이용하여 제2 링크에서 수용 가능한 제2 차량 수를 예측한다(S830). 이러한 경우 이전 시뮬레이션 단계에서 제2 링크의 가상 셀에서 제1 셀로 이동 가능한 차량 수가 이용되었으므로, 제1 코어는 제2 링크의 평균 차량 속도, 평균 차량 밀도 및 제1 셀에서 제2 셀로 이동 가능한 차량 수, 및 제2 셀에서 제3 셀로 이동 가능한 차량 수 중 어느 하나를 이용하여 제2 링크의 첫번째 셀에서 수용 가능한 제2 차량 수를 예측할 수 있다.
제1 코어는 예측된 제2 차량 수에 해당하는 차량을 커넥션 셀을 통해 제2 링크로 이동시키도록 시뮬레이션을 수행한다(S840). 구체적으로, 복수의 링크 각각의 첫번째 셀 앞쪽에는, 차량을 저장할 수 있는 버퍼가 존재할 수 있다. 이러한 경우 예측된 제2 차량 수에 해당하는 차량은 버퍼에 저장되고, 예측된 제2 차량 수가 제2 링크의 첫번째 셀에서 실제 수용 가능한 차량 수보다 같거나 작으면 버퍼에 저장된 차량은, 제2 링크의 첫번째 셀로 이동할 수 있다.
예측된 제2 차량 수가 제2 링크의 첫번째 셀에서 실제 수용 가능한 차량 수보다 크면 버퍼에 저장된 차량 중 실제 수용 가능한 차량 수에 해당하는 차량은, 제2 링크의 첫번째 셀로 이동하고, 나머지 차량은 버퍼에서 대기할 수 있다. 버퍼에서 대기중인 차량은 제2 링크의 첫번째 링크에서 수용 가능한 차량이 존재할 때마다 제2 링크의 첫번째 셀로 이동할 수 있다.
또한, 제2 차량 수를 예측하고, 예측된 제2 차량 수만큼 차량을 이동하는 상술한 동작은 제2 링크를 구성하는 셀 수보다 하나 작은 수만큼 수행될 수 있다. 예를 들어, 제2 링크를 구성하는 셀의 수가 4개인 경우 상술한 동작은 3회 수행될 수 있으나, 이에 한정되지 않는다.
이를 통해 본 발명은 교통 시뮬레이션을 위해 소요되는 시간 및 리소스 등을 최소화하면서 효율적이고, 빠른 교통 시뮬레이션을 수행하는 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치를 제공할 수 있다.
본 발명의 실시예에 따른 장치 및 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다.
컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media) 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상 첨부된 도면을 참조하여 본 발명의 실시예들을 더욱 상세하게 설명하였으나, 본 발명은 반드시 이러한 실시예로 국한되는 것은 아니고, 본 발명의 기술사상을 벗어나지 않는 범위 내에서 다양하게 변형 실시될 수 있다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.
100: 교통 시뮬레이션 장치
110: 통신부
120: 표시부
130: 저장부
140: 제어부
150: 제1 처리부
160: 제2 처리부

Claims (18)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 교통 시뮬레이션 장치의 제어부를 통해 수행되는 교통 시뮬레이션 방법으로서,
    도로를, 동일 특성을 가지도록 분할한 복수의 링크(link) 중 제1 링크에서 다음 링크인 제2 링크로 이동 가능한 제1 차량 수를 결정하여 상기 결정된 제1 차량 수를 링크 사이에 위치한 커넥션 셀(connection cell)을 통해 상기 제2 링크로 전달하는 제1 단계;
    상기 커넥션 셀을 통해 상기 제2 링크의 차량 속도, 차량 밀도 및 상기 제2 링크를 구성하는 복수의 셀(cell) 각각에서 수용 가능한 제2 차량 수를 포함하는 차량 데이터를 획득하는 제2 단계; 및
    상기 제1 차량 수에 해당하는 차량 중 상기 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 제2 링크로 이동시키도록 시뮬레이션하는 제3 단계를 포함하고,
    상기 제1 단계, 상기 제2 단계 및 상기 제3 단계가 수행된 이후 다음 시뮬레이션 동작에서 상기 차량 데이터를 이용하여 상기 제2 링크에서 수용 가능한 제2 차량 수를 예측하는 제4 단계; 및
    상기 예측된 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 제2 링크로 이동시키도록 시뮬레이션하는 제5 단계를 포함하고,
    상기 제4 단계 및 상기 제5 단계는 기 설정된 횟수동안 수행되는, 병렬 처리 기반의 교통 시뮬레이션 방법.
  6. 제5항에 있어서, 상기 제1 단계 내지 상기 제5 단계는,
    상기 복수의 링크 각각에 대응하여 상기 교통 시뮬레이션 장치의 GPU(Graphic Processing Unit)에 포함된 복수의 코어 각각에 스레드(thread)로서 할당되고,
    상기 할당된 스레드는, 상기 복수의 코어 각각에서 병렬적으로 적어도 동시에 실행되는, 병렬 처리 기반의 교통 시뮬레이션 방법.
  7. 제5항에 있어서, 상기 기 설정된 횟수는,
    상기 제2 링크를 구성하는 복수의 셀의 개수보다 하나 작은 수에 대응하는, 병렬 처리 기반의 교통 시뮬레이션 방법.
  8. 제5항에 있어서, 상기 복수의 링크 각각의 첫번째 셀 앞쪽에는, 차량을 저장할 수 있는 버퍼(buffer)가 위치하고,
    상기 예측된 제2 차량 수에 해당하는 차량이 상기 버퍼에 저장되고,
    상기 예측된 제2 차량 수가 상기 제2 링크의 첫번째 셀에서 실제 수용 가능한 차량 수보다 같거나 작으면 상기 버퍼에 저장된 차량은, 상기 제2 링크의 첫번째 셀로 이동하고,
    상기 예측된 제2 차량 수가 상기 제2 링크의 첫번째 셀에서 실제 수용 가능한 차량 수보다 크면 상기 버퍼에 저장된 차량 중 상기 실제 수용 가능한 차량 수에 해당하는 차량은, 상기 제2 링크의 첫번째 셀로 이동하고, 나머지 차량은 상기 버퍼에서 대기하는, 병렬 처리 기반의 교통 시뮬레이션 방법.
  9. 제8항에 있어서, 상기 버퍼에서 대기중인 차량은,
    상기 제2 링크의 첫번째 링크에서 수용 가능한 차량이 존재할 때마다 상기 제2 링크의 첫번째 셀로 이동하는, 병렬 처리 기반의 교통 시뮬레이션 방법.
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 데이터를 저장하는 저장부; 및
    상기 저장부와 연결되고, 교통 시뮬레이션을 위해 사용되는 시뮬레이션 요소 데이터, 도로 네트워크 데이터 및 교통 수요 데이터를 이용하여 상기 교통 시뮬레이션을 수행하도록 구성된 제어부를 포함하고,
    상기 제어부는, GPU(Graphic Processing Unit)를 포함하도록 구성되고,
    상기 GPU는, 복수의 코어를 포함하도록 구성되고,
    상기 복수의 코어 중 제1 코어는,
    도로를, 동일 특성을 가지도록 분할한 복수의 링크(link) 중 제1 링크에서 다음 링크인 제2 링크로 이동 가능한 제1 차량 수를 결정하여 상기 결정된 제1 차량 수를 링크 사이에 위치한 커넥션 셀(connection cell)을 통해 상기 제2 링크로 전달하는 제1 동작,
    상기 커넥션 셀을 통해 상기 제2 링크의 차량 속도, 차량 밀도 및 상기 다음 링크를 구성하는 복수의 셀(cell) 각각에서 수용 가능한 제2 차량 수를 포함하는 차량 데이터를 획득하는 제2 동작,
    상기 제1 차량 수에 해당하는 차량 중 상기 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 다음 링크로 이동시키는 제3 동작을 수행하도록 구성되고,
    상기 제1 동작, 상기 제2 동작 및 상기 제3 동작이 수행된 이후 상기 제어부는, 다음 시뮬레이션 동작에서 상기 차량 데이터를 이용하여 상기 제2 링크에서 수용 가능한 제2 차량 수를 예측하는 제4 동작, 및
    상기 예측된 제2 차량 수에 해당하는 차량을 상기 커넥션 셀을 통해 상기 제2 링크로 이동시키도록 시뮬레이션하는 제5 동작을 수행하도록 구성되며,
    상기 제4 동작 및 상기 제5 동작은 기 설정된 횟수동안 수행되는, 병렬 처리 기반의 교통 시뮬레이션 장치.
  15. 제14항에 있어서, 상기 제1 동작 내지 상기 제5 동작은,
    상기 복수의 링크 각각에 대응하여 상기 복수의 코어 각각에 스레드(thread)로서 할당되고,
    상기 할당된 스레드는, 상기 복수의 코어 각각에서 병렬적으로 적어도 동시에 실행되는, 병렬 처리 기반의 교통 시뮬레이션 장치.
  16. 제14항에 있어서, 상기 기 설정된 횟수는,
    상기 제2 링크를 구성하는 복수의 셀의 개수보다 하나 작은 수에 대응하는, 병렬 처리 기반의 교통 시뮬레이션 장치.
  17. 제14항에 있어서, 상기 복수의 링크 각각의 첫번째 셀 앞쪽에는, 차량을 저장할 수 있는 버퍼(buffer)가 위치하고,
    상기 예측된 제2 차량 수에 해당하는 차량이 상기 버퍼에 저장되고,
    상기 예측된 제2 차량 수가 상기 제2 링크의 첫번째 셀에서 실제 수용 가능한 차량 수보다 같거나 작으면 상기 버퍼에 저장된 차량은, 상기 제2 링크의 첫번째 셀로 이동하고,
    상기 예측된 제2 차량 수가 상기 제2 링크의 첫번째 셀에서 실제 수용 가능한 차량 수보다 크면 상기 버퍼에 저장된 차량 중 상기 실제 수용 가능한 차량 수에 해당하는 차량은, 상기 제2 링크의 첫번째 셀로 이동하고, 나머지 차량은 상기 버퍼에서 대기하는, 병렬 처리 기반의 교통 시뮬레이션 장치.
  18. 제17항에 있어서, 상기 버퍼에서 대기중인 차량은,
    상기 제2 링크의 첫번째 링크에서 수용 가능한 차량이 존재할 때마다 상기 제2 링크의 첫번째 셀로 이동하는, 병렬 처리 기반의 교통 시뮬레이션 장치.
KR1020190178347A 2019-12-30 2019-12-30 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치 KR102309714B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190178347A KR102309714B1 (ko) 2019-12-30 2019-12-30 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190178347A KR102309714B1 (ko) 2019-12-30 2019-12-30 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치

Publications (2)

Publication Number Publication Date
KR20210085375A KR20210085375A (ko) 2021-07-08
KR102309714B1 true KR102309714B1 (ko) 2021-10-06

Family

ID=76893685

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190178347A KR102309714B1 (ko) 2019-12-30 2019-12-30 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치

Country Status (1)

Country Link
KR (1) KR102309714B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242688A (ja) 2004-02-26 2005-09-08 Honda Motor Co Ltd 自由軌道交通シミュレータ
JP2011243029A (ja) 2010-05-19 2011-12-01 International Business Maschines Corporation シミュレーション・システム、方法及びプログラム
CN103593535A (zh) 2013-11-22 2014-02-19 南京洛普股份有限公司 基于多尺度融合的城市交通复杂自适应网络平行仿真***及方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100969481B1 (ko) * 2008-06-03 2010-07-14 주식회사 포스코아이씨티 교통흐름 시뮬레이션 장치 및 이를 포함하는 교통흐름시뮬레이션 시스템

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242688A (ja) 2004-02-26 2005-09-08 Honda Motor Co Ltd 自由軌道交通シミュレータ
JP2011243029A (ja) 2010-05-19 2011-12-01 International Business Maschines Corporation シミュレーション・システム、方法及びプログラム
CN103593535A (zh) 2013-11-22 2014-02-19 南京洛普股份有限公司 基于多尺度融合的城市交通复杂自适应网络平行仿真***及方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
경민기. ‘GPU 기반의 병렬 LCTM 교통 시뮬레이션 시간 예측’. 건국대학교 대학원 박사학위 청구논문, 2019.02., pp.1-76.*

Also Published As

Publication number Publication date
KR20210085375A (ko) 2021-07-08

Similar Documents

Publication Publication Date Title
JP2019511033A (ja) ニューラルネットワークを用いたテキストセグメントの係り受け解析の生成
US8849625B2 (en) Distributed process simulator
CN103946836A (zh) 使用非光栅地图数据的修改来渲染地图图像
US8139074B2 (en) Memory optimized cache generation for image tiling in GIS/CAD browser applications
KR20210149530A (ko) 이미지 분류 모델 학습 방법 및 이를 수행하기 위한 장치
EP4266282A1 (en) Method and apparatus for controlling formation driving, medium, and electronic device
JP2009087282A (ja) 並列計算システムおよび並列計算方法
CN114091589B (zh) 模型训练方法、装置、电子设备及介质
JP7087682B2 (ja) 時空間イベントデータ推定装置、方法、及びプログラム
KR102309714B1 (ko) 병렬 처리 기반의 교통 시뮬레이션 방법 및 이를 위한 장치
JP3462064B2 (ja) 分散シミュレーションシステム
WO2023198016A1 (zh) 虚拟场景中添加车辆的方法、装置、计算机设备、存储介质及程序产品
CN111611175A (zh) 自动驾驶软件开发方法、服务器端及客户端
JP5293165B2 (ja) シミュレーション支援プログラム、シミュレーション装置、およびシミュレーション支援方法
EP3968202A1 (en) Customizable reinforcement of learning column placement in structural design
JP6072028B2 (ja) シミュレーション装置及びそのシミュレーション方法
CN106951278B (zh) 一种数据处理方法和装置
CN116342773A (zh) 基于渲染引擎的自动驾驶信息可视化方法、装置及车辆
CN112947466B (zh) 一种面向自动驾驶的平行规划方法、设备及存储介质
CN111158898B (zh) 针对输变电工程场地布置标准化的bim数据处理方法及装置
US10706201B1 (en) Circuit design routing using multi-panel track assignment
US20160283147A1 (en) System, control device, and method
CN113177266A (zh) 仿真方法、仿真计算机设备及计算机可读存储介质
KR101721333B1 (ko) 메시지의 송수신을 위한 통신세션을 통해 정보데이터를 제공하는 방법 및 시스템
KR20240096015A (ko) Vr 클라우드 장치

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant