KR102374595B1 - Vehicle routing method and device using noising scheme - Google Patents

Vehicle routing method and device using noising scheme Download PDF

Info

Publication number
KR102374595B1
KR102374595B1 KR1020200137967A KR20200137967A KR102374595B1 KR 102374595 B1 KR102374595 B1 KR 102374595B1 KR 1020200137967 A KR1020200137967 A KR 1020200137967A KR 20200137967 A KR20200137967 A KR 20200137967A KR 102374595 B1 KR102374595 B1 KR 102374595B1
Authority
KR
South Korea
Prior art keywords
node
nodes
vehicle routing
routing method
closest
Prior art date
Application number
KR1020200137967A
Other languages
Korean (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 KR1020200137967A priority Critical patent/KR102374595B1/en
Application granted granted Critical
Publication of KR102374595B1 publication Critical patent/KR102374595B1/en

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3446Details of route searching algorithms, e.g. Dijkstra, A*, arc-flags, using precalculated routes
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/20Instruments for performing navigational calculations
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01CMEASURING DISTANCES, LEVELS OR BEARINGS; SURVEYING; NAVIGATION; GYROSCOPIC INSTRUMENTS; PHOTOGRAMMETRY OR VIDEOGRAMMETRY
    • G01C21/00Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00
    • G01C21/26Navigation; Navigational instruments not provided for in groups G01C1/00 - G01C19/00 specially adapted for navigation in a road network
    • G01C21/34Route searching; Route guidance
    • G01C21/3407Route searching; Route guidance specially adapted for specific applications

Abstract

Disclosed is a vehicle routing method and a vehicle routing apparatus using noise technique. The vehicle routing method using the noise technique executed by a disclosed processor comprises the following steps of: removing a predetermined number of nodes from a route of one or more vehicles based on randomly selected nodes and closest nodes of the selected nodes among a plurality of nodes included in the route; and adding the removed nodes to the route of the one or more vehicles. The closest node is determined by adding a noise value to a distance from a corresponding node to each of the other nodes. By applying noise to resetting of the closest node, search for a best solution of a vehicle route problem is efficiently performed.

Description

노이징 기법을 이용한 차량 라우팅 방법 및 장치{VEHICLE ROUTING METHOD AND DEVICE USING NOISING SCHEME}Vehicle routing method and apparatus using noise technique {VEHICLE ROUTING METHOD AND DEVICE USING NOISING SCHEME}

아래의 설명은 노이징 기법을 이용한 차량 라우팅 방법 및 장치에 관한 것으로, 보다 구체적으로는 LNS(Large Neighborhood Search)의 파괴(destroy) 과정 및/또는 로컬 검색 과정에서 이용되는 최근접 노드의 재설정에 노이즈를 적용시키는 차량 라우팅 방법 및 장치에 관한 것이다.The following description relates to a vehicle routing method and apparatus using a noise technique, and more specifically, noise in the reconfiguration of the nearest node used in the destruction process of LNS (Large Neighborhood Search) and/or the local search process. It relates to a vehicle routing method and apparatus to apply.

차량 경로 문제(VRP; Vehicle Routing Problem)에는 고객을 방문하는 차량을 포함하는 모든 문제가 포함되며, 차량 스케줄링, 차량 작업 계획 및 배송 계획과 같은 다양한 방식으로 설명될 수 있다. VRP는 우편물 수집, 통근 버스(예컨대, 스쿨 버스) 라우팅, 라스트 마일 배송 및 유지관리 투어를 포함하여 실제 상황에서 일반적일 수 있는 다양한 문제를 해결하는 데 적용될 수 있다.The Vehicle Routing Problem (VRP) includes any problem involving vehicles visiting a customer, and can be described in a variety of ways, such as vehicle scheduling, vehicle work planning, and delivery planning. VRP can be applied to solve a variety of problems that may be common in real-world situations, including mail collection, commuter bus (eg school bus) routing, last mile delivery, and maintenance tours.

일반적으로, VRP는 단일 데포(single depot)에서 일련의 고객에게 서비스를 제공할 수 있는 고정 용량을 가진 동종 차량 집합을 포함할 수 있다. 모든 차량은 출발지에서 출발하여 출발지로 복귀해야 한다. 경로 길이 또는 시간 제한과 같은 제한은 차량이 이동하는 거리를 제한할 수 있다. 라우팅 목표는 각 차량에 일련의 배송을 할당하여 모든 고객에게 서비스를 제공하면서도, 총 이동 거리 또는 차량이 소비하는 총 시간을 최소화하는 것이다. 표준 VRP(standard VRP)는 종종 CVRP(Capacitated Vehicle Routing Problem)라고 할 수 있다. 차량이 여러 창고에서 출발하는 MVRP(Multi-Depot Vehicle Routing Problem)와 차량이 창고로 돌아 오지 않는 OVRP(Open Vehicle Route Problem) 등 다양한 유형의 VRP 변형이 존재할 수 있다.In general, a VRP may contain a set of homogeneous vehicles with a fixed capacity capable of serving a set of customers from a single depot. All vehicles must depart from the point of departure and return to the point of departure. Restrictions such as route length or time restrictions may limit the distance the vehicle travels. The routing goal is to allocate a set of deliveries to each vehicle to serve all customers, while minimizing the total distance traveled or the total time consumed by the vehicle. A standard VRP (standard VRP) can often be referred to as a Capacitated Vehicle Routing Problem (CVRP). Various types of VRP variants can exist, such as the Multi-Depot Vehicle Routing Problem (MVRP), in which vehicles depart from multiple warehouses, and the Open Vehicle Route Problem (OVRP), in which vehicles do not return to the warehouse.

일실시예에 따른 프로세서에 의해 실행되는, 노이징 기법을 이용한 차량 라우팅 방법은 하나 이상의 차량들의 경로에 포함된 복수의 노드들 중에서 랜덤하게 선택된 노드와 해당 노드의 최근접 노드(Closest Node)에 기반하여 미리 정해진 개수의 노드를 해당 경로에서 제거하는 단계; 및 상기 제거된 노드를 상기 하나 이상의 차량들의 경로에 추가하는 단계를 포함하고, 상기 최근접 노드는 대응하는 노드에서 나머지 노드들 각각까지의 거리에 노이즈 값을 추가함으로써 결정된다.A vehicle routing method using a noise technique, executed by a processor according to an embodiment, is based on a node randomly selected from among a plurality of nodes included in a path of one or more vehicles and a closest node of the corresponding node to remove a predetermined number of nodes from the corresponding path; and adding the removed node to the path of the one or more vehicles, wherein the nearest node is determined by adding a noise value to a distance from a corresponding node to each of the remaining nodes.

일실시예에 따른 차량 라우팅 방법에서 상기 최근접 노드는 상기 해당 노드에서 나머지 노드들 각각까지의 거리들에 노이즈 값을 추가한 결과 값들 중 최소 값에 대응하는 노드로 결정될 수 있다.In the vehicle routing method according to an embodiment, the nearest node may be determined as a node corresponding to a minimum value among result values obtained by adding a noise value to distances from the corresponding node to each of the remaining nodes.

일실시예에 따른 차량 라우팅 방법에서 상기 최근접 노드는 상기 제거하는 단계와 상기 추가하는 단계가 미리 정해진 횟수만큼 반복될 때마다 재 결정될 수 있다.In the vehicle routing method according to an embodiment, the nearest node may be re-determined whenever the removing and the adding are repeated a predetermined number of times.

일실시예에 따른 차량 라우팅 방법에서 상기 최근접 노드는 상기 차량 라우팅 방법이 복수의 스레드들(threads) 각각에서 병렬로 수행되는 경우, 상기 복수의 스레드들마다 상이하게 결정될 수 있다.In the vehicle routing method according to an embodiment, the nearest node may be determined differently for each of the plurality of threads when the vehicle routing method is performed in parallel in each of a plurality of threads.

일실시예에 따른 차량 라우팅 방법에서 상기 제거하는 단계는 상기 복수의 노드들 중 상기 선택된 노드와 상기 최근접 노드를 제거할 수 있다.In the vehicle routing method according to an embodiment, the removing may include removing the selected node and the nearest node from among the plurality of nodes.

일실시예에 따른 차량 라우팅 방법에서 상기 복수의 노드들 중 제거되지 않은 나머지 노드들 중에서 랜덤하게 선택된 노드와 해당 노드의 최근접 노드를 제거하는 과정을 미리 정해진 조건이 만족될 때까지 반복할 수 있다.In the vehicle routing method according to an embodiment, the process of removing a node randomly selected from among the remaining non-removed nodes among the plurality of nodes and a node closest to the node may be repeated until a predetermined condition is satisfied. .

일실시예에 따른 차량 라우팅 방법에서 상기 제거하는 단계는 상기 복수의 노드들 중에서 랜덤하게 선택된 제1 노드와 상기 제1 노드의 최근접 노드를 제거하는 단계; 상기 제거된 최근접 노드의 최근접 노드가 이미 제거된 노드가 아닌 경우에 응답하여, 상기 제거된 최근접 노드의 최근접 노드를 해당 경로에서 제거하는 과정을 반복하는 단계; 및 상기 제거된 최근접 노드의 최근접 노드가 이미 제거된 노드인 경우에 응답하여, 상기 복수의 노드들 중 제거되지 않은 나머지 노드들 중에서 랜덤하게 선택된 제3 노드와 상기 제3 노드의 최근접 노드를 제거하는 단계를 포함할 수 있다.In the vehicle routing method according to an embodiment, the removing may include: removing a first node randomly selected from among the plurality of nodes and a node closest to the first node; repeating the process of removing the closest node of the removed nearest node from the corresponding path in response to the case that the closest node of the removed closest node is not the already removed node; and a third node randomly selected from among the remaining non-removed nodes among the plurality of nodes and a nearest node of the third node in response to a case in which the closest node of the removed nearest node is an already removed node. may include the step of removing

일실시예에 따른 차량 라우팅 방법에서 상기 제거하는 단계는 상기 복수의 노드들 중에서 랜덤하게 시드 노드(seed node)를 선택하는 단계; 상기 시드 노드를 포함한 기준 경로에서 상기 시드 노드의 이전 노드들 또는 이후 노드들을 상기 기준 경로에서 제거하는 단계; 상기 시드 노드의 최근접 노드가 이미 제거된 노드가 아닌 경우에 응답하여 새로운 시드 노드로 설정하고, 상기 새로운 시드 노드의 이전 노드들 또는 이후 노드들을 해당 기준 경로에서 제거하는 단계를 미리 정해진 조건이 만족될 때까지 반복하는 단계; 및 상기 시드 노드의 최근접 노드가 이미 제거된 노드인 경우에 응답하여, 상기 복수의 노드들 중 제거되지 않은 나머지 노드들 중에서 랜덤하게 새로운 시드 노드를 선택하고, 상기 선택된 새로운 노드의 이전 노드들 또는 이후 노드들을 해당 기준 경로에서 제거하는 단계를 포함할 수 있다.In the vehicle routing method according to an embodiment, the removing may include randomly selecting a seed node from among the plurality of nodes; removing from the reference path previous nodes or subsequent nodes of the seed node from the reference path including the seed node; A predetermined condition is satisfied in the step of setting a new seed node in response to a case where the closest node of the seed node is not a node that has already been removed, and removing previous or subsequent nodes of the new seed node from the corresponding reference path. repeat until and in response to a case in which the closest node of the seed node is a node that has already been removed, randomly selects a new seed node from among the remaining non-removed nodes among the plurality of nodes, and selects previous nodes of the selected new node or Thereafter, it may include removing the nodes from the corresponding reference path.

일실시예에 따른 차량 라우팅 방법에서 상기 제거하는 단계는 상기 복수의 노드들 중에서 제거된 노드들의 비율이 미리 정해진 임계치를 만족할 때까지 반복해서 수행될 수 있다.In the vehicle routing method according to an embodiment, the removing may be repeatedly performed until a ratio of the removed nodes among the plurality of nodes satisfies a predetermined threshold.

일실시예에 따른 차량 라우팅 방법에서 상기 제거하는 단계와 상기 추가하는 단계는 미리 정해진 조건이 만족될 때까지 반복될 수 있다.In the vehicle routing method according to an embodiment, the removing and the adding may be repeated until a predetermined condition is satisfied.

일실시예에 따른 차량 라우팅 방법은 상기 추가하는 단계가 수행된 후, 상기 복수의 노드들 중 어느 하나를 해당 노드의 최근접 노드와 스왑(swap)할 것인지 여부를 판단하는 단계를 더 포함할 수 있다.The vehicle routing method according to an embodiment may further include, after the adding is performed, determining whether to swap any one of the plurality of nodes with a node closest to the corresponding node. there is.

일실시예에 따른 차량 라우팅 방법에서 상기 노이즈 값은 상기 복수의 노드들 간 거리를 표현한 거리 매트릭스에서 추출된 거리들의 하위 n% 평균에 기초하여 결정된 노이즈의 최소값 및 최대값 사이에 속하고, 상기 n은 0에서 100 사이의 실수(real number)일 수 있다.In the vehicle routing method according to an embodiment, the noise value belongs to a minimum value and a maximum value of noise determined based on a lower n% average of distances extracted from a distance matrix expressing distances between the plurality of nodes, and the n may be a real number between 0 and 100.

일실시예에 따른 차량 라우팅 장치는 하나 이상의 프로세서를 포함하고, 상기 하나 이상의 프로세서는 하나 이상의 차량들의 경로에 포함된 복수의 노드들 중에서 랜덤하게 선택된 노드와 해당 노드의 최근접 노드(Closest Node)에 기반하여 미리 정해진 개수의 노드를 해당 경로에서 제거하고, 상기 제거된 노드를 상기 하나 이상의 차량들의 경로에 추가하고, 상기 최근접 노드는 대응하는 노드에서 나머지 노드들 각각까지의 거리에 노이즈 값을 추가함으로써 결정된다.A vehicle routing apparatus according to an embodiment includes one or more processors, wherein the one or more processors are randomly selected from among a plurality of nodes included in a path of one or more vehicles and a closest node of the node. based on a predetermined number of nodes are removed from the corresponding path, the removed node is added to the path of the one or more vehicles, and the nearest node adds a noise value to the distance from the corresponding node to each of the remaining nodes. is determined by

일실시예에 따르면, LNS의 파괴 과정 및/또는 로컬 검색 과정에서 이용되는 최근접 노드의 재설정에 노이즈를 적용시킴으로써, 차량 경로 문제에 대한 최상의 솔루션 탐색을 효과적으로 수행할 수 있다.According to an embodiment, by applying noise to the reconfiguration of the nearest node used in the destruction process of the LNS and/or the local search process, it is possible to effectively perform the search for the best solution to the vehicle path problem.

일실시예에 따르면, LNS 수행 시 특정 이터레이션마다 최근접 노드를 노이즈에 기반하여 재설정함으로써, 적은 랜덤 넘버 호출 횟수를 통해서도 최상의 솔루션을 효과적으로 구할 수 있다.According to an embodiment, when performing LNS, the best solution can be effectively obtained even with a small number of random number calls by resetting the nearest node based on noise at each specific iteration.

도 1은 일실시예에 따른 차량 경로 문제 해결을 위한 LNS 기법을 설명하기 위한 도면이다.
도 2는 일실시예에 따른 차량 라우팅 방법을 설명하기 위한 도면이다.
도 3 내지 도 5는 일실시예에 따른 노이징 기법을 이용한 파괴 기법의 예시들을 설명하기 위한 도면이다.
도 6 및 도 7은 일실시예에 따른 노이즈 양을 결정하는 과정을 설명하기 위한 도면이다.
도 8은 일실시예에 따라 차량 라우팅 방법이 복수의 스레드들 각각에서 병렬로 수행되는 예시를 설명하기 위한 도면이다.
도 9는 일실시예에 따른 차량 라우팅 장치를 나타낸 도면이다.
1 is a diagram for explaining an LNS technique for solving a vehicle path problem according to an embodiment.
2 is a view for explaining a vehicle routing method according to an embodiment.
3 to 5 are diagrams for explaining examples of a destruction technique using a noise technique according to an embodiment.
6 and 7 are diagrams for explaining a process of determining an amount of noise according to an exemplary embodiment.
8 is a diagram for explaining an example in which a vehicle routing method is performed in parallel in each of a plurality of threads according to an embodiment.
9 is a view showing a vehicle routing apparatus according to an embodiment.

실시예들에 대한 특정한 구조적 또는 기능적 설명들은 단지 예시를 위한 목적으로 개시된 것으로서, 다양한 형태로 변경되어 구현될 수 있다. 따라서, 실제 구현되는 형태는 개시된 특정 실시예로만 한정되는 것이 아니며, 본 명세서의 범위는 실시예들로 설명한 기술적 사상에 포함되는 변경, 균등물, 또는 대체물을 포함한다.Specific structural or functional descriptions of the embodiments are disclosed for purposes of illustration only, and may be changed and implemented in various forms. Accordingly, the actual implementation form is not limited to the specific embodiments disclosed, and the scope of the present specification includes changes, equivalents, or substitutes included in the technical spirit described in the embodiments.

제1 또는 제2 등의 용어를 다양한 구성요소들을 설명하는데 사용될 수 있지만, 이런 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 해석되어야 한다. 예를 들어, 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소는 제1 구성요소로도 명명될 수 있다.Although terms such as first or second may be used to describe various elements, these terms should be interpreted only for the purpose of distinguishing one element from another. For example, a first component may be termed a second component, and similarly, a second component may also be termed a first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다.When a component is referred to as being “connected to” another component, it may be directly connected or connected to the other component, but it should be understood that another component may exist in between.

단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 명세서에서, "포함하다" 또는 "가지다" 등의 용어는 설명된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함으로 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The singular expression includes the plural expression unless the context clearly dictates otherwise. In this specification, terms such as "comprise" or "have" are intended to designate that the described feature, number, step, operation, component, part, or combination thereof exists, and includes one or more other features or numbers, It should be understood that the possibility of the presence or addition of steps, operations, components, parts or combinations thereof is not precluded in advance.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 해당 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가진다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 갖는 것으로 해석되어야 하며, 본 명세서에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in commonly used dictionaries should be interpreted as having a meaning consistent with the meaning in the context of the related art, and should not be interpreted in an ideal or excessively formal meaning unless explicitly defined in the present specification. does not

이하, 실시예들을 첨부된 도면들을 참조하여 상세하게 설명한다. 첨부 도면을 참조하여 설명함에 있어, 도면 부호에 관계없이 동일한 구성 요소는 동일한 참조 부호를 부여하고, 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings. In the description with reference to the accompanying drawings, the same components are assigned the same reference numerals regardless of the reference numerals, and overlapping descriptions thereof will be omitted.

도 1은 일실시예에 따른 차량 경로 문제 해결을 위한 LNS 기법을 설명하기 위한 도면이다.1 is a diagram for explaining an LNS technique for solving a vehicle path problem according to an embodiment.

도 1을 참조하면, 일실시예에 따른 LNS 기법의 라우팅 방법이 도시된다. 첫 번째 단계(110)는 중앙에 창고(즉, 데포)와 차량 경로 3개를 포함한 VRP 인스턴스의 초기 차선책 솔루션을 나타낼 수 있다. 두 번째 단계(120)에서는 차량이 방문해야 하는 고객을 나타내는 노드 일부가 해당 경로에서 제거(즉, 파괴)될 수 있다. 이처럼 제거된 노드는 다른 경로에 포함(즉, 복구(repair))됨으로써 최선의 솔루션이 도출될 수 있으며, 이러한 과정이 세 번째 단계(130)에 표현될 수 있다.Referring to FIG. 1 , a routing method of an LNS technique according to an embodiment is illustrated. The first stage 110 may represent an initial sub-optimal solution of a VRP instance with a warehouse (ie, a depot) and three vehicle routes in the center. In the second step 120 , some of the nodes representing customers the vehicle should visit may be removed (ie, destroyed) from the path. The removed node may be included in another path (ie, repaired) to derive the best solution, and this process may be expressed in the third step 130 .

일실시예에 따르면, 앞서 설명한 파괴 과정과 이후에 설명할 로컬 검색(local search) 과정에서 제거된 노드의 가장 가까운 노드인 최근접 노드(Closest Node)에 대한 포인터 정보가 필요로 되며, 최근접 노드 설정에 노이징 기법이 적용될 수 있다. 다시 말해, 각 노드의 최근접 노드가 약간의 노이즈와 함께 재설정될 수 있으며, 이러한 노이징 기법을 통해 보다 효과적으로 최선의 라우팅 솔루션을 획득할 수 있다. 이하, 도면들을 참조하여 보다 상세히 설명한다.According to an embodiment, pointer information on the Closest Node, which is the closest node to the node removed in the destruction process described above and the local search process to be described later, is required, and the nearest node A noise technique may be applied to the setting. In other words, the nearest node of each node can be reset with some noise, and the best routing solution can be obtained more effectively through this noise technique. Hereinafter, it will be described in more detail with reference to the drawings.

도 2는 일실시예에 따른 차량 라우팅 방법을 설명하기 위한 도면이다.2 is a view for explaining a vehicle routing method according to an embodiment.

도 2를 참조하면, 일실시예에 따라 차량 라우팅 장치에 구비된 하나 이상의 프로세서에 의해 수행되는 차량 라우팅 방법이 도시된다.Referring to FIG. 2 , a vehicle routing method performed by one or more processors included in a vehicle routing apparatus according to an embodiment is illustrated.

단계(210)에서, 차량 라우팅 장치는 복수의 노드들 각각을 하나 이상의 차량의 경로에 포함시킨 초기 솔루션을 생성할 수 있다. 예를 들어, 차량 라우팅 장치는 초기 솔루션을 간단히 랜덤하게 생성할 수 있다. 각 노드들에 대해 차량이 랜덤하게 선택되고, 이때 임의 노드에 대해 특정 차량이 선택될 확률은 모두 동일할 수 있다. 해당 노드는 선택된 차량의 경로에 포함될 수 있다.In step 210 , the vehicle routing apparatus may generate an initial solution including each of the plurality of nodes in the path of one or more vehicles. For example, a vehicle routing device may simply randomly generate an initial solution. A vehicle is randomly selected for each node, and in this case, a probability that a specific vehicle is selected for any node may be the same. The corresponding node may be included in the path of the selected vehicle.

그리고, 차량 라우팅 장치는 각각의 노드들의 최근접 노드를 포인터로서 기록할 수 있다. 예를 들어, VRP 사이즈가 1000개인 경우, 노드 1의 최근접 노드는 Distance(1->2), Distance(1->3), Distance(1->4), ..., Distance(1->1000)를 모두 확인 후 노드 1과 가장 짧은 거리를 가진 노드가 노드 1의 최근접 노드로 설정될 수 있다.And, the vehicle routing apparatus may record the nearest node of each node as a pointer. For example, if the VRP size is 1000, the nearest node of node 1 is Distance(1->2), Distance(1->3), Distance(1->4), ..., Distance(1- >1000), the node with the shortest distance from node 1 may be set as the closest node to node 1.

단계(220)에서, 차량 라우팅 장치는 복수의 노드들 각각의 최근접 노드를 재설정할 수 있다. 모든 노드는 각자 자신으로부터 가장 가까운 노드(즉, 최근접 노드)를 포인팅할 수 있다. 최근접 노드는 특정 이터레이션(iteration)마다 재설정되는데, 재설정때마다 노이즈가 포함되기 때문에 노드들이 항상 같은 노드를 포인팅하지 않는다. 이후에 상세히 설명하겠지만, 라우팅이 병렬로 수행되는 실시예에서는 같은 시점의 서로 다른 스레드(thread)에 포함된 동일 노드는 서로 다른 노드를 최근접 노드로 포인팅할 수 있다. 이처럼 설정된 최근접 노드는 파괴 과정과 로컬 검색 과정에서 적극 활용될 수 있다.In step 220 , the vehicle routing device may reconfigure the nearest node of each of the plurality of nodes. All nodes can each point to the closest node to itself (ie, the nearest node). The nearest node is reset every specific iteration, and since each reset includes noise, the nodes do not always point to the same node. As will be described later in detail, in an embodiment in which routing is performed in parallel, the same node included in different threads at the same time may point to a different node as the nearest node. The closest node set in this way can be actively used in the destruction process and the local search process.

이처럼, 본 발명은 독특하고 효과적인 노이즈 방법을 이용할 수 있다. 종래에는 파괴 또는 복구 휴리스틱을 작동하는 동안 제한된 난수를 추가하여 노이즈가 적용되었다. 예를 들어, 탐욕 복구(greedy repair)가 진행 중일 때 실제 거리 증가에 임의의 숫자를 추가하여 각 요청에 대한 탐욕 삽입 위치에 노이징이 발생하였다. 이를 위해서는 모든 고객 노드, 모든 삽입 위치, 모든 반복 및 모든 작업 스레드에 대해 난수를 무수히 생성해야 한다. 반면, 본 명세서에서 새로 제안하는 기법은 모든 반복에 대해 난수 생성이 필요하지 않으며, 이로 인해 상당한 시간을 절약할 수 있다. 제안된 기법에서 각 노드에는 가장 관련성이 높은(즉, 가장 가까운) 노드에 대한 포인터가 적용될 수 있다. 포인터는 해당 이터레이션이 완료되면 다시 초기화되며, 이때 노드들 사이의 거리에 노이즈가 발생할 수 있다. 초기화된 후 재설정된 포인터는 다음 이터레이션까지 그대로 유지될 수 있다.As such, the present invention may utilize a unique and effective noise method. Conventionally, noise is applied by adding a limited random number while operating the destruction or recovery heuristic. For example, when greedy repair is in progress, a random number is added to the actual distance increment, resulting in noise at the greedy insertion location for each request. This requires generating a myriad of random numbers for every customer node, every insertion point, every iteration, and every thread of work. On the other hand, the method newly proposed in this specification does not require random number generation for every iteration, which can save considerable time. In the proposed scheme, a pointer to the most relevant (ie, closest) node can be applied to each node. The pointer is initialized again when the corresponding iteration is completed, and noise may occur in the distance between nodes. A pointer reset after initialization may be maintained until the next iteration.

노이즈가 포함된 각 노드에서 가장 가까운 노드에 대한 포인터를 적극적으로 활용하는 것은 본 발명의 고유한 기능일 수 있다. 노이즈 값은 노이즈 항의 동작에 영향을 주는 중요한 파라미터일 수 있다. 노이즈 값이 너무 작으면 노이즈에 의한 영향이 발생하지 않으며, 반대로 노이즈 값이 너무 크면, 이를테면, 노이즈가 노드들 사이의 거리를 초과한다면 최근접 노드 결정을 완전히 랜덤하게 만들 수 있다. 따라서, 노이즈 값을 설정할 때 거리 매트릭스(distance matrix)도 참조할 필요가 있다. 노드들 간의 거리를 샘플링해서 평균한 다음 noiseMultipier라는 또 다른 파라미터를 곱함으로써, 노이징 값이 결정될 수 있다. noiseMultipier 값은 경험적으로 결정될 수 있다. 아래의 표 1은 노이즈 파라미터를 설정하는 슈도 코드(Pseudo Code)의 예시를 나타낸다.It may be a unique feature of the present invention to actively utilize a pointer to the nearest node from each node containing noise. The noise value may be an important parameter affecting the operation of the noise term. If the noise value is too small, no effect by noise occurs, and conversely, if the noise value is too large, for example, if the noise exceeds the distance between nodes, the nearest node decision can be made completely random. Therefore, when setting the noise value, it is also necessary to refer to the distance matrix. By sampling and averaging the distance between nodes and then multiplying by another parameter called noiseMultipier, the noise value can be determined. The noiseMultipier value can be determined empirically. Table 1 below shows an example of a pseudo code for setting a noise parameter.

Pseudo Code for Setting Noise ParameterPseudo Code for Setting Noise Parameter

Figure 112020112427665-pat00001
Figure 112020112427665-pat00001

노이즈 값으로 각 노드에 대해 가장 가까운 노드가 검색될 수 있다. 아래 표 2는 두 노드들 사이의 거리에 노이즈를 발생시켜 최근접 노드에 대한 포인터를 설정하는 슈도 코드의 예시를 나타낸다.The closest node can be searched for each node with the noise value. Table 2 below shows an example of a pseudo code that sets a pointer to the nearest node by generating noise in the distance between two nodes.

Pseudo Code for Setting Pointers to the Closest NodesPseudo Code for Setting Pointers to the Closest Nodes

Figure 112020112427665-pat00002
Figure 112020112427665-pat00002

앞선 노드 1의 최근접 노드를 설정하는 예시에 노이징에 기반한 최근접 노드의 재설정을 적용하면, 다음과 같이 노이즈가 적용될 수 있다.Distance(1->2) + Random[최소Noise~최대Noise], If the noise-based resetting of the nearest node is applied to the example of setting the nearest node of node 1 above, noise can be applied as follows: Distance(1->2) + Random [Minimum Noise~Maximum Noise] ,

Distance(1->3) + Random[최소Noise~최대Noise], Distance(1->3) + Random[Min Noise~Max Noise],

Distance(1->4) + Random[최소Noise~최대Noise], Distance(1->4) + Random[Min Noise~Max Noise],

..., ...,

Distance(1->1000) + Random[최소Noise~최대Noise]Distance(1->1000) + Random[Min Noise~Max Noise]

차량 라우팅 장치는 이 중에서 가장 짧은 거리를 가진 노드를 노드 1의 최근접 노드로 재설정할 수 있다. 이로 인한, 랜덤 넘버 호출 횟수는 다음과 같다.The vehicle routing device may reset the node having the shortest distance among them as the closest node to the node 1. Due to this, the number of random number calls is as follows.

노드 1에 대한 Random Number 호출 횟수: 1000회Random Number calls to node 1: 1000 times

노드 2에 대한 Random Number 호출 횟수: 1000회Random Number calls to node 2: 1000

노드 n에 대한 Random Number 호출 횟수: 1000회Random Number calls to node n: 1000

노드 Node 에 대한 Random Number 호출 횟수: 1000회Node Random Number calls to Node: 1000 times

즉, 총 랜덤 넘버 호출 횟수 백만회가 된다. 한 번 설정된 최근접 노드는 특정 이터레이션 횟수(예컨대, Simulated Annealing 알고리즘의 Max Equilibrium Count에 해당할 수 있으나, 설정에 따라 달라질 수 있음) 후에 재설정될 수 있다. 따라서, 랜덤 넘버 호출 횟수를 효과적으로 줄일 수 있다.That is, the total number of random number calls becomes one million times. The closest node once set may be reset after a certain number of iterations (eg, it may correspond to the Max Equilibrium Count of the Simulated Annealing algorithm, but may vary depending on the setting). Accordingly, the number of random number calls can be effectively reduced.

단계(230)에서, 차량 라우팅 장치는 앞서 설정된 최근접 노드에 기반하여 현재 솔루션에 파괴 과정을 수행할 수 있다. 차량 라우팅 장치는 미리 정해진 파괴 크기(destroy size)에 따라 복수의 노드들 중 일부 노드를 해당 경로에서 제거할 수 있다. 예를 들어, 파괴 크기는 전체 노드 개수의 1~50% 범위 내에서 선택될 수 있으나, 실시예를 이로 제한하는 것은 아니다. 파괴 크기의 상한과 하한은 조정할 수 있는 파라미터일 수 있다.In step 230 , the vehicle routing device may perform a destruction process on the current solution based on the previously set nearest node. The vehicle routing apparatus may remove some of the plurality of nodes from a corresponding path according to a predetermined destruction size. For example, the fracture size may be selected within the range of 1 to 50% of the total number of nodes, but the embodiment is not limited thereto. The upper and lower limits of the fracture size may be tunable parameters.

아래에서 설명할 파괴 기법 3가지 중에서 어느 하나가 선택될 수 있다. 이러한 선택은 매 이터레이션마다 수행될 수 있다. 만약 임의 이터레이션에서 Random Related Destroy가 선택되고, 파괴 크기가 40%라면, 제거된 노드 개수가 전체 노드의 40%가 될 때까지 Random Related Destroy가 반복해서 수행될 수 있다. 파괴 기법 3가지에 대해서는 도 3 내지 도 5를 통해 상세히 설명한다.Any one of the three destruction techniques described below may be selected. This selection may be performed at every iteration. If Random Related Destroy is selected in random iteration and the destruction size is 40%, Random Related Destroy can be repeatedly performed until the number of removed nodes is 40% of the total number of nodes. The three destruction techniques will be described in detail with reference to FIGS. 3 to 5 .

단계(240)에서, 차량 라우팅 장치는 제거된 노드들을 기존 경로에 포함시킴으로써 해당 노드들을 복구시킬 수 있다. 예를 들어, 복구 기법에는 탐욕 복구(Greedy Repair), 후회 복구(Regret Repair)가 있다. 탐욕 복구는 각 요청에 대해 가장 저렴한 삽입 비용으로 포지션을 검색하는 기법으로, 각 요청에 대해 두 가지 상태를 비교하여 가장 저렴한 삽입 위치를 검색할 수 있다. 두 가지 상태 중 하나는 현재 상태이고, 다른 하나는 노드가 삽입될 상태일 수 있다. 후회 복구는 요청이 가장 저렴한(욕심 많은) 위치에 삽입된다는 점에서 탐욕 복구와 유사할 수 있으나, 다른 노드보다 먼저 수리를 요청하는 순서를 고려한다는 점에서 차이가 있다. 탐욕 복구는 가장 저렴한 삽입 비용에 기반하여 수행되는 반면, 후회 복구는 후회 값을 기준으로 수행될 수 있다. 이때, 후회 가치는 기회 비용과 매우 유사할 수 있다.In step 240 , the vehicle routing device may restore the removed nodes by including them in the existing path. For example, recovery techniques include Greedy Repair and Regret Repair. Greedy recovery is a technique for retrieving a position with the lowest insertion cost for each request. For each request, the lowest insertion position can be retrieved by comparing two states. One of the two states may be a current state, and the other may be a state in which a node is to be inserted. Regret recovery can be similar to greedy recovery in that requests are inserted at the cheapest (greedy) location, except that it considers the order in which repairs are requested before other nodes. Greedy recovery is performed based on the lowest insertion cost, whereas regret recovery can be performed based on the regret value. In this case, regret value can be very similar to opportunity cost.

단계(250)에서, 차량 라우팅 장치는 복구된 솔루션에 대해 로컬 검색을 수행할 수 있다. 로컬 검색은 항상 수행되는 것은 아니며, 실시예에 따라 수행되거나, 또는 수행되지 않을 수 있다.In step 250, the vehicle routing device may perform a local search for the restored solution. The local search is not always performed, and may or may not be performed according to embodiments.

로컬 검색에도 앞서 설명한 노이징 기법이 적용될 수 있다. 솔루션이 파괴와 복구된 후에는 다음 파괴 과정을 수행하기 전에 추가 개선을 위해 몇 가지 추가 순열이 생성될 수 있다. 아래 표 3에서 설명된 로컬 검색 방법은 스왑(swap) 작업을 사용하여 로컬 개선 사항을 검색할 수 있다. 솔루션에서 랜덤하게 선택된 노드의 파괴 크기, 선택된 노드가 해당 노드의 최근접 노드로 스왑될 때의 거리 차이가 계산될 수 있다. 스왑으로 솔루션이 향상되는 것이 확인되면, 두 노드가 실제로 스왑될 수 있다. 이러한 로컬 검색은 모든 이터레이션에서 항상 수행되는 것은 아니며, 예를 들어, 수행될 확률이 50%로 설정될 수 있다.The above-described noise technique may be applied to the local search as well. After the solution is destroyed and repaired, several additional permutations can be created for further refinement before performing the next destruction process. The local retrieval method described in Table 3 below can use a swap operation to retrieve local enhancements. In the solution, the destruction size of a randomly selected node, and the distance difference when the selected node is swapped to the nearest node of that node, can be calculated. If it is confirmed that swapping improves the solution, the two nodes can actually be swapped. Such a local search is not always performed in all iterations, and, for example, a probability of being performed may be set to 50%.

Pseudo Code for the Additional Local Improvement MethodPseudo Code for the Additional Local Improvement Method

Figure 112020112427665-pat00003
Figure 112020112427665-pat00003

다시 말해, 로컬 검색은 파괴 후 복구가 수행된 뒤에, 즉, 특정 %(예컨대, 40%)의 노드를 솔루션에서 제외시켰다가, 다시 제외되었던 모든 노드들을 솔루션에 포함시켜준 이후에, 약간의 노력만으로 더 좋은 솔루션을 찾을 수 있는지 빠르게 검토하고, 만약 개선이 가능하다면 이를 솔루션에 적용하는 것일 수 있다.로컬 검색은 기본적으로 스왑 방식을 적용할 수 있다. 스왑은 두 노드들의 위치를 교환하는 것으로, 예를 들어, 차량 1의 경로가 [노드 0 -> 노드 1 -> 노드 2 -> 노드 0]이고, 차량 2의 경로가 [노드 0 -> 노드 3 -> 노드 4 -> 노드 0]일 때, 노드 1과 노드 3을 스왑한다면, 차량 1의 경로는 [노드 0 -> 노드 3 -> 노드 2 -> 노드 0]로, 차량 2의 경로는 [노드 0 -> 노드 1 -> 노드 4 -> 노드 0]로 변경될 수 있다. 이때, 어떤 노드에 대해 스왑을 적용할지는 랜덤하게 선택되고, 스왑하기로 선택된 노드에 대해 어떤 노드와 스왑할지는 해당 노드의 최근접 노드로 결정될 수 있다.In other words, a local search requires little effort after recovery after destruction is performed, that is, after a certain % (eg 40%) of nodes have been excluded from the solution, and all nodes that have been excluded are included in the solution again. Quickly review to see if a better solution can be found only with the help of a method, and if improvement is possible, it may be applied to the solution. Local search can basically apply the swap method. Swap is to exchange the positions of two nodes. For example, the path of vehicle 1 is [Node 0 -> Node 1 -> Node 2 -> Node 0], and the path of vehicle 2 is [Node 0 -> Node 3]. When -> node 4 -> node 0], if node 1 and node 3 are swapped, the path of vehicle 1 is [Node 0 -> Node 3 -> Node 2 -> Node 0], and the path of vehicle 2 is [ node 0 -> node 1 -> node 4 -> node 0]. In this case, to which node to apply swap may be randomly selected, and to which node to swap with which node to swap may be determined by a node closest to the node.

예를 들어, 차량 1의 경로가 [노드 0 -> 노드 1 -> 노드 2 -> 노드 0]이고, 차량 2의 경로가 [노드 0 -> 노드 3 -> 노드 4 -> 노드 0]인 예시에서, 노드 2가 스왑 대상으로 선택된 경우, 이때 노드 2를 노드 2의 최근접 노드와 교환해보고, 교환 결과가 더 나은 솔루션으로 판단되면, 솔루션에 적용시킬 수 있다.For example, the path of vehicle 1 is [Node 0 -> Node 1 -> Node 2 -> Node 0], and the path of Vehicle 2 is [Node 0 -> Node 3 -> Node 4 -> Node 0]. In , when node 2 is selected as a swap target, at this time, node 2 is exchanged with the closest node of node 2, and if the exchange result is judged to be a better solution, it can be applied to the solution.

이러한 로컬 검색 방식은 모든 스왑 경우의 수를 고려하는 것보다 훨씬 빠르고 효율적일 수 있다. 나아가, 몇 개의 노드를 스왑해 볼 것인가는 파괴 크기에 기반하여 결정될 수 있다. 예를 들어, 총 노드 개수가 100개이고, 파괴 크기가 40%이라면, 스왑 대상 노드 선택과 스왑 시도를 40번 수행해 볼 수 있다.This local search method can be much faster and more efficient than considering the number of all swap cases. Furthermore, the number of nodes to be swapped may be determined based on the destruction size. For example, if the total number of nodes is 100 and the destruction size is 40%, the swap target node selection and swap attempt can be performed 40 times.

단계(260)에서, 차량 라우팅 장치는 차량 라우팅 방법의 동작을 중지할지 여부를 판단할 수 있다. 차량 라우팅 장치는 다양한 기준에 기반하여 중지여부를 판단할 수 있다. 일례로, 차량 라우팅 장치는 현재 솔루션의 성능이 미리 정해진 조건을 만족하는지 여부에 기반하여 중지여부를 판단할 수 있다. 또는, 차량 라우팅 장치는 이전 솔루션보다 현재 솔루션이 향상되었는지 여부를 기반하여 중지여부를 판단할 수 있다. 이러한 설명이 중지여부를 판단하는 기준의 실시예를 제한하는 것은 아니며, 이외에도 다양한 판단 기준이 제한 없이 적용될 수 있다.In step 260, the vehicle routing device may determine whether to stop the operation of the vehicle routing method. The vehicle routing device may determine whether to stop based on various criteria. For example, the vehicle routing device may determine whether to stop based on whether the performance of the current solution satisfies a predetermined condition. Alternatively, the vehicle routing device may determine whether to stop based on whether the current solution is improved over the previous solution. This description does not limit the exemplary embodiment of the criterion for determining whether to stop, and in addition, various criterion for determining whether to stop may be applied without limitation.

만약 차량 라우팅 장치가 동작을 중지하지 않는 것으로 판단하면 단계(270)가 이어서 수행되고, 반대로 차량 라우팅 장치가 동작을 중지하는 것으로 판단하면 도 2에 도시된 차량 라우팅 방법이 종료될 수 있다.If it is determined that the vehicle routing device does not stop the operation, step 270 is subsequently performed. On the contrary, if it is determined that the vehicle routing device stops the operation, the vehicle routing method shown in FIG. 2 may be terminated.

단계(270)에서, 차량 라우팅 장치는 이터레이션 횟수가 미리 정해진 숫자에 해당하는지 여부를 판단할 수 있다. 만약 이터레이션 횟수가 미리 정해진 숫자에 해당하지 않는다면 최근접 노드의 재설정 없이 단계(230)가 이어서 수행되고, 반대로 이터레이션 횟수가 미리 정해진 숫자에 해당한다면 단계(220)에서 최근접 노드의 재설정이 이어서 수행될 수 있다. 이를 통해, 특정 이터레이션마다 최근접 노드를 재설정함으로써 최상의 솔루션을 효과적으로 얻을 수 있다.In step 270 , the vehicle routing device may determine whether the number of iterations corresponds to a predetermined number. If the number of iterations does not correspond to a predetermined number, step 230 is performed without resetting the nearest node. can be performed. This effectively achieves the best solution by resetting the nearest node at every specific iteration.

도 3 내지 도 5는 일실시예에 따른 노이징 기법을 이용한 파괴 기법의 예시들을 설명하기 위한 도면이다.3 to 5 are diagrams for explaining examples of a destruction technique using a noise technique according to an embodiment.

도 3을 참조하면, 일실시예에 따른 랜덤 관련 파괴(Random Related Destroy)의 동작 방법이 도시된다. 랜덤 관련 파괴는 거리 랜덤 파괴(Distance Random Destroy)로도 지칭될 수 있다.Referring to FIG. 3 , a method of operating Random Related Destroy according to an embodiment is illustrated. Random related destruction may also be referred to as Distance Random Destroy.

단계(310)에서, 차량 라우팅 장치는 복수의 노드들 중에서 제거되지 않은 노드를 랜덤하게 선택할 수 있다. 단계(320)에서, 차량 라우팅 장치는 선택된 노드와 해당 노드의 최근접 노드를 제거할 수 있다. 만약 해당 노드의 최근접 노드가 이미 제거된 노드라면, 선택된 노드만 제거될 수 있다. 단계(330)에서, 차량 라우팅 장치는 파괴 크기가 만족되었는지 여부를 판단할 수 있다. 예를 들어, 파괴 크기가 40%이라면, 단계(320)에서 제거된 노드 개수가 전체 노드의 40% 이상인지 여부가 판단될 수 있다. 만약 파괴 크기가 만족되지 않았다면, 단계(310)가 이어서 수행될 수 있다. 반대로 파괴 크기가 만족되었다면, 본 파괴 동작이 종료되어 복구 과정이 이어서 수행될 수 있다.In step 310, the vehicle routing apparatus may randomly select a node that has not been removed from among the plurality of nodes. In step 320 , the vehicle routing device may remove the selected node and a node closest to the node. If the closest node to the node has already been removed, only the selected node can be removed. In step 330 , the vehicle routing device may determine whether a fracture magnitude has been satisfied. For example, if the destruction size is 40%, it may be determined whether the number of nodes removed in step 320 is 40% or more of the total nodes. If the fracture size has not been satisfied, step 310 may then be performed. Conversely, if the fracture size is satisfied, the main destruction operation is terminated, and the recovery process may be subsequently performed.

이러한 랜덤 관련 파괴는 유사한 속성을 가진 노드를 함께 제거하는 기법일 수 있다. 이를 통해, 어떤 면에서는 유사한 노드들 간의 교환이 가능하게 될 수 있다. 랜덤 관련 파괴에서 관련성은 노드들 간의 거리에 기반하여 측정될 수 있다. 따라서, 랜덤 관련 파괴와 도 4에서 설명할 시퀀스 관련 파괴(Sequence Related Destroy)에서 '관련'이라는 용어는 '최근접'으로 대체될 수도 있다. 최근접 노드에 대한 포인터는 앞서 설명한 노이즈로 인해 실제로 가장 가까운 노드를 가리키는 것이 아닐 수 있다. 또한, 랜덤 관련 파괴의 확장을 위해, 더 많은 속성(예컨대, 인접한 시간 윈도우)이 고려될 수도 있다. 아래의 표 4는 랜덤 관련 파괴의 슈도 코드의 예시를 나타낸다.Such random related destruction may be a technique for removing nodes with similar properties together. This may enable exchanges between nodes that are in some way similar. In random-associated destruction, relevance can be measured based on the distance between nodes. Therefore, the term 'related' may be replaced with 'nearest' in the random related destruction and the sequence related destruction to be described in FIG. 4 . A pointer to the nearest node may not actually point to the nearest node due to the noise described above. Also, for the extension of random related destruction, more attributes (eg, adjacent time windows) may be considered. Table 4 below shows examples of pseudo codes of random related destruction.

Pseudo Code for Random Related Destroy Heuristic MethodPseudo Code for Random Related Destroy Heuristic Method

Figure 112020112427665-pat00004
Figure 112020112427665-pat00004

도 4를 참조하면, 일실시예에 따른 시퀀스 관련 파괴의 동작 방법이 도시된다. 시퀀스 관련 파괴는 거리 시퀀스 파괴(Distance Sequence Destroy)로도 지칭될 수 있다.4 , a method of operation of sequence-related destruction according to an embodiment is illustrated. Sequence-related destruction may also be referred to as Distance Sequence Destroy.

단계(410)에서, 차량 라우팅 장치는 복수의 노드들 중에서 제거되지 않은 노드를 랜덤하게 선택할 수 있다. 단계(420)에서, 차량 라우팅 장치는 선택된 노드와 해당 노드의 최근접 노드를 제거할 수 있다. 단계(430)에서, 차량 라우팅 장치는 차량 라우팅 장치는 파괴 크기가 만족되었는지 여부를 판단할 수 있다. 예를 들어, 파괴 크기가 40%이라면, 단계(420)에서 제거된 노드 개수가 전체 노드의 40% 이상인지 여부가 판단될 수 있다. 만약 파괴 크기가 만족되지 않았다면, 단계(440)가 이어서 수행될 수 있다. 반대로 파괴 크기가 만족되었다면, 본 파괴 동작이 종료되어 복구 과정이 이어서 수행될 수 있다.In step 410, the vehicle routing apparatus may randomly select a node that is not removed from among the plurality of nodes. In step 420 , the vehicle routing device may remove the selected node and a node closest to the node. In step 430 , the vehicle routing device may determine whether the vehicle routing device has satisfied the destruction magnitude. For example, if the destruction size is 40%, it may be determined whether the number of nodes removed in step 420 is 40% or more of the total nodes. If the fracture size has not been satisfied, step 440 may then be performed. Conversely, if the fracture size is satisfied, the main destruction operation is terminated, and the recovery process may be subsequently performed.

단계(440)에서, 차량 라우팅 장치는 제거된 최근접 노드의 최근접 노드가 이미 제거된 노드인지 여부를 판단할 수 있다. 만약 제거된 최근접 노드의 최근접 노드가 이미 제거된 노드가 아니라면, 단계(450)에서 차량 라우팅 장치는 제거된 최근접 노드의 최근접 노드를 제거하고, 단계(430)가 이어서 수행될 수 있다. 다시 말해, 마지막으로 제거된 최근접 노드의 최근접 노드가 이미 제거된 노드이거나, 파괴 크기가 만족되지 않는 한, 최근접 노드들이 순차적으로(sequential) 제거될 수 있다. 단계(440)에서 만약 마지막으로 제거된 최근접 노드의 최근접 노드가 이미 제거된 노드라면, 단계(410)가 이어서 수행될 수 있다.In step 440 , the vehicle routing device may determine whether the closest node of the removed closest node is already a removed node. If the closest node of the removed nearest node is not the already removed node, in step 450 the vehicle routing device removes the closest node of the removed closest node, and step 430 may be performed subsequently. . In other words, as long as the closest node of the last removed nearest node is a node that has already been removed or the destruction size is not satisfied, the closest nodes may be sequentially removed. If in step 440 the closest node of the last removed nearest node is already a removed node, step 410 may then be performed.

이러한 시퀀스 관련 파괴는 현재 솔루션에 여전히 포함되어 있는 최근접 노드를 함께 제거할 수 있다. 이러한 순차적인 방법은 이전에 참조한 최근접 노드의 최근접 노드를 다음 노드로 선택할 수 있다. 이를 통해, 밀접하게 위치한 노드들의 일부 클러스터가 순차적으로 제거될 수 있다. 다음 최근접 노드가 현재 솔루션에서 아직 제외되지 않은 경우에 이러한 제거 체인이 계속 진행될 수 있다. 제거 체인이 끊어지면, 새로운 노드가 랜덤하게 선택되어 새로운 시퀀스를 시작할 수 있다. 도 5는 시퀀스 관련 파괴의 슈도 코드의 예시를 나타낸다.Such sequence-related destruction can also remove the nearest node that is still included in the current solution. This sequential method may select the closest node of the previously referenced nearest node as the next node. Through this, some clusters of closely located nodes may be sequentially removed. This chain of removals can continue if the next nearest node has not yet been excluded from the current solution. When the removal chain is broken, a new node can be randomly chosen to start a new sequence. 5 shows an example of a pseudo code of sequence related destruction.

Pseudo Code for Sequence Related Destroy Heuristic MethodPseudo Code for Sequence Related Destroy Heuristic Method

Figure 112020112427665-pat00005
Figure 112020112427665-pat00005

도 5를 참조하면, 일실시예에 따른 시퀀스 클러스터 파괴(Sequence Cluster Destroy)의 동작 방법이 도시된다. 시퀀스 클러스터 파괴는 클러스터 거리 파괴(Cluster Distance Destroy)로도 지칭될 수 있다.Referring to FIG. 5 , an operation method of Sequence Cluster Destroy according to an embodiment is illustrated. Sequence cluster destruction may also be referred to as cluster distance destruction.

단계(510)에서, 차량 라우팅 장치는 복수의 노드들 중에서 제거되지 않은 노드를 시드 노드로 선택할 수 있다. 단계(520)에서, 차량 라우팅 장치는 시드 노드를 포함한 기준 경로에서 시드 노드의 이전 노드들 또는 이후 노드들을 기준 경로에서 제거할 수 있다. 차량 라우팅 장치는 "이전(before) 또는 "이후(after)" 중 어느 하나를 제거의 방향으로 선택할 수 있으며, 이때 각각 확률은 0.5일 수 있다. In step 510, the vehicle routing apparatus may select a node that has not been removed from among the plurality of nodes as a seed node. In step 520 , the vehicle routing apparatus may remove previous nodes or subsequent nodes of the seed node from the reference path in the reference path including the seed node. The vehicle routing device may select either “before” or “after” as the direction of removal, where each probability may be 0.5.

예를 들어, 시드 노드로 노드 3이 선택되고, 시드 노드를 포함한 차량의 경로가 [노드 0 -> 노드 1 -> 노드 2 -> 노드 3 -> 노드 4 -> 노드 5 -> 노드 0]이며, 방항으로 '이후'가 선택된 경우라면, 해당 경로에서 노드 4, 노드 5가 제거되어, 차량 경로가 [노드 0 -> 노드 1 -> 노드 2 -> 노드 3 -> 노드 0]이 될 수 있다. 이때, 시드 노드를 함께 제거시킬지 여부는 실시예에 따라 결정될 수 있다.For example, node 3 is selected as the seed node, the path of the vehicle including the seed node is [Node 0 -> Node 1 -> Node 2 -> Node 3 -> Node 4 -> Node 5 -> Node 0] , if 'after' is selected as the direction, node 4 and node 5 are removed from the corresponding path, so that the vehicle path becomes [Node 0 -> Node 1 -> Node 2 -> Node 3 -> Node 0]. . In this case, whether to remove the seed node together may be determined according to an embodiment.

단계(530)에서, 차량 라우팅 장치는 파괴 크기가 만족되었는지 여부를 판단할 수 있다. 예를 들어, 파괴 크기가 40%이라면, 단계(520)에서 제거된 노드 개수가 전체 노드의 40% 이상인지 여부가 판단될 수 있다. 만약 파괴 크기가 만족되지 않았다면, 단계(540)가 이어서 수행될 수 있다. 반대로 파괴 크기가 만족되었다면, 본 파괴 동작이 종료되어 복구 과정이 이어서 수행될 수 있다.In step 530 , the vehicle routing device may determine whether a fracture magnitude has been satisfied. For example, if the destruction size is 40%, it may be determined whether the number of nodes removed in step 520 is 40% or more of the total nodes. If the fracture size has not been satisfied, step 540 may then be performed. Conversely, if the fracture size is satisfied, the main destruction operation is terminated, and the recovery process may be subsequently performed.

단계(540)에서, 차량 라우팅 장치는 시드 노드의 최근접 노드가 이미 제거된 노드인지 여부를 판단할 수 있다. 만약 시드 노드의 최근접 노드가 이미 제거된 노드가 아니라면, 단계(550)에서 차량 라우팅 장치는 시드 노드의 최근접 노드를 새로운 시드 노드로 설정하고, 단계(520)가 이어서 수행될 수 있다. 반대로, 시드 노드의 최근접 노드가 이미 제거된 노드라면, 단계(510)가 이어서 수행될 수 있다.In step 540 , the vehicle routing device may determine whether the closest node of the seed node is a node that has already been removed. If the closest node of the seed node is not a node that has already been removed, in step 550 , the vehicle routing apparatus sets the closest node of the seed node as a new seed node, and step 520 may be subsequently performed. Conversely, if the closest node of the seed node has already been removed, step 510 may then be performed.

이러한 시퀀스 클러스터 파괴에서 현재 시드 노드의 최근접 노드가 현재 솔루션에 여전히 존재하는 경우라면 현재 시드 노드의 최근접 노드가 다음 시드 노드로 선택될 수 있다. 아래 표 6은 시퀀스 클러스터 파괴의 슈도 코드의 예시를 나타낸다.In this sequence cluster destruction, if the closest node of the current seed node still exists in the current solution, the closest node of the current seed node may be selected as the next seed node. Table 6 below shows an example of a pseudo code of sequence cluster destruction.

Pseudo Code for Sequence Cluster Destroy Heuristic MethodPseudo Code for Sequence Cluster Destroy Heuristic Method

Figure 112020112427665-pat00006
Figure 112020112427665-pat00006

도 6 및 도 7은 일실시예에 따른 노이즈 양을 결정하는 과정을 설명하기 위한 도면이다.6 and 7 are diagrams for explaining a process of determining an amount of noise according to an exemplary embodiment.

도 6을 참조하면, 일실시예에 따른 노이즈 양을 결정하기 위한 예시적인 노드 분포와 거리 매트릭스가 도시된다. 거리 매트릭스는 출발지와 도착지에 해당하는 두 노드들 간의 거리가 매트릭스로 표현된 것이다.Referring to FIG. 6 , an exemplary node distribution and distance matrix for determining an amount of noise is shown in accordance with one embodiment. In the distance matrix, the distance between two nodes corresponding to the source and destination is expressed as a matrix.

앞서 설명한 파괴 과정과 로컬 검색 과정에 노이즈가 적용된 최근접 노드가 활용됨으로써, 효과적인 최상의 솔루션 탐색에 기여할 수 있다. 최근접 노드에 적용되는 노이즈 양은 파라미터로 표현될 수 있다. 이때 중요한 값이 먼저 설정될 있으며, 이 값은 노이즈 항(term)의 동작에 영향을 주는 중요한 파라미터일 수 있다. 노이즈 양이 너무 적으면 노이징에 의미가 없으며, 반대로, 노드들 간의 거리를 초과하는 노이즈는 선택을 순전히 랜덤하게 만들기 때문에 그 의미가 없다. 유의미한 노이징을 얻으려면, 중심 값(pivotal value)을 적절하게 설정해야 한다.By utilizing the noise-applied nearest node in the aforementioned destruction process and local search process, it can contribute to effective search for the best solution. The amount of noise applied to the nearest node may be expressed as a parameter. In this case, an important value may be set first, and this value may be an important parameter affecting the operation of the noise term. If the amount of noise is too small, noise is meaningless, conversely, noise exceeding the distance between nodes is meaningless because it makes the selection purely random. To obtain meaningful noise, the pivotal value must be set appropriately.

도 6의 상단에 도시된 노드 분포 예시에서, 가까이 밀집된 노드들 간 거리의 평균값은 의미가 있으나, 멀리 떨어진 노드들 간 거리가 포함된 평균값에 기반하여 결정된 노이즈는 그 양이 너무 많다. 따라서, 노이즈가 필요한 이유와 그 의도에 맞게, 노드들 간 거리가 가까운 경우의 d[i,j]에만 집중할 필요가 있다.In the node distribution example shown in the upper part of FIG. 6 , the average value of the distances between nodes densely close to each other is meaningful, but the amount of noise determined based on the average value including the distances between distant nodes is too large. Therefore, it is necessary to focus only on d[i,j] when the distance between nodes is close in accordance with the reason for the need for noise and its intention.

다시 말해, 거리 매트릭스에서 일부 엘리먼트 d[i,j]를 추출한 후 추출된 엘리먼트들의 평균 값을 그대로 이용하여 노이즈 양을 결정하는 것은 의미가 없고, 추출된 엘리먼트들 중에서 하위 n%(여기서, n은 0에서 100 사이의 실수)에 대한 평균 값에 기반하여 노이즈 양이 결정되어야 한다. 구체적인 예시로, 노이즈 양은 하위 n%에 대한 평균 값에 조절 파라미터가 곱해져서 결정될 수 있다. 이처럼, 추출된 엘리먼트들의 하위 n%에 집중한 새로운 방식을 통해 유의미한 노이즈 양이 효과적으로 도출될 수 있다. 도 7에서는 앞서 설명한 하위 n%에 집중한 다양한 예시들이 도시된다.In other words, it is meaningless to extract some element d[i,j] from the distance matrix and then determine the amount of noise by using the average value of the extracted elements as it is, and among the extracted elements, the lower n% (here, n is The amount of noise should be determined based on the average value for a real number between 0 and 100). As a specific example, the amount of noise may be determined by multiplying an average value for the lower n% by an adjustment parameter. As such, a significant amount of noise can be effectively derived through the new method focusing on the lower n% of the extracted elements. In FIG. 7, various examples focusing on the lower n% described above are shown.

도 8은 일실시예에 따라 차량 라우팅 방법이 복수의 스레드들 각각에서 병렬로 수행되는 예시를 설명하기 위한 도면이다.8 is a diagram for explaining an example in which a vehicle routing method is performed in parallel in each of a plurality of threads according to an embodiment.

도 8을 참조하면, 일실시예에 따른 복수의 스레드들 각각에서 앞서 설명한 파괴, 복구, 로컬 검색이 여러 번 수행되고, 각 스레드들의 베스트 솔루션이 특정 이터레이션에서 서로 공유될 수 있다.Referring to FIG. 8 , the aforementioned destruction, recovery, and local search are performed multiple times in each of a plurality of threads according to an embodiment, and the best solution of each thread may be shared with each other in a specific iteration.

차량 라우팅 장치가 하나의 마스터 장치와 여러 개의 슬레이브 장치로 구성됨으로써, LNS가 공간적으로 병렬화될 수 있다. 각 슬레이브 장치는 제거 및 복구 과정을 랜덤하게 조합하여 최상의 솔루션 탐색을 수행할 수 있다. 특정 실행 시간 후에 각 슬레이브 장치는 동기화를 위해 마스터 장치로 최상의 솔루션을 전달할 수 있다. 마스터 장치는 각 슬레이브 장치로부터 수신한 솔루션들 중에서 가장 나은 솔루션을 선택하여 복수의 슬레이브 장치로 공유할 수 있다. 복수의 슬레이브 장치 각각은 공유된 솔루션에 다시 제거 및 복구 과정을 랜덤하게 조합하여 자신만은 최상의 솔루션 탐색을 수행할 수 있다. 이러한 병렬 구조는 솔루션 검색을 다양화하여 솔루션 품질을 효과적으로 향상시킬 수 있다.As the vehicle routing device consists of one master device and several slave devices, the LNS can be spatially parallelized. Each slave device can perform the best solution search by randomly combining the removal and recovery processes. After a certain run time, each slave device can pass the best solution to the master device for synchronization. The master device may select the best solution from among the solutions received from each slave device and share it with a plurality of slave devices. Each of the plurality of slave devices can randomly combine the removal and recovery processes in the shared solution to perform the best solution search. This parallel structure can diversify solution search and effectively improve solution quality.

도 9는 일실시예에 따른 차량 라우팅 장치를 나타낸 도면이다.9 is a view showing a vehicle routing apparatus according to an embodiment.

도 9를 참조하면, 일실시예에 따른 차량 라우팅 장치(900)는 메모리(910) 및 프로세서(920)를 포함한다. 메모리(910) 및 프로세서(920)는 버스(bus)(930)를 통하여 서로 통신할 수 있다.Referring to FIG. 9 , the vehicle routing apparatus 900 according to an embodiment includes a memory 910 and a processor 920 . The memory 910 and the processor 920 may communicate with each other through a bus 930 .

메모리(910)는 컴퓨터에서 읽을 수 있는 명령어를 포함할 수 있다. 프로세서(920)는 메모리(910)에 저장된 명령어가 프로세서(920)에서 실행됨에 따라 앞서 언급된 동작들을 수행할 수 있다. 메모리(910)는 휘발성 메모리 또는 비휘발성 메모리일 수 있다.The memory 910 may include computer-readable instructions. The processor 920 may perform the aforementioned operations as an instruction stored in the memory 910 is executed in the processor 920 . The memory 910 may be a volatile memory or a non-volatile memory.

프로세서(920)는 명령어들, 혹은 프로그램들을 실행하거나, 차량 라우팅 장치(900)를 제어하는 장치로서, 예를 들어, CPU(Central Processing Unit), GPU(Graphic Processing Unit), NPU(Neural Processing Unit) 등을 포함할 수 있다. 프로세서(920)는 하나 이상의 차량들의 경로에 포함된 복수의 노드들 중에서 랜덤하게 선택된 노드와 해당 노드의 최근접 노드(Closest Node)에 기반하여 미리 정해진 개수의 노드를 해당 경로에서 제거하고, 제거된 노드를 하나 이상의 차량들의 경로에 추가하고, 최근접 노드는 대응하는 노드에서 나머지 노드들 각각까지의 거리에 노이즈 값을 추가함으로써 결정될 수 있다.The processor 920 is a device that executes instructions or programs, or controls the vehicle routing device 900 , for example, a central processing unit (CPU), a graphic processing unit (GPU), or a neural processing unit (NPU). and the like. The processor 920 removes a predetermined number of nodes from the path based on a node randomly selected from among a plurality of nodes included in the path of one or more vehicles and a closest node of the node, and removes the removed node from the path. By adding a node to the path of one or more vehicles, the nearest node may be determined by adding a noise value to the distance from the corresponding node to each of the remaining nodes.

차량 라우팅 장치(900)는 스마트 폰, 태블릿, 랩탑, 퍼스널 컴퓨터 등 다양한 컴퓨팅 장치, 스마트 시계, 스마트 안경, 스마트 의류 등 다양한 웨어러블 기기, 스마트 스피커, 스마트 TV, 스마트 냉장고 등 다양한 가전장치, 스마트 자동차, 스마트 키오스크, IoT(Internet of Things) 기기, WAD(Walking Assist Device), 드론, 로봇 등 다양한 컴퓨팅 장치의 일부로 구현될 수 있다.Vehicle routing device 900 is a variety of computing devices, such as smart phones, tablets, laptops, personal computers, smart watches, smart glasses, various wearable devices such as smart clothes, smart speakers, smart TVs, smart refrigerators, various home appliances, smart cars, It may be implemented as a part of various computing devices, such as a smart kiosk, an Internet of Things (IoT) device, a walking assist device (WAD), a drone, or a robot.

그 밖에, 차량 라우팅 장치(900)에 관해서는 상술된 동작을 처리할 수 있다.In addition, the above-described operation can be processed with respect to the vehicle routing device 900 .

이상에서 설명된 실시예들은 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치, 방법 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 컨트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The embodiments described above may be implemented by a hardware component, a software component, and/or a combination of the hardware component and the software component. For example, the apparatus, methods and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate (FPGA) array), a programmable logic unit (PLU), a microprocessor, or any other device capable of executing and responding to instructions, may be implemented using a general purpose computer or special purpose computer. The processing device may execute an operating system (OS) and a software application running on the operating system. A processing device may also access, store, manipulate, process, and generate data in response to execution of the software. For convenience of understanding, although one processing device is sometimes described as being used, one of ordinary skill in the art will recognize that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that can include For example, the processing device may include a plurality of processors or one processor and one controller. Other processing configurations are also possible, such as parallel processors.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상 장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로, 또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.Software may comprise a computer program, code, instructions, or a combination of one or more thereof, which configures a processing device to operate as desired or is independently or collectively processed You can command the device. The software and/or data may be any kind of machine, component, physical device, virtual equipment, computer storage medium or apparatus, to be interpreted by or to provide instructions or data to the processing device. , or may be permanently or temporarily embody in a transmitted signal wave. The software may be distributed over networked computer systems and stored or executed in a distributed manner. Software and data may be stored in a computer-readable recording medium.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded in a computer-readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination, and the program instructions recorded on the medium are specially designed and configured for the embodiment, or may be known and available to those skilled in the art of computer software. may be Examples of the computer-readable recording medium include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floppy disks. - includes magneto-optical media, and hardware devices specially configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine language codes such as those generated by a compiler, but also high-level language codes that can be executed by a computer using an interpreter or the like.

위에서 설명한 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 또는 복수의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The hardware devices described above may be configured to operate as one or a plurality of software modules to perform the operations of the embodiments, and vice versa.

이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 이를 기초로 다양한 기술적 수정 및 변형을 적용할 수 있다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described with reference to the limited drawings, a person skilled in the art may apply various technical modifications and variations based thereon. For example, the described techniques are performed in an order different from the described method, and/or the described components of the system, structure, apparatus, circuit, etc. are combined or combined in a different form than the described method, or other components Or substituted or substituted by equivalents may achieve an appropriate result.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (13)

프로세서에 의해 실행되는, 노이징 기법을 이용한 차량 라우팅 방법에 있어서,
하나 이상의 차량들의 경로에 포함된 복수의 노드들 중에서 랜덤하게 선택된 노드와 해당 노드의 최근접 노드(Closest Node)에 기반하여 미리 정해진 개수의 노드를 해당 경로에서 제거하는 단계; 및
상기 제거된 노드를 상기 하나 이상의 차량들의 경로에 추가하는 단계
를 포함하고,
상기 최근접 노드는 대응하는 노드에서 나머지 노드들 각각까지의 거리에 노이즈 값을 추가함으로써 결정되는,
차량 라우팅 방법.
In a vehicle routing method using a noise technique, executed by a processor,
removing a predetermined number of nodes from a corresponding path based on a node randomly selected from among a plurality of nodes included in a path of one or more vehicles and a closest node of the corresponding node; and
adding the removed node to the path of the one or more vehicles;
including,
The nearest node is determined by adding a noise value to the distance from the corresponding node to each of the remaining nodes.
Vehicle routing method.
제1항에 있어서,
상기 최근접 노드는 상기 해당 노드에서 나머지 노드들 각각까지의 거리들에 노이즈 값을 추가한 결과 값들 중 최소 값에 대응하는 노드로 결정되는,
차량 라우팅 방법.
According to claim 1,
The nearest node is determined as a node corresponding to the minimum value among the results of adding a noise value to the distances from the corresponding node to each of the remaining nodes,
Vehicle routing method.
제1항에 있어서,
상기 최근접 노드는 상기 제거하는 단계와 상기 추가하는 단계가 미리 정해진 횟수만큼 반복될 때마다 재 결정되는,
차량 라우팅 방법.
According to claim 1,
The nearest node is re-determined every time the removing and adding are repeated a predetermined number of times,
Vehicle routing method.
제1항에 있어서,
상기 최근접 노드는 상기 차량 라우팅 방법이 복수의 스레드들(threads) 각각에서 병렬로 수행되는 경우, 상기 복수의 스레드들마다 상이하게 결정되는,
차량 라우팅 방법.
According to claim 1,
The nearest node is determined differently for each of the plurality of threads when the vehicle routing method is performed in parallel on each of the plurality of threads,
Vehicle routing method.
제1항에 있어서,
상기 제거하는 단계는
상기 복수의 노드들 중 상기 선택된 노드와 상기 최근접 노드를 제거하는
차량 라우팅 방법.
According to claim 1,
The removing step
removing the selected node and the nearest node from among the plurality of nodes
Vehicle routing method.
제1항에 있어서,
상기 제거하는 단계는
상기 복수의 노드들 중 제거되지 않은 나머지 노드들 중에서 랜덤하게 선택된 노드와 해당 노드의 최근접 노드를 제거하는 과정을 미리 정해진 조건이 만족될 때까지 반복하는,
차량 라우팅 방법.
According to claim 1,
The removing step
repeating the process of removing a node randomly selected from among the remaining nodes that have not been removed among the plurality of nodes and a node closest to the node until a predetermined condition is satisfied,
Vehicle routing method.
제1항에 있어서,
상기 제거하는 단계는
상기 복수의 노드들 중에서 랜덤하게 선택된 제1 노드와 상기 제1 노드의 최근접 노드를 제거하는 단계;
상기 제거된 최근접 노드의 최근접 노드가 이미 제거된 노드가 아닌 경우에 응답하여, 상기 제거된 최근접 노드의 최근접 노드를 해당 경로에서 제거하는 과정을 반복하는 단계; 및
상기 제거된 최근접 노드의 최근접 노드가 이미 제거된 노드인 경우에 응답하여, 상기 복수의 노드들 중 제거되지 않은 나머지 노드들 중에서 랜덤하게 선택된 제3 노드와 상기 제3 노드의 최근접 노드를 제거하는 단계
를 포함하는,
차량 라우팅 방법.
According to claim 1,
The removing step
removing a first node randomly selected from among the plurality of nodes and a node closest to the first node;
repeating the process of removing the closest node of the removed closest node from the corresponding path in response to the case that the closest node of the removed nearest node is not the already removed node; and
In response to a case in which the closest node of the removed nearest node is an already removed node, a third node randomly selected from among the remaining non-removed nodes among the plurality of nodes and the nearest node of the third node are selected. steps to remove
containing,
Vehicle routing method.
제1항에 있어서,
상기 제거하는 단계는
상기 복수의 노드들 중에서 랜덤하게 시드 노드(seed node)를 선택하는 단계;
상기 시드 노드를 포함한 기준 경로에서 상기 시드 노드의 이전 노드들 또는 이후 노드들을 상기 기준 경로에서 제거하는 단계;
상기 시드 노드의 최근접 노드가 이미 제거된 노드가 아닌 경우에 응답하여 새로운 시드 노드로 설정하고, 상기 새로운 시드 노드의 이전 노드들 또는 이후 노드들을 해당 기준 경로에서 제거하는 단계를 미리 정해진 조건이 만족될 때까지 반복하는 단계; 및
상기 시드 노드의 최근접 노드가 이미 제거된 노드인 경우에 응답하여, 상기 복수의 노드들 중 제거되지 않은 나머지 노드들 중에서 랜덤하게 새로운 시드 노드를 선택하고, 상기 선택된 새로운 노드의 이전 노드들 또는 이후 노드들을 해당 기준 경로에서 제거하는 단계
를 포함하는,
차량 라우팅 방법.
According to claim 1,
The removing step
randomly selecting a seed node from among the plurality of nodes;
removing nodes before or after the seed node from the reference path in the reference path including the seed node;
A predetermined condition is satisfied in the step of setting a new seed node in response to a case where the closest node of the seed node is not a node that has already been removed, and removing previous or subsequent nodes of the new seed node from the corresponding reference path. repeat until and
In response to a case in which the closest node of the seed node is a node that has already been removed, a new seed node is randomly selected from among the remaining nodes that have not been removed from among the plurality of nodes, and previous or subsequent nodes of the selected new node are selected. removing nodes from the reference path
containing,
Vehicle routing method.
제1항에 있어서,
상기 제거하는 단계는 상기 복수의 노드들 중에서 제거된 노드들의 비율이 미리 정해진 임계치를 만족할 때까지 반복해서 수행되는,
차량 라우팅 방법.
According to claim 1,
The removing step is repeatedly performed until a ratio of the removed nodes among the plurality of nodes satisfies a predetermined threshold,
Vehicle routing method.
제1항에 있어서,
상기 제거하는 단계와 상기 추가하는 단계는 미리 정해진 조건이 만족될 때까지 반복되는,
차량 라우팅 방법.
According to claim 1,
The removing and adding are repeated until a predetermined condition is satisfied,
Vehicle routing method.
제1항에 있어서,
상기 추가하는 단계가 수행된 후, 상기 복수의 노드들 중 어느 하나를 해당 노드의 최근접 노드와 스왑(swap)할 것인지 여부를 판단하는 단계
를 더 포함하는
차량 라우팅 방법.
According to claim 1,
After the adding is performed, determining whether to swap any one of the plurality of nodes with the nearest node of the corresponding node
further comprising
Vehicle routing method.
제1항에 있어서,
상기 노이즈 값은
상기 복수의 노드들 간 거리를 표현한 거리 매트릭스에서 추출된 거리들의 하위 n% 평균에 기초하여 결정된 노이즈의 최소값 및 최대값 사이에 속하고, 상기 n은 0에서 100 사이의 실수(real number)인,
차량 라우팅 방법.
According to claim 1,
The noise value is
It belongs between the minimum and maximum values of noise determined based on the average of the lower n% of the distances extracted from the distance matrix expressing the distances between the plurality of nodes, wherein n is a real number between 0 and 100,
Vehicle routing method.
하나 이상의 프로세서를 포함하고,
상기 하나 이상의 프로세서는
하나 이상의 차량들의 경로에 포함된 복수의 노드들 중에서 랜덤하게 선택된 노드와 해당 노드의 최근접 노드(Closest Node)에 기반하여 미리 정해진 개수의 노드를 해당 경로에서 제거하고,
상기 제거된 노드를 상기 하나 이상의 차량들의 경로에 추가하고,
상기 최근접 노드는 대응하는 노드에서 나머지 노드들 각각까지의 거리에 노이즈 값을 추가함으로써 결정되는,
차량 라우팅 장치.
one or more processors;
the one or more processors
A predetermined number of nodes are removed from the path based on a node randomly selected from among a plurality of nodes included in the path of one or more vehicles and a closest node of the node,
add the removed node to the path of the one or more vehicles;
The nearest node is determined by adding a noise value to the distance from the corresponding node to each of the remaining nodes.
vehicle routing device.
KR1020200137967A 2020-10-23 2020-10-23 Vehicle routing method and device using noising scheme KR102374595B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200137967A KR102374595B1 (en) 2020-10-23 2020-10-23 Vehicle routing method and device using noising scheme

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200137967A KR102374595B1 (en) 2020-10-23 2020-10-23 Vehicle routing method and device using noising scheme

Publications (1)

Publication Number Publication Date
KR102374595B1 true KR102374595B1 (en) 2022-03-16

Family

ID=80937525

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200137967A KR102374595B1 (en) 2020-10-23 2020-10-23 Vehicle routing method and device using noising scheme

Country Status (1)

Country Link
KR (1) KR102374595B1 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150370251A1 (en) * 2014-06-20 2015-12-24 Hti, Ip, L.L.C. Method and system for drone deliveries to vehicles in route

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150370251A1 (en) * 2014-06-20 2015-12-24 Hti, Ip, L.L.C. Method and system for drone deliveries to vehicles in route

Similar Documents

Publication Publication Date Title
US20200218842A1 (en) Mapping logical qubits on a quantum circuit
US9324040B2 (en) Training ensembles of randomized decision trees
US20120311295A1 (en) System and method of optimization of in-memory data grid placement
CN112887437A (en) Block chain transaction processing method, block chain node and block chain
US9141677B2 (en) Apparatus and method for arranging query
US9892149B2 (en) Parallelized in-place radix sorting
CN110222874B (en) Information processing method and device, storage medium and computing equipment
US11068176B2 (en) Method, apparatus and computer program product for managing storage system
CN105677755A (en) Method and device for processing graph data
KR20200141208A (en) Grahp data processing methdo and apparatus thereof
AU2009202442A1 (en) Skip list generation
JP6951846B2 (en) Computer system and task allocation method
US9858040B2 (en) Parallelized in-place radix sorting
KR102374595B1 (en) Vehicle routing method and device using noising scheme
US20130173647A1 (en) String matching device based on multi-core processor and string matching method thereof
CN110659312B (en) Data processing method, device, equipment and computer storage medium
US10747627B2 (en) Method and technique of achieving extraordinarily high insert throughput
US10402230B2 (en) System allocating links for data packets in an electronic system
US20150106570A1 (en) Cache method and cache apparatus
US10949761B2 (en) Partitioning of packet classification rules
US11886725B2 (en) Accelerating decision tree inferences
US20150006090A1 (en) String sequencing with multiple search stages
CN111752700B (en) Hardware selection method and device on processor
KR102202211B1 (en) I/0 optimization apparatus and method for improving loading performance of an application
CN112100446B (en) Search method, readable storage medium, and electronic device

Legal Events

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