KR102234129B1 - 분산 자원 할당 - Google Patents

분산 자원 할당 Download PDF

Info

Publication number
KR102234129B1
KR102234129B1 KR1020197032094A KR20197032094A KR102234129B1 KR 102234129 B1 KR102234129 B1 KR 102234129B1 KR 1020197032094 A KR1020197032094 A KR 1020197032094A KR 20197032094 A KR20197032094 A KR 20197032094A KR 102234129 B1 KR102234129 B1 KR 102234129B1
Authority
KR
South Korea
Prior art keywords
resources
solving
subproblems
users
computer
Prior art date
Application number
KR1020197032094A
Other languages
English (en)
Other versions
KR20200125894A (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 어드밴스드 뉴 테크놀로지스 씨오., 엘티디.
Publication of KR20200125894A publication Critical patent/KR20200125894A/ko
Application granted granted Critical
Publication of KR102234129B1 publication Critical patent/KR102234129B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5044Allocation 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 hardware capabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation 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/5055Allocation 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 software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/06Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
    • G06Q10/063Operations research, analysis or management
    • G06Q10/0631Resource planning, allocation, distributing or scheduling for enterprises or organisations

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Strategic Management (AREA)
  • Marketing (AREA)
  • Educational Administration (AREA)
  • Game Theory and Decision Science (AREA)
  • Mathematical Physics (AREA)
  • Development Economics (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)

Abstract

다수의 개별 솔버를 포함하는 분산 컴퓨팅 시스템을 사용하여 배낭 문제(KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀로 할당하기 위한, 컴퓨터 저장 매체 상에 인코딩된 컴퓨터 프로그램을 포함하는 방법, 시스템 및 장치가 여기에 개시된다. 방법은 KP의 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하는 단계; K 개의 이중 승수를 사용하여 KP를 N 개의 하위 문제들로 분해하는 단계로서, N 개의 하위 문제들 각각은 N 명의 사용자 중 각각의 사용자에 대응하고 대응하는 사용자에 관한 L 개의 로컬 제약 조건이 있고, N이 수십억 이상인 상기 분해 단계; N 개의 하위 문제를 풀기 위한 다수의 개별 솔버를 결정하는 단계; N 개의 하위 문제를 다수의 개별 솔버에 분배하는 단계; 및 2 회 이상의 반복을 수행함으로써 분산 컴퓨팅 시스템에 의해 KP를 푸는 단계를 포함한다.

Description

분산 자원 할당
본 명세서는 자원 할당에 관한 것이다.
배낭 문제(knapsack problems, KP)는 종종 실제(real-world) 의사 결정 프로세스에서 자원 할당 애플리케이션을 모델링하는 데 사용될 수 있다. KP의 예로는 몇가지만 예로 들자면 자산 관리, 포트폴리오 선택 및 예산 할당이 있다. 예를 들어, 장기 사용자 참여를 최적화하기 위하여 각 사용자의 알림 양을 결정하기 위하여 KP가 해결된다. 실제 자원 할당 애플리케이션은 종종 KP를 해결하여 접근하지만, 비교적 작은 규모에서만 다루기 쉽다. MDKP(Multi-dimensional Knapsack Problem), MCKP(Multi-Choice Knapsack Problem) 및 MMMP(Multi-dimensional Multi-choice Knapsack Problem)와 같은 많은 배낭 문제의 변형(variant)이 문헌에서 연구되었다. MDKP에는 여러 배낭 제약 조건(contraint)과 자원 항목(항목(item)이라고도 함)이 있으며, 이 항목이 선택될 때 여러 배낭으로부터의 자원을 소비한다. MCKP는 기존 단일 제약 조건 KP의 확장으로서, 항목이 여러 그룹으로 파티션되고 각 그룹에서 정확히 하나의 항목을 선택할 수 있다. MMKP는 MDKP와 MCKP의 조합이다.
정수 프로그래밍(integer programming, IP) 문제의 하나의 잘 알려진 특별한 경우로서, KP(바닐라 KP 및 MDKP, MCKP 및 MMKP와 같은 변형 포함)는 NP-하드(NP-hard)이다. 이러한 문제를 풀기 위하여 정확한 알고리즘과 휴리스틱 알고리즘이 모두 연구되었다. 기존 연구는 비교적 작은 규모(즉, 수천에서 수백만의 결정 변수)로 KP를 연구했다.
사용자 수가 증가함에 따라, 온라인 플랫폼 또는 서비스 제공자(예를 들어, 전자 상거래 플랫폼, 소셜 네트워크 플랫폼 및 온라인 금융 플랫폼)는 KP를 대규모로 예를 들어 수십억 이상 규모의 결정 변수로 해결해야 할 필요성이 증가하고 있다. 기존 자원 할당 솔루션은 과도한 계산 자원과 시간을 소비하므로 그러한 대규모에서 성능이 저하된다. 대규모에서 KP를 효율적으로 해결하는 기술이 바람직하다.
본 명세서는 자원 할당 기술을 설명한다. 이러한 기술에는 일반적으로 다수의 글로벌 제약 조건(global constraint)과 로컬 제약 조건(local constraint)이 적용되는 배낭 문제(KP)를 푸는 것이 포함된다. 설명된 기술은 계산 복잡성을 감소시키고 KP를 반복적인 방식으로 해결함에 있어서 수렴 속도를 향상시킬 수 있다.
본 명세서는 또한 하나 이상의 프로세서에 결합되고 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서가 본 명세서에 제공된 방법의 실시 예에 따라 동작들을 수행하게 하는 명령어들을 저장한 하나 이상의 비-일시적 컴퓨터 판독 가능 저장 매체를 제공한다.
본 명세서는 본 명세서에 제공된 방법을 구현하기 위한 시스템을 추가로 제공한다. 시스템은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 의해 실행될 때 하나 이상의 프로세서가 본 명세서에 제공된 방법의 실시 예에 따라 동작들을 수행하게 하는 명령어들을 저장한, 하나 이상의 프로세서에 연결된 컴퓨터 판독 가능 저장 매체를 포함한다.
본 명세서에 따른 방법은 본 명세서에 설명된 양태 및 특징의 임의의 조합을 포함할 수 있다는 것이 이해된다. 즉, 본 명세서에 따른 방법은 본 명세서에 구체적으로 설명된 양태 및 특징의 조합으로 제한되지 않으며, 제공된 양태 및 특징의 임의의 조합을 포함한다.
본 명세서의 하나 이상의 실시 예의 세부 사항은 첨부 도면 및 이하의 설명에 기재되어 있다. 본 명세서의 다른 특징 및 장점은 상세한 설명 및 도면 및 청구범위로부터 명백할 것이다.
도 1은 본 명세서의 실시 예에 따른, 정보 흐름으로 배낭 문제(KP)를 풀기 위한 분산 컴퓨팅 시스템의 예를 도시한 도면이다.
도 2는 본 명세서의 실시 예에 따른 배낭 문제를 풀기 위한 맵리듀스(MapReduce) 알고리즘(알고리즘 1이라고도 함)의 일례의 의사 코드이다.
도 3은 본 명세서의 실시 예에 따라 (15) 내지 (17)의 로컬 제약 조건에 대한 자원 인덱스 집합의 DAG(directed acyclic graph)의 예를 각각 나타내는 도면이다.
도 4는 본 명세서의 실시 예에 따라 계층적 구조의 제약 조건을 가지는 정수 프로그래밍(IP) 문제를 풀기 위한 그리디(greedy) 알고리즘(알고리즘 2라고도 함)의 예를 나타내는 의사 코드이다.
도 5는 본 명세서의 실시 예에 따른, 사용자 i에 대한 이중 승수(dual multiplier)(λ3)의 후보들의 예들을 도시한 플롯이다.
도 6은 본 명세서의 실시 예에 따른, 후보 이중 승수를 계산하기 위한 알고리즘(또한 알고리즘 3이라고도 함)의 예의 의사 코드이다.
도 7은 본 명세서의 실시 예에 따라, KP를 풀기 위한 맵리듀스 모델을 가진 동기 좌표 하강(synchronous coordinate descent, SCD) 알고리즘(또한 알고리즘 4라고도 함)의 일 예의 의사 코드이다.
도 8은 본 명세서의 실시 예에 따라, 각 사용자에 대한 최대 수(Q로 표시)의 자원을 선택하기 위한 맵 함수(알고리즘 5라고 함)의 예를 나타내는 의사 코드이다.
도 9는 본 명세서의 실시 예에 따른, 샘플링 알고리즘(알고리즘 6으로도 함)에 의한 사전 해결(pre-solving)의 예의 의사 코드이다.
도 10은 본 명세서의 실시 예에 따라 도 7의 설명된 알고리즘을 사용하는 KP 솔루션과 선형 프로그래밍(linear programming, LP) 완화(relaxation)에 의해 계산된 상한(upper bound) 사이의 최적성 갭(optimality gap)의 예를 도시하는 플롯이다.
도 11은 본 명세서의 실시 예에 따른, 사전 해결의 유무에 따른 SCD 반복(iteration) 횟수의 예를 나타내는 표(표 1이라고도 함)이다.
도 12는 본 명세서의 실시 예에 따른, 대규모 테스트 데이터 집합들에 대하여 SCD 알고리즘을 사용하는 분산 시스템의 실험 결과들의 예들을 도시한 표(표 2라고도 함)이다.
도 13은 본 명세서의 실시 예에 따른, KP를 풀기 위한 Map 함수(710) 및 Reduce 함수(720)의 실행 결과의 예를 도시하는 플롯이다.
도 14a는 본 명세서의 실시 예에 따라, 배낭 문제(KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀(예를 들어, K 개의 배낭)로 자원 할당하는 프로세스의 예의 흐름도이다.
도 14b는 본 명세서의 실시 예에 따른, L 개의 제약 조건이 있는 M 개의 자원의 자원 할당을 수행하기 위한 프로세스의 예의 흐름도이다.
도 14c는 본 명세서의 실시 예에 따라, 배낭 문제(KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀(예를 들어, K 개의 배낭)로 자원 할당하는 프로세스의 다른 예의 흐름도이다.
도 15는 본 명세서의 실시 예에 따른 설명된 알고리즘, 방법, 함수, 프로세스, 흐름 및 프로시져와 관련된 계산 기능을 제공하기 위하여 사용되는 컴퓨터 구현 시스템의 예를 나타내는 블록도를 도시한다.
도 16a-16c는 본 명세서의 실시 예에 따른 장치의 모듈들의 예의 도면이다.
다양한 도면에서 유사한 참조 번호 및 명칭은 유사한 요소를 나타낸다.
본 명세서는 자원 할당 기술을 설명한다. 이러한 기술에는 일반적으로 동기 좌표 하강(SCD)를 통해 확장 가능한 분산 패러다임에서 대규모 배낭 문제(KP)를 푸는 것이 포함된다. 일부 실시 예에서, 설명된 기술들은 하나가 넘는 글로벌 제약 조건을 가진 수십억 이상의 규모에서 KP를 푸는 것을 도울 수 있다. 일부 실시 예에서, 설명된 기술은 솔루션의 최적성을 해치거나 제약 조건 요건을 손상시키지 않으면서 이러한 대규모 KP를 푸는 것을 도울 수 있다. 일부 실시 예에서, 기술은 상용(off-the-shelf) 분산 컴퓨팅 프레임워크(예를 들어, MPI, Hadoop, Spark)로 구현될 수 있다. 일부 실시 예에서, 이들 기술들은 메모리 공간을 절약하고, 계산 복잡성을 감소시키면서, KP의 해결 속도를 향상시킬 수 있다. 일부 실시 예에서, 이들 기술은 전례 없는 규모로 자원 할당 문제를 해결할 수 있는 반면(예를 들어, 수십억 개의 결정 및 제약 조건 변수를 갖는 KP는 몇 시간 내에(예를 들어, O(1) 시간 정도 내에) 풀릴 수 있음), 기존 기술의 경우 이러한 대규모에서 KP를 풀기 위하여 계산적으로 실행 불가능하거나 상당히 많은 시간이 소요될 수 있다(예를 들어, 수십억 개의 결정 및 제약 조건 변수를 가진 KP는 몇 시간 또는 며칠 내에 기존 기술로 해결할 수 없음).
배낭 문제(KP)는 실제 의사 결정 프로세스에서 매우 흔하다. KP의 예는 몇 가지 예를 들면 자산 관리, 포트폴리오 선택 및 예산 할당을 포함한다. 예를 들어, 금융 산업 환경의 자원 할당 시나리오에서 종종 사용자 별로 결정이 내려지는 반면, 사용자 수는 예를 들어 10 억 명 정도의 활성 사용자만큼 많을 수 있다.
일례로, 온라인 플랫폼은 사용자에게 지불에서 은행, 대출, 자산 관리, 보험 등에 이르는 광범위한 금융 상품 및 서비스를 제공할 수 있다. 다양한 재정 자원이 사용자들 사이에 매일 할당될 수 있다. 자원은 예를 들어 사용자/사용자 그룹 간에 분배될 재정 예산(예를 들어, 대출, 마케팅 프로모션, 광고 지출, 자산 포트폴리오) 또는 상이한 비즈니스 채널(예를 들어, ANT-CREDIT-PAY로 알려진 HUABEI, ANT-CASH-NOW로 알려진 JIEBEI, ANT-MONEY-MARKET-FUND로 알려진 YUEBAO) 간에 할당되어야 하는 사용자 트래픽(예를 들어, 인상(impressions), 클릭, 체류 시간(dwell time))과 같은 비-금전적 자원을 포함할 수 있다.
자원 할당 문제는 일련의 제약 조건을 준수(respect)하면서 마케팅 캠페인의 경우에 예상되는 사용자 전환과 같은 공동 목표를 최적화하기 위하여 KP로서 표현될 수 있다. 일부 실시 예에서, 제약 조건은 글로벌 제약 조건 및 로컬 제약 조건으로 분류될 수 있다.
글로벌 제약 조건은 전형적으로 다수의 사용자를 포함하는 글로벌 레벨에 대한 자원 제약 조건을 포함한다. 예를 들어, 마케팅 캠페인에는 종종 글로벌 예산 한도가 있으며 각 사용자 집단(cohort)(예를 들어, 성별, 지역 또는 사용자 라이프 사이클 스테이지) 또는 각 제품 채널에 대하여 사용 가능하거나 허용 가능한 최대 자원 양이 있다.
로컬 제약 조건에는 개별 사용자 또는 소규모 사용자 그룹에게만 적용되는 제한 사항이 포함된다. 본 명세서 전체에서, 용어 "사용자" 및 "그룹"은 상호교환적으로 사용된다. 예를 들어, 사용자는 하나 이상의 개별 사용자를 포함하는 사용자 그룹을 포함할 수 있다. 일부 실시 예에서, 로컬 제약 조건은 사실상 희박하다. 일부 실시 예에서, 로컬 제약 조건은 효율적인 솔버(solver)를 설계하기 위하여 이용될 수 있는 계층적 구조를 나타낸다.
일부 실시 예에서, 10억 규모 KP의 경우, 결정 변수 및 로컬 제약 조건은 모두 수십억의 레벨 또는 정도(order)인 반면(즉, 자릿수(order of magnitude)가 9, O(109)로 표시되거나 그보다 큼), 글로벌 제약 조건의 크기는 종종 예를 들어, O(1) 내지 O(100)의 정도(order)로 작다(즉, 자릿수는 1 내지 2임). KP를 풀기 위한 기존 최적화 방법은 훨씬 작은 규모에서만 다루기 쉽다.
본 명세서는 10억 규모에서 실제 KP를 푸는 기술을 설명한다. 맵리듀스 컴퓨팅 모델을 예로서 사용하여 본 명세서에서는 이중 문제(dual problem)의 분해성(decomposability)을 활용하여 KP를 풀기 위한 분산 프레임워크를 설명한다. 수동 하이퍼-파라미터 튜닝이 필요하고 제약 조건 위배가 발생하기 쉬우므로 잘 작동하지 않는 기존의 이중 하강(dual descent) 알고리즘 대신, 본 명세서에서는 이러한 문제로 시달리지 않는 동기 좌표 하강(SCD) 알고리즘을 설명한다.
또한, 본 명세서는 계층적 구조를 갖는 제약 조건이 있는 정수 프로그래밍(IP) 문제를 풀기 위한 솔버(solver)를 기술한다. CPLEX 또는 GUROBI와 같은 상용 IP 솔버와 달리, 솔버는 그리디 알고리즘을 사용하여 다항식 시간의 계층적 구조 제약 조건에 따라 IP 문제를 풀 수 있다. 설명된 IP 솔버는 계층적 그리디 IP 솔버라고 할 수 있다. 계층적 그리디 IP 솔버는 예를 들어 로컬 제약 조건의 계층적 구조를 이용하여 KP의 IP 하위 문제를 풂으로써 KP를 풀기 위한 분산 프레임워크에서 사용될 수 있다.
제어 및 실제 설정으로 수행된 시뮬레이션 결과는 분산 SCD 알고리즘이 KP를 거의 최적으로 해결하고 수십억 개의 결정 변수 및 제약 조건으로 멋지게 확장할 수 있음을 보여준다. 또한, 분산 환경에서 알고리즘의 속도를 높이는 기술이 설명되어 있다.
다음과 같은 일반화된 KP의 변형을 고려할 수 있다.
Figure 112019121370985-pct00001
(1)
(s, t)에 따라
Figure 112019121370985-pct00002
(2)
Figure 112019121370985-pct00003
(3)
Figure 112019121370985-pct00004
(4)
여기서 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건을 준수하는 N 명의 사용자 집합 사이에 M 개의 자원(또는 항목) 집합이 할당되어야 한다. 사용자 i에 대하여 자원 j가 선택된 경우, 즉 xi,j = 1이면, pi,j의 보상(reward)(이익, 유틸리티 또는 이득이라고도 함)이 얻어지고 각각의 k = 1,...K에 대하여 자원량 bi,j,k는 k 번째 배낭에 대하여 소비된다. 입력 파라미터 Bk 및 Cl은 확실히 양수이고(즉, Bk > 0 및 Cl > 0), pi,j 및 bi,j,k는 음수가 아니다. 글로벌 제약 조건(2)은 각 배낭에 할당되는 자원을 제한하는 반면, 로컬 제약 조건(3)은 사용자 별 선택을 제한한다. 희소한(sparse) 사용자 집합에 대한 로컬 제약 조건이 사용자 별 제약 조건의 집합로 분해될 수 있기 때문에, 일반성을 잃지 않으면서, 로컬 제약 조건은 사용자마다에 기초한다.
비용 텐서(cost tensor)가 조밀해지도록 비용 계수 ci,j,l에 대하여 0이 적절히 채워지면, 로컬 제약 조건 (3)이 사라지고 모든 제약 조건이 글로벌이 될 것이다. 이러한 의미에서, 공식(formulation)은 다차원 배낭 문제(multi-dimensional knapsack problems, MDKP)의 일반화된 변형이다.
공식에서, 이진 결정 변수, 즉 xi,j ∈ {0, 1}만 고려되지만, 본 명세서에 기술된 모든 기술은 범주형(categorical)(즉, 음이 아닌 정수) 결정 변수로 쉽게 확장될 수 있다는 것을 유의해야 한다. 설명된 기술은 범주형 변수를 지원한다.
본 명세서의 나머지에 대하여 다음과 같은 추가 표기법을 정의한다.
pi: 사용자 i에 대한 보상 벡터,
bi: 사용자 i에 대한 글로벌 제약 조건 계수 행렬,
ci: 사용자 i에 대한 로컬 제약 조건 계수 행렬,
xi: 사용자 i에 대한 결정 변수 벡터,
x: 모든 사용자에 대한 결정 변수 행렬.
글로벌 제약 조건의 수가 로컬 제약 조건의 수보다 훨씬 적다고 주어지면, 이중 승수 집합 λ = {λk, k = 1, 2,…, K}가 글로벌 제약 조건에 대하여 도입되었다. 이중 문제 변환을 위한 라그랑지안(Lagrangian) 기법에 따라 x가 최대화되도록 쌍 (x, λ)이 검색된다.
Figure 112019121370985-pct00005
(5)
Figure 112019121370985-pct00006
(6)
Figure 112019121370985-pct00007
(7)
그리고 x 및 λ가 최적성 조건을 공동으로 만족하도록 쌍 (x, λ)이 검색된다.
Figure 112019121370985-pct00008
(8)
Figure 112019121370985-pct00009
(9)
Figure 112019121370985-pct00010
(10)
직관적으로, 각 승수 λk(라그랑지안 승수, 이중 라그랑지안 승수 또는 간단히 승수라고도 함)는 k 번째 배낭 자원의 그림자 가격(shadow price)(또는 한계 효용(marginal utility))으로서 경제적으로 해석될 수 있다.
최대화 문제 (5)-(7)은 (6)의 존재로 인해 표준 제로-원 IP 문제 공식과 상이하다. 그러나 최적성 조건이 여전히 적용됨을 알 수 있다. 이를 확인하기 위하여, (x, μ)에 대한 IP 공식을 공동으로 얻기 위하여 로컬 제약 조건((6)의 각 제약 조건에 대하여 하나씩)에 대하여 승수 μs의 추가 집합을 도입할 수 있다.
라그랑지안 승수 집합 λ이 주어지면, (5)의 최대화 문제는 각각의 사용자 i에 대하여 하나씩 독립적인 하위 문제로 분해될 수 있다.
Figure 112019121370985-pct00011
(11)
Figure 112019121370985-pct00012
(12)
Figure 112019121370985-pct00013
(13)
λ의 크기가 상대적으로 작기 때문에 단일 머신에서 CPLEX 또는 GUROBI와 같은 상업적으로 사용 가능한 임의의 IP 솔버로 각 하위 문제 (11)-(13)을 푸는 것이 가능하다.
분산 컴퓨팅 프레임워크는 대규모 KP를 동일한 형태 (11)-(13)의 다수의 하위 문제로 분해한 다음, 각 하위 문제를 독립적으로 푸는 프로세스에 사용할 수 있다. 일부 실시 예에서, 프로세스는 맵리듀스, MPI, HADOOP, SPARK 또는 임의의 다른 분산 컴퓨팅 프레임워크 또는 모델을 사용하여 구현될 수 있다. 다음에서 맵리듀스 시맨틱스는 알고리즘을 설명하는 예로서 사용된다. 설명된 기술은 다른 분산 컴퓨팅 프레임워크 또는 모델에서 사용될 수 있다.
도 1은 본 명세서의 실시 예에 따라, 정보 흐름을 가진 KP를 풀기 위한 분산 컴퓨팅 시스템(100)의 예를 도시한 도면이다. KP를 풀기 위한 분산 컴퓨팅 시스템(100)(또는 분산 프레임워크(100))은 예로서 맵리듀스 컴퓨팅 모델을 사용한다. 일부 다른 실시 예에서, 분산 컴퓨팅 시스템(100)은 MPI, HADOOP, SPARK 또는 임의의 다른 분산 컴퓨팅 프레임워크 또는 모델을 사용하여 구현될 수 있다.
분산 컴퓨팅 시스템(100)은 다수의 IP 솔버(맵퍼(mapper)라고도 함)(110), 다수의 애그리게이터(aggregator)(리듀서(reducer)라고도 함)(120), 이중 승수 업데이터(또한 마스터 노드라고도 함)(130)를 포함한다. IP 솔버(110)는 예를 들어, CPLEX 또는 GUROBI와 같은 상업적으로 이용 가능한 또는 상용 IP 솔버 또는 아래에 보다 자세히 설명된 계층적 그리디 IP 솔버와 같은 맞춤형 IP 솔버일 수 있다. 다수의 IP 솔버는 분산 컴퓨팅 시스템(100)에서 다수의 데이터 처리 장치 사이에 분배된다. 예를 들어, 각각의 IP 솔버는 컴퓨터의 단일 처리 코어에 의해 실행될 수 있다. 일부 실시 예에서, 다수의 IP 솔버는 컴퓨팅 클러스터 또는 클라우드 컴퓨팅 시스템에 의해 구현된다. IP 솔버(110)는 사용자 데이터(140)를 수신할 수 있다. 예를 들어, 하위 문제 (11)-(13)에서, 사용자 i에 대한 사용자 데이터(140)는 pi, bi 및 ci를 포함할 수 있다. 예를 들어, 각 IP 솔버(110)는 로컬 제약 조건이 있는 하위 문제 (11)-(13)를 풀 수 있다.
일부 실시 예에서, 반복 알고리즘은 (x, λ) 쌍을 풀기 위하여 사용된다. 각 반복에서, (11)에 대한 솔루션 xi,j는 IP 솔버(110)에 의해 계산되고, IP 솔버(110)는 그 후 사용자 i에 의해 소비되는 배낭 자원에 대응하는 K 값,
Figure 112019121370985-pct00014
을 방출(emit)한다. 리듀서(120)는 각각의 배낭에 소비되는 총 자원을 합산한다,
Figure 112019121370985-pct00015
.
마스터 노드(130)는 하나 이상의 업데이트 규칙 또는 알고리즘에 따라, 예를 들어 슬랙,
Figure 112019121370985-pct00016
에 기초하여 라그랑지안 승수 λ를 업데이트할 수 있다. 예를 들어, λk를 업데이트하는 한 가지 방법은 이중 하강(dual descent, DD) 알고리즘을 적용하는 것이다. 예를 들어 (t + 1) 번째 반복의 경우
Figure 112019121370985-pct00017
(14)
여기서 하이퍼-파라미터 α는 학습 속도이다.
일부 실시 예에서, 마스터 노드(130)는 아래에서 더 상세히 설명되는 바와 같이 동기 좌표 하강(SCD) 알고리즘 또는 다른 알고리즘에 따라 라그랑지안 승수 λ를 업데이트할 수 있다.
일부 실시 예에서, 라그랑지안 승수 λ이 주어지면, 각각의 IP 솔버(110)는 각 사용자 i에 대한 결정 변수 {xi,j}에 대하여 식 (11)-(13)을 다시 풀 수 있다. 결정 변수는 모든 사용자(150)에 대한 결정으로서 리턴될 수 있다. 예를 들어, xi,j는 항목 j(예를 들어, HUABEI로부터의 특정 쿠폰)가 사용자 i에게 제공될지 여부를 나타낼 수 있다. 일부 실시 예에서, 결정 변수 {xi,j}는 실시간(live) 트래픽을 제공하기 위하여 저장되고 페치(fetch)될 수 있다. 예를 들어, 사용자 i가 생산 중(in production)인 경우(예를 들어, 사용자 i가 Alipay 앱을 사용하여 지불하거나 Alipay 앱의 특정 페이지를 방문하는 경우), 플랫폼(예를 들어, Alipay 앱)은 사용자 i에 대한 계산된 결정 변수 xi,j에 따라 항목 j를 사용자 i에게 제공할 수 있다.
도 2는 본 명세서의 실시 예에 따른 배낭 문제를 풀기 위한 맵리듀스 알고리즘(250)(알고리즘 1이라고도 함)의 일례의 의사 코드(200)이다. 일부 실시 예에서, 맵리듀스 알고리즘(250)은 T 번의 반복을 포함할 수 있다. 각각의 반복 t 내에서, 252에서, 맵퍼는 각각의 사용자에 대하여 (예를 들어, 210으로 정의되고 주석이 달린) 각각의 Map 함수를 실행할 수 있다. 각 Map 함수는 K 개의 글로벌 제약 조건 또는 K 개의 배낭과 관련된 k 값을 각각 리턴한다. 일부 실시 예에서, N 개의 맵퍼는 각각의 사용자에 대하여 각각의 Map 함수를 병렬로 실행할 수 있다.
254에서 K 개의 배낭 각각에 대하여 각 배낭에 대하여 N 명의 사용자가 소비한 총 자원
Figure 112019121370985-pct00018
는 (예를 들어, 220으로 정의되고 주석이 달린) Reduce 함수에 의해 계산될 수 있다. 일부 실시 예에서, K 개의 리듀서는 각각의 배낭에 대하여 각각의 Reduce 함수를 병렬로 실행할 수 있다.
256에서, 맵리듀스 알고리즘(250)은 예를 들어 식(14)과 관련하여 기술된 기법에 따라 λ 업데이트 규칙으로서 이중 하강(DD)을 사용한다. 258에서, 맵리듀스 알고리즘(250)은 λ가 수렴한 경우 또는 최대 T 반복 횟수 후에 종료하고 λ를 리턴한다. 일부 실시 예에서, 예를 들어, 두 반복들 사이의 λ의 차이가 임계치보다 작은 경우, λ는 수렴된 것으로 간주될 수 있다.
의사 코드(200)에 도시된 바와 같이 알고리즘 1에 의해 계산된 λ가 주어졌을 때 식(11)-(13)를 다시 풀 수 있다. 사용자에 대한 결정 변수 {xi,j}는 예를 들어 모든 사용자에 대한 결정(150)으로서 리턴될 수 있다.
실제 애플리케이션에서 자원은 종종 중첩(nested) 사용자(예를 들어, 분류 체계(taxonomy))로 조직화되므로, 로컬 제약 조건은 종종 중첩된 계층 구조를 나타낸다.
예를 들어, 플랫폼 A로부터 5 개, 플랫폼 B로부터 5 개, 총 10 개의 오퍼가 있는 단순한 마케팅 캠페인을 고려하자; 사용자는 플랫폼 A 또는 플랫폼 B로부터 2 개 이하 및 총 3 개 이하의 오퍼에 노출되어야 한다.
이 예제의 로컬 제약 조건은 다음과 같이 표현될 수 있다:
Figure 112019121370985-pct00019
(15)
Figure 112019121370985-pct00020
(16)
Figure 112019121370985-pct00021
(17)
이 예에서 로컬 제약 조건은 2-레벨 트리로서 구조화된다. 실제로, 구조는 DAG(directed acyclic graph)로서 표현될 수 있다. 일부는 훨씬 더 복잡한 계층을 제공할 수 있다. DAG는 방향성 사이클(directed cycle)이 없는 유한 방향성 그래프이다. 동등하게, DAG는 모든 에지가 시퀀스의 앞에서 뒤로 향하도록 정점(vertex) 시퀀스인 위상 순서(topological ordering)를 갖는 방향성 그래프이다. 방향성 그래프의 위상 순서는 정점 u에서 정점 v까지의 모든 방향성 에지 uv에 대하여 u가 순서에서 v 앞에 오도록 하는 정점의 선형 순서이다. 일부 실시 예에서, 그래프의 정점은 수행될 작업을 나타낼 수 있고, 에지는 하나의 작업이 다른 작업보다 먼저 수행되어야 한다는 제약 조건을 나타낼 수 있다. 이 경우 위상 순서는 작업들에 대한 유효한 순서이다. 그래프에 방향성 사이클이 없는 경우에만, 즉 DAG인 경우에만 위상 순서가 가능하다. 모든 DAG에는 적어도 하나의 위상 순서가 있다. DAG의 위상 순서는 알려진 알고리즘에 의해 구성될 수 있다.
로컬 제약 조건 l의 경우, 자원 인덱스 집합(resource index set)을 S(l)로 표시한다, 즉 S(l) = {j : c i , j , l = 1}이다. 배낭 문제는 다음 조건이 유지될 때 사용자 i에 대한 계층적 로컬 제한 조건 구조를 갖는 것으로 간주된다.
Figure 112019121370985-pct00022
,
Figure 112019121370985-pct00023
자원 인덱스 집합은 하나가 다른 것의 하위 집합(subset)이 아닌 한, 겹쳐지지 않는다(non-overlapping). 일부 실시 예에서,
Figure 112019121370985-pct00024
Figure 112019121370985-pct00025
Figure 112019121370985-pct00026
인 경우에만
Figure 112019121370985-pct00027
에서
Figure 112019121370985-pct00028
까지의 아크가 있도록, M 개의 자원 인덱스 집합에 대하여 DAG가 구성될 수 있다.
도 3은 본 명세서의 실시 예에 따라, (15) 내지 (17)에서의 로컬 제약 조건에 대한 자원 인덱스 집합(310, 320 및 330)의 DAG(directed acyclic graph)(300)의 예를 각각 도시한 도면이다. (15)의 로컬 제약 조건에 대한 자원 인덱스 집합(310)은 자원 인덱스 1-5를 포함하고; (16)에서의 로컬 제약 조건에 대한 자원 인덱스 집합(320)은 자원 인덱스 6-10을 포함하고; (17)에서의 로컬 제약 조건에 대한 자원 인덱스 집합(330)은 자원 인덱스 1-10을 포함한다. 도시된 바와 같이, 자원 인덱스 집합(310) 및 자원 인덱스 집합(320)은 공통 인덱스를 갖지 않는다. 자원 인덱스 집합(310) 및 자원 인덱스 집합(320) 각각은 자원 인덱스 집합(330)의 하위 집합이다.
도 4는 본 명세서의 실시 예에 따라 계층 구조를 갖는 제약 조건이 있는 IP 문제를 풀기 위한 그리디 알고리즘(알고리즘 2로 지칭됨)의 일례의 의사 코드(400)이다. 그리디 알고리즘(400)의 예는 계층적 로컬 제약 조건 하에서 IP 문제를 풀기 위하여 사용될 수 있다. 예를 들어, 사용자 i에 대한 최적화 문제 (11)-(13)는 DAG를 위상 순서로 트래버스(traverse)하는 그리디 알고리즘에 의해 효율적으로 풀릴 수 있다. 그리디 알고리즘(400)의 예를 구현하도록 구성된 솔버는 계층적 그리디 IP 솔버로서 지칭될 수 있다. 예를 들어, 계층적 그리디 IP 솔버는 이중 승수 λ가 주어지면 각 사용자에 대한 결정 변수를 계산할 수 있다.
그리디 알고리즘(400)은 예를 들어, 모든 자원의 결정 변수 xi,j를 1로 마킹함으로써, 410에서 모든 자원을 초기에 선택한다. 420에서, 자원 인덱스 j는 비용 조정 보상(cost-adjusted reward)(이는 또한 xi,j의 기여하는 이중 값(contributing dual value)임)에 기초하여 비-증가 순서(non-increasing order)로 소팅된다.
Figure 112019121370985-pct00029
430에서, 자원 인덱스 집합 {S(l)}은 예를 들어 DAG의 최저 레벨에서 시작함으로써 DAG의 위상 순서로 트래버스된다. 각각의 S(l)에 대하여, 440에서, 이전에 선택된 자원들(즉, 대응하는 결정 변수 xi,j = 1을 갖는 자원들)은 그 합이 로컬 제약 조건 C1을 초과할 때까지 비용 조정 보상의 비-감소 순서로 페치(fetch)된다. 일부 실시 예에서, 그것은 결정 변수 xi,j = 1을 갖는 C1 자원을 선택하고 자원 인덱스 집합 S(l)에서 상위(top) 비용 조정 보상을 갖는 것과 동등하다. 따라서 비용 조정 보상의 비-감소 순서로 남아있는 자원은 선별되지 않거나(un-selected) 선택되지 않은(unchosen) 상태로 남아 있다.
450에서, S(l) 내의 선택되지 않은 자원에 대한 xi,j 값은 모두 0으로 마킹되며 다음 반복에서 더 이상 고려되지 않을 것이다. 이러한 그리디 선택 프로세스는 DAG의 모든 노드가 트래버스될 때까지 반복된다. 460에서, 결정 변수 xi,j가 출력된다.
예로서, 도 3에 도시된 바와 같이, (15)에서 로컬 제약 조건에 대한 자원 인덱스 집합(310)(여기서는 C1 = 2)에서, 각각의 비용 조정 보상의 비-감소 순서로 소팅된 자원 1-5 중에서 상위 C1 = 2 자원(즉, 자원 2 및 4)이 선택된다. 자원 인덱스 집합(310)에서 선택되지 않은 자원(즉, 이 예에서는 자원 1, 3 및 5)의 결정 변수는 0으로 마킹되며 다시 고려되지 않을 것이다. 유사하게, (16)에서 로컬 제약 조건에 대한 자원 인덱스 집합(320)(여기서는 C2 = 2)에서, 각각의 비용 조정 보상의 비-감소 순서로 소팅된 자원 6-10 중에서 상위 C2 = 2 자원(즉, 자원 6 및 9)이 선택된다. 일부 실시 예에서, 자원 인덱스 집합(320)에서 선택되지 않은 자원들(즉, 이 예에서 자원 7, 8 및 10)의 결정 변수들은 0으로 마킹되고 다시 고려되지 않을 것이다.
DAG(300)의 계층 구조의 다음 레벨에 있는 (17)의 로컬 제한 조건(여기서는 C3 = 3)에 대한 자원 인덱스 집합(330)의 경우, 1로 마킹된 결정 변수를 가진 4 개의 이전 자원 2, 4, 6 및 9가 있다. 비용 조정 보상의 비-감소 순서로 소팅된 이전의 4 개의 자원 2, 4, 6 및 9 중에서 상위 C3 = 3 자원(즉, 자원 2, 6 및 9)이 선택된다. 일부 실시 예에서, 자원 인덱스 집합(330)에서의 나머지 자원들(즉, 이 예에서 자원 4)의 결정 변수들은 0으로 마킹된다. 이 예에서, DAG(300)는 완전히 트래버스되었고, 상위 3 개의 자원들(즉, 자원 2, 6, 9)이 선택된 자원으로서 출력된다.
다항식 시간 복잡도(polynomial time complexity)를 갖는 그리디 알고리즘은 최대화 문제 (11)-(13)를 최적으로 풀 수 있다. 최적성의 증거는 다음과 같다. 제약 조건 (12)와 (13)을 만족하지만 그리디 솔루션(
Figure 112019121370985-pct00030
로 표시됨, j = 1, . . .,M)과 상이한 임의의 다른 솔루션(
Figure 112019121370985-pct00031
로 표시됨, j = 1, . . .,M)이 주어지면, DAG의 위상 순서의 제1 노드는 선택된 자원이 상이한 것에서 식별될 수 있다. 그리디 알고리즘의 특성으로 인해, 자원 j의 조정된 보상이 자원 j'의 것보다 적지 않지만
Figure 112019121370985-pct00032
,
Figure 112019121370985-pct00033
,
Figure 112019121370985-pct00034
인 노드에서 자원 j와 j'의 쌍이 존재해야 한다. (11)의 목표 값(objective value)을 감소시키지 않고,
Figure 112019121370985-pct00035
,
Figure 112019121370985-pct00036
를 설정함으로써,
Figure 112019121370985-pct00037
가 수정될 수 있다. DAG의 위상 순서의 임의의 나중 노드가 i 및 j를 모두 포함하거나 포함하지 않기 때문에 모든 제약 조건 (12) 및 (13)이 여전히 만족된다. 이러한 방식으로 목표 값을 감소시키지 않거나 임의의 제약 조건을 위배하지 않고도 그리디 솔루션에 대한 임의이 솔루션이 변환될 수 있다. 이것으로 증명이 완료된다.
일부 실시 예에서, 결정 변수들이 예를 들어, 알고리즘 2 또는 IP 문제를 풀기 위한 임의의 다른 알고리즘들에 의해 풀리면, 동기 좌표 하강(SCD) 알고리즘이 이중 승수 λ를 업데이트하기 위하여 사용될 수 있다.
일부 실시 예에서, 승수들 λ의 주어진 집합에 대하여, 알고리즘 2는 그들의 실제 값을 알 필요 없이 비용 조정 보상
Figure 112019121370985-pct00038
의 상대적 순서에 의존한다. 이 속성을 사용하면 효율적인 알고리즘이 조건 (8)-(10)을 만족하는 λk를 업데이트하면서 다른 승수(λk', k'≠ k)를 고정할 수 있다. 알고리즘은 새로운 λk의 음이 아닌 모든 값 중에서
Figure 112019121370985-pct00039
의 상대적 순서가 λk의 M 선형 함수 fjk) 의 한 쌍의 교차점(pair-wise intersection point)에서만 또는 수평축과의 교차점(있는 경우)에 잠재적으로 변경될 수 있다는 사실을 이용할 수 있다. M 선형 함수 fjk)는 예를 들어 비용 조정 보상
Figure 112019121370985-pct00040
(
Figure 112019121370985-pct00041
경우) 또는 λk의 함수로서 (11)의 이중 문제의 목적 함수(objective function)의 다른 변형일 수 있다.
도 5는 본 명세서의 실시 예에 따른, 사용자 i에 대한 이중 승수 λ3의 후보들의 예들을 도시한 플롯(500)이다. M = 2 및 K = 3이라고 가정하고 로컬 제약 조건의 예는 다음과 같다.
x i ,1 + x i ,2 ≤ 1
도 5는 사용자 i에 대한 (11)의 최적화 결과에 영향을 줄 수 있는 M = 2 선형 함수(510 및 520) 및 3 개의 새로운 승수 후보 {λ3 (1), λ3 (2), λ3 (3)}를 도시한다. 특히, λ3 (1)은 선형 함수(510 및 520)의 한 쌍의 교차점에서의 λ3의 값이고; λ3 (2)는 선형 함수(510)와 수평축의 한 쌍의 교차점에서의 λ3의 값이고; λ3 (3)은 선형 함수(520)와 수평축의 한 쌍의 교차점에서 λ3의 값이다.
Figure 112019121370985-pct00042
이 예는 또한 (11)-(13)의 최적화 결과가 모든 교차점에서 변할 것이라는 것은 반드시 사실은 아님을 보여준다. 예를 들어, 여기서 맥시마이저(maximizer)는 λ3 (2)에서 변경되지 않는다.
도 6은 본 명세서의 실시 예에 따른, 후보 이중 승수들을 계산하기 위한 알고리즘(또한 알고리즘 3이라고도 함)의 일례의 의사 코드(600)이다. 일부 실시 예에서, 알고리즘(600)은 사용자 i에 대한 모든 후보 새로운 이중 승수(candidate new dual multiplier) λk를 계산하는 데 사용될 수 있다. 구체적으로, 알고리즘(600)은 λk의 M 개의 선형 함수의 교차점(예를 들어, λk의 함수로서 (11)에서 이중 문제의 목적 함수) 또는 이들의 수평축과의 교차점(있는 경우)을 계산할 수 있는 CalculateIntersectionPoints(650) 함수를 포함한다. 예를 들어, 도 6에 도시된 바와 같이, 함수 Intersect(f(λk), g(λk))(610)은 f(λk) 및 g(λk)가 평행하지 않을 때, f(λk) 및 g(λk) > = 0의 비-음수 교차점을 리턴하는데 사용된다. λk의 M 선형 함수 각각에 대하여, λk의 다른 (M-1) 선형 함수 및 수평축과의 교차점이 계산되어 집합 Λk에 저장된다. 집합 Λk의 중복되지 않은 값은 사용자 i에 대한 후보 새로운 이중 승수 λk로서 리턴될 수 있다.
각 사용자에 대한 새로운 λk의 모든 후보가 주어지면, 좌표 하강 알고리즘은 모든 사용자를 고려하고 조건 (8)-(10)을 만족시키면서 다른 승수를 고정시킨 업데이트된 λk를 계산한다.
도 7은 본 명세서의 실시 예에 따라 KP를 풀기 위한 맵리듀스 모델을 갖는 동기 좌표 하강(SCD) 알고리즘(알고리즘 4로도 지칭 됨)(750)의 일례의 의사 코드(700)이다. 동기 좌표 하강 알고리즘(750)은 Map 및 Reduce 단계를 반복적으로 실행하기 위한 T 반복을 포함할 수 있다. 각각의 반복 t 내에서, 752의 Map 단계에서, 맵퍼는 예를 들어 IP 하위 문제 (14)-(16)를 독립적으로 풀기 위하여 각 사용자에 대하여 각각의 Map 함수(예를 들어, 710으로 정의되고 주석이 붙음)을 실행할 수 있다. 일부 실시 예에서, N 개의 맵퍼는 각각의 Map 함수를 병렬로 실행할 수 있다. 754의 Reduce 단계에서 모든 λk는 다른 이중 승수 λk'(k′≠k)를 고정함으로써 업데이트된다. 일부 실시 예에서, K 개의 리듀서는 각각의 Reduce 함수를 병렬로 실행할 수 있다.
구체적으로, Map 함수(710)에 따라, 각 사용자 i에 대하여, 712에서, 맵퍼는 도 6의 알고리즘 3에 정의된 바와 같이 CalculateIntersectionPoints(650) 함수에 따라 새로운 라그랑지안 승수 λk의 후보를 획득한다. 714에서, 맵퍼는 새로운 λk의 후보를 내림차순으로 소팅한다. 715에서, 맵퍼는 라그랑지안 승수 λk의 모든 후보를 검토하고, 예를 들어, 도 4와 관련하여 설명된 알고리즘 2에 따라 식 (11)-(13)을 풂으로써 결정 변수
Figure 112019121370985-pct00043
를 계산한다. 일부 실시 예에서, λ가 주어지면, 결정 변수
Figure 112019121370985-pct00044
는 예를 들어, IP 솔버의 임의의 적절한 알고리즘에 따라 식 (11)-(13)을 풂으로써 계산될 수 있다. 716에서, 맵퍼는 만일 λk를 대응하는 새로운 값으로 업데이트한다면 k 번째 배낭에서 사용될 자원의 양을 계산한다. 일반적으로 사용된 자원의 양은 λk가 감소함에 따라 증가한다. 718에서, 맵퍼는 λk가 감소함에 따라 사용된 자원의 증분 양만을 방출(emit)한다. 일부 실시 예에서, 총량보다는 증분 양을 사용하는 이점은 도 7의 Reduce 함수(720)에서 수행되는 임계치 v를 결정하기 위하여 v2≥v인 모든 방출되거나 리턴된 v2에 대하여 합산하는 것을 허용하는 것이다. 총량이 방출되면 동일한 사용자에 해당하는 하나보다 많은 v1이 있을 수 있으며, (일반성을 잃지 않고) 사용자 별 최대 하나의 항목이 허용된다고 가정하면, (추가 스토리지 및 계산을 의미하는) 해당 사용자에 의한 소비를 이중으로 계산하지 않도록 보장하기 위하여 추가 예약이 필요할 수 있다.
754에서, K 개의 배낭 각각에 대하여, Reduce 함수(예를 들어, 720으로 정의되고 주석이 달림)은 모든 사용자들 사이에서 동일한 키(즉, 배낭 인덱스 k)에 대하여 방출된 결과를 집계(aggregate)하고, 모든 사용자들 중 k 번째 배낭에 사용된 총 자원이 722에서 Bk를 초과하지 않도록, 업데이트된 λk를 최소 임계치 v로 계산한다. 일부 실시 예에서, 모든 사용자 중 λk의 모든 후보는 비-증가 순서로 소팅될 수 있다. 리듀서는
Figure 112019121370985-pct00045
보다 작지 않은 λk의 모든 후보에 해당하는 사용된 자원의 증분 양을 합산함으로써 주어진
Figure 112019121370985-pct00046
에 대하여 모든 사용자 중 k 번째 배낭에 사용된 총 자원을 계산할 수 있다. 최소 임계치 v의 값은, 임의의 주어진 후보
Figure 112019121370985-pct00047
>= v에 대하여 모든 사용자 중 k 번째 배낭에 사용된 총 자원이 Bk를 초과하지 않는 반면, 임의의 주어진 후보
Figure 112019121370985-pct00048
< v에 대한 모든 사용자 중 k 번째 배낭에 사용되는 총 자원은 Bk를 초과하도록 결정될 수 있다. 일부 실시 예에서, 최소 임계치 v의 값은 λk의 후보들 중 하나가 아닐 수 있다. 일부 실시 예에서, 예를 들어 아래 도 13과 관련하여 기술된 예에 따라 λk의 최소 임계치 v 후보를 찾는 데 있어서 보간(interpolation)이 수행될 수 있다.
λk가 감소함에 따라 맵퍼가 사용된 자원의 증분 양만을 방출하기 때문에, Reduce 함수(720)에서 수행된 합산은 선택된 임계치 v에 대하여 사용자에 의해 사용되는 총 자원을 적절히 계산한다. 일부 실시 예에서, K 개의 리듀서는 각각의 배낭에 대하여 각각의 Reduce 함수를 병렬로 실행할 수 있다.
도 13은 본 명세서의 실시 예에 따른, KP를 풀기 위한 Map 함수(710) 및 Reduce 함수(720)의 실행 결과의 예를 나타내는 플롯(1300)이다. 이 예에서는 N = 3 명의 사용자가 고려된다. 3 명의 사용자 각각에 대하여, Map 함수(710)는 예를 들어 각각의 IP 솔버에 의해 병렬로 실행될 수 있다. k = 3 및 Bk = 28인 k 번째 배낭에 대응하는 k 번째 글로벌 제약 조건을 가정하면, 각각의 사용자는 각각의 IP 문제를 해결하고 도 5-7과 관련하여 설명된 기법을 사용하여 Map 함수(710)에 따라 λ3의 각각의 후보를 획득할 수 있다. 박스(1310)는 3 명의 사용자 각각에 대한 Map 함수(710)의 실행 결과를 도시한다. 예를 들어, 사용자 1에 대한 1311에 도시된 바와 같이, 내림차순으로 λ3의 3 개의 후보(Map 함수(710)에서 v1으로 표시됨)는 각각 9, 6 및 3이다. λ3의 세 후보가 주어진 경우 k 번째 배낭에 사용될 자원의 총량은 각각 5, 6 및 7이다. 718에 따르면, Map 함수(710)는 λk가 감소함에 따라 각각 5, 6-5=1 및 7-6=1인 사용된 자원의 증분 양(Map 함수(710)에서 v2로 표시됨)만을 방출한다. 따라서 사용자 1에 대한 방출된 출력(k, [v1, v2])은 각각(3, [9, 5]),(3, [6, 1]) 및 (3, [3, 1])이다.
사용자 2에 대한 1312에 도시된 바와 같이, 내림차순으로 λ3의 3 개의 후보(맵 함수(710)에서 v1으로 표시됨)는 각각 8, 5 및 2이다. λ3의 3 개의 후보자가 주어질 때 k 번째 배낭에 사용될 자원의 총량은 각각 10, 12 및 13이다. 718에 따르면, Map 함수(710)는 λk가 감소함에 따라 각각 10, 12-10=2 및 13-12=1인 사용된 자원의 증분 양(Map 함수(710)에서 v2로 표시됨)만을 방출한다. 따라서 사용자 2에 대한 방출된 출력(k, [v1, v2])은 각각 (3, [8, 10]), (3, [5, 2]) 및 (3, [2, 1])이다.
사용자 3에 대하여 1313에 도시된 바와 같이, 내림차순으로 λ3의 3 개의 후보(Map 함수(710)에서 v1으로 표시됨)는 각각 7, 4 및 1이다. λ3의 세 후보가 주어진 경우 k 번째 배낭에 사용될 자원의 총량은 각각 9, 10 및 11이다. 718에 따르면, Map 함수(710)는 λk가 감소함에 따라 각각 9, 10-9=1 및 11-10=1인 사용된 자원의 증분 양(Map 함수(710)에서 v2로 표시됨)만을 방출한다. 따라서 사용자 3에 대한 방출된 출력(k, [v1, v2])은 각각 (3, [7, 9]), (3, [4, 1]) 및 (3, [1, 1])이다.
박스(1320)는 k = 3인 k 번째 배낭에 대응하는 k 번째 글로벌 제약 조건에 대하여 3 명의 사용자 모두에 대한 Reduce 함수(720)의 실행 결과를 도시한다. 일부 실시 예에서, 모든 사용자에 걸친 λ3의 모든 후보는 예를 들어, 각각의 증분 사용 자원 [5, 10, 9, 1, 2, 1, 1, 1 및 1]을 가진 [9, 8, 7, 6, 5, 4, 3, 2 및 1]로 도시된 바와 같이 내림차순으로 소팅될 수 있다. 이 예에서, Bk = 28이 주어지면, λ3 = 4에 대응하는 총 자원 양은 28이라고 결정된다. λ3 = 4에 대응하는 총 자원 양은 4보다 크거나 같은 λ3의 모든 후보(예를 들어, [9, 8, 7, 6, 5, 4])에 대하여 각각의 증분 사용 자원(예를 들어, [5, 10, 9, 1, 2, 1])을 함께 합산함으로써 계산될 수 있다. 또한, 임의의 λ3 <4에 해당하는 총 자원 양이 Bk = 28을 초과할 것이라고 결정될 수 있다. 예를 들어, λ3 = 3에 해당하는 총 자원 양은 29일 수 있으며, 이는 3보다 크거나 같은 λ3의 모든 후보(예를 들어, [9, 8, 7, 6, 5, 4, 3 ]) 에 대하여 각각의 증분 사용 증분(예를 들어, [5, 10, 9, 1, 2, 1, 1])을 함께 합산함으로써 계산될 수 있다. 이 예에서, 최소 임계치 v는 4로 결정된다. λ3은 v = 4로 업데이트될 수 있다.
일부 실시 예에서, Bk = 28.5인 경우, 최소 임계치 v를 결정하기 위하여 보간이 수행될 수 있다. 예를 들어, λ3 = 4에 대응하는 총 자원 양은 28이고 λ3 = 3에 대응하는 총 자원 양이 29라고 주어질 때, λ3의 최소 임계치 v에 대응하는 총 자원 양이 Bk = 28.5를 초과하지 않도록 λ3의 최소 임계치 v를 결정하기 위하여 λ3의 2 개의 값을 보간함으로써, 최소 임계치 v는 3.5인 것으로 결정될 수 있다. 일부 실시 예에서, 최소 임계치 v를 계산하기 위하여 다른 기법들이 사용될 수 있다.
다시 도 7을 참조하면, λ를 업데이트하는 프로세스는 최대 T 반복 횟수 동안 반복될 수 있고, λ가 수렴에 도달하면 조기에 종료된다. 예를 들어, 756에서, 좌표 하강 알고리즘(750)은 λ가 수렴된 경우 또는 최대 T 반복 횟수 이후에 종료하고 λ를 리턴한다.
좌표 하강 알고리즘(750)에 도시된 바와 같이 알고리즘 1에 의해 계산된 λ가 주어질 때, 식 (11)-(13)을 다시 풀 수 있다. 사용자에 대한 결정 변수
Figure 112019121370985-pct00049
는 예를 들어 모든 사용자(150)에 대한 결정으로서 리턴될 수 있다.
좌표 하강 알고리즘(750)은 모든 k = 1,.. K에 대하여 λk를 동시에업데이트하는 동기식 좌표 하강을 사용하지만, 한 번에 하나의 승수를 업데이트하는 순환 좌표 하강(cyclic coordinate descent) 및 여러 개의 승수를 병렬로 업데이트하는 블록 좌표 하강(block coordinate descent)과 같은 좌표 하강의 다른 변형도 또한 적용 가능하다. 우리 시스템에서는 위에서 언급한 모든 알고리즘이 지원된다.
K = 1의 특수한 경우, 알고리즘은 분수(fractional) 배낭 문제를 푼 후, 본질적으로 반올림된 정수 솔루션(rounded integer solution)을 생성하기 때문에 알고리즘 4는 최적의 솔루션보다 작은 기껏해야 max i , j p i , j 인 총 보상을 갖는 솔루션으로 수렴한다는 것을 알 수 있다. 보다 일반적인 경우, 알고리즘 4에 의해 계산된 솔루션이 문제 인스턴스의 클래스에 대하여 거의 최적임을 경험적으로 보여줄 수 있다.
좌표 하강 알고리즘(750)의 Map 함수는 사용자 별 M 개의 자원 및 K 개의 글로벌 제약 조건이 주어질 때 O(KM 3 log M)의 시간 복잡도를 갖는다. 자원과 배낭 사이에 일대일 매핑이 존재하는 일부 실제 상황(즉, M = Kb i , j , k = 0, ∀j, k)에서 이러한 복잡성을 크게 줄일 수 있고, 각 사용자에 대하여 선택된 최대 자원 수(이후 Q로 표시)를 제한하는 단일 로컬 제한 조건이 있다.
그러한 경우, k 번째 자원이 상위(top) Q 조정 보상을 갖는지 여부를 결정하는 새로운 λk의 후보는 기껏해야 하나이다. 구체적으로, 자원 k의 조정 보상이 이미 상위 Q에 있다면, 새로운 λk의 임계 값은 조정 보상을 (Q + 1) 번째 조정 보상으로 낮추는 임계 값이다. 자원 k의 조정 보상이 상위 Q에 있지 않으면, 새로운 λk의 임계 값은 조정 보상을 Q 번째 조정 보상으로 증가시키는 임계 값이다.
도 8은 본 명세서의 실시 예에 따라, 각각의 사용자(850)에 대한 최대 자원 수(Q로 표시)를 선택하기 위한 Map 함수(또한 알고리즘 5로도 지칭됨)의 예의 의사 코드(800)이다. 도 8에 도시된 바와 같이,
Figure 112019121370985-pct00050
는 k 번째 자원이 사용자 i에 대하여 선택될지 여부를 결정하는 임계치이다. 새로운 λk
Figure 112019121370985-pct00051
보다 큰 경우, k 번째 자원의 업데이트된 조정 보상은
Figure 112019121370985-pct00052
미만일 것이므로 선택되지 않을 것이다. 반면,
Figure 112019121370985-pct00053
아래의 새로운 λk는 k 번째 자원의 결과적인 조정 보상이 모든 자원에 걸쳐 상위 Q에 속함을 보장한다. 따라서, 알고리즘 5는 k 번째 자원이 상위 Q 조정 보상을 갖는지의 여부를 결정하는 새로운 λk(있는 경우)의 유일한 후보를 정확하게 방출한다.
알고리즘 5는 O(K)의 시간 복잡도에서 길이 K의 어레이(array)의 n 번째로 큰 요소를 리턴하는 알고리즘인 quick_select(array, n)를 사용한다. 알고리즘 5의 전체 시간 복잡도는 Q 값에 관계 없이 O(K)이다.
수십억 규모의 문제를 풀기 위하여 알고리즘을 확장(scale up)할 때 알고리즘의 수렴을 더욱 가속화하기 위하여 추가 알고리즘이 개발되었으며 이는 효과적인 것으로 입증되었다.
예를 들어, 미세 조정된 버킷팅을 사용하여 수십억 규모의 문제를 풀기 위한 알고리즘의 수렴 속도를 더 높일 수 있다. 도 7에 도시된 바와 같이, 알고리즘 4에서 Reduce 함수의 간단한 구현은 v1의 값에 의해 방출된 결과를 소팅하고 소팅된 결과에 기초하여 최소 임계치 v를 선택하는 것이다. 속도를 높이는 한 가지 방법은 v1 값을 버킷화하고 각 버킷에 대하여 v2의 합계를 계산하는 것이다. 그런 다음, 임계치 v가 속하는 타겟 버킷이 식별될 수 있고, 예를 들어 버킷 내에서 보간함으로써 v의 값이 근사화될 수 있다.
버킷팅 및 보간을 통한 상기 근사치의 정확도를 개선하기 위하여, 일부 실시 예에서, 버킷 크기는 v의 실제 값 근처로 작고 버킷이 v를 포함하지 않을 때 크게 되도록 설계될 수 있다. 불행하게도, v의 실제 값은 미리 알려지지 않는다. 그럼에도 불구하고, 알고리즘 4의 반복적 특성으로 인해, 이전 반복에서 계산된 값, 즉 λt k는 v = λt k +1에 대한 합리적인 추정치를 제공한다. 따라서, 고르지 않은(uneven) 버킷팅 방식은 버킷이 λt k 부근에서 더 작거나 최소 크기이고 λt k로부터 벗어날 때 (예를 들어, 기하급수적으로 또는 다른 방식으로) 커지도록 설계될 수 있다. 예를 들어, 이전 반복에서 계산된 값 λt k이 주어지면, 후보 λk에 할당된 버킷 ID는 다음과 같다.
Figure 112019121370985-pct00054
여기서 Δ는 버킷 크기를 제어하는 매개 변수이다. 추가 또는 상이한 고르지 않은 버킷팅 방식이 사용될 수 있다.
다른 모든 반복 알고리즘과 마찬가지로, 좋은 초기화에서 시작하는 것은 알고리즘의 수렴을 크게 가속화할 수 있다. 일부 실시 예에서, 알고리즘 4에서 이중 승수의 시작점 λ0은 랜덤로 선택될 수 있다. 일부 실시 예에서, 이중 승수의 시작점은 샘플링된 데이터를 사용하여 사전 해결(pre-solving)함으로써 추정될 수 있다. 예를 들어, 랜덤 사용자의 작은 집합을 샘플링하고 배낭 예산을 비례적으로 조정함으로써 알고리즘 4를 더 나은 초기화로 시작할 수 있다. 실험에 따르면 사전 해결을 통해 대규모 KP에 대하여 최대 40 % 내지 75 %의 반복을 절약할 수 있다.
도 9는 본 명세서의 실시 예에 따른, 샘플링 알고리즘(알고리즘 6으로도 지칭됨)(950)에 의한 사전 해결의 예의 의사 코드(900)이다. KP 문제를 풀기 위하여 설명된 알고리즘과 관련하여 샘플링 알고리즘에 의한 추가적인 또는 상이한 사전 해결이 사용될 수 있다. 알고리즘 6은 사전 해결의 τ 반복을 포함할 수 있다. 일부 실시 예에서, 사전 해결의 τ 반복은 순차적으로 또는 병렬로 수행될 수 있다. 순차적으로 실행되는 경우, t 번째 반복 이전에 계산된 λ 값의 평균을 사용하여 실행 시간을 더 줄인다. 예를 들어, 수억 명의 사용자가 있는 경우 사전 해결의 각 반복에 대하여 n = 10,000 명의 사용자를 샘플링할 수 있다.
알고리즘 4에 의해 리턴된 λ로, 각 사용자 i에 대한 결정 변수 x i , j 가 계산될 수 있다. 일부 실시 예에서, 모든 사용자에 걸쳐 사용된 총 자원은 글로벌 제약 조건(2)을 약간 위배할 수 있다. 일부 실시 예에서, 경량 후 사후-처리(light-weight post-processing) 방법이 글로벌 제약 조건의 타당성을 엄격하게 보장하고 수렴을 가속화하기 위하여 사용될 수 있다. 사후-처리 방법은 비용 조정된 사용자 보상 수량을 기반으로 할 수 있으며 이는 실제로 주어진 사용자 i의 기여하는 이중 값,
Figure 112019121370985-pct00055
를 제공한다.
특히, 사용자는
Figure 112019121370985-pct00056
의 비-감소 순서로 소팅되며, 모든 글로벌 제약 조건이 만족될 때까지 결정 변수 xi의 전체 사용자를 0으로 리셋할 수 있다. 비용 조정된 사용자 보상
Figure 112019121370985-pct00057
는 어떻게든 사용자 i로부터 일부 자원을 선택하는 이점을 측정하므로
Figure 112019121370985-pct00058
의 더 작은 값을 가진 자원을 제거하는 것은 합리적인 휴리스틱으로 간주된다.
KP를 풀기 위하여 합성 데이터와 실제 데이터 모두가 설명된 다양한 알고리즘 테스트하기 위하여 사용되었다. 예를 들어, 실험에서, 달리 명시되지 않는 한, N 명의 사용자 수 및 K 개의 글로벌 제약 조건을 가진 합성 문제 p i , j 가 [0, 1]에 균일하게 분포된다. 글로벌 제약 조건의 두 가지 클래스가 고려된다.
조밀(dense): b i , j , k 는 [0, 1]에 균일하게 분포됨
희소(sparse) : M = K이고, j = k이면 b i , j , k 가 [0, 1]에 균일하게 분포되고, 그렇지 않으면 0이다.
글로벌 제약 조건의 예산은 M, N 및 L에 비례하는 적당한(modest) 값으로 설정되어, 제약 조건의 기밀성(tightness)을 실질적으로 보장한다. 로컬 제약 조건에 대한 매개 변수, c i , j , l C l 은 모두 1과 같다.
이하에서, 최적성 비율(optimality ratio)은 최초(primal) 목표 값 대 완화된 LP 목표 값의 비로서 정의되고; 제약 조건 위배 비율(constraint violation ratio)은 제약 조건에 대하여 주어진 예산에 대한 초과 예산의 비율로 정의되며, 우리는 전체 위배를 수량화하기 위하여 모든 제약 조건에 걸쳐 최대 제약 조건 위배 비율을 사용한다.
설명된 알고리즘에 의해 생성된 KP 솔루션의 품질을 측정하기 위하여, 완화된 LP 솔루션에 대한 (전술한 사후-처리 방법으로 알고리즘 4에 의해 계산된) KP 솔루션들 사이의 최적성 비율을 평가하기 위하여 일련의 실험이 수행된다.
실제로, 설명된 분산 솔루션과 비교하기 위하여 10억 규모 KP의 상한을 계산할 수 있는 기존 LP 솔버를 찾기가 어렵다. 비교하기 쉽도록 기존 LP 툴로 해결할 수 있는 적당한 크기의 데이터 집합에 최적성 갭(optimality gap)이 표시된다. 완화된 LP 문제는 이진 제약 조건 x i , j ∈ {0, 1}을 0 ≤ x i , j ≤ 1, ∀i, ∀j로 대체하여 얻어지며 GOOGLE OR 툴을 사용하여 풀린다.
도 10은 본 명세서의 실시 예에 따라, 도 7의 설명된 알고리즘을 사용하는 KP 솔루션 및 LP 완화에 의해 계산된 상한 사이의 최적성 갭의 예를 도시하는 플롯(1000)이다. KP 솔루션은 전술한 사후 처리 방법으로 도 7에 도시된 바와 같이 알고리즘 4에 따라 계산된다. 플롯(900)은 N = 1,000, N = 10,000, 및 K ∈ {1, 5, 10, 15, 20}에 대한 최적성 비율을 나타낸다. 이 실험에서 사용자 M 당 자원 수는 10으로 고정되어 있다. 자원의 다양성을 높이기 위하여 b i , j , k 는 [0, 1]에서 확률 0.5로 균일하게 분포되고, [0, 10]에서 나머지 확률로 균일하게 분포된다. 로컬 제약 조건의 3 가지 시나리오에 대한 최적성 비율이 평가되었고 도 9에 도시되어 있다.
C = [1]은
Figure 112019121370985-pct00059
을 의미하고,
C = [2]는
Figure 112019121370985-pct00060
을 의미하며,
C = [2,2,3]은 (15) 내지 (17)에 의해 주어진 계층적 로컬 제약 조건에 대응한다.
N의 각각의 값 및 로컬 제약 조건의 시나리오에 대하여, K가 변함에 따라 (3 번의 실행에 걸친) 평균 최적성 비율이 도 10에 도시되어 있다. 도 10에 도시된 바와 같이, N이 증가함에 따라 최적성 갭이 감소한다. 최적성 비율은 모든 실험 사례에서 98.6 % 초과, 로컬 제약 조건의 모든 시나리오 하에서 N = 10,000에 대하여 99.8 % 초과이다. 도 10의 결과는 K ≪ N일 때 알고리즘 4에 의해 계산된 KP 솔루션이 거의 최적이라는 직관을 지지한다.
사용자 수가 N이 큰 경우 샘플링된 사용자를 사전에 해결하여 λ에 대한 좋은 시작점을 생성할 수 있다. 실험에서, n = 10,000 명의 사용자가 사전 해결의 각 반복에 대하여 샘플링되고, n ≪ N 이므로 사전 해결의 계산 시간은 무시될 수 있다. 사전 해결로 λ가 수렴할 때까지의 SCD 반복 횟수는 항상 λk = 1.0, ∀k = 1,.., K에서 시작하는 경우 필요한 반복 횟수와 비교된다.
도 11은 본 명세서의 실시 예에 따른, 사전 해결의 유무에 따라 SCD 반복 횟수의 예를 나타내는 표(1100)(또한 표 1이라고도 함)이다. 표 1은 N = 백만, 천만, 1억의 희소 문제 인스턴스에 대한 SCD 반복 횟수를 보여준다. 각 N에 대하여 M = 10 및 K = 10이다. 표 1의 결과는 샘플링된 사용자를 통한 사전 해결이 SCD 반복 횟수를 40 %에서 75 %로 줄였다는 것을 보여준다.
반면, 사전 해결에 의해 생성된 λ는 제약 조건 위배를 초래할 수 있으므로 사전 해결만으로는 KP 문제를 풀기에 충분하지 않다. 사전 해결된 λ를 전체 데이터 집합에 적용할 때, N = 백만, 천만, 1억에 대하여 글로벌 제약 조건 위배의 수는 10 개 중에 각각 4, 5 및 3 개이고, 대응하는 최대 제약 조건 위배 비율은 각각 2.5 %, 4.1 % 및 3.0 %이라는 것이 관찰된다. 그러나, 분산 SCD 솔루션에는 위배가 없다. 사전-해결 솔루션의 최초 목표 값은 제약 조건 위배가 있더라도 항상 분산 SCD 솔루션보다 작다는 점도 주목할 가치가 있다.
도 12는 본 명세서의 실시 예에 따른, 대규모 테스트 데이터 집합들에 대한 SCD 알고리즘(예를 들어, 알고리즘 4)을 사용하는 분산 시스템의 실험 결과들의 예들을 도시한 표(1200)(또한 표 2로도 지칭됨)이다. 대규모 테스트 데이터 집합에는 N = 1억명의 사용자가 있는 많은 희소 문제점 인스턴스가 포함되어 있는 반면, 각 사용자의 자원 M의 수는 1에서 100까지 다양하므로 고려되는 총 자원 수는 최대 100억이다. 솔루션 품질과 실행 시간이 테스트된다. 표 2는 SCD 반복 횟수, 최초 목표 값 및 이중성 갭을 보여준다. 이중성 갭은 최초 목표 값보다 훨씬 작으므로 생성된 솔루션이 거의 최적임을 나타낸다. 또한, 알고리즘 4가 종료될 때 글로벌 제약 조건이 위배되지 않는다(즉, 모든 제약 조건이 사후-처리 없이 만족됨).
시스템의 실행 시간은 공유 APACHE HADOOP 컴퓨팅 인프라에서 최대 1,000 개의 CPU로 실행하는 것과 같이 결정 변수의 일일 최적화 및 조정에 대한 비즈니스 요구를 만족시켰고(사용되는 CPU의 정확한 수는 클러스터 부하의 영향을 받음), 10억 개의 결정 변수 및 제약 조건에 대한 최적화는 벽시계 시간(Wall Clock Time)의 약 1 시간 내에 수렴할 수 있었다(정확한 벽시계 시간은 하드웨어 및 작업 부하에 따라 다르다).
도 14a는 본 명세서의 실시 예에 따라, 배낭 문제(KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀(예를 들어, K 개의 배낭)로 자원 할당하기 위한 프로세스(1400a)의 예의 흐름도이다. KP는 예를 들어 (1)-(4)에 도시된 바와 같이 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건을 따른다. 각 풀은 KP에 설명된 대로 각 배낭에 해당할 수 있다. KP는 트래픽 라우팅/관리, 마케팅 캠페인, 제품/서비스 프로모션 등을 포함하는 자원 할당과 같은 하나 이상의 실제 시나리오를 나타낼 수 있다. 도 2 및 7과 관련하여 전술한 알고리즘 1 및 4는 프로세스(1400a)의 예이다.
프로세스(1400a)는 분산 컴퓨팅 시스템(100)과 같은 분산 컴퓨팅 시스템을 사용하여 수행될 수 있으며, 분산 컴퓨팅 시스템(100)은 (예를 들어, 상이한 사용자들 사이에서 불신(distrust)되거나 상이한 장소에 위치되는) 다수의 프로세서를 포함한다. 각 프로세서는 예를 들어 멀티 코어 처리 기능을 활용함으로써 하나 이상의 개별 솔버로 기능하거나 이를 지원할 수 있다. 솔버는 컴퓨터 구현 솔버일 수 있으며, 예를 들어 소프트웨어, 하드웨어 또는 이 둘의 조합으로 구현된다. 각 개별 솔버는 서로 병렬로 독립적으로 실행될 수 있다. 일부 실시 예에서, 개별 솔버 중 일부는 서로 병렬로 독립적으로 실행될 수 있는 IP 솔버(맵퍼라고도 함)(110)로서 기능할 수 있다. 일부 실시 예에서, 프로세서들 중 하나 이상은 서로 병렬로 독립적으로 실행될 수 있는 애그리게이터(aggregator)(리듀서라고도 함)(120)로서 기능할 수 있다. 일부 실시 예에서, 하나 이상의 프로세서는 이중 승수 업데이터(마스터 노드라고도 함)(130)로서 기능할 수 있다. 일부 실시 예에서, 예를 들어, 병렬 처리 기능을 활용하고 KP 해결의 계산 시간을 단축하기 위하여 상이한 개별 솔버가 서로 병렬로 독립적으로 실행될 수 있고 상이한 애그리게이터들이 서로 병렬로 독립적으로 실행될 수 있는 한, 단일 프로세서는 IP 솔버, 애그리게이터, 및 이중 승수 업데이터로서 기능하는데 사용될 수 있다.
일부 실시 예에서, 분산 컴퓨팅 시스템은 클라우드 컴퓨팅 시스템으로서 구현될 수 있다. 일부 실시 예에서, 분산 컴퓨팅 시스템은 맵리듀스 또는 다른 분산 컴퓨팅 프레임워크 또는 모델을 가질 수 있다. 일부 실시 예에서, 분산 컴퓨팅 시스템은 MPI, HADOOP 및 SPARK와 같은 공통 분산 플랫폼을 사용하여 구현될 수 있다. 일부 실시 예에서, 프로세스(1400a)는 하나 이상의 위치에 위치되고 본 명세서에 따라 적절히 프로그래밍된 하나 이상의 컴퓨터의 시스템과 같은 데이터 처리 장치에 의해 수행되는 것으로 설명될 것이다. 예를 들어, 적절하게 프로그래밍된 도 15의 컴퓨터 시스템(1500)은 도 15는 프로세스(1400a)를 수행할 수 있다.
1402a에서, KP의 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건을 나타내는 데이터가 수신된다. 일부 실시 예에서, L은 수십억 이상(in an order of billions or larger)이다. K는 L보다 작다. K 개의 글로벌 제약 조건 각각은 예를 들어 식 (2)에 도시된 바와 같이 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용을 제한한다. L 개의 로컬 제약 조건들 각각은 예를 들어 식 (3)에 도시된 바와 같이 M 개의 자원의 사용자 별 선택을 제한한다.
1404a에서, KP는 예를 들어 식 (8)-(13)에 도시된 방식으로 K 개의 이중 승수(예를 들어, λk, k = 1, 2,…, K)를 사용하여 N 개의 하위 문제로 분해된다. N 개의 하위 문제들 각각은 N 명의 사용자 각각에 대응하고, 예를 들어, 식 (14)-(16)에 도시된 바와 같이, 대응하는 사용자에 관한 L 개의 로컬 제약 조건이 있다. 일부 실시 예에서, N은 10억 이상이다. K 개의 이중 승수들 각각은 K 개의 글로벌 제약 조건들 중 각각의 제약 조건에 대응한다. K 개의 이중 승수가 주어지면, N 개의 하위 문제는 N 개의 하위 문제 각각을 해결함에 있어서 K 개의 로컬 제약 조건을 고려하지 않고 각각의 사용자에 관한 L 개의 로컬 제약 조건을 준수하여 독립적으로 해결될 수 있다.
1406a에서, N 개의 하위 문제를 풀기 위한 개별 솔버(예를 들어, IP 솔버(110))의 수가 결정된다. 일부 실시 예에서, N 개의 하위 문제를 풀기 위한 개별 솔버의 수를 결정하는 것은, KP를 풀기 위한 지정된 계산 시간(예를 들어, 최대 수십억 명의 사용자와 로컬 제약 조건을 수반하는 대규모 KP가 주어질 때 KP를 풀기 위한 원하는 계산 시간)에 기초하여 N 개의 하위 문제를 풀기 위한 개별 솔버의 수를 결정하는 것을 포함한다. 일부 실시 예에서, N 개의 하위 문제를 풀기 위한 개별 솔버의 수를 결정하는 것은, 개별 솔버의 수를 사용자 수 N보다 작거나 같은 것으로 결정하는 것을 포함한다. 개별 솔버의 수가 N 인 경우, N 개의 하위 문제 각각은 각각의 개별 솔버에 의해 풀릴 수 있으므로, N 개의 하위 문제는 각각의 N 개의 개별 솔버에 의해 서로 병렬로 독립적으로 풀릴 수 있다.
1408a에서, N 개의 하위 문제는 예를 들어 각각의 하위 문제를 각각의 솔버에 할당함으로써 다수의 개별 솔버 사이에 분배된다. 예를 들어, 다수의 개별 솔버의 병렬 처리 기능을 활용함으로써 계산 부하를 분산하고 전체 KP를 풀기 위한 계산 시간을 줄이기 위하여 개별 솔버에는 N 개의 하위 문제 중 하나 또는 몇 개(예를 들어, 1, 10, 100 또는 1000의 정도로)가 할당될 수 있다.
1410a에서, KP는 2 회 이상의 반복을 수행함으로써 분산 컴퓨팅 시스템에 의해 풀린다. 일부 실시 예에서, K 개의 이중 승수들의 초기 값들의 집합은 1404a에서 KP를 N 개의 하위 문제들로 분해하기 위하여 사용될 수 있다. K 개의 이중 승수의 초기 값은 예를 들어 미리 결정된 값 또는 랜덤 값으로 결정될 수 있거나, 전술한 바와 같이 샘플링된 데이터를 사용하여 사전-해결에 의해 추정될 수 있다. K 개의 이중 승수는 업데이트될 수 있고, 따라서 K 개의 이중 승수에 기초하여 분해된 N 개의 하위 문제는 그에 따라 업데이트될 수 있다. 이와 같이, KP는 예를 들어 도 1의 맵리듀스 알고리즘(250)(알고리즘 1이라고도 함) 또는 도 7의 동기 좌표 하강(SCD) 알고리즘(750)(알고리즘 4이라고도 함)에 도시된 맵리듀스 방식으로 N 개의 하위 문제를 반복적인 방식으로 풂으로써 풀릴 수 있다.
하나의 반복에서, 1412a에서, N 개의 하위 문제들 각각은 다수의 개별 솔버 중 하나에 의해 독립적으로 풀린다. 일부 실시 예에서, N 개의 하위 문제들 각각은 (예를 들어, 252 또는 752에 도시된 바와 같이) 다수의 개별 솔버들 또는 맵퍼들 중 하나에 의해 독립적으로(예를 들어, 서로 병렬로) Map 함수를 실행함으로써 풀린다. Map 함수는 Map 함수(210 또는 710)와 같이 또는 다른 방식으로 정의될 수 있다. 일부 실시 예에서, N 개의 하위 문제들 각각을 푸는 것은 N 명의 사용자(N user) 중 대응하는 사용자에 할당될 M 개의 자원(예를 들어, 결정 변수 xi,j) 각각의 양을 계산하는 것을 포함한다.
일부 실시 예에서, 다수의 개별 솔버 중 하나에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것은 하위 문제가 할당된 솔버에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것을 포함한다. 일부 실시 예에서, 다수의 개별 솔버 중 하나에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것은, 다수의 개별 솔버 중 하나에 의해 N 개의 하위 문제 각각을 병렬로 푸는 것을 포함한다. 일부 실시 예에서, 다수의 개별 솔버들 중 하나에 의해 독립적으로 푸는 것은 N 개의 개별 솔버들 각각에 의해 N 개의 하위 문제들 각각을 병렬로 푸는 것을 포함한다. 일부 실시 예에서, N 개의 하위 문제들 각각은 정수 프로그래밍(IP) 문제이다. 따라서, 다수의 개별 솔버 중 하나에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것은, IP 솔버에 의하여 IP 문제를 독립적으로 푸는 것을 포함한다.
일부 실시 예에서, N 개의 하위 문제 각각을 푸는 것은, 예를 들어 Map 함수(210)에 정의된 바와 같이 대응하는 사용자에 할당될 M 개의 자원 각각의 양에 기초하여, 대응하는 사용자에 의한 M 개의 자원의 풀 당 비용을 K 개의 풀 각각에 대하여 계산하는 것을 더 포함한다. 일부 실시 예에서, K 개의 풀 각각에 대하여, N 명의 사용자 중 대응하는 사용자에 할당될 M 개의 자원 각각의 양에 기초하여, N 명의 사용자에 걸친 M 개의 자원의 풀 별 비용이 계산된다.
1414a에서, K 개의 이중 승수는 N 명의 사용자 중 대응하는 사용자에게 할당될 M 개의 자원 각각의 양에 기초하여 업데이트된다. 일부 실시 예에서, K 개의 이중 승수는 하나 이상의 개별 애그리게이터 또는 리듀서에 의해 (예를 들어, 254 또는 754에 도시된 바와 같이) Reduce 함수를 실행함으로써 업데이트될 수 있다. 일부 실시 예에서, K 개의 이중 승수 각각은 다수의 개별 애그리게이터 또는 리듀서의 수 중 하나에 의해 독립적으로(예를 들어, 서로 병렬로) (예를 들어, 254 또는 754에 도시된 바와 같이) Reduce 함수를 실행함으로써 업데이트될 수 있다. Reduce 함수는 Reduce 함수(220 또는 720)로서 또는 다른 방식으로 정의될 수 있다. 일부 실시 예에서, K 개의 이중 승수는 이중 하강(DD), 동기 좌표 하강, 순환 좌표 하강, 블록 좌표 하강 또는 다른 승수 업데이트 알고리즘에 따라 업데이트될 수 있다.
일부 실시 예에서, N 명의 사용자 중 대응하는 사용자에게 할당될 M 개의 자원 각각의 양에 기초하여 K 개의 이중 승수를 업데이트하는 것은, 예를 들어 Reduce 함수(220)으로서, 대응하는 글로벌 제약 조건에 의해 제한되는 대응하는 풀에 대한 2 명 이상의 사용자에 걸친 M 개의 자원의 풀 별 최대 비용 및 N 명의 사용자 중 대응하는 사용자에 할당될 M 개의 자원 각각의 양에 기초하여 계산되는 대응하는 풀에 대한 N 명의 사용자에 걸친 M 개의 자원의 풀 별 비용의 차이에 기초하여, 대응하는 풀에 관한 K 개의 이중 승수 각각을 업데이트하는 것을 포함한다.
일부 실시 예에서, K 개의 이중 승수를 업데이트하기 위한 개별 리듀서의 수는 예를 들어 KP를 풀기 위한 지정된 계산 시간(예를 들어, KP를 풀기 위하여 원하는 계산 시간)에 기초하여 결정될 수 있다. 일부 실시 예에서, K 개의 이중 승수를 업데이트하기 위한 개별 리듀서의 수를 결정하는 것은, 개별 리듀서의 수를 글로벌 제약 조건의 수인 K 이하로 결정하는 것을 포함한다. 개별 리듀서의 수가 K 인 경우, K 개의 이중 승수 각각은 각각의 개별 리듀서에 의해 업데이트될 수 있어서, K 개의 이중 승수는 각각의 K 개의 개별 리듀서에 의해 서로 병렬로 독립적으로 업데이트될 수 있다.
1416a에서, 수렴 조건이 충족되는지 여부를 결정한다. 수렴 조건은 예를 들어 최대 반복 횟수, K 개의 이중 승수 또는 둘 다를 기반으로 정의될 수 있다. 예를 들어, K 개의 이중 승수가 수렴되었거나 최대 횟수의 반복이 실행된 경우 수렴 조건이 충족될 수 있다. 추가 또는 상이한 수렴 조건이 지정될 수 있다.
1418a에서, 수렴 조건이 충족되었다고 결정한 것에 응답하여(예를 들어, K 개의 이중 승수에 기초하여), K 개의 이중 승수에 기초한 N 개의 하위 문제들 각각은 다수의 개별 솔버 중 하나에 의해 독립적으로 다시 풀릴 수 있고, N 개의 하위 문제 각각을 푸는 것은, N 명의 사용자 중 대응하는 사용자에게 할당될 M 개의 자원 각각의 양을 계산하는 것을 포함한다.
1420a에서, M 개의 자원들 각각의 양은 프로세스(1400a)의 출력으로서 리턴될 수 있고, N 명의 사용자 중 대응하는 사용자에게 할당될 수 있다.
도 14b는 본 명세서의 실시 예에 따라, L 개의 제약 조건이 있는 M 개의 자원의 자원 할당을 수행하기 위한 프로세스(1400b)의 예의 흐름도이다. 일부 실시 예에서, L 개의 제약 조건이 있는 M 개의 자원들의 자원 할당은 식 (14)-(16)에 의해 표현되는 정수 프로그래밍(IP) 문제와 같이 IP 문제로 표현될 수 있다. L 개의 제약 조건이 있는 M 개의 자원의 자원 할당은 트래픽 라우팅/관리, 마케팅 캠페인, 제품/서비스 프로모션 등에서의 자원 할당과 같은 하나 이상의 실제 시나리오를 나타낼 수 있다. 도 4와 관련하여 전술한 알고리즘 2는 프로세스(1400b)의 예이다.
일부 실시 예에서, L 개의 제약 조건이 있는 M 개의 자원들의 자원 할당은 예를 들어, (1)-(4)에 표현된 바와 같이 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 KP의 N 개의 하위 문제들 중 하나 또는 독립형 문제일 수 있다. 일부 실시 예에서, 프로세스(1400b)는 N 명의 사용자 중 M 개의 자원을 K 개의 글로벌 제약 조건 및 L 개의 제약 조건이 있는 K 개의 풀로의 자원 할당을 수행하는 N 명의 사용자 중 하나에 대하여 수행되며, 여기서 L 개의 제약 조건 각각은 단일 사용자에 의해 선택될 M 개의 자원들로부터 자원의 각각의 최대 수를 제한하고, K 개의 글로벌 제약 조건 각각은 N 명의 사용자에 걸쳐 각 풀에 할당된 자원을 제한한다.
프로세스(1400b)는 하나 이상의 프로세서에 의해 구현될 수 있는 IP 솔버(예를 들어, 맵퍼(110))를 사용하여 수행될 수 있다. 일부 실시 예에서, 프로세스(1400b)는 하나 이상의 위치에 위치되고 본 명세서에 따라 적절하게 프로그래밍된 하나 이상의 컴퓨터의 시스템과 같은 데이터 처리 장치에 의해 수행되는 것으로 설명될 것이다. 예를 들어, 적절하게 프로그래밍된 도 15의 컴퓨터 시스템(1500)은 프로세스(1400b)를 수행할 수 있다.
1402b에서, L 개의 제약 조건을 나타내는 데이터가 수신된다. 일부 실시 예에서, L 개의 제약 조건들 각각은 M 개의 자원들의 하위 집합에 대응하고, 예를 들어, 식 (3)에 도시된 바와 같이 M 개의 자원들의 하위 집합 중에서 선택되는 각각의 최대 자원 수 C를 제한한다. 일부 실시 예에서, L 개의 제약 조건은 예를 들어 도 15와 관련하여 기술된 바와 같이 계층 구조를 갖는다. 예를 들어, 제1 제약 조건에 대응하는 하위 집합이 제2 제약 조건에 대응하는 다른 하위 집합의 하위 집합이 아닌 한, L 개의 제약 조건 중 제1 제약 조건에 대응하는 임의의 하위 집합은 L 개의 제약 조건 중 제2 제약 조건에 대응하는 임의의 다른 하위 집합과 공통 자원을 갖지 않는다.
일부 실시 예에서, L 개의 제약 조건들을 나타내는 데이터는 L 개의 인덱스 하위 집합들을 포함하고, L 개의 인덱스 하위 집합들 각각은 L 개의 제약 조건들 중 각각의 제약 조건에 대응하고, L 개의 제약 조건들 중 각각의 제약 조건에 대응하는 M 개의 자원들의 하위 집합의 인덱스를 포함한다. 예를 들어, L 개의 제약 조건의 제약 조건 l은 M 개의 자원의 하위 집합 Sl에 대응하고, 하위 집합 Sl으로부터 선택될 최대 자원 수 Cl를 제한한다. 일부 실시 예에서, 하위 집합 Sl은 제약 조건 l에 대응하는 M 개의 자원들의 하위 집합의 인덱스를 포함하며, 여기서 l = 1, 2,…, L이다.
일부 실시 예에서, L 개의 제약 조건을 나타내는 데이터는 예를 들어 도 15와 관련하여 기술된 바와 같이 DAG(directed acyclic graph) 데이터 구조에서 노드에 의해 L 개의 제약 조건 각각을 나타내는 데이터를 포함한다. 일부 실시 예에서, DAG의 에지는 에지의 2 개의 노드에 대응하는 L 개의 제약 조건 중 두 개 사이의 관계를 나타낸다. DAG에는 방향성 사이클이 없다.
1404b에서, L 개의 제약 조건의 위상 순서가 결정되며, 여기서 위상 순서는 L 개의 제약 조건의 트래버스 순서를 정의한다. 일부 실시 예에서, L 개의 제약 조건들의 위상 순서는 DAG의 위상 순서를 결정하기 위한 기존의 알고리즘을 사용하여 결정된다.
1406b에서, 모든 M 개의 자원은 예를 들어 알고리즘 2의 410에 도시된 바와 같이 M 개의 자원 각각에 대한 결정 변수를 1(또는 임의의 다른 값)로 설정함으로써 초기 선택으로서 선택된다.
1408b에서, M 개의 보상(reward)을 나타내는 데이터가 획득되며, 각각의 보상은 각각 M 개의 자원 중 하나에 대응한다. 일부 실시 예에서, M 개의 보상은 각각 M 개의 비용 조정 보상이며, M 개의 비용 조정 보상 각각은 M 개의 자원 중 하나가 선택되면 보상에서 비용을 뺀 것을 포함한다.
1410b에서, M 개의 자원은 (예를 들어, 알고리즘 2에서 420으로 도시된 바와 같이) M 개의 자원에 대응하는 M 개의 보상에 따라 비-증가 순서로 소팅된다.
1412b에서, 하나 이상의 자원은 예를 들어 알고리즘 2에서 420-450에 도시된 바와 같이 L 개의 제약 조건의 위상 순서에서 각각의 제약 조건을 트래버스함으로써 초기 선택으로부터 제거된다. 일부 실시 예에서, 제거는 다음을 포함한다: 1414b에서, M 개의 자원의 하위 집합 Sl에 대응하고 하위 집합 Sl로부터 선택될 최대 자원 수 Cl을 제한하는 L 개의 제약 조건의 제약 조건 l에 대하여, 1416b에서 (예를 들어 알고리즘 2에서 440으로 나타낸 바와 같이) 하위 집합 Sl에서 현재 선택된 자원을 결정하는 것; 및 1418b에서, (예를 들어, 알고리즘 2에서 450에 도시된 바와 같이 선택되지 않은 자원의 결정 변수를 0으로 업데이트함으로써) 하위 집합 Sl에서 현재 선택된 자원들 중에서 상위 Cl 보상을 갖는 Cl 자원들 중 하나가 아닌 임의의 자원을, 하위 집합 Sl에서 현재 선택된 자원들 중에서 선택 해제(unselect)하는 것을 포함한다.
일부 실시 예에서, 하위 집합 Sl에서 현재 선택된 자원들 중에서 상위 Cl 보상을 갖는 Cl 자원들 중 하나가 아닌 임의의 자원을, 하위 집합 Sl에서 현재 선택된 자원들 중에서 선택 해제하는 것은, M 개의 자원의 비-증가 순서에 따라 하위 집합 Sl에서 현재 선택된 자원들 중에서 상위 Cl 보상을 갖는 Cl 자원들 중 하나가 아닌 임의의 자원을 선택 해제하는 것을 포함한다.
1420b에서, L 개의 제약 조건의 위상 순서에서 모든 L 개의 제약 조건이 트래버스되었는지 여부가 결정된다. 그렇다면, 프로세스(1400b)는 1422b로 진행한다. 그렇지 않으면, 프로세스(1400b)는 L 개의 제약 조건의 위상 순서에서 다음 제약 조건 l = l + 1에 대한 하나 이상의 자원을 제거하기 위하여 1414b로 되돌아 간다.
1422b에서, 선택된 자원은, 예를 들어 알고리즘 2의 460에 도시된 바와 같이, M 개의 자원 각각에 대한 결정 변수를 리턴하거나 출력함으로써 L 개의 제약 조건의 위상 순서로 모든 L 개의 제약 조건을 트래버스한 후에 할당된다.
도 14c는 본 명세서의 실시 예에 따라, 배낭 문제(KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀(예를 들어, K 개의 배낭)로 자원 할당하는 프로세스(1400c)의 다른 예의 흐름도이다. KP는 예를 들어 (1)-(4)에 도시된 바와 같이 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건을 따른다. 각각의 풀은 KP에 설명된대로 각각의 배낭에 대응할 수 있다. KP는 트래픽 라우팅/관리, 마케팅 캠페인, 제품/서비스 프로모션 등을 포함하는 자원 할당과 같은 하나 이상의 실제 시나리오를 나타낼 수 있다. 도 7과 관련하여 위에서 설명한 알고리즘 4는 프로세스(1400c)의 예일 수 있다.
프로세스(1400c)는 (예를 들어, 상이한 사용자들 사이에서 불신되거나 상이한 장소들에 위치된) 다수의 프로세서를 포함하는 분산 컴퓨팅 시스템(100)과 같은 분산 컴퓨팅 시스템을 사용하여 수행될 수 있다. 프로세서들 각각은 예를 들어 멀티 코어 처리 기능을 활용하여 하나 이상의 개별 솔버로 기능하거나, 이를 지원할 수 있다. 각 개별 솔버는 서로 병렬로 독립적으로 실행될 수 있다. 일부 실시 예에서, 개별 솔버 중 일부는 서로 병렬로 독립적으로 실행될 수 있는 IP 솔버(맵퍼라고도 함)(110)로서 기능할 수 있다. 일부 실시 예에서, 프로세서들 중 하나 이상은 서로 병렬로 독립적으로 실행될 수 있는 애그리게이터(리듀서라고도 함)(120)로서 기능할 수 있다. 일부 실시 예에서, 하나 이상의 프로세서는 이중 승수 업데이터(마스터 노드라고도 함)(130)로서 기능할 수 있다. 일부 실시 예에서, 예를 들어, 병렬 처리 기능을 활용하고 KP 해결의 계산 시간을 단축하기 위하여 상이한 개별 솔버가 서로 병렬로 독립적으로 실행될 수 있고 상이한 애그리게이터들이 서로 병렬로 독립적으로 실행될 수 있는 한, 단일 프로세서가 IP 솔버, 애그리게이터, 및 이중 승수 업데이터로서 기능하는데 사용될 수 있다.
일부 실시 예에서, 분산 컴퓨팅 시스템은 클라우드 컴퓨팅 시스템으로서 구현될 수 있다. 일부 실시 예에서, 분산 컴퓨팅 시스템은 맵리듀스 또는 다른 분산 컴퓨팅 프레임워크 또는 모델을 가질 수 있다. 일부 실시 예에서, 분산 컴퓨팅 시스템은 MPI, HADOOP 및 SPARK와 같은 공통 분산 플랫폼을 사용하여 구현될 수 있다. 일부 실시 예에서, 프로세스(1400c)는 본 명세서에 따라 하나 이상의 위치에 위치되고 적절하게 프로그래밍된 하나 이상의 컴퓨터의 시스템과 같은 데이터 처리 장치에 의해 수행되는 것으로 설명될 것이다. 예를 들어, 적절하게 프로그래밍된 도 15의 컴퓨터 시스템(1500)은 프로세스(1400c)를 수행할 수 있다.
1402c에서, KP의 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건을 나타내는 데이터가 수신된다. 일부 실시 예에서, L은 수십억 이상이다. K는 L보다 작다. K 개의 글로벌 제약 조건 각각은 예를 들어 식 2에 도시된 바와 같이 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용을 제한한다. L 개의 로컬 제약 조건 각각은 예를 들어 식 3에 도시된 바와 같이 M 개의 자원의 사용자 별 선택을 제한한다.
1403c에서, KP는 예를 들어 식 (8)-(13)에 도시된 방식으로 K 개의 이중 승수(예를 들어, λk, k = 1, 2,…, K)를 사용하여 이중 문제로 변환된다. K 개의 이중 승수들 각각은 K 개의 글로벌 제약 조건들 중 각각의 제약 조건에 대응한다.
1404c에서, 이중 문제는 N 개의 하위 문제로 분해되고, N 개의 하위 문제들 각각은 N 명의 사용자 중 각각의 사용자에 대응하고 예를 들어 식 (14)-(16)에 도시된 바와 같이 N 명의 사용자 중 각각의 사용자에 관한 L 개의 로컬 제약 조건이 있다. 일부 실시 예에서, N은 10 억 이상이다.
일부 실시 예에서, L 개의 제약 조건은 예를 들어, 도 5와 관련하여 기술된 바와 같이 계층적 구조를 갖는다. 예를 들어, 제1 제약 조건에 대응하는 하위 집합이 제2 제약 조건에 대응하는 다른 하위 집합의 하위 집합이 아닌 한, L 개의 제약 조건 중 제1 제약 조건에 대응하는 임의의 하위 집합은 L 개의 제약 조건 중 제2 제약 조건에 대응하는 임의의 다른 하위 집합과 공통 자원을 갖지 않는다.
K 개의 이중 승수가 주어지면, N 개의 하위 문제는 N 개의 하위 문제 각각을 해결함에 있어서 K 개의 글로벌 제약 조건을 고려하지 않고 대응하는 사용자에 관한 L 개의 로컬 제약 조건을 준수하여 독립적으로 풀릴 수 있다.
1406c에서, N 개의 하위 문제를 풀기 위한 개별 솔버(예를 들어, IP 솔버(110))의 수가 결정된다. 일부 실시 예에서, N 개의 하위 문제를 풀기 위한 개별 솔버의 수를 결정하는 것은, KP를 풀기 위한 지정된 계산 시간(예를 들어, 최대 수십억의 사용자 및 로컬 제약 조건을 수반하는 대규모 KP가 주어졌을 때, K를 풀기 위한 원하는 계산 시간)에 기초하여 N 개의 하위 문제를 풀기 위한 개별 솔버의 수를 결정하는 것을 포함한다. 일부 실시 예에서, N 개의 하위 문제를 풀기 위한 개별 솔버의 수를 결정하는 것은, 개별 솔버의 수를 사용자 수 N보다 작거나 같은 것으로 결정하는 것을 포함한다. 개별 솔버의 수가 N인 경우, N 개의 하위 문제 각각은 각각의 개별 솔버에 의해 풀릴 수 있으므로, N 개의 하위 문제는 각각의 N 개의 개별 솔버에 의해 서로 병렬로 독립적으로 풀릴 수 있다.
1408c에서, N 개의 하위 문제는 다수의 개별 솔버들 사이에 분배된다. 예를 들어, 다수의 개별 솔버의 병렬 처리 기능을 활용함으로써 계산 부하를 분산하고 전체 KP를 풀기 위한 계산 시간을 줄이기 위하여 개별 솔버에는 N 개의 하위 문제중 하나 또는 몇 개(예를 들어, 1, 10, 100 또는 1000 정도로)가 할당될 수 있다.
1410c에서, 이중 문제는 2 회 이상의 반복을 수행함으로써 분산 컴퓨팅 시스템에 의해 풀린다. 일부 실시 예에서, 1411c에서 K 개의 이중 승수들의 초기 값들의 집합은 1403c에서 KP를 N 개의 하위 문제들로 분해하기 위하여 결정될 수 있다. K 개의 이중 승수의 초기 값은 예를 들어 미리 결정된 값 또는 랜덤 값으로 결정될 수 있거나, 전술한 바와 같이 샘플링된 데이터를 사용하여 사전-해결에 의해 추정될 수 있다. 예를 들어 K 개의 이중 승수의 초기 값은 S 명의 사용자 사이에서 K 개의 샘플링된 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 K 개의 풀로의 자원 할당에 대한 KP의 샘플링된 버전에 기초하여 계산되고, 여기서 S 명의 사용자는 N 명의 사용자로부터 샘플링되고, K 개의 샘플링된 글로벌 제약 조건 각각은 K 개의 풀 각각에 대하여 S 명의 사용자에 걸쳐 자원의 각각의 스케일-다운된 최대 총 비용을 제한한다.
K 개의 이중 승수는 업데이트될 수 있고, 따라서 K 개의 이중 승수에 기초하여 분해된 N 개의 하위 문제는 그에 따라 업데이트될 수 있다. 이와 같이, KP는 예를 들어 도 7의 동기 좌표 하강(SCD) 알고리즘(750)(알고리즘 4라고도 함)에 도시된 맵리듀스 방식으로 N 개의 하위 문제를 반복적인 방식으로 풂으로써 풀릴 수 있다.
예를 들어, 1412c에서, 1회 반복에서, N 개의 하위 문제 각각은 다수의 개별 솔버 중 하나에 의해 독립적으로 풀린다. 일부 실시 예에서, N 명의 사용자 각각에 대응하는 N 개의 하위 문제들 각각을 푸는 것은 업데이트된 이중 승수에 대응하는 N 명의 사용자 각각의 M 개의 결정 변수(예를 들어, 결정 변수 xi,j)를 계산하는 것을 포함한다. 여기서, M 개의 결정 변수들 각각은 N 명의 사용자 각각에 의해 M 개의 자원들 각각을 선택할지 여부를 표시한다.
일부 실시 예에서, N 개의 하위 문제들 각각은 다수의 개별 솔버들 또는 맵퍼들 중 하나에 의해 독립적으로 (예를 들어, 서로 병렬로) (예를 들어, 752에 도시된 바와 같이) Map 함수를 실행함으로써 풀린다. Map 함수는 Map 함수(710)로서 또는 다른 방식으로 정의될 수 있다. 예를 들어, N 명의 사용자 각각에 대응하는 N 개의 하위 문제 각각을 푸는 것은: 사용자에 대응하는 하위 문제에 대하여 및 풀에 대응하는 글로벌 제약 조건에 대응하는 각각의 이중 승수에 대하여, 이중 승수의 후보를 계산하는 것; 이중 승수의 후보들을 비-증가 순서로 소팅하는 것; 이중 승수의 후보를 비-증가 순서로 트래버스하는 것; 이중 승수의 각 후보에 대하여, 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수를 계산하는 것; 및 비-증가 순서의 이중 승수의 후보에 선행하는 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수에 기초하여 선택된 자원의 비용에 대한 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수에 기초하여 선택된 자원의 증분 비용을 계산하는 것을 포함한다. 일부 실시 예에서, 특정 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 자원들의 총 비용은, 특정 이중 승수보다 크거나 같은 이중 승수의 모든 후보들에 대응하는 사용자의 선택된 자원들의 증분 비용을 합산함으로써 계산된다.
일부 실시 예에서, 이중 승수의 계산 후보들은 이중 승수의 M 개의 선형 함수들의 한 쌍의 교차점을 계산하는 것을 포함하고, 이중 승수의 M 개의 선형 함수들은 이중 승수가 주어졌을 때 M 개의 자원들의 M 개의 비용 조정 보상들을 나타낸다.
실시 예에서, 비-음수 임계치는 비-증가 순서로 소팅된 이중 승수의 후보들 및 예를 들어, 도 13과 관련하여 기술된 기법에 따라 비-증가 순서로 이중 승수의 후보들 중 하나에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 각각의 총 자원 비용에 기초하여 계산된다. 일부 실시 예에서, 예를 들어 도 13과 관련하여 설명된 바와 같은 기술에 따라 비-음수 임계치를 계산하기 위하여 비-증가 순서로 소팅된 이중 승수의 후보에 대하여 보간이 수행된다.
일부 실시 예에서, 프로세스(1400c)의 수렴을 가속화하기 위하여 상술된 미세 조정된 버킷팅 알고리즘과 같은 버킷팅 방식이 수행될 수 있다. 예를 들어, 이중 승수의 후보는 복수의 불균일한(non-uniform) 예산으로 그룹화되고; 복수의 불균일한 예산에서 이중 승수의 각각의 후보에 대응하는 사용자의 선택된 자원의 증분 비용의 합이 계산되고; 비-음수 임계치가 증분 비용의 합에 기초하여 계산된다.
일부 실시 예에서, 다수의 개별 솔버 중 하나에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것은, 하위 문제가 할당된 솔버에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것을 포함한다. 일부 실시 예에서, 다수의 개별 솔버 중 하나에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것은, 다수의 개별 솔버 중 하나에 의해 N 개의 하위 문제 각각을 병렬로 푸는 것을 포함한다. 일부 실시 예에서, 다수의 개별 솔버들 중 하나에 의하여 독립적으로 푸는 것은, N 개의 개별 솔버들 각각에 의해 N 개의 하위 문제들 각각을 병렬로 푸는 것을 포함한다. 일부 실시 예에서, N 개의 하위 문제들 각각은 정수 프로그래밍(IP) 문제이다. 따라서, 다수의 개별 솔버 중 하나에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것은, IP 솔버(예를 들어, 도 4와 관련하여 기술된 바와 같은 계층적 그리디 IP 솔버)에 의해 IP 문제를 독립적으로 푸는 것을 포함한다.
1414c에서, 2 명 이상의 사용자에 걸쳐 M 개의 자원의 최대 풀 별 비용을 제한하는 풀에 대응하는 글로벌 제약 조건에 대응하는 각각의 이중 승수에 대하여, 풀에 대응하는 글로벌 제약 조건에 대한 업데이트된 이중 승수는 예를 들어,도 7의 알고리즘 4의 722에 도시된 바와 같이 최소 임계치 v와 같은 비-음수 임계치인 것으로 결정된다. 비-음수 임계치는, 비-음수 임계치보다 작은 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 풀 별 최대 비용을 초과하고; 비-음수 임계치 미만이 아닌 2중 승수에 대응하는 풀에 대한 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 풀 별 최대 비용을 초과하지 않도록 할 수 있다.
1416c에서, 수렴 조건이 충족되는지 여부를 결정한다. 수렴 조건은 예를 들어 최대 반복 횟수, K 개의 이중 승수 또는 둘 다를 기반으로 정의될 수 있다. 예를 들어, K 개의 이중 승수가 수렴되었거나 최대 횟수의 반복이 실행된 경우 수렴 조건이 충족될 수 있다. 추가 또는 상이한 수렴 조건이 지정될 수 있다.
1418c에서, (예를 들어, K 개의 이중 승수에 기초하여) 수렴 조건이 충족되었다고 결정한 것에 응답하여, K 개의 이중 승수에 기초한 N 개의 하위 문제들 각각은 다수의 개별 솔버 중 하나에 의해 독립적으로 다시 풀릴 수 있고, N 개의 하위 문제 각각을 푸는 것은, K 개의 이중 승수에 대응하는 N 명의 사용자 각각의 M 개의 결정 변수를 계산하는 것을 포함한다.
1420c에서, M 개의 자원은 N 명의 사용자 중 각 사용자의 M 개의 결정 변수에 따라 N 명의 사용자 사이에 할당된다. N 명의 사용자 중 각 사용자의 M 개의 결정 변수는 프로세스(1400c)의 출력으로서 리턴될 수 있다.
도 15는 본 명세서의 실시 예에 따른 설명된 알고리즘들, 방법들, 함수들, 프로세스들, 흐름들 및 프로시져들과 관련된 계산 기능들을 제공하기 위하여 사용되는 컴퓨터 구현 시스템(1500)의 예를 예시하는 블록도를 도시한다. 도 15는 본 개시의 일 실시 예에 따른, 설명된 알고리즘, 방법, 함수, 프로세스, 흐름 및 프로시져와 관련된 계산 기능을 제공하기 위하여 사용되는 컴퓨터 구현 시스템(1500)의 예를 나타내는 블록도이다. 예시된 실시 예에서, 시스템(1500)은 컴퓨터(1502) 및 네트워크(1530)를 포함한다.
예시된 컴퓨터(1502)는 서버, 데스크탑 컴퓨터, 랩탑/노트북 컴퓨터, 무선 데이터 포트, 스마트 폰, PDA(personal data assistant), 태블릿 컴퓨터, 이들 디바이스 내의 하나 이상의 프로세서와 같은 임의의 컴퓨팅 디바이스, 다른 컴퓨팅 디바이스 또는 컴퓨팅 디바이스의 물리적 또는 가상 인스턴스 또는 컴퓨팅 디바이스의 물리적 또는 가상 인스턴스의 조합을 포함하는 컴퓨팅 디바이스의 조합을 포함하도록 의도된다. 또한, 컴퓨터(1502)는 키패드, 키보드, 터치 스크린과 같은 입력 디바이스, 다른 입력 디바이스, 또는 사용자 정보를 수용할 수 있는 입력 디바이스의 조합, 및 디지털 데이터, 시각, 오디오, 다른 타입의 정보 또는 정보의 타입의 조합을 포함하는, 컴퓨터(1502)의 동작과 관련된 정보를 그래픽 타입 사용자 인터페이스(user interface, UI)(또는 GUI) 또는 다른 UI 상에 전달하는 출력 디바이스를 포함할 수 있다.
컴퓨터(1502)는 클라이언트, 네트워크 컴포넌트, 서버, 데이터베이스 또는 다른 영속성(persistency)으로서의 역할, 다른 역할, 또는 본 개시에 기술된 주제(subject matter)을 수행하기 위한 역할의 조합으로서 분산 컴퓨팅 시스템에서 작용할 수 있다. 예시된 컴퓨터(1502)는 네트워크(1530)와 통신 가능하게 결합된다. 일부 실시 예에서, 컴퓨터(1502)의 하나 이상의 컴포넌트는 클라우드 컴퓨팅 기반, 로컬, 글로벌, 다른 환경, 또는 환경의 조합을 포함하는 환경 내에서 동작하도록 구성될 수 있다.
높은 수준에서, 컴퓨터(1502)는 설명된 주제와 관련된 데이터 및 정보를 수신, 송신, 처리, 저장 또는 관리하도록 동작 가능한 전자 컴퓨팅 디바이스이다. 일부 실시 예에 따르면, 컴퓨터(1502)는 또한 애플리케이션 서버, 이메일 서버, 웹 서버, 캐싱 서버, 스트리밍 데이터 서버, 다른 서버 또는 서버들의 조합을 포함하는 서버를 포함하거나 이와 통신 가능하게 연결될 수 있다.
컴퓨터(1502)는 네트워크(1530)를 통해 (예를 들어, 다른 컴퓨터(1502) 상에서 실행되는 클라이언트 소프트웨어 애플리케이션으로부터) 요청을 수신하고, 소프트웨어 애플리케이션 또는 소프트웨어 애플리케이션의 조합을 사용하여 수신된 요청을 처리함으로써 수신된 요청에 응답할 수 있다. 또한, 요청은 내부 사용자(예를 들어, 명령 콘솔로부터 또는 다른 내부 액세스 방법에 의해), 외부 또는 제3자 또는 기타 엔티티, 개인, 시스템 또는 컴퓨터로부터 컴퓨터(1502)로 전송될 수 있다.
컴퓨터(1502)의 컴포넌트들 각각은 시스템 버스(1503)를 사용하여 통신할 수 있다. 일부 실시 예에서, 하드웨어, 소프트웨어, 또는 하드웨어 및 소프트웨어의 조합을 포함하는 컴퓨터(1502)의 임의의 또는 모든 컴포넌트는 API(Application Programming Interface)(1512), 서비스 계층(1513), 또는 API(1512) 및 서비스 계층(1513)의 조합을 사용하여 시스템 버스(1503)를 통하여 인터페이스할 수 있다. API(1512)는 루틴, 데이터 구조 및 객체 클래스에 대한 사양을 포함할 수 있다. API(1512)는 컴퓨터 언어 독립적이거나 의존적일 수 있으며 완전한 인터페이스, 단일 함수 또는 심지어 API의 집합을 지칭한다. 서비스 계층(1513)은 컴퓨터(1502) 또는 컴퓨터(1502)와 통신 가능하게 연결된 다른 컴포넌트들(도시된지 여부에 상관없이)에 소프트웨어 서비스를 제공한다. 컴퓨터(1502)의 기능은 서비스 계층(1513)을 사용하여 모든 서비스 소비자가 액세스할 수 있다. 서비스 계층(1513)에 의해 제공되는 것과 같은 소프트웨어 서비스는 정의된 인터페이스를 통해 재사용 가능한 정의된 기능들을 제공한다. 예를 들어, 인터페이스는 JAVA, C ++, 다른 컴퓨팅 언어 또는 XML(Extensible Markup Language) 포맷, 다른 포맷 또는 포맷의 조합으로 데이터를 제공하는 컴퓨팅 언어의 조합으로 작성된 소프트웨어일 수 있다. 컴퓨터(1502)의 통합 컴포넌트로서 도시되어 있지만, 대안적인 실시 예는 API(1512) 또는 서비스 계층(1513)을 컴퓨터(1502)의 다른 컴포넌트 또는 컴퓨터(1502)에 통신 가능하게 연결된 다른 컴포넌트(도시된지 여부에 상관없이)에 대한 독립형 컴포넌트로서 예시할 수 있다. 또한, API(1512) 또는 서비스 계층(1513)의 임의의 부분 또는 모든 부분은 본 개시의 범위를 벗어나지 않고 다른 소프트웨어 모듈, 엔터프라이즈 애플리케이션 또는 하드웨어 모듈의 차일드(child) 또는 하위 모듈로서 구현될 수 있다.
컴퓨터(1502)는 인터페이스(1504)를 포함한다. 단일 인터페이스(1504)로서 도시되었지만, 2 개 이상의 인터페이스(1504)는 컴퓨터(1502)의 특정 요구(needs), 요청(desires) 또는 특정 실시 예에 따라 사용될 수 있다. 인터페이스(1504)는 분산 환경에서 네트워크(1530)에 통신 가능하게 링크된 다른 컴퓨팅 시스템(도시된지 여부에 상관 없이)과 통신하기 위하여 컴퓨터(1502)에 의해 사용된다. 일반적으로, 인터페이스(1504)는 네트워크(1530)와 통신하도록 동작 가능하고 소프트웨어, 하드웨어 또는 소프트웨어 및 하드웨어의 조합으로 인코딩된 로직을 포함한다. 보다 구체적으로, 인터페이스(1504)는 네트워크(1530) 또는 인터페이스(1504)의 하드웨어가 예시된 컴퓨터(1502) 내부 및 외부에서 물리적 신호를 통신하게끔 동작 가능하도록, 통신과 관련된 하나 이상의 통신 프로토콜을 지원하는 소프트웨어를 포함할 수 있다.
컴퓨터(1502)는 프로세서(1505)를 포함한다. 단일 프로세서(1505)로서 도시되었지만, 2 개 이상의 프로세서(1505)가 컴퓨터(1502)의 특정 요구, 요청 또는 특정 실시 예에 따라 사용될 수 있다. 일반적으로, 프로세서(1505)는 명령어들을 실행하고, 컴퓨터(1502)의 동작 및 본 개시에서 설명된 임의의 알고리즘, 방법, 함수, 프로세스, 흐름 및 프로시져를 수행하기 위하여 데이터를 다룬다.
컴퓨터(1502)는 또한 컴퓨터(1502), 네트워크(1530)와 통신 가능하게 링크된 다른 컴포넌트(도시 여부와 관계 없음), 또는 컴퓨터(1502)와 다른 컴포넌트의 조합을 위하여 데이터를 보유할 수 있는 데이터베이스(1506)를 포함한다. 예를 들어, 데이터베이스(1506)는 본 개시에 따른 데이터를 저장하는 인-메모리(in-memory), 종래의 또는 다른 타입의 데이터베이스일 수 있다. 일부 실시 예에서, 데이터베이스(1506)는 컴퓨터(1502)의 특정 요구, 요청 또는 특정 실시 예 및 설명된 기능에 따라 2 개 이상의 상이한 데이터베이스 타입(예를 들어, 하이브리드 인-메모리 및 종래의 데이터베이스)의 조합일 수 있다. 단일 데이터베이스(1506)로서 도시되어 있지만, 유사하거나 상이한 타입의 2 개 이상의 데이터베이스가 컴퓨터(1502)의 특정 요구, 요청 또는 특정 실시 예 및 설명된 기능에 따라 사용될 수 있다. 데이터베이스(1506)가 컴퓨터(1502)의 내장(integral) 컴포넌트로서 도시되어 있지만, 대안적인 실시 예에서, 데이터베이스(1506)는 컴퓨터(1502) 외부에 있을 수 있다. 예로서, 데이터베이스(1506)는 KP의 전술한 글로벌 제약 조건(1516) 및 로컬 제약 조건(1518)을 포함할 수 있다.
컴퓨터(1502)는 또한 컴퓨터(1502), 네트워크(1530)(도시 여부에 관계 없음)에 통신 가능하게 링크된 다른 컴포넌트 또는 컴포넌트들, 또는 컴퓨터(1502)와 다른 컴포넌트의 조합을 위한 데이터를 보유할 수 있는 메모리(1507)를 포함한다. 메모리(1507)는 본 개시에 따른 임의의 데이터를 저장할 수 있다. 일부 실시 예에서, 메모리(1507)는 컴퓨터(1502)의 특정 요구, 요청 또는 특정 실시 예 및 설명된 기능에 따라 2 개 이상의 상이한 타입의 메모리의 조합(예를 들어, 반도체 및 자기 스토리지의 조합)일 수 있다. 단일 메모리(1507)로서 도시되어 있지만, 컴퓨터(1502)의 특정 요구, 요청 또는 특정 실시 예 및 설명된 기능에 따라 2 개 이상의 메모리(1507) 또는 유사하거나 상이한 타입이 사용될 수 있다. 메모리(1507)가 컴퓨터(1502)의 내장 컴포넌트로서 도시되어 있지만, 대안적인 실시 예에서, 메모리(1507)는 컴퓨터(1502) 외부에 있을 수 있다.
애플리케이션(1508)은 특히 본 개시에 기술된 기능과 관련하여 컴퓨터(1502)의 특정 요구, 요청 또는 특정 실시 예에 따른 기능을 제공하는 알고리즘 소프트웨어 엔진이다. 예를 들어, 애플리케이션(1508)은 하나 이상의 컴포넌트, 모듈 또는 애플리케이션의 역할을 할 수 있다. 또한, 단일 애플리케이션(1508)으로서 도시되어 있지만, 애플리케이션(1508)은 컴퓨터(1502) 상에서 다수의 애플리케이션(1508)으로서 구현될 수 있다. 또한, 컴퓨터(1502)에 내장되어 있는 것으로 도시되어 있지만, 대안적인 실시 예에서, 애플리케이션(1508)은 컴퓨터(1502) 외부에 있을 수 있다.
컴퓨터(1502)는 또한 전원 장치(1514)를 포함할 수 있다. 전원 장치(1514)는 사용자가 교체하거나 사용자가 교체할 수 없도록 구성될 수 있는 충전 가능 또는 충전 불가능 배터리를 포함할 수 있다. 일부 실시 예에서, 전원 장치(1514)는 전력 변환 또는 (충전, 대기 또는 다른 전력 관리 기능을 포함하는) 관리 회로를 포함할 수 있다. 일부 실시 예에서, 전원 장치(1514)는 컴퓨터(1502)가 예를 들어 컴퓨터(1502)에 전력을 공급하거나 충전 가능 배터리를 충전하기 위하여 벽 소켓 또는 다른 전원에 플러그될 수 있게 하는 전원 플러그를 포함할 수 있다.
네트워크(1530)를 통해 통신하는 컴퓨터(1502)를 포함하는 컴퓨터 시스템과 관련되거나 그 외부에 임의의 수의 컴퓨터(1502)가 존재할 수 있다. 또한, 용어 "클라이언트", "사용자" 또는 다른 적절한 용어는 본 개시의 범위를 벗어나지 않으면서 적절하게 상호교환적으로 사용될 수 있다. 더욱이, 본 개시는 많은 사용자들이 하나의 컴퓨터(1502)를 사용할 수 있거나 한 명의 사용자가 다수의 컴퓨터(1502)를 사용할 수 있다는 것을 고려한다.
도 16a는 본 명세서의 실시 예에 따른 장치(1600a)의 모듈들의 예를 나타내는 도면이다. 장치(1600a)는 K 개의 글로벌 제약 조건 및 L 개의 제약 조건이 있는 백팩 문제를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀로의 자원 할당을 수행하기 위하여 다수의 개별 컴퓨터 구현 솔버를 포함하는 분산 컴퓨팅 시스템과 같은 데이터 처리 장치의 예시적인 실시 예일 수 있다. 장치(1600a)는 전술한 실시 예에 대응할 수 있고, 장치(1600a)는 상기 K 개의 글로벌 제약 조건 및 상기 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하기 위한 수신 모듈(1601a)로서, K는 L보다 작고, K 개의 글로벌 제약 조건 각각은 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용(per-pool cost)을 제한하고, L 개의 로컬 제약 조건 각각은 M 개의 자원의 사용자 별 선택(per-user selection)을 제한하는 상기 수신 모듈(1601a); K 개의 이중 승수(dual multiplier)를 사용하여 상기 KP를 N 개의 하위 문제로 분해(decompose)하기 위한 분해 모듈(1602a)로서, 상기 N 개의 하위 문제 각각은 N 명의 사용자 중 각각의 사용자에 대응하고, 상기 대응하는 사용자에 관한 L 개의 로컬 제약 조건이 있으며, N은 수십억 이상(on an order of billions or larger)이며, K 개의 이중 승수 각각은 K 개의 글로벌 제약 조건의 각각의 제약 조건에 대응하는 상기 분해 모듈(1602a); 상기 N 개의 하위 문제를 풀기 위한 상기 다수의 개별 컴퓨터 구현 솔버를 결정하기 위한 제1 결정 모듈(1603a); 상기 N 개의 하위 문제를 상기 다수의 개별 컴퓨터 구현 솔버 사이에서 분배하기 위한 분배 모듈(1604a); 및 상기 분산 컴퓨팅 시스템에 의해 2 회 이상의 반복을 수행함으로써 상기 KP를 풀기 위한 제1 해결 모듈(1605a)를 포함한다. 제1 해결 모듈((1605a)은 1 회의 반복에서, 상기 N 개의 하위 문제 각각을, 상기 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 독립적으로 풀기 위한 제1 해결 하위 모듈(first solving sub-module) - 상기 N 개의 하위 문제 각각을 푸는 것은 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양을 계산하는 것을 포함함 - ; 및 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 상기 K 개의 이중 승수를 업데이트하기 위한 업데이트 하위 모듈(updating sub-module)을 더 포함한다.
선택적인 실시 예에서, L은 수십억 이상이다.
선택적인 실시 예에서, N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 것은, KP를 풀기 위한 지정된 계산 시간에 기초하여 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 것을 포함하고; 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것은, 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 N 개의 하위 문제 각각을 병렬로 푸는 것을 포함한다.
선택적 실시 예에서, N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 것은, 다수의 개별 컴퓨터 구현 솔버를 N 개로 결정하는 것을 포함하고, N 개의 하위 문제의 각각을 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 독립적으로 푸는 것은, N 개의 개별 컴퓨터 구현 솔버 중 각각에 의해 N 개의 하위 문제 각각을 병렬로 푸는 것을 포함한다.
선택적인 실시 예에서, 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 N 개의 하위 문제 각각을 독립적으로 푸는 것은, 정수 프로그래밍(IP) 컴퓨터 구현 솔버에 의하여 IP 문제를 독립적으로 푸는 것을 포함한다.
선택적인 실시 예에서, 장치(1600a)는 상기 K 개의 이중 승수에 기초하여 수렴 조건이 충족되는지 여부를 결정하기 위한 제2 결정 모듈(1606a); 상기 K 개의 이중 승수에 기초하여 수렴 조건이 충족된다고 결정하는 것에 응답하여, 상기 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 상기 K 개의 이중 승수에 기초하여 상기 N 개의 하위 문제 각각을 독립적으로 풀기 위한 제2 해결 모듈(1607a) - 상기 N 개의 하위 문제 각각을 푸는 것은 상기 N 명의 사용자 중 대응하는 사용자에 할당될 상기 M 개의 자원 각각의 양을 계산하는 것을 포함함 - ; 및 상기 N 명의 사용자 중 대응하는 사용자에 상기 M 개의 자원 각각의 양을 할당(allocate)하기 위한 할당 모듈(1608a)을 더 포함한다.
선택적 실시 예에서, N 개의 하위 문제 각각을 푸는 것은, K 개의 풀 각각에 대하여, 대응하는 사용자에게 할당될 M 개의 자원 각각의 양에 기초하여 대응하는 사용자에 의한 M 개의 자원의 풀 별 비용을 계산하는 것을 더 포함한다.
선택적인 실시 예에서, 장치(1600a)는 1 회의 반복에서, 상기 K 개의 풀 각각에 대하여, 상기 N 명의 사용자의 대응하는 사용자에 할당될 M 개의 자원 각각의 양에 기초하여 상기 N 명의 사용자에 걸쳐 상기 M 개의 자원의 풀 별 비용을 계산하기 위한 계산 모듈; 및 대응하는 글로벌 제약 조건에 의해 제한되는 대응하는 풀에 대한 2 명 이상의 사용자에 걸친 상기 M 개의 자원의 최대 풀 별 비용, 및 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 계산되는 상기 대응하는 풀에 대한 상기 N 명의 사용자에 걸친 상기 M 개의 자원의 풀 별 비용의 차이에 기초하여, 대응하는 풀에 대하여 상기 K 개의 이중 승수 각각을 업데이트하는 업데이트 하위 모듈을 더 포함한다.
전술한 실시 예에 도시된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하여 구현될 수 있거나, 특정 기능을 갖는 제품을 사용하여 구현될 수 있다. 전형적인 실시 예의 디바이스는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩탑 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트 폰, PDA, 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스 또는 이러한 디바이스의 임의의 조합일 수 있다.
장치에서 각 모듈의 기능 및 역할의 실시 예 프로세스의 경우, 이전 방법에서 대응하는 단계의 실시 예 프로세스가 참조될 수 있다. 간략화를 위하여 여기에서 세부 사항을 생략한다.
장치 실시 예는 기본적으로 방법 실시 예에 대응하므로, 관련 부분에 대하여서는, 방법 실시 예의 관련 설명을 참조할 수 있다. 전술한 장치 실시 예는 단지 예일 뿐이다. 개별 부분으로서 기술된 모듈은 물리적으로 분리되거나 아닐 수 있고, 모듈로서 디스플레이된 부분은 물리적 모듈일 수 있거나 아닐 수 있고, 한 위치에 위치될 수 있거나, 다수의 네트워크 모듈에 분산될 수 있다. 본 명세서의 솔루션의 목표를 달성하기 위하여 실제 요구에 기초하여 일부 또는 모든 모듈이 선택될 수 있다. 당업자는 창조적 노력 없이 본 출원의 실시 예을 이해하고 구현할 수 있다.
다시 도 16a를 참조하면, K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는(subject to) 배낭 문제(knapsack problem, KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀로 자원 할당을 수행하기 위한 다수의(a number of) 개별 컴퓨터 구현 솔버(solver)를 포함하는 분산 컴퓨팅 시스템과 같은, 데이터 처리 장치의 내부 기능 모듈 및 구조를 도시하는 것으로 해석될 수 있다. 본질적으로 실행 물체(body)는 전자 디바이스일 수 있고, 전자 디바이스는 하나 이상의 프로세서 및 하나 이상의 프로세서의 실행 가능한 명령어들을 저장하도록 구성된 메모리를 포함한다.
하나 이상의 프로세서는 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하고(여기서, K는 L보다 작고, K 개의 글로벌 제약 조건 각각은 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용을 제한하고, L 개의 로컬 제약 조건 각각은 M 개의 자원의 사용자 별 선택을 제한함); K 개의 이중 승수(dual multiplier)를 사용하여 상기 KP를 N 개의 하위 문제로 분해하고(상기 N 개의 하위 문제 각각은 N 명의 사용자 중 각각의 사용자에 대응하고, 상기 대응하는 사용자에 관한 L 개의 로컬 제약 조건이 있으며, N은 수십억 이상이며, K 개의 이중 승수 각각은 K 개의 글로벌 제약 조건 중 각각의 제약 조건에 대응함); 상기 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하고; 상기 N 개의 하위 문제를 상기 다수의 개별 컴퓨터 구현 솔버 사이에서 분배하며; 상기 분산 컴퓨팅 시스템에 의해 2 회 이상의 반복을 수행함으로써 상기 KP를 풀도록 구성된다. 1 회의 반복에서, 상기 하나 이상의 프로세서는 상기 N 개의 하위 문제 각각을, 상기 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 독립적으로 풀고(상기 N 개의 하위 문제 각각을 푸는 것은, 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양을 계산하는 것을 포함함); 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 상기 K 개의 이중 승수를 업데이트하도록 구성된다.
선택적으로, L은 수십억 이상이다.
선택적으로, 상기 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 것은, 상기 KP를 풀기 위한 지정된 계산 시간에 기초하여 상기 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 것을 포함하고, 상기 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 상기 N 개의 하위 문제 각각을 독립적으로 푸는 것은, 상기 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 상기 N 개의 하위 문제 각각을 병렬로 푸는 것을 포함한다.
선택적으로, 상기 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 것은, 상기 다수의 개별 컴퓨터 구현 솔버를 N 개로 결정하는 것을 포함하고, 상기 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 상기 N 개의 하위 문제 각각을 독립적으로 푸는 것은, 상기 N 개의 개별 컴퓨터 구현 솔버 각각에 의해 상기 N 개의 하위 문제 각각을 병렬로 푸는 것을 포함한다.
선택적으로, 상기 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 상기 N 개의 하위 문제 각각을 독립적으로 푸는 것은, IP 컴퓨터 구현 솔버에 의해 정수 프로그래밍(integer programming, IP) 문제를 독립적으로 푸는 것을 포함한다.
선택적으로, 하나 이상의 프로세서는 상기 K 개의 이중 승수에 기초하여 수렴 조건이 충족되는지 여부를 결정하고; 상기 K 개의 이중 승수에 기초하여 수렴 조건이 충족된다고 결정하는 것에 응답하여, 상기 다수의 개별 프로세서 중 하나에 의해 상기 K 개의 이중 승수에 기초하여 상기 N 개의 하위 문제 각각을 독립적으로 풀고(상기 N 개의 하위 문제 각각을 푸는 것은 상기 N 명의 사용자 중 대응하는 사용자에 할당될 상기 M 개의 자원 각각의 양을 계산하는 것을 포함함); 상기 N 명의 사용자 중 대응하는 사용자에 상기 M 개의 자원 각각의 양을 할당하도록 구성된다.
선택적으로, N 개의 하위 문제 각각을 푸는 것은 상기 K 개의 풀 각각에 대하여, 상기 대응하는 사용자에 할당될 M 개의 자원 각각의 양에 기초하여 상기 대응하는 사용자에 의한 M 개의 자원의 풀 별 비용을 계산하는 것을 더 포함한다.
선택적으로, 하나 이상의 프로세서는 상기 K 개의 풀 각각에 대하여, 상기 N 명의 사용자 중 대응하는 사용자에 할당될 M 개의 자원 각각의 양에 기초하여 상기 N 명의 사용자에 걸쳐 상기 M 개의 자원의 풀 별 비용을 계산하도록 구성되고; 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 상기 K 개의 이중 승수를 업데이트하는 것은, 대응하는 글로벌 제약 조건에 의해 제한되는 대응하는 풀에 대한 2 명 이상의 사용자에 걸친 상기 M 개의 자원의 최대 풀 별 비용, 및 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 계산되는 상기 대응하는 풀에 대한 상기 N 명의 사용자에 걸친 상기 M 개의 자원의 풀 별 비용의 차이에 기초하여, 대응하는 풀에 관한 상기 K 개의 이중 승수 각각을 업데이트하는 것을 포함한다.
도 16b는 본 명세서의 실시 예에 따른 장치(1600b)의 모듈들의 예를 나타내는 도면이다. 장치(1600b)는 L 개의 제약 조건이 있는 M 개의 자원을 할당하기 위한 데이터 처리 장치의 예시적인 실시 예일 수 있다. 장치(1600b)는 전술한 실시 예에 대응할 수 있고, 장치(1600b)는 L 개의 제약 조건을 나타내는 데이터를 수신하기 위한 수신 모듈(1601b)로서, L 개의 제약 조건 각각은 M 개의 자원의 하위 집합에 대응하고 M 개의 자원의 하위 집합 중에서 선택될 각각의 최대 자원 수 C를 제한하고, 제1 제약 조건에 대응하는 하위 집합이 제2 제약 조건에 대응하는 다른 하위 집합의 하위 집합이 아닌 한 상기 L 개의 제약 조건 중 제1 제약 조건에 대응하는 임의의 하위 집합은, L 개의 제약 조건 중 제2 제약 조건에 대응하는 임의의 다른 하위 집합과 공통 자원을 갖지 않는 상기 수신 모듈(1601b); L 개의 제약 조건의 트래버스 순서를 정의하는, L 개의 제약 조건의 위상 순서를 결정하기 위한 결정 모듈(1602b); 모든 M 개의 자원을 초기 선택으로서 선택하기 위한 선택 모듈(1603b); 상기 L 개의 제약 조건의 위상 순서로 각 제약 조건을 트래버스함으로써 상기 초기 선택으로부터 자원을 제거하기 위한 제거 모듈(1604b)(상기 제거 모듈(1604b)은, M 개의 자원의 하위 집합 Sl에 대응하고, 하위 집합 Sl로부터 선택될 최대 자원 수 Cl을 제한하는 L 개의 제약 조건 중 제약 조건 l에 대하여, 하위 집합 Sl에서 현재 선택된 자원을 결정하기 위한 결정 서브 모듈(1605b)을 더 포함함); 하위 집합 Sl 내의 현재 선택된 자원 중에서, 하위 집합 Sl 내의 현재 선택된 자원 중에서 상위 Cl 보상을 가지는 Cl 자원 중 하나가 아닌 임의의 자원을 선택 해제하기 위한 선택 해제 하위 모듈(unselecting sub-module)(1606b); 및 상기 L 개의 제약 조건의 위상 순서로 모든 L 개의 제약 조건을 트래버스한 후 상기 선택된 자원을 할당하기 위한 할당 모듈(1607b)을 포함한다.
선택적인 실시 예에서, L 개의 제약 조건을 나타내는 데이터는 L 개의 인덱스 하위 집합을 포함하고, L 개의 인덱스 하위 집합 각각은 L 개의 제약 조건 중 각각에 대응하고 L 개의 제약 조건 각각에 대응하는 M 개의 자원의 하위 집합의 인덱스를 포함하고; 하위 집합 Sl은 제약 조건 l에 대응하는 M 개의 자원의 하위 집합의 인덱스를 포함한다.
선택적 실시 예에서, L 개의 제약 조건을 나타내는 데이터는 DAG(directed acyclic graph) 데이터 구조에서 노드에 의해 L 개의 제약 조건 각각을 나타내는 데이터를 포함하고, DAG의 에지는 에지의 2 개의 노드에 대응하는 L 개의 제약 조건 중 두 개 사이의 관계를 나타낸다.
선택적 실시 예에서, 장치(1600b)는 M 개의 보상을 나타내는 데이터를 획득하기 위한 획득 모듈을 더 포함하고, 각각의 보상은 M 개의 자원 중 하나에 각각 대응한다.
선택적인 실시 예에서, 장치(1600b)는 L 개의 하위 집합의 위상 순서로 L 개의 하위 집합 내의 각 하위 집합을 트래버스하기 전에 M 개의 자원에 대응하는 M 개의 보상에 따라 비-증가 순서로 M 개의 자원을 소팅하기 위한 소팅 모듈을 더 포함하고, 상기 선택 해제 하위 모듈은 M 개의 자원의 비-증가 순서에 따라 하위 집합 Sl 내의 현재 선택된 자원 중에서, 상위 Cl 보상을 가지는 Cl 자원 중 하나가 아닌 임의의 자원을 선택 해제할 수 있다.
선택적인 실시 예에서, M 개의 보상은 각각 M 개의 비용 조정 보상이며, M 개의 비용 조정된 보상 각각은, M 개의 자원 중 하나가 선택될 경우 보상에서 비용을 뺀 것을 포함한다.
선택적인 실시 예에서, 장치(1600b)는 N 명의 사용자 사이에서 M 개의 자원을 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 K 개의 풀로 자원 할당을 수행하는데 있어서, N 명의 사용자 중 하나를 위하여 수행하는데 사용되고, L 개의 제약 조건 각각은 단일 사용자에 의해 선택될 M 개의 자원 중 각각의 최대 자원 수를 제한하고, K 개의 글로벌 제약 조건 각각은 N 명의 사용자에 걸쳐 각각의 풀에 대하여 할당되는 자원을 제한한다.
전술한 실시 예에 도시된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하여 구현될 수 있거나, 특정 기능을 갖는 제품을 사용하여 구현될 수 있다. 전형적인 실시 예의 디바이스는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩탑 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트 폰, PDA, 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스 또는 이러한 디바이스의 조합일 수 있다.
장치에서 각각의 모듈의 기능 및 역할의 실시 예 프로세스에 대하여, 이전 방법에서 대응하는 단계의 실시 예 프로세스가 참조될 수 있다. 간략화를 위하여 여기에서 세부 사항을 생략한다.
장치 실시 예는 기본적으로 방법 실시 예에 대응하므로, 관련 부분에 대하여서는, 방법 실시 예의 관련 설명을 참조할 수 있다. 전술한 장치 실시 예는 단지 예일 뿐이다. 개별 부분으로 기술된 모듈은 물리적으로 분리되거나 아닐 수 있고, 모듈로서 디스플레이된 부분은 물리적 모듈이거나 아닐 수 있고, 한 위치에 위치될 수 있거나, 다수의 네트워크 모듈에 분산될 수 있다. 본 명세서의 솔루션의 목표를 달성하기 위하여 실제 요구에 기초하여 일부 또는 모든 모듈이 선택될 수 있다. 당업자는 창조적 노력 없이 본 출원의 실시 예를 이해하고 구현할 수 있다.
다시 도 16b를 참조하면, L 개의 제약 조건이 있는 M 개의 자원을 할당하기 위한 내부 기능 모듈 및 데이터 처리 장치의 구조를 나타내는 것으로 해석될 수 있다. 본질적으로 실행 물체(execution body)는 전자 디바이스일 수 있고, 전자 디바이스는 하나 이상의 프로세서 및 하나 이상의 프로세서의 실행 가능한 명령어들을 저장하도록 구성된 메모리를 포함한다.
하나 이상의 프로세서는 L 개의 제약 조건을 나타내는 데이터를 수신하고(L 개의 제약 조건 각각은 M 개의 자원의 하위 집합에 대응하고 M 개의 자원의 하위 집합 중에서 선택될 각각의 최대 자원 수 C를 제한하고, 제1 제약 조건에 대응하는 하위 집합이 제2 제약 조건에 대응하는 다른 하위 집합의 하위 집합이 아닌 한 상기 L 개의 제약 조건 중 제1 제약 조건에 대응하는 임의의 하위 집합은, L 개의 제약 조건 중 제2 제약 조건에 대응하는 임의의 다른 하위 집합과 공통 자원을 갖지 않음); 상기 L 개의 제약 조건의 위상 순서를 결정하고(상기 위상 순서는 L 개의 제약 조건의 트래버스 순서를 정의함); 모든 M 개의 자원을 초기 선택으로서 선택하고; 상기 L 개의 제약 조건의 위상 순서로 각 제약 조건을 트래버스함으로써 상기 초기 선택으로부터 자원을 제거하고(상기 제거는 M 개의 자원의 하위 집합 Sl에 대응하고, 하위 집합 Sl로부터 선택될 최대 자원 수 Cl을 제한하는 L 개의 제약 조건 중 제약 조건 l에 대하여, 하위 집합 Sl에서 현재 선택된 자원을 결정하는 것을 포함함); 하위 집합 Sl 내의 현재 선택된 자원 중에서, 상위 Cl 보상을 가지는 Cl 자원 중 하나가 아닌 임의의 자원을 하위 집합 Sl 내의 현재 선택된 자원 중에서 선택 해제하며; 상기 L 개의 제약 조건의 위상 순서로 모든 L 개의 제약 조건을 트래버스한 후 상기 선택된 자원을 할당하도록 구성된다.
선택적으로, L 개의 제약 조건을 나타내는 데이터는 L 개의 인덱스 하위 집합을 포함하고, L 개의 인덱스 하위 집합 각각은 L 개의 제약 조건의 각각에 대응하고 L 개의 제약 조건 각각에 대응하는 M 개의 자원의 하위 집합의 인덱스를 포함하고; 하위 집합 S1은 제약 조건 l에 대응하는 M 개의 자원의 하위 집합의 인덱스를 포함한다.
선택적으로, L 개의 제약 조건을 나타내는 데이터는 DAG(directed acyclic graph) 데이터 구조에서 노드에 의해 L 개의 제약 조건 각각을 나타내는 데이터를 포함하고, DAG의 에지는 에지의 두 개의 노드에 대응하는 L 개의 제약 조건 중 둘 사이의 관계를 나타낸다.
선택적으로, 하나 이상의 프로세서는 M 개의 보상을 나타내는 데이터를 획득하도록 구성되며, 각각의 보상은 M 개의 자원 중 하나에 각각 대응한다.
선택적으로, 하나 이상의 프로세서는 L 개의 하위 집합의 위상 순서로 L 개의 하위 집합 내의 각 하위 집합을 트래버스하기 전에 M 개의 자원에 대응하는 M 개의 보상에 따라 비-증가 순서로 M 개의 자원을 소팅하도록 구성되고, 하위 집합 Sl 내의 현재 선택된 자원 중에서, 하위 집합 Sl 내의 현재 선택된 자원 중에서 상위 Cl 보상을 가지는 Cl 자원 중 하나가 아닌 임의의 자원을 선택 해제하는 것은, M 개의 자원의 비-증가 순서에 따라 하위 집합 Sl 내의 현재 선택된 자원 중에서, 상위 Cl 보상을 가지는 Cl 자원 중 하나가 아닌 임의의 자원을 선택 해제하는 것을 포함한다.
선택적으로, M 개의 보상은 각각 M 개의 비용 조정 보상이며, M 개의 비용 조정 보상 각각은 M 개의 자원 중 하나가 선택될 경우 보상에서 비용을 뺀 것을 포함한다.
선택적으로, 상기 동작들 중 일부 또는 전부는 N 명의 사용자 사이에 M 개의 자원을 K 개의 글로벌 제약 조건 및 L 개의 제약 조건이 있는 K 개의 풀로 자원 할당을 수행함에 있어서 N 명의 사용자 중 하나에 대하여 수행되며, 여기서 L 개의 제약 조건 각각은 단일 사용자에 의해 선택될 M 개의 자원 중 각각의 최대 자원 수를 제한하고, K 개의 글로벌 제약 조건 각각은 N 명의 사용자에 걸쳐 각 풀에 할당된 자원을 제한한다. 선택적으로, L은 수십억 이상이다.
도 16c는 본 명세서의 실시 예에 따른 장치(1600c)의 모듈들의 예를 나타내는 도면이다. 장치(1600c)는 다수의 개별 컴퓨터 구현 솔버를 포함하는 분산 컴퓨팅 시스템을 사용하여 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 배낭 문제(KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀로 자원 할당을 수행하기 위한 데이터 처리 장치의 예시적인 실시 예일 수 있다. 장치(1600c)는 전술한 실시 예에 대응할 수 있으며, 장치(1600c)는 상기 K 개의 글로벌 제약 조건 및 상기 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하기 위한 수신 모듈(1601c)로서, K 개의 글로벌 제약 조건 각각은 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용을 제한하고, L 개의 로컬 제약 조건 각각은 M 개의 자원의 사용자 별 선택을 제한하는 상기 수신 모듈(1601c); K 개의 이중 승수 - K 개의 이중 승수 각각은 K 개의 글로벌 제약 조건 중 각각에 대응함 - 를 사용하여 상기 KP를 이중 문제으로 변환하기 위한 변환(transforming) 모듈(1602c); 상기 이중 문제를 N 개의 하위 문제로 분해하기 위한 분해 모듈(1603c)로서, 상기 N 개의 하위 문제 각각은 N 명의 사용자 중 각각의 사용자에 대응하고, 상기 N 명의 사용자 각각과 관련하여 L 개의 로컬 제약 조건이 있는 상기 분해 모듈(1603c); 상기 이중 문제를 푸는 데 있어서 2 회 이상의 반복을 수행하기 위한 해결 모듈(1604c); 1회 반복에서 2 명 이상의 사용자에 걸쳐 M 개의 자원의 최대 풀 별 비용을 제한하는 풀에 대응하는 글로벌 제약 조건에 대응하는 각각의 이중 승수에 대하여, 비-음수 임계치 미만인 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 최대 풀 별 비용을 초과하고, 비-음수 임계치 미만이 아닌 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 최대 풀 별 비용을 초과하지 않도록, 풀에 대응하는 글로벌 제약 조건에 대한 업데이트된 이중 승수를 비-음수 임계치로 결정하기 위한 결정 모듈(1605c); 및 N 명의 사용자 각각에 대응하는 N 개의 하위 문제 각각을 푸는데 있어서 업데이트된 이중 승수에 대응하는 N 명의 사용자 각각의 M 개의 결정 변수 - 상기 M 개의 결정 변수 각각은 N 명의 사용자 각각에 의해 M 개의 자원 각각을 선택할지 여부를 표시함 - 를 계산하기 위한 계산 모듈(1606c)을 포함한다.
선택적인 실시 예에서, N은 수십억 이상이고, K는 L보다 작으며, L은 수십억 이상이다.
선택적인 실시 예에서, L 개의 제약 조건 각각은 M 개의 자원의 하위 집합에 대응하고 M 개의 자원의 하위 집합 중에서 선택될 각각의 최대 자원 수 C를 제한하며, 제1 제약 조건에 대응하는 하위 집합이 제2 제약 조건에 대응하는 다른 하위 집합의 하위 집합이 아닌 한, 상기 L 개의 제약 조건 중 제1 제약 조건에 대응하는 임의의 하위 집합은, L 개의 제약 조건 중 제2 제약 조건에 대응하는 임의의 다른 하위 집합과 공통 자원을 갖지 않는다.
선택적인 실시 예에서, 장치(1600c)는, 수렴 조건이 충족되었다는 결정에 응답하여, K 개의 이중 승수에 대응하는 N 명의 사용자의 각 사용자의 M 개의 결정 변수를 계산하기 위한 다른 계산 모듈; 및 상기 N 명의 사용자의 각 사용자의 M 개의 결정 변수에 따라 N 명의 사용자 사이에 M 개의 자원을 할당하는 할당 모듈을 포함한다.
선택적인 실시 예에서, 장치(1600c)는 K 개의 이중 승수의 초기 값을 결정하기 위한 다른 결정 모듈을 더 포함하고, K 개의 샘플링된 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 K 개의 풀로 S 명의 사용자 사이에 자원 할당을 하기 위한 KP의 샘플링된 버전에 기초하여 K 개의 이중 승수의 초기 값이 계산되고, S 명의 사용자는 N 명의 사용자로부터 샘플링되고, K 개의 샘플링된 글로벌 제약 조건 각각은 K 개의 풀 각각에 대하여 S 명의 사용자에 걸쳐 각각의 스케일 다운된 최대 총 자원 비용을 제한한다.
선택적인 실시 예에서, N 명의 사용자 각각에 대응하는 N 개의 하위 문제 각각을 푸는 것은, 사용자에 대응하는 하위 문제 및 풀에 대응하는 글로벌 제약 조건에 대응하는 각각의 이중 승수에 대하여, 이중 승수의 후보들을 계산하는 것; 이중 승수의 후보들을 비-증가 순서로 소팅하는 것; 이중 승수의 각각의 후보에 대하여 이중 승수의 후보들을 비-증가 순서로 트래버스하는 것; 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수를 계산하는 것; 및 비-증가 순서로 이중 승수의 후보에 선행하는 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수에 기초하여 선택된 자원의 비용에 비해 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수에 기초하여, 선택된 자원의 증분 비용을 계산하는 것을 포함하고, 특정 이중 승수 이상인 이중 승수의 모든 후보에 대응하는 사용자의 선택된 자원의 증분 비용을 합산함으로써, 특정 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 계산된다.
선택적인 실시 예에서, 이중 승수의 후보들을 계산하는 것은 이중 승수의 M 개의 선형 함수의 한 쌍의 교차점(pair-wise intersection point)을 계산하는 것을 포함하며, 이중 승수의 M 개의 선형 함수는 이중 승수가 주어질 때 M 개의 자원의 M 개의 비용 조정 보상을 나타낸다.
선택적인 실시 예에서, 장치(1600c)는 비-증가 순서로 소팅된 이중 승수의 후보들 및 비-증가 순서로 이중 승수의 후보들 중 하나에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 각각의 총 자원 비용에 기초하여, 비-음수 임계치를 계산하기 위한 다른 계산 모듈을 더 포함한다.
선택적인 실시 예에서, 장치(1600c)는 비-음수 임계치를 계산하기 위하여 비-증가 순서로 소팅된 이중 승수의 후보들에 대한 보간을 수행하기 위한 보간 모듈을 더 포함한다.
선택적인 실시 예에서, 장치(1600c)는 이중 승수의 후보들을 복수의 불균일 예산으로 그룹화하기 위한 그룹화(grouping) 모듈; 복수의 불균일 예산에서 이중 승수의 각각의 후보에 대응하는 사용자의 선택된 자원의 증분 비용의 합을 계산하기 위한 다른 계산 모듈; 및 증분 비용의 합에 기초하여 비-음수 임계치를 계산하기 위한 다른 계산 모듈을 포함한다.
전술한 실시 예에 도시된 시스템, 장치, 모듈 또는 유닛은 컴퓨터 칩 또는 엔티티를 사용하여 구현될 수 있거나, 특정 기능을 갖는 제품을 사용하여 구현될 수 있다. 전형적인 실시 예의 디바이스는 컴퓨터이고, 컴퓨터는 개인용 컴퓨터, 랩탑 컴퓨터, 셀룰러 폰, 카메라 폰, 스마트 폰, PDA, 미디어 플레이어, 내비게이션 디바이스, 이메일 수신 및 전송 디바이스, 게임 콘솔, 태블릿 컴퓨터, 웨어러블 디바이스 또는 이러한 디바이스의 조합일 수 있다.
장치에서 각 모듈의 기능 및 역할의 실시 예 프로세스에 대하여, 이전 방법에서 대응하는 단계의 실시 예 프로세스가 참조될 수 있다. 간략화를 위하여 여기에서 세부 사항을 생략한다.
장치 실시 예는 기본적으로 방법 실시 예에 대응하므로, 관련 부분에 대하여서는, 방법 실시 예의 관련 설명을 참조할 수 있다. 전술한 장치 실시 예는 단지 예일 뿐이다. 개별 부분으로 기술된 모듈은 물리적으로 분리되거나 아닐 수 있고, 모듈로서 디스플레이된 부분은 물리적 모듈이거나 아닐 수 있고, 한 위치에 위치될 수 있거나, 다수의 네트워크 모듈에 분산될 수 있다. 본 명세서의 솔루션의 목표를 달성하기 위하여 실제 요구에 기초하여 일부 또는 모든 모듈이 선택될 수 있다. 당업자는 창조적 노력 없이 본 출원의 실시 예을 이해하고 구현할 수 있다.
다시 도 16c를 참조하면, K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 배낭 문제(KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀로 자원 할당을 수행하기 위한 다수의 개별 컴퓨터 구현 솔버를 포함하는 분산 컴퓨팅 시스템과 같은, 데이터 처리 장치의 내부 기능 모듈 및 구조를 도시하는 것으로 해석될 수 있다. 본질적으로 실행 물체는 전자 디바이스일 수 있고, 전자 디바이스는 하나 이상의 프로세서 및 하나 이상의 프로세서의 실행 가능한 명령어들을 저장하도록 구성된 메모리를 포함한다.
하나 이상의 프로세서는 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하도록 구성되며, K 개의 글로벌 제약 조건 각각은 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용을 제한하고, L 개의 로컬 제약 조건 각각은 M 개의 자원의 사용자 별 선택을 제한하고; K 개의 이중 승수를 사용하여 KP를 이중 문제로 변환하며, K 개의 이중 승수 각각은 K 개의 글로벌 제약 조건 중 각각의 하나에 대응하고; 이중 문제를 N 개의 하위 문제로 분해하고, N 개의 하위 문제 각각은 N 명의 사용자 각각에 대응하고 N 명의 사용자 각각에 대한 L 개의 로컬 제약 조건이 있고; 이중 문제를 푸는 데 있어서 2 회 이상의 반복을 수행하며, 1 회 반복에서, 2 명 이상의 사용자에 걸쳐 M 개의 자원의 최대 풀 별 비용을 제한하는 풀에 대응하는 글로벌 제약 조건에 대응하는 각각의 이중 승수에 대하여: 비-음수 임계치 미만인 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 최대 풀 별 비용을 초과하고, 비-음수 임계치 미만이 아닌 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 최대 풀 별 비용을 초과하지 않도록, 풀에 대응하는 글로벌 제약 조건에 대한 업데이트된 이중 승수를 비-음수 임계치로 결정하고; N 명의 사용자 각각에 대응하는 N 개의 하위 문제 각각을 푸는데 있어서 업데이트된 이중 승수에 대응하는 N 명의 사용자 각각의 M 개의 결정 변수 - 상기 M 개의 결정 변수 각각은 N 명의 사용자 각각에 의해 M 개의 자원 각각을 선택할지 여부를 표시함 - 를 계산한다.
선택적인 실시 예에서, N은 수십억 이상이고, K는 L보다 작으며, L은 수십억 이상이다.
선택적인 실시 예에서, L 개의 제약 조건 각각은 M 개의 자원의 하위 집합에 대응하고 M 개의 자원의 하위 집합 중에서 선택될 각각의 최대 자원 수 C를 제한하며, 제1 제약 조건에 대응하는 하위 집합이 제2 제약 조건에 대응하는 다른 하위 집합의 하위 집합이 아닌 한, 상기 L 개의 제약 조건 중 제1 제약 조건에 대응하는 임의의 하위 집합은, L 개의 제약 조건 중 제2 제약 조건에 대응하는 임의의 다른 하위 집합과 공통 자원을 갖지 않는다.
선택적으로, 하나 이상의 프로세서는, 수렴 조건이 충족되었다는 결정에 응답하여, K 개의 이중 승수에 대응하는 N 명의 사용자의 각 사용자의 M 개의 결정 변수를 계산하고; 상기 N 명의 사용자의 각 사용자의 M 개의 결정 변수에 따라 N 명의 사용자 사이에 M 개의 자원을 할당하도록 구성된다.
선택적으로, 하나 이상의 프로세서는 K 개의 이중 승수의 초기 값을 결정하도록 구성되고, K 개의 샘플링된 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 K 개의 풀로 S 명의 사용자 사이에 자원 할당을 하기 위한 KP의 샘플링된 버전에 기초하여 K 개의 이중 승수의 초기 값이 계산되고, S 명의 사용자는 N 명의 사용자로부터 샘플링되고, K 개의 샘플링된 글로벌 제약 조건 각각은 K 개의 풀 각각에 대하여 S 명의 사용자에 걸쳐 각각의 스케일 다운된 최대 총 자원 비용을 제한한다.
선택적으로, N 명의 사용자 각각에 대응하는 N 개의 하위 문제 각각을 푸는 것은, 사용자에 대응하는 하위 문제 및 풀에 대응하는 글로벌 제약 조건에 대응하는 각각의 이중 승수에 대하여, 이중 승수의 후보들을 계산하는 것; 이중 승수의 후보들을 비-증가 순서로 소팅하는 것; 이중 승수의 후보들을 비-증가 순서로 트래버스하는 것; 이중 승수의 각각의 후보에 대하여 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수를 계산하는 것; 및 비-증가 순서로 이중 승수의 후보에 선행하는 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수에 기초하여 선택된 자원의 비용에 비해 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수에 기초하여, 선택된 자원의 증분 비용을 계산하는 것을 포함하고, 특정 이중 승수 이상인 이중 승수의 모든 후보에 대응하는 사용자의 선택된 자원의 증분 비용을 합산함으로써, 특정 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 계산된다.
선택적으로, 이중 승수의 후보들을 계산하는 것은 이중 승수의 M 개의 선형 함수의 한 쌍의 교차점을 계산하는 것을 포함하며, 이중 승수의 M 개의 선형 함수는 이중 승수가 주어질 때 M 개의 자원의 M 개의 비용 조정 보상을 나타낸다.
선택적으로, 하나 이상의 프로세서는 비-증가 순서로 소팅된 이중 승수의 후보들 및 비-증가 순서로 이중 승수의 후보들 중 하나에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 각각의 총 자원 비용에 기초하여, 비-음수 임계치를 계산하도록 구성된다.
선택적으로, 하나 이상의 프로세서는 비-음수 임계치를 계산하기 위하여 비-증가 순서로 소팅된 이중 승수의 후보들에 대한 보간을 수행하도록 구성된다.
선택적으로, 하나 이상의 프로세서는 이중 승수의 후보들을 복수의 불균일 예산으로 그룹화하고; 복수의 불균일 예산에서 이중 승수의 각각의 후보에 대응하는 사용자의 선택된 자원의 증분 비용의 합을 계산하고; 증분 비용의 합에 기초하여 비-음수 임계치를 계산하도록 구성된다.
본 명세서에 기술된 기법은 하나 이상의 기술적 효과를 생성한다. 일부 실시 예에서, (예를 들어, 수십억 개의 결정 변수 및 제약 조건을 가진) 억 규모의 실제 배낭 문제를 풀 수 있는 분산 시스템이 설명된다. 분산 시스템은 KP의 약간 일반화된 공식을 기반으로 개발되므로, KP의 다른 변형을 풀기 위하여 적용될 수 있다. 로컬 제약 조건을 도입하고 이들을 글로벌 제약 조건과 별도로 처리함으로써 글로벌 제약 조건을 만족시키는 복잡성을 증가시키지 않으면서 각 자원 사용자에 대한 유연한 비즈니스 요구 사항이 시행될 수 있다.
예로서, 설명된 기술은 사용자 만족도와 같은 비즈니스 메트릭을 희생시키지 않으면서, 제한된 자원을 각 사용자에게 효율적으로 할당하기 위한 최적화 문제를 풀 수 있다. 유스 케이스의 한 예는 수억 명의 사용자를 타겟으로 하는 마케팅 캠페인이다. 각 캠페인은 글로벌 자원 한계뿐 아니라, 각각의 프로모션 채널에 대한 별도의 자원 제한을 가질 수 있다. 캠페인 운영의 특성에 따라 여기에 언급된 자원은 금전 및 비-금전 프로모션과 같은 유연한 형태일 수 있다. 비-금전 자원 제약 조건의 한 예는 마케팅 이벤트에 할당된 모바일 앱 페이지 뷰의 총 수가 제한될 수 있다는 것이다. 일부 실시 예에서, 개별 사용자는 사용자 별 로컬 제약 조건을 가질 수 있다. 예를 들어 타겟 사용자는 셋 이상의 프로모션 채널에 참여할 수 없다. 일부 실시 예에서, 결정 변수 및 로컬 제약 조건은 모두 억 레벨에 도달할 수 있는 반면, 글로벌 제약 조건의 수는 종종 수백이다.
본 명세서는 또한 계층 구조를 갖는 제약 조건이 있는 IP 문제를 풀기 위한 그리디 알고리즘 및 컴퓨터 구현 솔버를 기술한다. 설명된 그리디 알고리즘 및 컴퓨터 구현 솔버는 제약 조건의 계층 구조를 활용하고 예를 들어 다항식 시간 복잡도를 사용하여 IP 문제를 보다 효율적으로 풀 수 있다. 그리디 알고리즘과 컴퓨터 구현 솔버를 사용하여, 보다 효율적인 방식으로 IP 문제에 의해 모델링하거나 표현될 수 있는 자원 할당, 제품/서비스 프로모션 및 마케팅과 같은 실제 시나리오에 대한 솔루션을 찾을 수 있다.
본 명세서는 이중 승수를 업데이트하기 위한 동기 좌표 하강(SCD) 알고리즘을 추가로 설명한다. 특히 대규모 KP에 대하여 실제로 성가시거나 계산 집약적일 수 있는, 수동 또는 프로그래밍 방식으로 선택될 필요가 있는 하이퍼-파라미터 α를 필요로 하는 기존의 업데이트 알고리즘과 달리, SCD 알고리즘은 이러한 하이퍼-파라미터 없이 구현될 수 있고, 따라서 계산 효율을 개선하고 계산 부하를 감소시킨다. 일부 실시 예에서, SCD 알고리즘은 제약 조건 위배가 덜 발생하므로, 기본 최적화 문제에 대한 더 나은 솔루션을 제공한다.
일부 실시 예에서, SCD 알고리즘은 맵리듀스 또는 다른 분산 컴퓨팅 프레임워크 또는 모델을 사용하여 분산 시스템에서 사용될 수 있다. 분산 SCD 알고리즘은 MPI, HADOOP 및 SPARK와 같은 공통 분산 플랫폼을 사용하여 구현할 수 있다.
일부 실시 예에서, 설명된 기법들은 대규모 비-선형 문제를 최적화하기 위하여 일반화될 수 있다. 현재 공식화된 목적 함수는 결정 변수 xi,j에서 선형이다. 논의된 분산 솔루션 프레임워크는 결정 변수(또는 결정 변수의 사용자)와 관련하여 분해할 수 있는 한, 비-선형 목적 함수를 최적화하도록 확장될 수 있다.
본 주제(subject matter)의 설명된 실시 예는 하나 이상의 특징을 단독으로 또는 조합하여 포함할 수 있다. 예를 들어, 제1 실시 예에서, 다수의 개별 컴퓨터 구현 솔버를 포함하는 분산 컴퓨팅 시스템을 사용하여 K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 배낭 문제(KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀로의 자원 할당을 수행하기 위한 컴퓨터 구현 방법이 제공된다. 상기 방법은 상기 K 개의 글로벌 제약 조건 및 상기 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하는 단계로서, K는 L보다 작고, K 개의 글로벌 제약 조건 각각은 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용을 제한하고, L 개의 로컬 제약 조건 각각은 M 개의 자원의 사용자 별 선택을 제한하는 상기 수신 단계; K 개의 이중 승수를 사용하여 상기 KP를 N 개의 하위 문제로 분해하는 단계로서, 상기 N 개의 하위 문제 각각은 N 명의 사용자 중 각각의 사용자에 대응하고, 상기 대응하는 사용자에 관한 L 개의 로컬 제약 조건이 있으며, N은 수십억 이상이며, K 개의 이중 승수 각각은 K 개의 글로벌 제약 조건 중 각각의 제약 조건에 대응하는 상기 분해 단계; 상기 N 개의 하위 문제를 풀기 위한 상기 다수의 개별 컴퓨터 구현 솔버를 결정하는 단계; 각각의 하위 문제를 각각의 컴퓨터 구현 솔버에 할당함으로써 상기 N 개의 하위 문제를 상기 다수의 개별 컴퓨터 구현 솔버 사이에서 분배하는 단계; 및 상기 분산 컴퓨팅 시스템에 의해 2 회 이상의 반복을 수행함으로써 상기 KP를 푸는 단계를 포함하고, 1 회의 반복에서, 상기 방법은: 상기 N 개의 하위 문제 각각을, 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 독립적으로 푸는 단계 - 상기 N 개의 하위 문제 각각을 푸는 단계는 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양을 계산하는 단계를 포함함 - ; 및 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 상기 K 개의 이중 승수를 업데이트하는 단계를 포함한다.
전술한 실시 예 및 다른 설명된 실시 예는 각각 선택적으로 다음 특징 중 하나 이상을 포함할 수 있다:
다음 특징들 중 임의의 것과 조합 가능한 제1 특징으로서, L이 수십억 이상이다.
다음 특징들 중 임의의 것과 조합 가능한 제2 특징으로서, N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 것은, KP를 풀기 위한 지정된 계산 시간에 기초하여 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 것을 포함하고; 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 상기 N 개의 하위 문제 각각을 독립적으로 푸는 것은, 상기 N 개의 하위 문제 중 2개 이상이 할당된 각각의 컴퓨터 구현 솔버에 의해 상기 N 개의 하위 문제 중 2 개 이상을 병렬로 푸는 것을 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제3 특징으로서, 상기 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 것은, 상기 다수의 개별 컴퓨터 구현 솔버를 N 개로 결정하는 것을 포함하고, 상기 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 상기 N 개의 하위 문제 각각을 독립적으로 푸는 것은, 상기 N 개의 개별 컴퓨터 구현 솔버 각각에 의해 상기 N 개의 하위 문제 각각을 병렬로 푸는 것을 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제4 특징으로서, 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 상기 N 개의 하위 문제 각각을 독립적으로 푸는 것은, IP 컴퓨터 구현 솔버에 의해 정수 프로그래밍(IP) 문제를 독립적으로 푸는 것을 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제5 특징으로서, 상기 K 개의 이중 승수에 기초하여 수렴 조건이 충족되는지 여부를 결정하는 것; 상기 K 개의 이중 승수에 기초하여 수렴 조건이 충족된다고 결정하는 것에 응답하여, 상기 다수의 개별 컴퓨터 구현 솔버 중 하나에 의해 상기 K 개의 이중 승수에 기초하여 상기 N 개의 하위 문제 각각을 독립적으로 푸는 것 - 상기 N 개의 하위 문제 각각을 푸는 것은 상기 N 명의 사용자 중 대응하는 사용자에 할당될 상기 M 개의 자원 각각의 양을 계산하는 것을 포함함 - ; 상기 N 명의 사용자 중 대응하는 사용자에 상기 M 개의 자원 각각의 양을 할당하는 것을 더 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제6 특징으로서, 상기 N 개의 하위 문제 각각을 푸는 것은 상기 K 개의 풀 각각에 대하여, 상기 대응하는 사용자에 할당될 M 개의 자원 각각의 양에 기초하여 상기 대응하는 사용자에 의한 M 개의 자원의 풀 별 비용을 계산하는 것을 더 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제7 특징으로서, 1 회의 반복에서, 상기 방법은 상기 K 개의 풀 각각에 대하여, 상기 N 명의 사용자 중 대응하는 사용자에 할당될 M 개의 자원 각각의 양에 기초하여 상기 N 명의 사용자에 걸쳐 상기 M 개의 자원의 풀 별 비용을 계산하는 것을 더 포함하고; 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 상기 K 개의 이중 승수를 업데이트하는 것은, 대응하는 글로벌 제약 조건에 의해 제한되는 대응하는 풀에 대한 2 명 이상의 사용자에 걸친 상기 M 개의 자원의 최대 풀 별 비용, 및 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 계산되는 상기 대응하는 풀에 대한 상기 N 명의 사용자에 걸친 상기 M 개의 자원의 풀 별 비용의 차이에 기초하여, 대응하는 풀에 대하여 상기 K 개의 이중 승수 각각을 업데이트하는 것을 포함한다.
예를 들어, 제2 실시 예에서, L 개의 제약 조건이 있는 M 개의 자원을 할당하기 위한 컴퓨터로 구현되는 방법에 있어서, 상기 방법은, L 개의 제약 조건을 나타내는 데이터를 수신하는 단계로서, L 개의 제약 조건 각각은 M 개의 자원의 하위 집합에 대응하고 M 개의 자원의 하위 집합 중에서 선택될 각각의 최대 자원 수 C를 제한하고, 제1 제약 조건에 대응하는 하위 집합이 제2 제약 조건에 대응하는 다른 하위 집합의 하위 집합이 아닌 한, 상기 L 개의 제약 조건 중 제1 제약 조건에 대응하는 임의의 하위 집합은, L 개의 제약 조건 중 제2 제약 조건에 대응하는 임의의 다른 하위 집합과 공통 자원을 갖지 않는 상기 수신 단계; 상기 L 개의 제약 조건의 위상 순서를 결정하는 단계(상기 위상 순서는 L 개의 제약 조건의 트래버스 순서를 정의함); 모든 M 개의 자원을 초기 선택으로서 선택하는 단계; 상기 L 개의 제약 조건의 위상 순서로 각 제약 조건을 트래버스함으로써 상기 초기 선택으로부터 자원을 제거하는 단계(상기 제거는 M 개의 자원의 하위 집합 Sl에 대응하고, 하위 집합 Sl로부터 선택될 최대 자원 수 Cl을 제한하는 L 개의 제약 조건 중 제약 조건 l에 대하여, 하위 집합 Sl에서 현재 선택된 자원을 결정하는 것을 포함함); 하위 집합 Sl 내의 현재 선택된 자원 중에서, 상위 Cl 보상을 가지는 Cl 자원 중 하나가 아닌 임의의 자원을 하위 집합 Sl 내의 현재 선택된 자원 중에서 선택 해제하는 단계; 상기 L 개의 제약 조건의 위상 순서로 모든 L 개의 제약 조건을 트래버스한 후 상기 선택된 자원을 할당하는 단계를 포함한다.
전술한 실시 예 및 다른 설명된 실시 예는 각각 선택적으로 다음 특징 중 하나 이상을 포함할 수 있다:
다음 특징들 중 임의의 것과 조합 가능한 제1 특징으로서, L 개의 제약 조건을 나타내는 데이터는 L 개의 인덱스 하위 집합을 포함하고, L 개의 인덱스 하위 집합 각각은 L 개의 제약 조건의 각각에 대응하고 L 개의 제약 조건 각각에 대응하는 M 개의 자원의 하위 집합의 인덱스를 포함하고; 하위 집합 Sl은 제약 조건 l에 대응하는 M 개의 자원의 하위 집합의 인덱스를 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제2 특징으로서, L 개의 제약 조건을 나타내는 데이터는 DAG(directed acyclic graph) 데이터 구조에서 노드에 의해 L 개의 제약 조건 각각을 나타내는 데이터를 포함하고, DAG의 에지는 에지의 두 개의 노드에 대응하는 L 개의 제약 조건 중 둘 사이의 관계를 나타낸다.
다음 특징들 중 임의의 것과 조합 가능한 제3 특징으로서, M 개의 보상을 나타내는 데이터를 획득하는 단계를 더 포함하고, 각각의 보상은 M 개의 자원 중 하나에 각각 대응한다.
다음 특징들 중 임의의 것과 조합 가능한 제4 특징으로서, L 개의 하위 집합의 위상 순서로 L 개의 하위 집합 내의 각 하위 집합을 트래버스하기 전에 M 개의 자원에 대응하는 M 개의 보상에 따라 비-증가 순서로 M 개의 자원을 소팅하는 것을 더 포함하고, 하위 집합 Sl 내의 현재 선택된 자원 중에서, 상위 Cl 보상을 가지는 Cl 자원 중 하나가 아닌 임의의 자원을 하위 집합 Sl 내의 현재 선택된 자원 중에서 선택 해제하는 것은, M 개의 자원의 비-증가 순서에 따라 하위 집합 Sl 내의 현재 선택된 자원 중에서, 상위 Cl 보상을 가지는 Cl 자원 중 하나가 아닌 임의의 자원을 선택 해제하는 것을 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제5 특징으로서, M 개의 보상은 각각 M 개의 비용 조정 보상이며, M 개의 비용 조정 보상 각각은 M 개의 자원 중 하나가 선택될 경우 보상에서 비용을 뺀 것을 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제6 특징으로서, 상기 방법은 N 명의 사용자 사이에서 M 개의 자원을 K 개의 글로벌 제약 조건 및 L 개의 제약 조건이 있는 K 개의 풀로 자원 할당을 수행함에 있어서 N 명의 사용자 중 하나에 대하여 수행되며, 여기서 L 개의 제약 조건 각각은 단일 사용자에 의해 선택될 M 개의 자원 중 각각의 최대 자원 수를 제한하고, K 개의 글로벌 제약 조건 각각은 N 명의 사용자에 걸쳐 각 풀에 할당된 자원을 제한한다.
예를 들어, 제3 실시 예에서, 자원 할당을 수행하기 위한 컴퓨터 구현 방법은, K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 배낭 문제(KP)를 풂으로써 N 명의 사용자들 사이에서 M 개의 자원을 K 개의 풀로 자원 할당을 수행하기 위한 다수의 개별 컴퓨터 구현 솔버를 포함하는 분산 컴퓨팅 시스템을 사용하는 단계를 포함하고, 상기 단계는, K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하는 단계(K 개의 글로벌 제약 조건 각각은 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용을 제한하고, L 개의 로컬 제약 조건 각각은 M 개의 자원의 사용자 별 선택을 제한함); K 개의 이중 승수를 사용하여 KP를 이중 문제로 변환하는 단계(K 개의 이중 승수 각각은 K 개의 글로벌 제약 조건 중 하나에 대응함); 이중 문제를 N 개의 하위 문제로 분해하는 단계(N 개의 하위 문제 각각은 N 명의 사용자 각각에 대응하고 N 명의 사용자 각각에 관한 L 개의 로컬 제약 조건이 있음); 이중 문제를 푸는 데 있어서 2 회 이상의 반복을 수행하는 단계를 포함하고; 1 회 반복에서, 2 명 이상의 사용자에 걸쳐 M 개의 자원의 최대 풀 별 비용을 제한하는 풀에 대응하는 글로벌 제약 조건에 대응하는 각각의 이중 승수에 대하여: 비-음수 임계치 미만인 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 최대 풀 별 비용을 초과하고, 비-음수 임계치 미만이 아닌 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 최대 풀 별 비용을 초과하지 않도록, 풀에 대응하는 글로벌 제약 조건에 대한 업데이트된 이중 승수를 비-음수 임계치로 결정하는 단계; 및 N 명의 사용자 각각에 대응하는 N 개의 하위 문제 각각을 푸는데 있어서 업데이트된 이중 승수에 대응하는 N 명의 사용자 각각의 M 개의 결정 변수 - 상기 M 개의 결정 변수 각각은 N 명의 사용자 각각에 의해 M 개의 자원 각각을 선택할지 여부를 표시함 - 를 계산하는 단계를 포함한다.
전술한 실시 예 및 다른 설명된 실시 예는 각각 선택적으로 다음 특징 중 하나 이상을 포함할 수 있다:
다음 특징들 중 임의의 것과 조합 가능한 제1 특징으로서, N은 수십억 이상이고, K는 L보다 작으며, L은 수십억 이상이다.
다음 특징들 중 임의의 것과 조합 가능한 제2 특징으로서, L 개의 제약 조건 각각은 M 개의 자원의 하위 집합에 대응하고 M 개의 자원의 하위 집합 중에서 선택될 각각의 최대 자원 수 C를 제한하며, 제1 제약 조건에 대응하는 하위 집합이 제2 제약 조건에 대응하는 다른 하위 집합의 하위 집합이 아닌 한, 상기 L 개의 제약 조건 중 제1 제약 조건에 대응하는 임의의 하위 집합은, L 개의 제약 조건 중 제2 제약 조건에 대응하는 임의의 다른 하위 집합과 공통 자원을 갖지 않는다.
다음 특징들 중 임의의 것과 조합 가능한 제3 특징으로서, 수렴 조건이 충족되었다는 결정에 응답하여, K 개의 이중 승수에 대응하는 N 명의 사용자의 각 사용자의 M 개의 결정 변수를 계산하는 것; 및 상기 N 명의 사용자의 각 사용자의 M 개의 결정 변수에 따라 N 명의 사용자 사이에 M 개의 자원을 할당하는 것을 더 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제4 특징으로서, K 개의 이중 승수의 초기 값을 결정하는 것을 더 포함하고, K 개의 샘플링된 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 K 개의 풀로 S 명의 사용자 사이에 자원 할당을 하기 위한 KP의 샘플링된 버전에 기초하여 K 개의 이중 승수의 초기 값이 계산되고, S 명의 사용자는 N 명의 사용자로부터 샘플링되고, K 개의 샘플링된 글로벌 제약 조건 각각은 K 개의 풀 각각에 대하여 S 명의 사용자에 걸쳐 각각의 스케일 다운된 최대 총 자원 비용을 제한한다.
다음 특징들 중 임의의 것과 조합 가능한 제5 특징으로서, N 명의 사용자 각각에 대응하는 N 개의 하위 문제 각각을 푸는 것은, 사용자에 대응하는 하위 문제 및 풀에 대응하는 글로벌 제약 조건에 대응하는 각각의 이중 승수에 대하여, 이중 승수의 후보들을 계산하는 것; 이중 승수의 후보들을 비-증가 순서로 소팅하는 것; 이중 승수의 후보들을 비-증가 순서로 트래버스하는 것; 이중 승수의 각각의 후보에 대하여 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수를 계산하는 것; 및 비-증가 순서로 이중 승수의 후보에 선행하는 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수에 기초하여 선택된 자원의 비용에 비해 이중 승수의 후보에 대응하는 사용자의 M 개의 결정 변수에 기초하여, 선택된 자원의 증분 비용을 계산하는 것을 포함하고, 특정 이중 승수 이상인 이중 승수의 모든 후보에 대응하는 사용자의 선택된 자원의 증분 비용을 합산함으로써, 특정 이중 승수에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 총 자원 비용이 계산된다.
다음 특징들 중 임의의 것과 조합 가능한 제6 특징으로서, 이중 승수의 후보들을 계산하는 것은 이중 승수의 M 개의 선형 함수의 한 쌍의 교차점을 계산하는 것을 포함하며, 이중 승수의 M 개의 선형 함수는 이중 승수가 주어질 때 M 개의 자원의 M 개의 비용 조정 보상을 나타낸다.
다음 특징들 중 임의의 것과 조합 가능한 제7 특징으로서, 비-증가 순서로 소팅된 이중 승수의 후보들 및 비-증가 순서로 이중 승수의 후보들 중 하나에 대응하는 풀에 대하여 N 명의 사용자에 걸쳐 선택된 각각의 총 자원 비용에 기초하여, 비-음수 임계치를 계산하는 것을 더 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제8 특징으로서, 비-음수 임계치를 계산하기 위하여 비-증가 순서로 소팅된 이중 승수의 후보들에 대한 보간을 수행하는 것을 더 포함한다.
다음 특징들 중 임의의 것과 조합 가능한 제9 특징으로서, 이중 승수의 후보들을 복수의 불균일 예산으로 그룹화하는 것; 복수의 불균일 예산에서 이중 승수의 각각의 후보에 대응하는 사용자의 선택된 자원의 증분 비용의 합을 계산하는 것; 및 증분 비용의 합에 기초하여 비-음수 임계치를 계산하는 것을 더 포함한다.
본 명세서에 기술된 주제 및 작업 및 동작의 실시 예는 본 명세서에 개시된 구조 및 그 구조적 등가물, 또는 그들 중 하나 이상의 조합을 포함하여 디지털 전자 회로에서, 실체적으로 구현된 컴퓨터 소프트웨어 또는 펌웨어에서, 컴퓨터 하드웨어에서 구현될 수 있다. 본 명세서에 기술된 주제의 실시 예는 하나 이상의 컴퓨터 프로그램으로서, 예를 들어, 데이터 처리 장치에 의해 실행되거나 데이터 처리 장치의 동작을 제어하기 위하여 컴퓨터 프로그램 캐리어(carrier) 상에 인코딩된 컴퓨터 프로그램 명령어들의 하나 이상의 모듈로서 구현될 수 있다. 예를 들어, 컴퓨터 프로그램 캐리어는 인코딩되거나 저장된 명령어들을 갖는 하나 이상의 컴퓨터 판독 가능 저장 매체를 포함할 수 있다. 캐리어는 자기, 광 자기 또는 광 디스크, 솔리드 스테이트 드라이브, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 또는 다른 타입의 매체와 같은 유형의(tangible) 비-일시적 컴퓨터 판독 가능 매체일 수 있다. 대안적으로 또는 추가적으로, 캐리어는 인공적으로 생성된 전파 신호, 예를 들어 데이터 처리 장치에 의해 실행하기 위하여 적합한 수신기 장치로 전송하기 위한 정보를 인코딩하기 위하여 생성되는 머신-생성 전기, 광학 또는 전자기 신호일 수 있다. 컴퓨터 저장 매체는 머신 판독 가능 저장 디바이스, 머신 판독 가능 저장 기판, 랜덤 또는 직렬 액세스 메모리 디바이스, 또는 이들 중 하나 이상의 조합일 수 있거나 그 일부일 수 있다. 컴퓨터 저장 매체는 전파된 신호가 아니다.
프로그램, 소프트웨어, 소프트웨어 애플리케이션, 앱, 모듈, 소프트웨어 모듈, 엔진, 스크립트 또는 코드로도 지칭되거나 기술될 수 있는 컴퓨터 프로그램은 컴파일 또는 해석된 언어, 선언적 또는 절차적 언어를 포함한 임의의 형태의 프로그래밍 언어로 작성될 수 있고, 독립형 프로그램으로서 또는 컴퓨팅 환경에서 실행하기에 적합한 모듈, 컴포넌트, 엔진, 서브 루틴 또는 다른 유닛을 포함하는 임의의 형태로 배치될 수 있으며, 이러한 환경은 하나 이상의 위치에서 데이터 통신 네트워크로 상호 연결된 하나 이상의 컴퓨터를 포함할 수 있다.
컴퓨터 프로그램은 파일 시스템의 파일에 대응할 수 있지만 반드시 그럴 필요는 없다. 컴퓨터 프로그램은 다른 프로그램 또는 데이터를 보유하는 파일의 일부, 예를 들어 마크업 언어 문서에 저장된 하나 이상의 스크립트에, 해당 프로그램 전용의 단일 파일에, 또는 다수의 연계된(coordinated) 파일, 예를 들어, 하나 이상의 모듈, 하위 프로그램 또는 코드의 부분들을 저장하는 파일에 저장될 수 있다.
컴퓨터 프로그램의 실행을 위한 프로세서는 예를 들어 범용 및 특수목적 마이크로 프로세서, 및 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서를 포함한다. 일반적으로, 프로세서는 프로세서에 연결된 비-일시적 컴퓨터 판독 가능 매체로부터의 데이터뿐만 아니라 실행을 위한 컴퓨터 프로그램의 명령어들을 수신할 것이다.
용어 "데이터 처리 장치"는 예를 들어 프로그램 가능 프로세서, 컴퓨터 또는 다수의 프로세서 또는 컴퓨터를 포함하여, 데이터를 처리하기 위한 모든 종류의 장치, 디바이스 및 머신을 포함한다. 데이터 처리 장치는 특수 목적의 로직 회로, 예를 들어 FPGA(Field Programmable Gate Array), ASIC(application specific integrated circuit) 또는 GPU(graphics processing unit)를 포함할 수 있다. 장치는 또한 하드웨어 이외에 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드, 예를 들어 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 또는 이들 중 하나 이상의 조합을 구성하는 코드를 포함할 수 있다.
본 명세서에 기술된 프로세스 및 로직 흐름은 입력 데이터를 조작하고 출력을 생성함으로써 동작들을 수행하기 위하여 하나 이상의 컴퓨터 프로그램을 실행하는 하나 이상의 컴퓨터 또는 프로세서에 의해 수행될 수 있다. 프로세스 및 로직 흐름은 또한 FPGA, ASIC 또는 GPU와 같은 특수 목적의 로직 회로에 의해 또는 특수 목적의 로직 회로와 하나 이상의 프로그래밍된 컴퓨터의 조합에 의해 수행될 수 있다.
컴퓨터 프로그램의 실행에 적합한 컴퓨터는 범용 또는 특수 목적의 마이크로 프로세서 또는 둘 다 또는 임의의 다른 종류의 중앙 처리 장치에 기초할 수 있다. 일반적으로, 중앙 처리 장치는 판독 전용 메모리 또는 랜덤 액세스 메모리 또는 둘 다로부터 명령어들 및 데이터를 수신할 것이다. 컴퓨터의 요소들은 명령을 실행하기 위한 중앙 처리 장치 및 명령어들과 데이터를 저장하기 위한 하나 이상의 메모리 디바이스를 포함할 수 있다. 중앙 처리 장치 및 메모리는 특수 목적 로직 회로에 의해 보충되거나 그에 통합될 수 있다.
일반적으로, 컴퓨터는 또한 하나 이상의 저장 디바이스로부터 데이터를 수신하거나 하나 이상의 저장 디바이스로 데이터를 전송(transfer)하도록 포함하거나 동작 가능하게 연결될 것이다. 저장 디바이스는 예를 들어 자기, 광자기 또는 광학 디스크, 솔리드 스테이트 드라이브, 또는 임의의 다른 타입의 비-일시적 컴퓨터 판독 가능 매체일 수 있다. 그러나 컴퓨터에는 그러한 디바이스가 필요하지 않다. 따라서, 컴퓨터는 로컬 및/또는 원격인 하나 이상의 메모리와 같은 하나 이상의 저장 디바이스에 연결될 수 있다. 예를 들어, 컴퓨터는 컴퓨터의 내장(integral) 컴포넌트인 하나 이상의 로컬 메모리를 포함할 수 있거나, 컴퓨터는 클라우드 네트워크에 있는 하나 이상의 원격 메모리에 연결될 수 있다. 또한, 컴퓨터는 다른 디바이스, 몇가지만 예를 들어 이동 전화, PDA, 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS(Global Positioning System) 수신기 또는 휴대용 저장 디바이스, 예를 들어 USB 플래시 드라이브에 임베드될 수 있다.
컴포넌트는 직접적으로 또는 하나 이상의 중간 컴포넌트를 통해 예를 들어 서로 전기적으로 또는 광학적으로 상호적으로 연결됨으로써(connected) 서로에게 "결합(coupled to)"될 수 있다. 또한, 컴포넌트 중 하나가 다른 컴포넌트에 통합되어 있으면 컴포넌트를 서로 "결합"될 수 있다. 예를 들어, 프로세서(예를 들어, L2 캐시 컴포넌트) 내에 통합된 저장 컴포넌트는 프로세서에 "결합"된다.
사용자와의 상호 작용을 제공하기 위하여, 본 명세서에 기술된 주제의 실시 예는 정보를 사용자에게 디스플레이하기 위한 디스플레이 디바이스, 예를 들어 LCD(액정 디스플레이) 모니터, 및 사용자가 컴퓨터에 입력을 제공할 수 있는 입력 디바이스, 예를 들어 키보드 및 포인팅 디바이스, 예를 들어 마우스, 트랙볼 또는 터치 패드를 갖는 컴퓨터 상에서 구현되거나 이와 통신하도록 구성될 수 있다. 다른 종류의 디바이스가 또한 사용자와의 상호 작용을 제공하기 위하여 사용될 수 있다; 예를 들어, 사용자에게 제공되는 피드백은 임의의 형태의 감각 피드백, 예를 들어 시각적 피드백, 청각 피드백 또는 촉각 피드백일 수 있으며; 사용자로부터의 입력은 음향, 음성 또는 촉각 입력을 포함하는 임의의 형태로 수신될 수 있다. 또한, 컴퓨터는 사용자에 의해 사용되는 디바이스로 문서를 전송하고 디바이스로부터 문서를 수신함으로써; 예를 들어, 웹 브라우저로부터 수신된 요청에 대한 응답으로 웹 페이지를 사용자의 디바이스에 있는 웹 브라우저로 보냄으로써; 또는 사용자 디바이스, 예를 들어, 스마트 폰 또는 전자 태블릿에서 실행되는 앱과 상호 작용함으로써 사용자와 상호 작용할 수 있다. 또한, 컴퓨터는 문자 메시지 또는 다른 형태의 메시지를 개인용 디바이스, 예를 들어 메시징 애플리케이션을 실행하고 있는 스마트 폰에 보내고 답례로 응답 메시지를 사용자로부터 수신함으로써 사용자와 상호 작용할 수 있다.
본 명세서는 시스템, 장치 및 컴퓨터 프로그램 컴포넌트와 관련하여 "구성된(configured to)"이라는 용어를 사용한다. 하나 이상의 컴퓨터의 시스템이 특정 동작(operations) 또는 작업(actions)을 수행하도록 구성된다는 것은, 시스템에 소프트웨어, 펌웨어, 하드웨어 또는 이들의 조합을 설치하여 동작시 시스템으로 하여금 동작 또는 작업을 수행하게 하는 것을 의미한다. 하나 이상의 컴퓨터 프로그램이 특정 동작 또는 작업을 수행하도록 구성된다는 것은, 하나 이상의 프로그램이 데이터 처리 장치에 의해 실행될 때 장치로 하여금 동작 또는 작업을 수행하게 하는 명령어들을 포함한다는 것을 의미한다. 특수 목적 로직 회로가 특정 동작 또는 작업을 수행하도록 구성된다는 것은 회로가 동작 또는 작업을 수행하는 전자 로직를 가지고 있음을 의미한다.
본 명세서는 많은 특정 실시 예 세부 사항을 포함하지만, 이들은 청구범위 자체에 의해 정의되는 청구범위의 범위에 대한 제한으로 해석되어서는 안 되며, 오히려 특정 실시 예에 특유할 수 있는 특징의 설명으로서 해석되어야 한다. 별도의 실시 예의 문맥에서 본 명세서에서 설명된 특정 특징들은 또한 단일 실시 예에서 조합하여 실현될 수 있다. 반대로, 단일 실시 예의 문맥에서 설명된 다양한 특징들은 또한 다수의 실시 예에서 개별적으로 또는 임의의 적절한 하위 조합으로 실현될 수 있다. 더욱이, 특징들이 특정 조합으로 작용하는 것으로 위에서 설명되고 심지어 처음에 그렇게 청구될 수 있지만, 청구된 조합으로부터의 하나 이상의 특징은 경우에 따라 조합으로부터 제외(excise)될 수 있고, 청구범위는 하위 조합 또는 하위 조합의 변형에 관한 것일 수 있다.
유사하게, 동작들이 도면들에 도시되고 청구범위에 특정 순서로 언급되지만, 이는 그러한 동작들이 도시된 특정 순서로 또는 순차적인 순서로 수행되거나, 또는 바람직한 결과를 달성하기 위하여 도시된 모든 동작들이 수행되는 것을 요구하는 것으로 이해되어서는 안 된다. 특정 상황에서, 멀티 태스킹 및 병렬 처리가 유리할 수 있다. 더욱이, 전술한 실시 예에서 다양한 시스템 모듈 및 컴포넌트의 분리는 모든 실시 예에서 이러한 분리를 요구하는 것으로 이해되어서는 안 되며, 기술된 프로그램 컴포넌트 및 시스템은 일반적으로 단일 소프트웨어 제품으로 함께 통합될 수 있거나 또는 여러 소프트웨어 제품으로 패키징될 수 있다고 이해되어야 한다.
주제의 특정 실시 예들이 설명되었다. 다른 실시 예는 다음의 청구범위의 범위 내에 있다. 예를 들어, 청구범위에 기재된 동작은 상이한 순서로 수행될 수 있으며 여전히 바람직한 결과를 달성할 수 있다. 일례로서, 첨부 도면에 도시된 프로세스는 바람직한 결과를 달성하기 위하여 도시된 특정 순서 또는 순차적 순서를 반드시 요구할 필요는 없다. 경우에 따라, 멀티 태스킹 및 병렬 처리가 유리할 수 있다.

Claims (18)

  1. 자원 할당을 수행하기 위한, 컴퓨터로 구현되는 방법에 있어서,
    K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는(subject to) 배낭 문제(knapsack problem, KP)를 풂으로써 N 명의 사용자(N users) 사이에서 M 개의 자원을 K 개의 풀로 자원 할당을 수행하기 위하여 다수의(a number of) 개별 컴퓨터 구현 솔버(solver)를 포함하는 분산 컴퓨팅 시스템을 사용하는 단계를 포함하고, 상기 분산 컴퓨팅 시스템을 사용하는 단계는,
    상기 K 개의 글로벌 제약 조건 및 상기 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하는 단계로서, K는 L보다 작고, K 개의 글로벌 제약 조건 각각은 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용(per-pool cost)을 제한하고, L 개의 로컬 제약 조건 각각은 M 개의 자원의 사용자 별 선택(per-user selection)을 제한하는 것인 상기 수신 단계;
    K 개의 이중 승수(dual multiplier)를 사용하여 상기 KP를 N 개의 하위 문제로 분해(decompose)하는 단계로서, 상기 N 개의 하위 문제 각각은 N 명의 사용자 중 각각의 사용자에 대응하고, 상기 대응하는 사용자에 관한 L 개의 로컬 제약 조건이 있으며, K 개의 이중 승수 각각은 K 개의 글로벌 제약 조건 중 각각의 제약 조건에 대응하는 것인 상기 분해 단계;
    상기 N 개의 하위 문제를 풀기 위한 상기 다수의 개별 컴퓨터 구현 솔버를 결정하는 단계;
    각각의 하위 문제를 각각의 컴퓨터 구현 솔버에 할당(assign)함으로써 상기 N 개의 하위 문제를 상기 다수의 개별 컴퓨터 구현 솔버 사이에서 분배하는 단계; 및
    상기 분산 컴퓨팅 시스템에 의해 2 회 이상의 반복을 수행함으로써 상기 KP를 푸는 단계
    를 포함하고, 1 회의 반복에서, 상기 방법은:
    상기 N 개의 하위 문제 각각을, 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 독립적으로 푸는 단계 - 상기 N 개의 하위 문제 각각을 푸는 단계는 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양을 계산하는 단계를 포함함 - ;
    상기 K 개의 풀 각각에 대하여, 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 M 개의 자원 각각의 양에 기초하여 상기 N 명의 사용자에 걸쳐 상기 M 개의 자원의 풀 별 비용을 계산하는 단계; 및
    대응하는 글로벌 제약 조건에 의해 제한되는 대응하는 풀에 대한 2 명 이상의 사용자에 걸친 상기 M 개의 자원의 최대 풀 별 비용과, 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 계산되는 상기 대응하는 풀에 대한 상기 N 명의 사용자에 걸친 상기 M 개의 자원의 풀 별 비용 간의 차이에 기초하여, 상기 대응하는 풀에 대하여 상기 K 개의 이중 승수 각각을 업데이트하는 단계
    를 포함하는 것인, 자원 할당을 수행하는 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    L은 수십억 이상인 것인, 자원 할당을 수행하는 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 단계는, 상기 KP를 풀기 위한 지정된 계산 시간에 기초하여 상기 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 단계를 포함하고;
    상기 N 개의 하위 문제 각각을 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 독립적으로 푸는 단계는, 상기 N 개의 하위 문제 중 2개 이상이 할당된 컴퓨터 구현 솔버에 의해 상기 N 개의 하위 문제 중 2 개 이상을 병렬로 푸는 단계를 포함하는 것인, 자원 할당을 수행하는 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 N 개의 하위 문제를 풀기 위한 상기 다수의 개별 컴퓨터 구현 솔버를 결정하는 단계는, 상기 다수의 개별 컴퓨터 구현 솔버를 N 개로 결정하는 단계를 포함하고,
    상기 N 개의 하위 문제 각각을 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 독립적으로 푸는 단계는, 상기 개별 컴퓨터 구현 솔버 각각에 의해 상기 N 개의 하위 문제 각각을 병렬로 푸는 단계를 포함하는 것인, 자원 할당을 수행하는 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 N 개의 하위 문제 각각을 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 독립적으로 푸는 단계는, IP(integer programming) 솔버에 의해 IP 문제를 독립적으로 푸는 단계를 포함하는 것인, 자원 할당을 수행하는 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    상기 N 개의 하위 문제 각각을 푸는 단계는, 상기 K 개의 풀 각각에 대하여, 상기 대응하는 사용자에게 할당될 M 개의 자원 각각의 양에 기초하여 상기 대응하는 사용자에 의한 M 개의 자원의 풀 별 비용을 계산하는 단계를 더 포함하는 것인, 자원 할당을 수행하는 컴퓨터 구현 방법.
  7. K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는 배낭 문제(KP)를 풂으로써 N 명의 사용자 사이에서 M 개의 자원을 K 개의 풀로 자원 할당을 수행하기 위한 분산 컴퓨팅 시스템에 있어서,
    하나 이상의 컴퓨터; 및
    상기 하나 이상의 컴퓨터에 상호 동작 가능하게 커플링되어 있고, 상기 하나 이상의 컴퓨터에 의한 실행 시 하나 이상의 동작을 수행하는 하나 이상의 명령어가 저장된 유형의(tangible) 비일시적 기계 판독 가능 매체를 가진 하나 이상의 컴퓨터 메모리 디바이스
    를 포함하고,
    상기 하나 이상의 동작은,
    상기 K 개의 글로벌 제약 조건 및 상기 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하는 동작으로서, K는 L보다 작고, K 개의 글로벌 제약 조건 각각은 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용(per-pool cost)을 제한하고, L 개의 로컬 제약 조건 각각은 M 개의 자원의 사용자 별 선택(per-user selection)을 제한하는 것인 상기 수신 동작;
    K 개의 이중 승수(dual multiplier)를 사용하여 상기 KP를 N 개의 하위 문제로 분해(decompose)하는 동작으로서, 상기 N 개의 하위 문제 각각은 N 명의 사용자 중 각각의 사용자에 대응하고, 상기 대응하는 사용자에 관한 L 개의 로컬 제약 조건이 있으며, K 개의 이중 승수 각각은 K 개의 글로벌 제약 조건 중 각각의 제약 조건에 대응하는 것인 상기 분해 동작;
    상기 N 개의 하위 문제를 독립적으로 풀기 위한 다수의 개별 프로세서를 결정하는 동작;
    상기 N 개의 하위 문제를 상기 다수의 개별 프로세서 사이에서 분배하는 동작; 및
    상기 분산 컴퓨팅 시스템에 의해 2 회 이상의 반복을 수행함으로써 상기 KP를 푸는 동작
    을 포함하고, 1 회의 반복에서, 상기 하나 이상의 동작은:
    상기 N 개의 하위 문제 각각을, 상기 다수의 개별 프로세서 중 하나에 의해 독립적으로 푸는 동작 - 상기 N 개의 하위 문제 각각을 푸는 동작은 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양을 계산하는 동작을 포함함 - ;
    상기 K 개의 풀 각각에 대하여, 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 M 개의 자원 각각의 양에 기초하여 상기 N 명의 사용자에 걸쳐 상기 M 개의 자원의 풀 별 비용을 계산하는 동작; 및
    대응하는 글로벌 제약 조건에 의해 제한되는 대응하는 풀에 대한 2 명 이상의 사용자에 걸친 상기 M 개의 자원의 최대 풀 별 비용과, 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 계산되는 상기 대응하는 풀에 대한 상기 N 명의 사용자에 걸친 상기 M 개의 자원의 풀 별 비용 간의 차이에 기초하여, 상기 대응하는 풀에 대하여 상기 K 개의 이중 승수 각각을 업데이트하는 동작
    을 포함하는 것인, 분산 컴퓨팅 시스템.
  8. 제7항에 있어서,
    L은 수십억 이상인 것인, 분산 컴퓨팅 시스템.
  9. 제7항에 있어서,
    상기 N 개의 하위 문제를 풀기 위한 다수의 개별 프로세서를 결정하는 동작은, 상기 KP를 풀기 위한 지정된 계산 시간에 기초하여 상기 N 개의 하위 문제를 풀기 위한 다수의 개별 프로세서를 결정하는 동작을 포함하고;
    상기 N 개의 하위 문제 각각을 상기 다수의 개별 프로세서 중 하나에 의해 독립적으로 푸는 동작은, 상기 다수의 개별 프로세서 중 하나에 의해 상기 N 개의 하위 문제 각각을 병렬로 푸는 동작을 포함하는 것인, 분산 컴퓨팅 시스템.
  10. 제7항에 있어서,
    상기 N 개의 하위 문제를 풀기 위한 상기 다수의 개별 프로세서를 결정하는 동작은, 상기 다수의 개별 프로세서를 N 개로 결정하는 동작을 포함하고,
    상기 N 개의 하위 문제 각각을 상기 다수의 개별 프로세서 중 하나에 의해 독립적으로 푸는 동작은, 상기 개별 프로세서 각각에 의해 상기 N 개의 하위 문제 각각을 병렬로 푸는 동작을 포함하는 것인, 분산 컴퓨팅 시스템.
  11. 제7항에 있어서,
    상기 N 개의 하위 문제 각각을 상기 다수의 개별 프로세서 중 하나에 의해 독립적으로 푸는 동작은, IP(integer programming) 프로세서에 의해 IP 문제를 독립적으로 푸는 동작을 포함하는 것인, 분산 컴퓨팅 시스템.
  12. 제7항에 있어서,
    상기 N 개의 하위 문제 각각을 푸는 동작은, 상기 K 개의 풀 각각에 대하여, 상기 대응하는 사용자에게 할당될 M 개의 자원 각각의 양에 기초하여 상기 대응하는 사용자에 의한 M 개의 자원의 풀 별 비용을 계산하는 동작을 더 포함하는 것인, 분산 컴퓨팅 시스템.
  13. 자원 할당을 수행하기 위한 동작들을 수행하기 위해 컴퓨터 시스템에 의해 실행 가능한 하나 이상의 명령어가 저장된 비일시적 컴퓨터 판독 가능 저장 매체에 있어서, 상기 동작들은,
    K 개의 글로벌 제약 조건 및 L 개의 로컬 제약 조건이 있는(subject to) 배낭 문제(knapsack problem, KP)를 풂으로써 N 명의 사용자(N users) 사이에서 M 개의 자원을 K 개의 풀로 자원 할당을 수행하기 위하여 다수의(a number of) 개별 컴퓨터 구현 솔버(solver)를 포함하는 분산 컴퓨팅 시스템을 사용하는 동작을 포함하고, 상기 분산 컴퓨팅 시스템을 사용하는 동작은,
    상기 K 개의 글로벌 제약 조건 및 상기 L 개의 로컬 제약 조건을 나타내는 데이터를 수신하는 동작으로서, K는 L보다 작고, K 개의 글로벌 제약 조건 각각은 2 명 이상의 사용자에 걸쳐 M 개의 자원의 각각의 최대 풀 별 비용(per-pool cost)을 제한하고, L 개의 로컬 제약 조건 각각은 M 개의 자원의 사용자 별 선택(per-user selection)을 제한하는 것인 상기 수신 동작;
    K 개의 이중 승수(dual multiplier)를 사용하여 상기 KP를 N 개의 하위 문제로 분해(decompose)하는 동작으로서, 상기 N 개의 하위 문제 각각은 N 명의 사용자 중 각각의 사용자에 대응하고, 상기 대응하는 사용자에 관한 L 개의 로컬 제약 조건이 있으며, K 개의 이중 승수 각각은 K 개의 글로벌 제약 조건 중 각각의 제약 조건에 대응하는 것인 상기 분해 동작;
    상기 N 개의 하위 문제를 풀기 위한 상기 다수의 개별 컴퓨터 구현 솔버를 결정하는 동작;
    각각의 하위 문제를 각각의 컴퓨터 구현 솔버에 할당(assign)함으로써 상기 N 개의 하위 문제를 상기 다수의 개별 컴퓨터 구현 솔버 사이에서 분배하는 동작; 및
    상기 분산 컴퓨팅 시스템에 의해 2 회 이상의 반복을 수행함으로써 상기 KP를 푸는 동작
    을 포함하고, 1 회의 반복에서, 상기 동작들은:
    상기 N 개의 하위 문제 각각을, 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 독립적으로 푸는 동작 - 상기 N 개의 하위 문제 각각을 푸는 동작은 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양을 계산하는 동작을 포함함 - ;
    상기 K 개의 풀 각각에 대하여, 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 M 개의 자원 각각의 양에 기초하여 상기 N 명의 사용자에 걸쳐 상기 M 개의 자원의 풀 별 비용을 계산하는 동작; 및
    대응하는 글로벌 제약 조건에 의해 제한되는 대응하는 풀에 대한 2 명 이상의 사용자에 걸친 상기 M 개의 자원의 최대 풀 별 비용과, 상기 N 명의 사용자 중 대응하는 사용자에게 할당될 상기 M 개의 자원 각각의 양에 기초하여 계산되는 상기 대응하는 풀에 대한 상기 N 명의 사용자에 걸친 상기 M 개의 자원의 풀 별 비용 간의 차이에 기초하여, 상기 대응하는 풀에 대하여 상기 K 개의 이중 승수 각각을 업데이트하는 동작
    을 포함하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체.
  14. 제13항에 있어서,
    L은 수십억 이상인 것인, 비일시적 컴퓨터 판독 가능 저장 매체.
  15. 제13항에 있어서,
    상기 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 동작은, 상기 KP를 풀기 위한 지정된 계산 시간에 기초하여 상기 N 개의 하위 문제를 풀기 위한 다수의 개별 컴퓨터 구현 솔버를 결정하는 동작을 포함하고;
    상기 N 개의 하위 문제 각각을 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 독립적으로 푸는 동작은, 상기 N 개의 하위 문제 중 2개 이상이 할당된 컴퓨터 구현 솔버에 의해 상기 N 개의 하위 문제 중 2 개 이상을 병렬로 푸는 동작을 포함하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체.
  16. 제13항에 있어서,
    상기 N 개의 하위 문제를 풀기 위한 상기 다수의 개별 컴퓨터 구현 솔버를 결정하는 동작은, 상기 다수의 개별 컴퓨터 구현 솔버를 N 개로 결정하는 동작을 포함하고,
    상기 N 개의 하위 문제 각각을 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 독립적으로 푸는 동작은, 상기 개별 컴퓨터 구현 솔버 각각에 의해 상기 N 개의 하위 문제 각각을 병렬로 푸는 동작을 포함하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체.
  17. 제13항에 있어서,
    상기 N 개의 하위 문제 각각을 상기 하위 문제가 할당된 컴퓨터 구현 솔버에 의해 독립적으로 푸는 동작은, IP(integer programming) 솔버에 의해 IP 문제를 독립적으로 푸는 동작을 포함하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체.
  18. 제13항에 있어서,
    상기 N 개의 하위 문제 각각을 푸는 동작은, 상기 K 개의 풀 각각에 대하여, 상기 대응하는 사용자에게 할당될 M 개의 자원 각각의 양에 기초하여 상기 대응하는 사용자에 의한 M 개의 자원의 풀 별 비용을 계산하는 동작을 더 포함하는 것인, 비일시적 컴퓨터 판독 가능 저장 매체.
KR1020197032094A 2019-04-24 2019-04-24 분산 자원 할당 KR102234129B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2019/029011 WO2020219042A1 (en) 2019-04-24 2019-04-24 Distributed resource allocation

Publications (2)

Publication Number Publication Date
KR20200125894A KR20200125894A (ko) 2020-11-05
KR102234129B1 true KR102234129B1 (ko) 2021-04-02

Family

ID=71104873

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197032094A KR102234129B1 (ko) 2019-04-24 2019-04-24 분산 자원 할당

Country Status (9)

Country Link
US (2) US10691499B1 (ko)
EP (1) EP3746960A1 (ko)
JP (1) JP7027450B2 (ko)
KR (1) KR102234129B1 (ko)
CN (1) CN112136109B (ko)
AU (1) AU2019253789B1 (ko)
CA (1) CA3059603C (ko)
SG (1) SG11201910147UA (ko)
WO (1) WO2020219042A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG11201910147UA (en) 2019-04-24 2020-11-27 Advanced New Technologies Co Ltd Distributed Resource Allocation
CN112136111B (zh) 2019-04-24 2024-04-16 创新先进技术有限公司 分布式资源分配
US20220222312A1 (en) * 2021-01-13 2022-07-14 Fujitsu Limited Using lattice reduction and optimization solvers for solving multi-dimensional knapsack problems and variants thereof
US11704609B2 (en) 2021-06-10 2023-07-18 Bank Of America Corporation System for automatically balancing anticipated infrastructure demands
US11252036B1 (en) 2021-06-10 2022-02-15 Bank Of America Corporation System for evaluating and tuning resources for anticipated demands
US12014210B2 (en) 2021-07-27 2024-06-18 Bank Of America Corporation Dynamic resource allocation in a distributed system
CN114581221B (zh) * 2022-05-05 2022-07-29 支付宝(杭州)信息技术有限公司 分布式计算系统以及计算机设备
CN114638549A (zh) * 2022-05-10 2022-06-17 支付宝(杭州)信息技术有限公司 基于大规模整数规划的资源分配方法和系统
CN115562877B (zh) * 2022-11-15 2023-03-24 北京阿丘科技有限公司 分布式算力资源的编排方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002133052A (ja) 2000-08-25 2002-05-10 Internatl Business Mach Corp <Ibm> 資源割り当て問題を表現する方法と解く方法
US20020156667A1 (en) 2000-12-13 2002-10-24 Bergstrom John M. Stochastic multiple choice knapsack assortment optimizer
WO2012058170A1 (en) 2010-10-26 2012-05-03 Qualcomm Incorporated Application specific resource management
US20140379401A1 (en) 2011-05-18 2014-12-25 The Boeing Company Benchmarking progressive systems for solving combinatorial problems

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477683B1 (en) 1999-02-05 2002-11-05 Tensilica, Inc. Automated processor generation system for designing a configurable processor and method for the same
US6704692B1 (en) * 1999-10-25 2004-03-09 The Boeing Company Method and system for tracking multiple objects
US7660734B1 (en) 2000-12-20 2010-02-09 Demandtec, Inc. System for creating optimized promotion event calendar
US7243167B2 (en) * 2003-09-19 2007-07-10 Intel Corporation Managing peripheral device address space resources using a tunable bin-packing/knapsack algorithm
US7594016B1 (en) * 2003-11-12 2009-09-22 Hewlett-Packard Development Company, L.P. Calculating numbers of servers for tiers of a multi-tiered system
US7886055B1 (en) * 2005-04-28 2011-02-08 Hewlett-Packard Development Company, L.P. Allocating resources in a system having multiple tiers
US9021094B1 (en) * 2005-04-28 2015-04-28 Hewlett-Packard Development Company, L.P. Allocation of resources for tiers of a multi-tiered system based on selecting items from respective sets
US8412551B2 (en) 2004-10-21 2013-04-02 Abb Research Ltd. Formal structure-based algorithms for large scale resource scheduling optimization
US8112755B2 (en) * 2006-06-30 2012-02-07 Microsoft Corporation Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
US8082549B2 (en) * 2006-11-08 2011-12-20 Board Of Regents, The University Of Texas System System, method and apparatus for allocating resources by constraint selection
EP2208137A1 (en) * 2007-10-31 2010-07-21 International Business Machines Corporation Method, system and computer program for distributing a plurality of jobs to a plurality of computers
US9424094B2 (en) * 2009-06-01 2016-08-23 International Business Machines Corporation Server consolidation using virtual machine resource tradeoffs
US8479098B2 (en) * 2009-08-12 2013-07-02 Ebay Inc. Reservation of resources and deployment of applications using an integrated development environment
US20120215576A1 (en) * 2011-02-17 2012-08-23 International Business Machines Corporation Allocating tasks to resources
EP2788933A4 (en) * 2011-12-22 2015-06-03 Ibm MIX OF OPTIMAL SOLUTIONS
GB2503464A (en) * 2012-06-27 2014-01-01 Ibm Allocating nodes in a service definition graph to resources in a resource catalogue according to node specific rules
US10140153B2 (en) * 2012-09-12 2018-11-27 Salesforce.Com, Inc. System, method, and medium for facilitating auction-based resource sharing for message queues in an on-demand services environment
GB2507038A (en) * 2012-10-16 2014-04-23 Ibm Scheduling jobs weighted according to the memory usage using a knapsack problem.
US9292349B2 (en) * 2013-03-15 2016-03-22 International Business Machines Corporation Detecting deployment conflicts in heterogenous environments
US20150113542A1 (en) * 2013-10-17 2015-04-23 Nec Laboratories America, Inc. Knapsack-based sharing-aware scheduler for coprocessor-based compute clusters
CN103619024B (zh) * 2013-11-27 2016-07-06 无锡北邮感知技术产业研究院有限公司 同小区中蜂窝用户与d2d用户间频谱资源分配的方法
CN103687027B (zh) * 2013-12-26 2017-06-13 广东省电信规划设计院有限公司 Lte网络的资源分配方法和系统
US9495211B1 (en) * 2014-03-04 2016-11-15 Google Inc. Allocating computing resources based on user intent
US20150278736A1 (en) * 2014-03-25 2015-10-01 Innotas Framework to optimize the selection of projects and the allocation of resources within a structured business organization under time, resource and budget constraints
CN104102544B (zh) * 2014-06-30 2018-08-03 武汉理工大学 混合云环境下多QoS约束的并行任务调度成本优化方法
US10206169B2 (en) * 2015-09-04 2019-02-12 Nec Corporation Energy efficient downlink scheduling in LTE-advanced networks
US20170352003A1 (en) * 2016-06-06 2017-12-07 National Ict Australia Limited Transporting goods using a fleet of vehicles
WO2019050513A1 (en) * 2017-09-06 2019-03-14 Total Solar International AGGREGATED DISTRIBUTION FOR RESPONSE TO ENERGY DEMAND
CN107728139B (zh) * 2017-09-12 2020-11-17 电子科技大学 一种基于多目标跟踪的相控阵雷达组网系统资源管理方法
CN108846570B (zh) * 2018-06-08 2022-02-01 武汉理工大学 一种解决资源受限项目调度问题的方法
CN112136111B (zh) 2019-04-24 2024-04-16 创新先进技术有限公司 分布式资源分配
SG11201910147UA (en) 2019-04-24 2020-11-27 Advanced New Technologies Co Ltd Distributed Resource Allocation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002133052A (ja) 2000-08-25 2002-05-10 Internatl Business Mach Corp <Ibm> 資源割り当て問題を表現する方法と解く方法
US20020156667A1 (en) 2000-12-13 2002-10-24 Bergstrom John M. Stochastic multiple choice knapsack assortment optimizer
WO2012058170A1 (en) 2010-10-26 2012-05-03 Qualcomm Incorporated Application specific resource management
US20140379401A1 (en) 2011-05-18 2014-12-25 The Boeing Company Benchmarking progressive systems for solving combinatorial problems

Also Published As

Publication number Publication date
AU2019253789B1 (en) 2020-10-08
CA3059603C (en) 2021-05-11
JP7027450B2 (ja) 2022-03-01
WO2020219042A1 (en) 2020-10-29
US20200341817A1 (en) 2020-10-29
US10691499B1 (en) 2020-06-23
SG11201910147UA (en) 2020-11-27
JP2021517673A (ja) 2021-07-26
KR20200125894A (ko) 2020-11-05
CN112136109A (zh) 2020-12-25
CA3059603A1 (en) 2020-10-24
US10884813B2 (en) 2021-01-05
CN112136109B (zh) 2024-04-09
EP3746960A4 (en) 2020-12-09
EP3746960A1 (en) 2020-12-09

Similar Documents

Publication Publication Date Title
KR102234129B1 (ko) 분산 자원 할당
CN112136111B (zh) 分布式资源分配
US11769061B2 (en) Processing computational graphs
CN108351805A (zh) 计算图的基于流的加速器处理
Lin et al. On scientific workflow scheduling in clouds under budget constraint
CN103853618B (zh) 基于截止日期驱动的云系统代价最小化资源分配方法
CN114902273A (zh) 使用gpu优化资源分配的系统和方法
WO2018144534A1 (en) Hardware-based machine learning acceleration
CN112166413B (zh) 分布式资源分配
Zhang et al. Design and implementation of task scheduling strategies for massive remote sensing data processing across multiple data centers
Pande et al. A customer-oriented task scheduling for heterogeneous multi-cloud environment
Chen et al. A parallel computing framework for solving user equilibrium problem on computer clusters
CN110019367A (zh) 一种统计数据特征的方法和装置
GB2608992A (en) Variable freezing method
de Doncker et al. Monte Carlo automatic integration with dynamic parallelism in CUDA
JP7461378B2 (ja) 予備乗務員パターンを最適化すること
Jiang et al. Transformed search based software engineering: a new paradigm of sbse
Gunarathne et al. Iterative statistical kernels on contemporary GPUs
Khan et al. AN EFFICIENT TASK SCHEDULING ALGORITHM TO OPTIMIZE RELIABILITY IN MOBILE COMPUTING
Zhang et al. Online task assignment for federated learning in smart city
Khosravi Presenting and demonstrating new algorithm for optimum resource allocation in cloud computing based on Kalman filtering
Sekikawa et al. SAS: Structured Activation Sparsification

Legal Events

Date Code Title Description
N231 Notification of change of applicant
E701 Decision to grant or registration of patent right