KR20210053247A - Method and apparatus for assigning multiple tasks - Google Patents
Method and apparatus for assigning multiple tasks Download PDFInfo
- Publication number
- KR20210053247A KR20210053247A KR1020200143895A KR20200143895A KR20210053247A KR 20210053247 A KR20210053247 A KR 20210053247A KR 1020200143895 A KR1020200143895 A KR 1020200143895A KR 20200143895 A KR20200143895 A KR 20200143895A KR 20210053247 A KR20210053247 A KR 20210053247A
- Authority
- KR
- South Korea
- Prior art keywords
- clusters
- tasks
- task
- sparse code
- values
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- General Factory Administration (AREA)
Abstract
Description
본 발명은 태스크 할당 방법 및 장치에 관한 것이다. 더욱 구체적으로는 혼합정수계획법(MIP, Mixed Integer Programming) 기반으로 복수 태스크들에 복수 워커들을 신속하게 할당하는 방법 및 장치에 관한 것이다.The present invention relates to a task assignment method and apparatus. More specifically, it relates to a method and apparatus for quickly assigning a plurality of workers to a plurality of tasks based on a mixed integer programming (MIP).
적군으로부터 복수의 탄도 미사일이나 전투기들이 아군을 향해 날아오고 있는 상황이 발생하면, 아군이 보유하고 있는 예컨대 지대공 미사일과 같은 방어 무기들을 이용하여 적군의 무기들을 효과적으로 격추해야 할 것이다. 이 경우, 효과적으로 적군의 무기를 제거하기 위해서는 아군의 방어 무기들을 적군의 무기들에 효과적으로 할당해야 한다. 이는 혼합정수계획법(MIP) 기반의 복수 워커들-복수 태스크들 간의 할당 문제로 해결할 수 있다. 여기서 복수의 태스크들은 적군의 무기들에 대응할 수 있고, 복수의 태스크들을 처리하는 복수의 워커들(workers)은 아군의 방어 무기들에 대응할 수 있다.When a situation occurs in which multiple ballistic missiles or fighters are flying from the enemy force toward a friendly force, it will be necessary to effectively shoot down the enemy's weapons using the defense weapons that the team possesses, such as surface-to-air missiles. In this case, in order to effectively remove the enemy's weapons, the friendly defense weapons must be effectively assigned to the enemy's weapons. This can be solved by the allocation problem between multiple workers and multiple tasks based on the mixed integer programming (MIP). Here, the plurality of tasks may correspond to the weapons of the enemy army, and the plurality of workers processing the plurality of tasks may correspond to the defense weapons of the friendly force.
그러나, 혼합정수계획법(MIP) 기반 복수 태스크들의 할당 문제는 태스크들의 수 및 워커들의 수가 증가함에 따라, 계산 복잡도가 급격하게 증가한다는 문제가 존재한다. 계산 복잡도는 태스크들의 수 및 워커들의 수에 조합으로(combinatorial) 커진다고 알려져 있으며, 계산에 소요되는 시간은 계산 복잡도에 비례한다. 적군의 무기가 아군으로 날아오고 있는 급박한 상황에서 아군의 피해를 최소화하기 위해서는 태스크들에 워커들을 할당하는 시간을 최소화하는 것이 필요하다.However, the problem of allocating multiple tasks based on the mixed integer programming (MIP) has a problem in that the computational complexity rapidly increases as the number of tasks and the number of workers increase. It is known that the computational complexity increases in combination with the number of tasks and the number of workers, and the time required for computation is proportional to the computational complexity. In an urgent situation where enemy weapons are flying into the ally, it is necessary to minimize the time to allocate workers to tasks in order to minimize damage to the ally.
본 발명이 해결하고자 하는 과제는 혼합정수계획법(MIP, Mixed Integer Programming) 기반으로 태스크들에 워커들을 할당하는 방법 및 장치를 제공하는 것이다.The problem to be solved by the present invention is to provide a method and apparatus for allocating workers to tasks based on mixed integer programming (MIP).
상술한 기술적 과제들을 달성하기 위한 기술적 수단으로서, 본 발명의 일 측면에 따른 태스크 할당 방법은 컴퓨팅 장치에 의해 수행된다. 상기 태스크 할당 방법은 복수의 태스크를 투영하여 태스크 벡터(B)를 생성하는 단계, 각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하는 단계, 상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하는 단계, 상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하는 단계, 상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하는 단계, 및 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하는 단계를 포함한다.As a technical means for achieving the above-described technical problems, the task assignment method according to an aspect of the present invention is performed by a computing device. The task assignment method includes generating a task vector (B) by projecting a plurality of tasks, W cluster vectors (D 1 , ..., D W ) corresponding to W clusters each including at least one worker A step of generating a dictionary matrix (D) by combining the W cluster vectors (D 1 , ..., D W ), the task vector B and the dictionary matrix D Calculating a sparse code (c) using sparse optimization for ), based on the dictionary matrix (D) and the sparse code (c), J clusters among the W clusters And selecting, and allocating workers included in the J clusters to each of the plurality of tasks.
일 예에 따르면, 상기 태스크 벡터(B)는 m차원 실수 공간(B ∈ m)에서 정의되어 제1 내지 제m 원소(b1, ... , bm})의 값들을 가질 수 있다. 상기 태스크 벡터(B)의 제i 원소(bi)(i ∈ {1, ... , m})의 값은 상기 복수의 태스크들 각각의 제i 속성 값을 누적한 값일 수 있다.According to an example, the task vector B is an m-dimensional real space (B ∈ It is defined in m) and may have values of the first to mth elements (b 1 , ..., b m }). The value of the i-th element b i (i ∈ {1, ..., m}) of the task vector B may be a value obtained by accumulating an i-th attribute value of each of the plurality of tasks.
다른 예에 따르면, 상기 W개의 클러스터 벡터(D1, ... , DW) 각각은 상기 m차원 실수 공간(D1, ... , DW ∈ m)에서 정의될 수 있다. 상기 W개의 클러스터 벡터(D1, ... , DW) 중 제w 클러스터 벡터(Dw)(w ∈ {1, ... , W})의 제i 원소(dwi)(i ∈ {1, ... , m})의 값은 제i 속성에 대하여 상기 제2 클러스터 벡터(Dw)에 포함되는 적어도 하나의 워커가 처리할 수 있는 크기일 수 있다.According to another example, each of the W cluster vectors (D 1 , ..., D W ) is the m-dimensional real space (D 1 , ..., D W ∈ m ) can be defined. Of the W cluster vectors (D 1 , ..., D W ), the i-th element (d wi) (i ∈ {) of the w- th cluster vector (D w ) (w ∈ {1, ..., W}) The value of 1, ..., m}) may be a size that can be processed by at least one worker included in the second cluster vector D w with respect to the i-th attribute.
또 다른 예에 따르면, 상기 사전 행렬(D)은 (m×W) 차원 실수 공간(D ∈ m×W)에서 정의되고 D = [D1 | D2 | ... | Dw]에 따라 생성될 수 있다.According to another example, the dictionary matrix (D) is a (m×W) dimensional real space (D ∈ m×W ) and D = [D 1 | D 2 | ... | It can be created according to D w ].
또 다른 예에 따르면, 상기 스파스 코드(c)는 에 따라 산출되고, 제1 내지 제W 값들을 포함할 수 있다.According to another example, the sparse code (c) is It is calculated according to, and may include first to Wth values.
또 다른 예에 따르면, 상기 스파스 코드(c)는 에 따라 산출되고, 제1 내지 제W 값들을 포함할 수 있다. 상기 파라미터(λ)는 상기 스파스 코드(c)의 비제로(non-zero) 희소성을 결정할 수 있다.According to another example, the sparse code (c) is It is calculated according to, and may include first to Wth values. The parameter λ may determine the non-zero sparsity of the sparse code c.
또 다른 예에 따르면, 상기 스파스 코드(c)의 상기 제1 내지 제W 값들 각각은 0 또는 1일 수 있다.According to another example, each of the first to Wth values of the sparse code c may be 0 or 1.
또 다른 예에 따르면, 상기 J개의 클러스터는 상기 사전 행렬(D)과 상기 스파스 코드(c)의 행렬-벡터 곱(D×c)에 의해 결정될 수 있다.According to another example, the J clusters may be determined by a matrix-vector product (D×c) of the dictionary matrix (D) and the sparse code (c).
또 다른 예에 따르면, 상기 스파스 코드(c)의 상기 제1 내지 제W 값들 각각은 0 이상 1 이하의 실수 값일 수 있다.According to another example, each of the first to Wth values of the sparse code c may be a real value of 0 or more and 1 or less.
또 다른 예에 따르면, 상기 J개의 클러스터를 선택하는 단계는 상기 스파크 코드(c)의 상기 제1 내지 제W 값들을 미리 설정된 기준치와 비교하여, 수정 스파스 코드(rc)를 생성하는 단계로서, 상기 수정 스파스 코드(rc)의 제1 내지 제W 값들 각각은 0 또는 1인 단계, 및 상기 사전 행렬(D)에 상기 수정 스파스 코드(rc)를 곱하여 상기 J개의 클러스터를 결정하는 단계를 포함할 수 있다.According to another example, the selecting of the J clusters is a step of generating a modified sparse code rc by comparing the first to Wth values of the spark code c with a preset reference value, Each of the first to Wth values of the modified sparse code rc is 0 or 1, and determining the J clusters by multiplying the dictionary matrix D by the modified sparse code rc. Can include.
또 다른 예에 따르면, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하는 단계는 상기 복수의 태스크들의 개수(K)를 획득하는 단계, 제1 내지 제K 태스크들 각각과 상기 J개의 클러스터에 포함되는 워커들 각각 간의 비용값들(cvjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 획득하는 단계, 및 상기 비용값들(cvjk)을 적용한 정수계획법(MIP) 알고리즘을 이용하여, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당한 할당 결과(x)를 산출하는 단계를 포함할 수 있다. 상기 할당 결과(x)는 각각 0 또는 1의 값을 갖는 (J×K)개의 원소들(xjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 포함할 수 있다.According to another example, the step of allocating workers included in the J clusters to each of the plurality of tasks includes obtaining the number K of the plurality of tasks, each of the first to Kth tasks and the J Obtaining cost values (cv jk) (j ∈ {1, ..., J}, k ∈ {1, ..., K}) between each of the workers included in the clusters, and the cost value Using an integer programming (MIP) algorithm to which cv jk is applied, calculating an allocation result (x) of allocating workers included in the J clusters to each of the plurality of tasks. The assignment result (x) is (J×K) elements (x jk ) each having a value of 0 or 1 (j ∈ {1, ..., J}, k ∈ {1, ..., K }) can be included.
또 다른 예에 따르면, 상기 할당 결과(x)는 상기 원소들(xjk)에 대한 의 값이 상기 제j 클러스터에 포함되는 워커들의 개수 이하일 제1 조건, 및 상기 원소들(xjk)에 대한 의 값이 1일 제2 조건을 만족하도록 에 따라 산출될 수 있다.According to another example, the assignment result (x) is for the elements (x jk ) The first condition that the value of is less than or equal to the number of workers included in the j th cluster, and for the elements (x jk ) So that the value of satisfies the second condition on
본 발명의 일 측면에 따른 컴퓨터 프로그램은 컴퓨팅 장치를 이용하여 전술한 태스크 할당 방법을 실행시키기 위하여 매체에 저장된다.A computer program according to an aspect of the present invention is stored in a medium in order to execute the above-described task allocation method using a computing device.
본 발명의 일 측면에 따른 태스크 할당 장치는 메모리와 적어도 하나의 프로세서를 포함한다. 상기 적어도 하나의 프로세서는 복수의 태스크를 투영하여 태스크 벡터(B)를 생성하고, 각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하고, 상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하고, 상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하고, 상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하고, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하도록 구성된다.A task allocation apparatus according to an aspect of the present invention includes a memory and at least one processor. The at least one processor generates a task vector (B) by projecting a plurality of tasks, and W cluster vectors (D 1 , ..., D W ) corresponding to W clusters each including at least one worker And, by combining the W cluster vectors (D 1 , ..., D W ), a dictionary matrix (D) is generated, and the task vector (B) and the dictionary matrix (D) are For this, a sparse code (c) is calculated using sparse optimization, and J clusters are selected from the W clusters based on the dictionary matrix (D) and the sparse code (c). And allocating workers included in the J clusters to each of the plurality of tasks.
본 발명에 따르면, 혼합정수계획법(MIP) 기반 멀티 태스크들의 할당 단계 전에 프루닝(Pruning) 단계를 수행하여 복수 워커들-복수 태스크들 간의 할당 문제의 계산 복잡도를 감소시킴으로써, 태스크들에 워커들을 할당하는 시간을 감소시킬 수 있다.According to the present invention, a pruning step is performed before the allocation step of multitasks based on mixed integer programming (MIP) to reduce the computational complexity of the allocation problem between multiple workers and multiple tasks, thereby allocating workers to tasks. You can reduce the time to do it.
프루닝 단계로 인하여 계산 복잡도(Computational Complexity)가 감소되지만 이에 대한 트레이드-오프(trade-off)로서 비최적성(Sub-optimality)이 발생할 수 있다. 그러나, 계산 시간의 감소로 인해 적군의 무기에 받게 되는 아군의 피해를 감소시킬 수 있다는 이득은 비최적성으로 인한 비용 증가의 손해보다 훨씬 클 것이다.Although computational complexity is reduced due to the pruning step, sub-optimality may occur as a trade-off for this. However, the benefit of reducing allied damage from enemy weapons due to reduced computation time would be far greater than the damage of increased cost due to non-optimality.
프루닝 단계에서 스파스 최적화(Sparse Optimization, 즉, LASSO) 문제는 볼록 최적화(Convex Optimization) 문제로써, 태스크들의 수 및 워커들의 수에 비의존적인 계산복잡도를 갖는다. 따라서, 태스크들의 수 및 워커들의 수가 증가하더라도 프루닝 단계의 계산 복잡도는 증가하지 않을 것이며, 전체 계산 시간을 감소시킬 수 있다.In the pruning step, the sparse optimization (that is, LASSO) problem is a convex optimization problem and has a computational complexity independent of the number of tasks and the number of workers. Therefore, even if the number of tasks and the number of workers increase, the computational complexity of the pruning step will not increase, and the total computation time can be reduced.
도 1은 본 발명의 일 실시예에 따른 태스크 할당 방법을 설명하는 순서도이다.
도 2는 본 발명의 일 실시예에 따른 태스크 할당 방법의 프루닝 스테이지를 설명하는 순서도이다.
도 3a는 본 발명의 일 실시예에 따른 예시적인 태스크 벡터(B)를 이미지화한 도면이고, 도 3b는 본 발명의 일 실시예에 따른 예시적인 사전 행렬(D)을 이미지화한 도면이다.
도 4는 본 발명에 따라 태스크들에 클러스터들에 포함되는 워커가 할당되는 예가 도시된다.
도 5는 본 발명의 일 실시예에 따른 태스크 할당 장치의 구성 및 동작을 설명하기 위한 도면이다.1 is a flowchart illustrating a task assignment method according to an embodiment of the present invention.
2 is a flowchart illustrating a pruning stage of a method for assigning a task according to an embodiment of the present invention.
3A is a diagram illustrating an exemplary task vector B according to an embodiment of the present invention, and FIG. 3B is a diagram illustrating an exemplary dictionary matrix D according to an exemplary embodiment of the present invention.
4 illustrates an example in which workers included in clusters are allocated to tasks according to the present invention.
5 is a view for explaining the configuration and operation of a task assignment device according to an embodiment of the present invention.
아래에서는 첨부한 도면을 참조하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 다양한 실시예들을 상세히 설명한다. 그러나 본 개시의 기술적 사상은 다양한 형태로 변형되어 구현될 수 있으므로 본 명세서에서 설명하는 실시예들로 제한되지 않는다. 본 명세서에 개시된 실시예들을 설명함에 있어서 관련된 공지 기술을 구체적으로 설명하는 것이 본 개시의 기술적 사상의 요지를 흐릴 수 있다고 판단되는 경우 그 공지 기술에 대한 구체적인 설명을 생략한다. 동일하거나 유사한 구성요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다.Hereinafter, various embodiments will be described in detail with reference to the accompanying drawings so that those of ordinary skill in the art may easily implement the present disclosure. However, the technical idea of the present disclosure is not limited to the embodiments described in the present specification because it may be modified and implemented in various forms. In describing the embodiments disclosed in the present specification, when it is determined that a detailed description of a related known technology may obscure the gist of the technical idea of the present disclosure, a detailed description of the known technology will be omitted. The same or similar components are given the same reference numerals, and duplicate descriptions thereof will be omitted.
본 명세서에서 어떤 요소가 다른 요소와 "연결"되어 있다고 기술될 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라 그 중간에 다른 요소를 사이에 두고 "간접적으로 연결"되어 있는 경우도 포함한다. 어떤 요소가 다른 요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 요소 외에 또 다른 요소를 배제하는 것이 아니라 또 다른 요소를 더 포함할 수 있는 것을 의미한다.In the present specification, when an element is described as being "connected" with another element, this includes not only the case of being "directly connected" but also the case of being "indirectly connected" with another element interposed therebetween. When a certain element "includes" another element, it means that another element may be included in addition to the other element, not excluded, unless specifically stated to the contrary.
일부 실시예들은 기능적인 블록 구성들 및 다양한 처리 단계들로 설명될 수 있다. 이러한 기능 블록들의 일부 또는 전부는 특정 기능을 실행하는 다양한 개수의 하드웨어 및/또는 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 본 개시의 기능 블록들은 하나 이상의 마이크로프로세서들에 의해 구현되거나, 소정의 기능을 위한 회로 구성들에 의해 구현될 수 있다. 본 개시의 기능 블록들은 다양한 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 본 개시의 기능 블록들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 본 개시의 기능 블록이 수행하는 기능은 복수의 기능 블록에 의해 수행되거나, 본 개시에서 복수의 기능 블록이 수행하는 기능들은 하나의 기능 블록에 의해 수행될 수도 있다. 또한, 본 개시는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다.Some embodiments may be described with functional block configurations and various processing steps. Some or all of these functional blocks may be implemented with various numbers of hardware and/or software components that perform a specific function. For example, the functional blocks of the present disclosure may be implemented by one or more microprocessors, or may be implemented by circuit configurations for a predetermined function. Functional blocks of the present disclosure may be implemented in various programming or scripting languages. The functional blocks of the present disclosure may be implemented as an algorithm executed on one or more processors. Functions performed by a function block of the present disclosure may be performed by a plurality of function blocks, or functions performed by a plurality of function blocks in the present disclosure may be performed by a single function block. In addition, the present disclosure may employ conventional techniques for electronic environment setting, signal processing, and/or data processing.
도 1은 본 발명의 일 실시예에 따른 태스크 할당 방법을 설명하는 순서도이다.1 is a flowchart illustrating a task assignment method according to an embodiment of the present invention.
도 1을 참조하면, 태스크 할당 방법은 프루닝 스테이지(S100)와 혼합정수계획법(Mixed Integer Programming, 이하 'MIP'라 함) 스테이지(S200)를 포함한다. 본 발명의 태스크 할당 방법은 메모리와 적어도 하나의 프로세서를 갖는 컴퓨터 장치에 의해 수행될 수 있다.Referring to FIG. 1, the task assignment method includes a pruning stage S100 and a mixed integer programming (hereinafter referred to as “MIP”) stage S200. The task allocation method of the present invention may be performed by a computer device having a memory and at least one processor.
본 발명의 일 실시예에 따른 태스크 할당 방법은 혼합정수계획법(MIP, Mixed Integer Programming) 기반으로 복수 태스크들을 신속하게 할당하는 방법에 관한 것이다. 프루닝 스테이지(S100)는 복수 태스크들에 할당될 가능성이 낮다고 판단되는 일부 워커들을 제거하고 나머지 일부 워커들만 선택하는 단계이다. MIP 스테이지(S200)는 MIP 기반으로 프루닝 스테이지(S100)에서 선택된 워커들을 복수 태스크들에 할당하는 단계이다. MIP 스테이지(S200)는 프루닝 스테이지(S100) 후에 수행된다.A task assignment method according to an embodiment of the present invention relates to a method of quickly allocating a plurality of tasks based on a mixed integer programming (MIP). The pruning stage S100 is a step in which some workers judged to be less likely to be assigned to a plurality of tasks are removed and only some remaining workers are selected. The MIP stage S200 is a step of allocating the workers selected in the pruning stage S100 based on the MIP to a plurality of tasks. The MIP stage S200 is performed after the pruning stage S100.
본 명세서에서, '태스크'는 예컨대 적군의 탄도 미사일이나 전투기와 같이 다수로 존재하는 대상에 대응한다. 적군의 탄도 미사일들이나 전투기들은 아군의 방어 무기(예컨대, 요격 유도탄, 지대공 미사일 등)에 의해 요격 되어야 할 것이다. 본 명세서에서, '워커'는 '태스크'를 처리하기 위해 '태스크'에 할당되어야 하는 대상으로서, 예컨대, 아군의 방어 무기에 대응할 수 있다. '워커들'은 복수의 클러스터로 그룹핑될 수 있다. 예를 들면, 클러스터는 복수의 미사일을 발사할 수 있는 미사일 부대 또는 미사일 발사대에 대응될 수 있다. 클러스터들 각각에는 적어도 하나의 워커가 포함된다.In the present specification, a'task' corresponds to a target that exists in multiple numbers, such as an enemy ballistic missile or a fighter. Enemy ballistic missiles or fighters will have to be intercepted by friendly defense weapons (eg, interceptor guided missiles, surface-to-air missiles, etc.). In the present specification, a'worker' is a target to be assigned to a'task' in order to process a'task', and may correspond to, for example, a defense weapon of a friendly force. 'Workers' may be grouped into a plurality of clusters. For example, a cluster may correspond to a missile unit or missile launcher capable of launching a plurality of missiles. Each of the clusters includes at least one worker.
본 발명에 따르면, 워커들과 클러스터들의 개수 및 속성에 관한 정보들은 미리 저장되어 있을 수 있다. 태스크들의 속성에 관한 정보는 프루닝 스테이지(S100)에서 예컨대 레이다 장비, 및 분석 장비 등을 이용하여 획득될 수 있다. 태스크들 각각의 위치에 관한 정보는 MIP 스테이지(S200)에서 획득될 수 있다. 예컨대, 프루닝 스테이지(S100)에서는 태스크들의 대략적인 위치 정보가 획득되고, 이후 MIP 스테이지(S200)에서는 추가적인 분석을 통해 태스크들의 정확한 위치 및 개수에 관한 정보가 획득될 수 있다.According to the present invention, information on the number and property of workers and clusters may be stored in advance. Information about the properties of tasks may be obtained in the pruning stage S100 using, for example, radar equipment, analysis equipment, and the like. Information about the location of each of the tasks may be obtained in the MIP stage S200. For example, in the pruning stage S100, approximate location information of the tasks may be obtained, and then in the MIP stage S200, information on the exact location and number of tasks may be obtained through additional analysis.
혼합정수계획법(MIP)과 같은 최적화 알고리즘은 문제 크기가 커짐에 따라 시간 복잡도가 크게 증가한다. 본 발명은 이러한 최적화 알고리즘의 빠른 실행을 위해 문제의 크기를 효율적으로 축소시키는 방법을 제안한다. 우선, 복수의 태스크들과 이들을 처리할 수 있는 복수의 워커들이 존재한다고 가정한다. 본 발명에 따르면, MIP를 이용하여 태스크 할당 문제를 직접적으로 풀지 않고, 프루닝 스테이지(S100)에서 비유망 워커들(Unpromising Workers)을 제거한다. MIP 스테이지(S200)에서 남은 선택 워커들(Selected Workers)을 복수의 캐스트들에 할당한다.Optimization algorithms such as mixed integer programming (MIP) greatly increase the time complexity as the problem size increases. The present invention proposes a method of efficiently reducing the size of a problem for fast execution of such an optimization algorithm. First, it is assumed that there are a plurality of tasks and a plurality of workers capable of processing them. According to the present invention, unpromising workers are removed in the pruning stage S100 without directly solving the task assignment problem using MIP. Selected workers remaining in the MIP stage S200 are allocated to a plurality of casts.
아래에서 도 2 내지 도 3a 및 도 3b를 참조하여 프루닝 스테이지(S100)에 대하여 더욱 자세히 설명한다.Hereinafter, the pruning stage S100 will be described in more detail with reference to FIGS. 2 to 3A and 3B.
도 2는 본 발명의 일 실시예에 따른 태스크 할당 방법의 프루닝 스테이지를 설명하는 순서도이다. 도 3a는 본 발명의 일 실시예에 따른 예시적인 태스크 벡터(B)를 이미지화한 도면이고, 도 3b는 본 발명의 일 실시예에 따른 예시적인 사전 행렬(D)을 이미지화한 도면이다.2 is a flowchart illustrating a pruning stage of a method for assigning a task according to an embodiment of the present invention. 3A is a diagram illustrating an exemplary task vector B according to an embodiment of the present invention, and FIG. 3B is a diagram illustrating an exemplary dictionary matrix D according to an exemplary embodiment of the present invention.
도 2, 도 3a 및 도 3b를 참조하면, 본 발명의 일 실시예에 따른 프루닝 스테이지에서는 복수의 태스크들을 처리하기에 적합해보이지 않는 워커들이 우선적으로 제거된다. 일 예에 따르면, 프루닝 스테이지에서 스파스 최적화(Sparse Optimization)가 사용될 수 있다. 스파스 최적화는 라쏘(LASSO) 회귀분석 알고리즘을 이용하여 구현될 수 있다.2, 3A, and 3B, workers that do not seem suitable for processing a plurality of tasks are preferentially removed in the pruning stage according to an embodiment of the present invention. According to an example, sparse optimization may be used in the pruning stage. Sparse optimization can be implemented using the LASSO regression analysis algorithm.
복수의 태스크들을 투영하여 태스크 벡터(B)가 생성될 수 있다(S110). 복수의 태스크들은 m차원의 태스크 벡터(B)에 투영될 수 있다. 태스크 벡터(B)는 m차원 실수 공간(B ∈ m)에서 정의될 수 있으며, 제1 내지 제m 원소(b1, ... , bm})의 값들을 가질 수 있다. 여기서, m은 미리 설정된 자연수이다. m은 태스크들이 가질 수 있는 속성들의 총 개수에 기초하여 미리 설정될 수 있다. m의 크기는 태스크들의 속성을 어떻게 정의하느냐에 따라 결정될 수 있다.A task vector B may be generated by projecting a plurality of tasks (S110). The plurality of tasks may be projected onto an m-dimensional task vector B. The task vector (B) is the m-dimensional real space (B ∈ m ), and may have values of the first to mth elements (b 1 , ..., b m }). Here, m is a preset natural number. m may be preset based on the total number of attributes that tasks may have. The size of m can be determined according to how the properties of tasks are defined.
태스크 벡터(B)의 m차원 중에서 제i 차원은 태스크들의 제i 속성에 대응하며, 태스크 벡터(B)의 제i 원소(bi)(i ∈ {1, ... , m})의 값은 복수의 태스크들 각각의 제i 속성 값을 누적한 값일 수 있다. 태스크들의 개수가 T개로 알려져 있다면, 태스크 벡터(B)의 제i 원소(bi)는 와 같이 표현될 수 있다. bi,t는 T개의 태스크들 중에서 제t 태스크의 제i 속성 값을 나타낸다.Among the m dimensions of the task vector (B), the i-th dimension corresponds to the i-th property of the tasks, and the value of the ith element (b i ) (i ∈ {1, ..., m}) of the task vector (B) May be a value obtained by accumulating an i-th attribute value of each of a plurality of tasks. If the number of tasks is known as T, the ith element (b i ) of the task vector (B) is It can be expressed as b i,t represents the i-th attribute value of the t-th task among T tasks.
이와 같이, 태스크들을 고정된 차원(m)의 태스크 벡터(B)에 투영함으로써, 태스크들의 개수에 비의존적인 태스크 벡터(B)가 생성될 수 있다.In this way, by projecting the tasks onto a task vector B having a fixed dimension m, a task vector B independent of the number of tasks may be generated.
도 3a에는 예시적인 태스크 벡터(B)를 이미지화한 도면이 도시된다. 도 3a의 도면은 m개의 셀들을 포함하고, 셀들은 태스크들의 속성들에 각각 대응한다. 각 셀의 밝기는 태스크들의 해당 속성의 누적 값을 나타낸다.Fig. 3A shows an image of an exemplary task vector B. The diagram of FIG. 3A includes m cells, and the cells correspond to properties of tasks, respectively. The brightness of each cell represents the cumulative value of the corresponding attribute of the tasks.
다른 실시예에 따르면, 도 3a와 같은 도면으로부터 태스크 벡터(B)를 생성할 수도 있다. 예컨대, 레이다 영상, 소나 영상 등과 같은 탐지 영상에 적군 무기들이 출현한 경우, 이 영상으로부터 태스크 벡터(B)가 생성될 수 있다. 탐지 영상의 픽셀들은 m개의 그룹들로 그룹핑될 수 있으며, m개의 그룹들은 태스크 벡터(B)의 m차원에 대응할 수 있다. 태스크 벡터(B)의 제i 원소(bi)의 값은 제i 그룹 내의 픽셀들의 밝기, 크기, 분석 결과들에 기초하여 결정될 수 있다.According to another embodiment, a task vector B may be generated from the drawing shown in FIG. 3A. For example, when enemy weapons appear in a detection image such as a radar image or a sonar image, a task vector B may be generated from the image. The pixels of the detection image may be grouped into m groups, and the m groups may correspond to the m dimension of the task vector B. The value of the i-th element b i of the task vector B may be determined based on brightness, size, and analysis results of pixels in the i-th group.
W개의 클러스터에 대응하는 W개의 클러스터 벡터(D1, ... , DW)가 생성될 수 있다(S120). W개의 클러스터 각각에는 적어도 하나의 워커가 포함된다. 전술한 바와 같이, 워커가 대공 미사일에 대응한다면, 클러스터는 미사일 기지에 대응할 수 있다. 워커의 개수와 클러스터의 개수는 미리 알고 있다. W개의 클러스터가 존재하는 것으로 가정한다.W cluster vectors (D 1 , ..., D W ) corresponding to the W clusters may be generated (S120). Each of the W clusters includes at least one worker. As described above, if a worker responds to an anti-aircraft missile, the cluster may respond to a missile base. The number of workers and the number of clusters is known in advance. It is assumed that there are W clusters.
W개의 클러스터 벡터(D1, ... , DW) 각각은 태스크 벡터(B)에 대응하며, W개의 클러스터 벡터(D1, ... , DW) 각각은 태스크 벡터(B)와 동일하게 m차원 실수 공간(D1, ... , DW ∈ m)에서 정의될 수 있다.Each of the W cluster vectors (D 1 , ..., D W ) corresponds to the task vector (B), and each of the W cluster vectors (D 1 , ..., D W ) is the same as the task vector (B). M-dimensional real space (D 1 , ..., D W ∈ m ) can be defined.
W개의 클러스터 벡터(D1, ... , DW) 중 제w 클러스터 벡터(Dw)(w ∈ {1, ... , W})의 제i 원소(dw,i)(i ∈ {1, ... , m})의 값은 제i 속성에 대하여 상기 제w 클러스터 벡터(Dw)에 포함되는 적어도 하나의 워커가 처리할 수 있는 크기를 의미할 수 있다. 즉, 제w 클러스터 벡터(Dw)(w ∈ {1, ... , W})의 제i 원소(dw,i)(i ∈ {1, ... , m})의 값은 제w 클러스터 벡터(Dw)에 포함되는 적어도 하나의 워커는 태스크 벡터(B)의 제i 속성에 대하여 dw,i만큼 처리할 수 있다는 것을 의미한다.Of the W cluster vectors (D 1 , ..., D W ), the ith element (d w,i )(i ∈) of the wth cluster vector (D w )(w ∈ {1, ..., W}) The value of {1, ..., m}) may mean a size that can be processed by at least one worker included in the w-th cluster vector D w with respect to the i-th attribute. That is, the value of the ith element (d w,i ) (i ∈ {1, ..., m}) of the wth cluster vector (D w ) (w ∈ {1, ..., W}) is zero. It means that at least one worker included in the w cluster vector D w can process as much as d w,i for the i-th attribute of the task vector B.
W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)이 생성될 수 있다(130). 사전 행렬(D)은 (m×W) 차원 실수 공간(D ∈ m×W)에서 정의될 수 있다. 사전 행렬(D)은 D = [D1 | D2 | ... | Dw]와 같이 생성될 수 있으며, W개의 클러스터 벡터들(D1, ... , DW)은 사전 행렬(D)의 열 벡터들에 해당한다. 즉, 제w 클러스터 벡터(Dw)는 사전 행렬(D)의 w번째 열 벡터이다.A dictionary matrix (D) may be generated by combining the W cluster vectors (D 1 , ..., D W) (130). The lexicographic matrix (D) is a (m×W) dimensional real space (D ∈ m×W ). The dictionary matrix (D) is D = [D 1 | D 2 | ... | D w ] can be generated, and the W cluster vectors (D 1 , ..., D W ) correspond to the column vectors of the dictionary matrix (D). That is, the w- th cluster vector D w is the w-th column vector of the dictionary matrix D.
도 3b에는 사전 행렬(D)로 결합된 제1 및 제2 클러스터 벡터들(D1, D2, ... )을 이미지화한 도면이 도시된다. 도 3b의 제1 및 제2 클러스터 벡터들(D1, D2) 각각의 도면은 m개의 셀들을 포함한다. m개의 셀들도 역시 m개의 속성들에 각각 대응한다. 제1 클러스터 벡터(D1)를 이미지화한 도면에서 각 셀의 밝기는 제1 클러스터에 포함되는 적어도 하나의 워커가 해당 속성을 처리할 수 있는 크기를 나타낸다.FIG. 3B is a diagram illustrating an image of first and second cluster vectors D 1 , D 2 , ... combined by a prior matrix D. In FIG. Each of the first and second cluster vectors D 1 and D 2 of FIG. 3B includes m cells. The m cells also correspond to m properties, respectively. In a diagram in which the first cluster vector D 1 is imaged, the brightness of each cell indicates a size at which at least one worker included in the first cluster can process a corresponding attribute.
태스크 벡터(B)와 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)가 산출될 수 있다(S140). 일 예에 따르면, 스파스 코드(c)는 에 따라 산출될 수 있다. 스파스 코드(c)는 스파스 최적화에서 구하고자 하는 결정 변수(decision variable)로서, 비제로(non-zero) 요소의 개수가 작아지도록 최적화에서 고려된다. 스파스 코드(c)는 w차원 실수 공간(c ∈ w)에서 정의되어 W개의 값들, 즉, 제1 내지 제W 값들을 포함할 수 있다. 스파스 코드(c)의 제1 내지 제W 값들은 0 이상 1 이하의 실수 값일 수 있다. 예컨대, 제1 내지 제W 값들은 0 또는 1일 수 있다.The sparse code c may be calculated using sparse optimization for the task vector B and the dictionary matrix D (S140). According to one example, the sparse code (c) is It can be calculated according to. The sparse code (c) is a decision variable to be obtained in sparse optimization, and is considered in optimization so that the number of non-zero elements decreases. The sparse code (c) is the w-dimensional real space (c E It is defined in w) and may include W values, that is, first to W-th values. The first to Wth values of the sparse code c may be real values of 0 or more and 1 or less. For example, the first to Wth values may be 0 or 1.
다른 예에 따르면, 스파스 코드(c)는 에 따라 산출될 수 있다. 여기서, 파라미터(λ)는 스파스 코드(c)의 비제로(non-zero) 희소성을 결정하는 값으로서, 미리 설정될 수 있다. 스파스 코드(c)는 W개의 값들, 즉, 제1 내지 제W 값들을 포함할 수 있다. 스파스 코드(c)의 제1 내지 제W 값들은 0 이상 1 이하의 실수 값일 수 있다. 예컨대, 제1 내지 제W 값들은 0 또는 1일 수 있다.According to another example, the sparse code (c) is It can be calculated according to. Here, the parameter λ is a value that determines the non-zero sparsity of the sparse code c, and may be set in advance. The sparse code c may include W values, that is, first to Wth values. The first to Wth values of the sparse code c may be real values of 0 or more and 1 or less. For example, the first to Wth values may be 0 or 1.
파라미터(λ)가 커지면, 스파스 코드(c)의 비제로(non-zero) 희소성이 커지므로, 스파스 코드(c)의 W개의 값들 중에서 0의 값을 가진 원소들이 많아진다. 이 경우, W개의 클러스터 중에서 선택되는 클러스터의 개수는 감소하게 된다. 그에 따라 이후 복수 워커들-복수 태스크들 간 할당 속도는 빨라지지만, 손실되는 정보의 양도 많아지므로 최적성은 감소하게 된다. 반대로 파라미터(λ)이 작아지면, 스파스 코드(c)의 비제로(non-zero) 희소성이 작아지며, 스파스 코드(c)의 W개의 값들 중에서 0의 값을 가진 원소들이 줄어든다. 이 경우, W개의 클러스터 중에서 선택되는 클러스터의 개수는 증가하게 된다. 파라미터(λ)는 실행 속도와 최적성의 트레이드-오프 관계를 고려하여 미리 설정될 수 있다.As the parameter λ increases, the non-zero sparsity of the sparse code c increases, so among the W values of the sparse code c, the number of elements having a value of 0 increases. In this case, the number of clusters selected from the W clusters decreases. Accordingly, the allocation speed between the multiple workers and the multiple tasks increases, but the amount of information to be lost also increases, so the optimality decreases. Conversely, when the parameter λ becomes smaller, the non-zero sparsity of the sparse code c decreases, and among the W values of the sparse code c, elements having a value of 0 decrease. In this case, the number of clusters selected from the W clusters increases. The parameter λ may be set in advance in consideration of a trade-off relationship between execution speed and optimality.
스파스 코드(c)를 구하기 위한 목적 함수()에서, 첫 번째 항은 데이터-일관성 촉진항(Data-Consistency-promoting term)으로서, 사전 행렬(D) 내의 클러스터 벡터들(D1, ... , DW) 중에서 태스크 벡터(B)에 최적 적합(optimal fit)한 최적의 클러스터 벡터들을 선택하도록 촉진한다. 두 번째 항은 희소성 촉진항(Sparsity-promoting term)으로서, 스파스 코드(c)의 비제로(non-zero) 요소의 개수를 작게 하는 클러스터 벡터들을 선택하도록 촉진한다. 파라미터(λ)는 비제로(non-zero) 요소의 희소성의 정도를 결정할 수 있다. 스파스 코드(c)의 비제로 요소가 적을수록, 적은 수의 클러스터 벡터들이 최종적으로 선택될 것이며, 이는 이후 MIP 스테이지(S200)에서 계산복잡도를 낮출 것이다. 그러나, 비제로 요소의 희소성이 커질수록, 즉, 프루닝의 정도가 커질수록, 비최적성(sub-optimality)도 커지는 트레이드 오프 문제가 발생한다.The objective function to find the sparse code (c) ( ), the first term is a data-consistency-promoting term, which is optimal for the task vector (B) among the cluster vectors (D 1 , ..., D W) in the dictionary matrix (D). Facilitates the selection of optimal fit cluster vectors. The second term is a sparsity-promoting term, which promotes selection of cluster vectors that reduce the number of non-zero elements of the sparse code (c). The parameter λ may determine the degree of sparsity of a non-zero element. As the number of non-zero elements of the sparse code c decreases, a small number of cluster vectors will be finally selected, which will lower the computational complexity in the MIP stage S200 later. However, as the scarcity of the non-zero element increases, that is, the degree of pruning increases, a trade-off problem arises in which the sub-optimality also increases.
사전 행렬(D)과 스파스 코드(c)에 기초하여 W개의 클러스터 중에서 적어도 하나의 클러스터가 선택될 수 있다(S150). 일 예에 따라서, 스파스 코드(c)의 제1 내지 제W 값들은 0 또는 1일 수 있다. 이 경우, 단계(S15)에서 선택되는 클러스터는 선택 클러스터로 지칭된다. 선택 클러스터는 사전 행렬(D)과 스파스 코드(c)의 곱, 즉, D×c에 의해 결정될 수 있다. 사전 행렬(D)에 포함되는 제1 내지 제W 클러스터 벡터들(D1, ... , DW) 중에서, 스파스 코드(c)의 제1 내지 제W 값들 중 1인 값에 대응하는 클러스터 벡터들에 해당하는 클러스터들이 선택 클러스터로 선택될 수 있다. 선택 클러스터의 개수는 J개인 것으로 가정한다. J는 W보다 작은 자연수이다.At least one of the W clusters may be selected based on the dictionary matrix D and the sparse code c (S150). According to an example, the first to Wth values of the sparse code c may be 0 or 1. In this case, the cluster selected in step S15 is referred to as a selection cluster. The selection cluster may be determined by the product of the dictionary matrix (D) and the sparse code (c), that is, D×c. Among the first to Wth cluster vectors D 1 , ..., D W included in the dictionary matrix D, a cluster corresponding to a value that is one of the first to Wth values of the sparse code c Clusters corresponding to vectors may be selected as selection clusters. It is assumed that the number of selection clusters is J. J is a natural number less than W.
다른 예에 따라서, 스파스 코드(c)의 제1 내지 제W 값들 각각은 0 이상 1 이하의 실수 값일 수 있다. 이 경우, 스파크 코드(c)의 제1 내지 제W 값들은 미리 설정된 기준치와 비교될 수 있다. 미리 설정된 기준치는 0.5일 수 있다. 미리 설정된 기준치는 예컨대 0.3일 수 있다. 미리 설정된 기준치는 파라미터(λ)와 유사하게, 비제로(non-zero) 요소의 희소성의 정도를 결정할 수 있다. 미리 설정된 기준치의 예시적인 수치는 본 발명을 한정하지 않는다. 스파스 코드(c)의 제1 내지 제W 값들 중에서 미리 설정된 기준치보다 작은 값들은 0으로 결정되고, 미리 설정된 기준치 이상인 값들은 1로 결정될 수 있다. 이러한 과정을 통해 스파스 코드(c)는 수정 스파스 코드(rc)로 변형될 수 있다. 수정 스파스 코드(rc)의 제1 내지 제W 값들 각각은 0 또는 1이다.According to another example, each of the first to Wth values of the sparse code c may be a real value of 0 or more and 1 or less. In this case, the first to Wth values of the spark code c may be compared with a preset reference value. The preset reference value may be 0.5. The preset reference value may be, for example, 0.3. Similar to the parameter λ, the preset reference value may determine the degree of sparsity of the non-zero element. Exemplary numerical values of the preset reference values do not limit the present invention. Among the first to Wth values of the sparse code c, values smaller than a preset reference value may be determined as 0, and values greater than the preset reference value may be determined as 1. Through this process, the sparse code c can be transformed into a modified sparse code rc. Each of the first to Wth values of the modified sparse code rc is 0 or 1.
선택 클러스터는 사전 행렬(D)과 수정 스파스 코드(rc)의 곱, 즉, D×rc에 의해 결정될 수 있다. 사전 행렬(D)에 포함되는 제1 내지 제W 클러스터 벡터들(D1, ... , DW) 중에서, 수정 스파스 코드(rc)의 제1 내지 제W 값들 중 1인 값에 대응하는 클러스터 벡터들에 해당하는 클러스터들이 선택 클러스터로 선택될 수 있다. 선택 클러스터는 J개인 것으로 가정한다. J는 W보다 작은 자연수이다.The selection cluster may be determined by the product of the dictionary matrix D and the modified sparse code rc, that is, D×rc. Among the first to Wth cluster vectors (D 1 , ..., D W ) included in the dictionary matrix D, a value corresponding to one of the first to Wth values of the modified sparse code rc Clusters corresponding to cluster vectors may be selected as selection clusters. It is assumed that the selection cluster is J. J is a natural number less than W.
도 2에 도시되는 프루닝 스테이지 단계들이 수행됨으로써, W개의 클러스터에 포함되는 워커들 중에서 J개의 선택 클러스터에 포함되는 워커들만 남게 되므로, MIP 문제의 크기가 감소되며, 계산복잡도가 감소하게 된다.As the pruning stage steps shown in FIG. 2 are performed, only the workers included in the J selection clusters remain among the workers included in the W clusters, thereby reducing the size of the MIP problem and reducing the computational complexity.
다시 도 1을 참조하면, MIP 스테이지(S200)에서, 복수의 태스크 각각에 J개의 선택 클러스터에 포함되는 워커들이 할당될 수 있다. 프루닝 스테이지(S100)에서 산출되는 스파스 코드(c) 통해 비제로(non-zero) 요소에 해당하는 클러스터들이 선택된다. MIP 스테이지(S200)에서는 프루닝 스테이지(S100)에서 선택된 선택 클러스터들에 포함된 워커들만 MIP 문제에 포함시킴으로써, 문제의 크기가 줄어들게 되고, MIP 계산의 복잡도가 감소될 수 있다.Referring back to FIG. 1, in the MIP stage S200, workers included in J selection clusters may be allocated to each of a plurality of tasks. Clusters corresponding to non-zero elements are selected through the sparse code c calculated in the pruning stage S100. In the MIP stage S200, only workers included in the selection clusters selected in the pruning stage S100 are included in the MIP problem, thereby reducing the size of the problem and reducing the complexity of MIP calculation.
복수의 태스크 각각에 J개의 클러스터에 포함되는 워커들을 할당하기 위해서, 복수의 태스크들의 개수가 획득될 수 있다. 태스크들의 개수는 K개라고 가정하며, K개의 태스크들은 제1 내지 제K 태스크들이다.In order to allocate workers included in the J clusters to each of the plurality of tasks, the number of the plurality of tasks may be obtained. It is assumed that the number of tasks is K, and the K tasks are first to Kth tasks.
제1 내지 제K 태스크들 각각과 J개의 클러스터에 포함되는 워커들 각각 간의 비용값들(cvjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})이 획득될 수 있다. 비용값(cvjk)은 제1 내지 제K 태스크들 중에서 제k 태스크에 제1 내지 제J 클러스터들 중 제j 클러스터에 포함되는 워커들 중 하나를 할당하는데 소요되는 비용을 의미한다. 여기서, j는 1 이상 J 이하의 자연수이고, k는 1 이상 K 이하의 자연수이다. 제j 클러스터에 복수의 워커들이 포함되더라도, 제j 클러스터에 포함되는 워커들 사이에는 비용값(cvjk)의 차이가 없다. Cost values (cv jk ) between each of the first to Kth tasks and each of the workers included in the J clusters (j ∈ {1, ..., J}, k ∈ {1, ..., K} ) Can be obtained. The cost value cv jk refers to a cost required to allocate one of the workers included in the jth cluster among the first to Jth clusters to the kth task among the first to Kth tasks. Here, j is a natural number of 1 or more and J or less, and k is a natural number of 1 or more and K or less. Even if a plurality of workers are included in the j th cluster, there is no difference in cost value (cv jk) between workers included in the j th cluster.
일 예에 따르면, 제j 클러스터의 위치를 pj (pj ∈ 3)라고 하고, 제k 태스크의 위치를 pk (pk ∈ 3)라고 하면, 제k 태스크를 제j 클러스터에 포함되는 하나의 워커를 할당하는 비용값(cvjk)은 와 같이 유클리디안 거리의 제곱 값으로 정의될 수 있다. 그러나, 이는 예시적이며, 주어진 조건, 상황 등에 따라 비용값(cvjk)은 다르게 정의될 수 있다.According to an example, the location of the j th cluster is p j (p j ∈ 3 ), and the location of the kth task is p k (p k ∈ 3 ), the cost value (cv jk ) for allocating one worker included in the jth cluster for the kth task is It can be defined as the squared value of the Euclidean distance. However, this is exemplary, and the cost value cv jk may be defined differently according to a given condition, situation, and the like.
비용값들(cvjk)을 적용한 정수계획법(MIP) 알고리즘을 이용하여, K개의 태스크 각각에 J개의 클러스터에 포함되는 워커들을 할당한 할당 결과(x)가 산출될 수 있다. 할당 결과(x)는 각각 0 또는 1의 값을 갖는 (J×K)개의 원소들(xjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 포함할 수 있다. 할당 결과(x)의 원소(xjk)의 값이 1인 경우, 제k 태스크에 제j 클러스터에 포함되는 하나의 워커가 할당된다는 것을 의미하고, 할당 결과(x)의 원소(xjk)의 값이 0인 경우, 제k 태스크에 제j 클러스터에 포함되는 워커가 할당되지 않는다는 것을 의미한다.Using an integer programming (MIP) algorithm to which cost values cv jk are applied, an allocation result (x) of allocating workers included in J clusters to each of K tasks may be calculated. The assignment result (x) is (J×K) elements (x jk ) each having a value of 0 or 1 (j ∈ {1, ..., J}, k ∈ {1, ..., K} ) Can be included. If the value of the element (x jk ) of the assignment result (x) is 1, it means that one worker included in the j-th cluster is assigned to the k-th task, and the element (x jk ) of the assignment result (x) is If the value is 0, it means that workers included in the jth cluster are not allocated to the kth task.
K개의 태스크 각각에 J개의 클러스터에 포함되는 워커들을 할당한 할당 결과(x)가 산출하기 위해, 비용값들(cvjk)을 정수계획법(MIP) 알고리즘에 적용하면, 와 같이 정식화(Formulation)할 수 있다. 이때, 제j 클러스터에 포함되는 워커들의 개수를 초과하여 태스크들에 할당될 수 없으므로, 원소들(xjk)에 대한 의 값이 제j 클러스터에 포함되는 워커들의 개수 이하이어야 한다. 또한, 태스크들 각각에 하나의 워커가 할당되어야 할 경우, 원소들(xjk)에 대한 의 값이 1이어야 한다. 다른 예에 따라서, 태스크들 각각에 예컨대 2개 이하의 워커가 할당되는 것이 허용되는 조건이라면, 원소들(xjk)에 대한 의 값이 2이하라는 조건이 만족하도록 변형될 수도 있다.In order to calculate the allocation result (x) of allocating workers included in J clusters to each of K tasks, applying the cost values (cv jk ) to the integer programming (MIP) algorithm, It can be formulated like this. In this case, since the number of workers included in the j th cluster cannot be exceeded and cannot be allocated to tasks, the elements (x jk ) are The value of must be less than or equal to the number of workers included in the j th cluster. In the case to be a single worker assigned to the task, respectively, to the elements (x jk) Must have a value of 1. According to another example, if it is a condition that each of the tasks is allowed to be assigned, for example, two or less workers, then for the elements (x jk ) It may be modified to satisfy the condition that the value of is 2 or less.
도 4는 본 발명에 따라 태스크들에 클러스터들에 포함되는 워커가 할당되는 예가 도시된다. x23=1은 제2 클러스터에 포함된 하나의 워커가 제3 태스크에 할당된다는 것을 의미한다. 또한, Capacity0 = 3은 제0 클러스터에 포함된 워커들이 3개라는 것을 의미하고, Capacity1 = 5은 제1 클러스터에 포함된 워커들이 5개라는 것을 의미한다.4 illustrates an example in which workers included in clusters are allocated to tasks according to the present invention. x 23 =1 means that one worker included in the second cluster is assigned to the third task. In addition, Capacity 0 = 3 means that there are 3 workers included in the 0th cluster, and Capacity 1 = 5 means that there are 5 workers included in the first cluster.
도 5는 본 발명의 일 실시예에 따른 태스크 할당 장치의 구성 및 동작을 설명하기 위한 도면이다.5 is a view for explaining the configuration and operation of a task assignment device according to an embodiment of the present invention.
일 실시예에서 태스크 할당 장치(100)는 메모리(110), 프로세서(120), 통신 모듈(130) 및 입출력 인터페이스(140)를 포함할 수 있다. In an embodiment, the
메모리(110)는 컴퓨터에서 판독 가능한 기록 매체로서, RAM(random access memory), ROM(read only memory) 및 디스크 드라이브와 같은 비소멸성 대용량 기록장치(permanent mass storage device)를 포함할 수 있다. 또한, 메모리(110)에는 태스크 할당 장치(100)를 제어하기 위한 프로그램 코드가 일시적 또는 영구적으로 저장될 수 있다. 메모리(110)에는 워커들과 클러스터들에 관한 정보, 예컨대, 클러스터들의 개수 및 위치, 클러스터들 각각에 포함되는 워커들의 개수, 워커들의 속성, 클러스터들의 속성 등과 같은 정보가 일시적 또는 영구적으로 저장될 수 있다. 또한, 메모리(110)에는 태스크의 속성에 관한 정보가 일시적으로 저장될 수 있다.The
프로세서(120)는 기본적인 산술, 로직 및 입출력 연산을 수행함으로써, 컴퓨터 프로그램의 명령을 처리하도록 구성될 수 있다. 명령은 메모리(110) 또는 통신 모듈(130)에 의해 프로세서(120)로 제공될 수 있다. 예를 들어 프로세서(120)는 메모리(110)와 같은 기록 장치에 저장된 프로그램 코드에 따라 수신되는 명령을 실행하도록 구성될 수 있다. 일 실시예에서 태스크 할당 장치(100)의 프로세서(120)는 복수의 태스크를 투영하여 태스크 벡터(B)를 생성하고, 각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하고, 상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하고, 상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하고, 상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하고, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하도록 구성될 수 있다.The
통신 모듈(130)은 네트워크를 통해 외부 서버와 통신하기 위한 기능을 제공할 수 있다. 일례로, 태스크 할당 장치(100)의 프로세서(120)가 메모리(110)와 같은 기록 장치에 저장된 프로그램 코드에 따라 생성한 요청이 통신 모듈(130)의 제어에 따라 네트워크를 통해 외부 서버로 전달될 수 있다. 역으로, 외부 서버의 프로세서의 제어에 따라 제공되는 제어 신호나 명령, 컨텐츠, 파일 등이 네트워크를 거쳐 통신 모듈(130)을 통해 태스크 할당 장치(100)로 수신될 수 있다. 예를 들어 통신 모듈(130)을 통해 수신된 외부 서버의 제어 신호나 명령 등은 프로세서(120)나 메모리(110)로 전달될 수 있고, 컨텐츠나 파일 등은 태스크 할당 장치(100)가 더 포함할 수 있는 저장 매체로 저장될 수 있다.The
일 예에 따르면, 태스크 할당 장치(100)의 프로세서(120)는 통신 모듈(130)을 통해 태스크들의 속성에 관한 정보 및 태스크들의 개수 및 위치 등에 관한 정보를 수신할 수 있다. 통신 방식은 제한되지 않으며, 네트워크가 포함할 수 있는 통신망(일례로, 이동통신망, 유선 인터넷, 무선 인터넷, 방송망)을 활용하는 통신 방식뿐만 아니라 기기들간의 근거리 무선 통신 역시 포함될 수 있다. 예를 들어, 네트워크는, PAN(personal area network), LAN(local area network), CAN(campus area network), MAN(metropolitan area network), WAN(wide area network), BBN(broadband network), 인터넷 등의 네트워크 중 하나 이상의 임의의 네트워크를 포함할 수 있다. 또한, 네트워크는 버스 네트워크, 스타 네트워크, 링 네트워크, 메쉬 네트워크, 스타-버스 네트워크, 트리 또는 계층적(hierarchical) 네트워크 등을 포함하는 네트워크 토폴로지 중 임의의 하나 이상을 포함할 수 있으나, 이에 제한되지 않는다.According to an example, the
통신 모듈(130)은 외부 서버와 무선 네트워크를 통해 통신할 수 있다. 통신 방식은 제한되지 않지만, 네트워크는 근거리 무선통신망일 수 있다. 예를 들어, 네트워크는 블루투스(Bluetooth), BLE(Bluetooth Low Energy), Wifi 통신망일 수 있다. The
입출력 인터페이스(140)는 입출력 장치와의 인터페이스를 위한 수단일 수 있다. 예를 들어, 입력 장치는 키보드 또는 마우스 등의 장치를, 그리고 출력 장치는 어플리케이션의 통신 세션을 표시하기 위한 디스플레이와 같은 장치를 포함할 수 있다. 다른 예로 입출력 인터페이스(140)는 터치스크린과 같이 입력과 출력을 위한 기능이 하나로 통합된 장치와의 인터페이스를 위한 수단일 수도 있다. 예를 들면, 태스크 할당 장치(100)의 프로세서(120)는 메모리(110)로부터 로딩된 컴퓨터 프로그램의 명령을 처리하여 생성한 데이터 처리 결과를 입출력 인터페이스(140)를 통해 디스플레이에 표시할 수 있다.The input/
프로세서(120)는 도 1 및 도 2를 참조로 앞에서 설명한 태스크 할당 방법을 수행하도록 태스크 할당 장치(100)를 제어할 수 있다. 예를 들어, 프로세서(120) 및 프로세서(120)의 구성요소들은 메모리(110)가 포함하는 운영체제의 코드와 적어도 하나의 프로그램의 코드에 따른 명령(instruction)을 실행하도록 구현될 수 있다. 여기서, 프로세서(120)의 구성요소들은 태스크 할당 장치(100)에 저장된 프로그램 코드가 제공하는 명령에 따라 프로세서(120)에 의해 수행되는 프로세서(120)의 서로 다른 기능들(different functions)의 표현들일 수 있다.The
본 명세서에서 설명되는 다양한 실시예들은 예시적이며, 서로 구별되어 독립적으로 실시되어야 하는 것은 아니다. 본 명세서에서 설명된 실시예들은 서로 조합된 형태로 실시될 수 있다.The various embodiments described in the present specification are exemplary, and are not to be performed independently as they are distinguished from each other. The embodiments described in the present specification may be implemented in combination with each other.
이상 설명된 다양한 실시예들은 컴퓨터 상에서 다양한 구성요소를 통하여 실행될 수 있는 컴퓨터 프로그램의 형태로 구현될 수 있으며, 이와 같은 컴퓨터 프로그램은 컴퓨터로 판독 가능한 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수개 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 애플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.The various embodiments described above may be implemented in the form of a computer program that can be executed through various components on a computer, and such a computer program may be recorded in a computer-readable medium. In this case, the medium may be one that continuously stores a program executable by a computer, or temporarily stores a program for execution or download. In addition, the medium may be a variety of recording means or storage means in a form in which a single piece of hardware or several pieces of hardware are combined. The medium is not limited to a medium directly connected to a computer system, but may be distributed on a network. Examples of media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical recording media such as CD-ROMs and DVDs, magneto-optical media such as floptical disks, And there may be ones configured to store program instructions, including ROM, RAM, flash memory, and the like. In addition, examples of other media include an app store that distributes applications, a site that supplies or distributes various software, and a recording medium or a storage medium managed by a server.
본 명세서에서, "부", "모듈" 등은 프로세서 또는 회로와 같은 하드웨어 구성(hardware component), 및/또는 프로세서와 같은 하드웨어 구성에 의해 실행되는 소프트웨어 구성(software component)일 수 있다. 예를 들면, "부", "모듈" 등은 소프트웨어 구성 요소들, 객체 지향 소프트웨어 구성 요소들, 클래스 구성 요소들 및 태스크 구성 요소들과 같은 구성 요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들에 의해 구현될 수 있다.In the present specification, a "unit", a "module", etc. may be a hardware component such as a processor or a circuit, and/or a software component executed by a hardware configuration such as a processor. For example, "unit", "module", etc. are components such as software components, object-oriented software components, class components and task components, processes, functions, properties, It can be implemented by procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays and variables.
전술한 본 발명의 설명은 예시를 위한 것이며, 본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명의 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.The above description of the present invention is for illustrative purposes only, and those of ordinary skill in the art to which the present invention pertains will be able to understand that other specific forms can be easily modified without changing the technical spirit or essential features of the present invention. will be. Therefore, it should be understood that the embodiments described above are illustrative in all respects and are not limiting. For example, each component described as a single type may be implemented in a distributed manner, and similarly, components described as being distributed may also be implemented in a combined form.
본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.The scope of the present invention is indicated by the claims to be described later rather than the detailed description, and all changes or modified forms derived from the meaning and scope of the claims and their equivalent concepts should be construed as being included in the scope of the present invention. do.
Claims (14)
복수의 태스크를 투영하여 태스크 벡터(B)를 생성하는 단계;
각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하는 단계;
상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하는 단계;
상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하는 단계;
상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하는 단계; 및
상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하는 단계를 포함하는 태스크 할당 방법.A method for assigning tasks performed by a computing device, comprising:
Generating a task vector (B) by projecting a plurality of tasks;
Generating W cluster vectors (D 1 , ..., D W) corresponding to W clusters each including at least one worker;
Generating a dictionary matrix ( D) by combining the W cluster vectors (D 1 , ..., D W );
Calculating a sparse code (c) using sparse optimization for the task vector (B) and the dictionary matrix (D);
Selecting J clusters from among the W clusters based on the dictionary matrix (D) and the sparse code (c); And
And allocating workers included in the J clusters to each of the plurality of tasks.
상기 태스크 벡터(B)는 m차원 실수 공간(B ∈ m)에서 정의되어 제1 내지 제m 원소(b1, ... , bm})의 값들을 가지고,
상기 태스크 벡터(B)의 제i 원소(bi)(i ∈ {1, ... , m})의 값은 상기 복수의 태스크들 각각의 제i 속성 값을 누적한 값인 태스크 할당 방법.The method of claim 1,
The task vector (B) is an m-dimensional real space (B ∈ m ) has values of the first to mth elements (b 1 , ..., b m }),
The value of the i-th element (b i ) (i ∈ {1, ..., m}) of the task vector B is a value obtained by accumulating the i-th attribute values of each of the plurality of tasks.
상기 W개의 클러스터 벡터(D1, ... , DW) 각각은 상기 m차원 실수 공간(D1, ... , DW ∈ m)에서 정의되고,
상기 W개의 클러스터 벡터(D1, ... , DW) 중 제w 클러스터 벡터(Dw)(w ∈ {1, ... , W})의 제i 원소(dw,i)(i ∈ {1, ... , m})의 값은 제i 속성에 대하여 상기 제w 클러스터 벡터(Dw)에 포함되는 적어도 하나의 워커가 처리할 수 있는 크기인 태스크 할당 방법.The method of claim 2,
Each of the W cluster vectors (D 1 , ..., D W ) is the m-dimensional real space (D 1 , ..., D W ∈ m ),
Of the W cluster vectors (D 1 , ..., D W ), the i-th element (d w,i )(i) of the wth cluster vector (D w )(w ∈ {1, ..., W}) The value of ∈ {1, ..., m}) is a size that can be processed by at least one worker included in the w-th cluster vector (D w) for the i-th attribute.
상기 사전 행렬(D)은 (m×W) 차원 실수 공간(D ∈ m×W)에서 정의되고 D = [D1 | D2 | ... | Dw]에 따라 생성되는 태스크 할당 방법.The method of claim 3,
The prior matrix (D) is a (m×W) dimensional real space (D ∈ m×W ) and D = [D 1 | D 2 | ... | The task assignment method generated according to D w ].
상기 스파스 코드(c)는 에 따라 산출되고, 제1 내지 제W 값들을 포함하는 태스크 할당 방법.The method of claim 1,
The sparse code (c) is The task allocation method is calculated according to the method and includes first to Wth values.
상기 스파스 코드(c)는 에 따라 산출되고, 제1 내지 제W 값들을 포함하며,
상기 파라미터(λ)는 상기 스파스 코드(c)의 비제로(non-zero) 희소성을 결정하는 태스크 할당 방법.The method of claim 1,
The sparse code (c) is It is calculated according to, and includes first to Wth values,
The parameter (λ) is a task assignment method for determining the non-zero sparsity of the sparse code (c).
상기 스파스 코드(c)의 상기 제1 내지 제W 값들 각각은 0 또는 1인 태스크 할당 방법.The method according to claim 5 or 6,
Each of the first to Wth values of the sparse code (c) is 0 or 1.
상기 J개의 클러스터는 상기 사전 행렬(D)과 상기 스파스 코드(c)의 곱(D×c)에 의해 결정되는 태스크 할당 방법.The method of claim 7,
The J clusters are determined by a product (D×c) of the dictionary matrix (D) and the sparse code (c).
상기 스파스 코드(c)의 상기 제1 내지 제W 값들 각각은 0 이상 1 이하의 실수 값인 태스크 할당 방법.The method according to claim 5 or 6,
Each of the first to Wth values of the sparse code (c) is a real value of 0 or more and 1 or less.
상기 J개의 클러스터를 선택하는 단계는,
상기 스파크 코드(c)의 상기 제1 내지 제W 값들을 미리 설정된 기준치와 비교하여, 수정 스파스 코드(rc)를 생성하는 단계로서, 상기 수정 스파스 코드(rc)의 제1 내지 제W 값들 각각은 0 또는 1인 단계; 및
상기 사전 행렬(D)에 상기 수정 스파스 코드(rc)를 곱하여 상기 J개의 클러스터를 결정하는 단계를 포함하는 태스크 할당 방법.The method of claim 9,
Selecting the J clusters,
Generating a modified sparse code rc by comparing the first to Wth values of the spark code c with a preset reference value, wherein the first to Wth values of the modified sparse code rc Each is 0 or 1; And
And determining the J clusters by multiplying the dictionary matrix (D) by the modified sparse code (rc).
상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하는 단계는,
상기 복수의 태스크들의 개수(K)를 획득하는 단계;
제1 내지 제K 태스크들 각각과 상기 J개의 클러스터에 포함되는 워커들 각각 간의 비용값들(cvjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 획득하는 단계; 및
상기 비용값들(cvjk)을 적용한 정수계획법(MIP) 알고리즘을 이용하여, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당한 할당 결과(x)를 산출하는 단계를 포함하고,
상기 할당 결과(x)는 각각 0 또는 1의 값을 갖는 (J×K)개의 원소들(xjk)(j ∈ {1, ... , J}, k ∈ {1, ... , K})을 포함하는 태스크 할당 방법.The method of claim 1,
Allocating workers included in the J clusters to each of the plurality of tasks,
Obtaining the number (K) of the plurality of tasks;
Cost values (cv jk ) between each of the first to Kth tasks and each of the workers included in the J clusters (j ∈ {1, ..., J}, k ∈ {1, ..., K }) obtaining; And
Using an integer programming (MIP) algorithm to which the cost values (cv jk ) are applied, calculating an allocation result (x) of allocating workers included in the J clusters to each of the plurality of tasks,
The assignment result (x) is (J×K) elements (x jk ) each having a value of 0 or 1 (j ∈ {1, ..., J}, k ∈ {1, ..., K }), including task assignment method.
상기 할당 결과(x)는 상기 원소들(xjk)에 대한 의 값이 상기 제j 클러스터에 포함되는 워커들의 개수 이하일 제1 조건, 및 상기 원소들(xjk)에 대한 의 값이 1일 제2 조건을 만족하도록 에 따라 산출되는 태스크 할당 방법.The method of claim 11,
The assignment result (x) is for the elements (x jk ) The first condition that the value of is less than or equal to the number of workers included in the j th cluster, and for the elements (x jk ) So that the value of satisfies the second condition on day 1 Task allocation method calculated according to.
복수의 태스크를 투영하여 태스크 벡터(B)를 생성하고, 각각 적어도 하나의 워커를 포함하는 W개의 클러스터에 대응하여 W개의 클러스터 벡터(D1, ... , DW)를 생성하고, 상기 W개의 클러스터 벡터(D1, ... , DW)를 결합하여 사전 행렬(Dictionary matrix)(D)를 생성하고, 상기 태스크 벡터(B)와 상기 사전 행렬(D)에 대하여 스파스 최적화(Sparse Optimization)를 이용하여 스파스 코드(c)를 산출하고, 상기 사전 행렬(D)과 상기 스파스 코드(c)에 기초하여, 상기 W개의 클러스터 중에서 J개의 클러스터를 선택하고, 상기 복수의 태스크 각각에 상기 J개의 클러스터에 포함되는 워커들을 할당하도록 구성되는 적어도 하나의 프로세서를 포함하는 태스크 할당 장치.
Memory; And
A task vector (B) is generated by projecting a plurality of tasks, and W cluster vectors (D 1 , ..., D W ) are generated corresponding to W clusters each including at least one worker, and the W Cluster vectors (D 1 , ..., D W ) are combined to generate a dictionary matrix (D), and sparse optimization (Sparse) for the task vector (B) and the dictionary matrix (D) Optimization) to calculate the sparse code (c), based on the dictionary matrix (D) and the sparse code (c), select J clusters from the W clusters, and each of the plurality of tasks Task assignment apparatus comprising at least one processor configured to allocate workers included in the J clusters to.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020190138910 | 2019-11-01 | ||
KR20190138910 | 2019-11-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20210053247A true KR20210053247A (en) | 2021-05-11 |
KR102411173B1 KR102411173B1 (en) | 2022-06-21 |
Family
ID=75915209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020200143895A KR102411173B1 (en) | 2019-11-01 | 2020-10-30 | Method and apparatus for assigning multiple tasks |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR102411173B1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012079225A (en) * | 2010-10-05 | 2012-04-19 | Osaka Prefecture Univ | Cooperation filtering processing method and program |
JP2017117449A (en) * | 2015-12-24 | 2017-06-29 | インテル コーポレイション | Data flow programming of computing apparatus with vector estimation-based graph partitioning |
CN109657704A (en) * | 2018-11-27 | 2019-04-19 | 福建亿榕信息技术有限公司 | A kind of coring scene characteristic extracting method based on sparse fusion |
JP2019095935A (en) * | 2017-11-20 | 2019-06-20 | ヤフー株式会社 | Learning device, learning method, learning program, and operation program |
-
2020
- 2020-10-30 KR KR1020200143895A patent/KR102411173B1/en active IP Right Grant
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012079225A (en) * | 2010-10-05 | 2012-04-19 | Osaka Prefecture Univ | Cooperation filtering processing method and program |
JP2017117449A (en) * | 2015-12-24 | 2017-06-29 | インテル コーポレイション | Data flow programming of computing apparatus with vector estimation-based graph partitioning |
JP2019095935A (en) * | 2017-11-20 | 2019-06-20 | ヤフー株式会社 | Learning device, learning method, learning program, and operation program |
CN109657704A (en) * | 2018-11-27 | 2019-04-19 | 福建亿榕信息技术有限公司 | A kind of coring scene characteristic extracting method based on sparse fusion |
Also Published As
Publication number | Publication date |
---|---|
KR102411173B1 (en) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR970005019B1 (en) | System for allocating resources and method | |
US20220027798A1 (en) | Autonomous behaviors in a multiagent adversarial scene | |
CN112731961B (en) | Path planning method, device, equipment and storage medium | |
WO2010112907A1 (en) | Assigning weapons to threats | |
CN112734239B (en) | Task planning method, device and medium based on task and resource capability attributes | |
CN113190041B (en) | Unmanned aerial vehicle cluster online target distribution method based on constraint relaxation technology | |
Johansson et al. | Real-time Allocation of Firing Units To Hostile Targets. | |
KR102411173B1 (en) | Method and apparatus for assigning multiple tasks | |
KR102286642B1 (en) | Simulator for analyzing joint opeations of theater level, and simulation method thereof | |
Wigness et al. | Efficient and resilient edge intelligence for the internet of battlefield things | |
Ye et al. | Multi-UAV task assignment based on satisficing decision algorithm | |
KR20200078318A (en) | Situation-adapted Global Pooling System and Method for Transfer Vehicles in Automated Container Terminal | |
CN112950085B (en) | Unmanned aerial vehicle cluster monitoring method, computer storage medium and electronic equipment | |
JP2006071192A (en) | Aerial defense simulation system | |
CN115222023A (en) | Neural network-based non-cooperative target control strategy identification method and system | |
CN115237097A (en) | Automatic driving simulation test method, device, computer equipment and storage medium | |
CN115033715A (en) | Interception feedback processing method based on big data analysis interception and information interception system | |
CN111817770B (en) | Relay unmanned aerial vehicle deployment method and terminal equipment | |
Wang et al. | Spatial automatic subgroup analysis for areal data with repeated measures | |
KR101988484B1 (en) | Method and apparatus for weapon assignment | |
KR102027483B1 (en) | Apparatus and method for weapon assignment and computer recordable medium storing computer program thereof | |
KR102489371B1 (en) | System and method for mananging zones engagement automatically for defending naval sheep fleet zones | |
KR102250950B1 (en) | Method and device for automatically optimizing process execution environment based on machine learning in distributed deployment environment | |
CN115016543B (en) | Unmanned aerial vehicle cluster continuous reconnaissance and obstacle avoidance method based on artificial scalar field model | |
Takano et al. | Multiagent-based ABC algorithm for autonomous rescue agent cooperation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |