KR20160130795A - 시간, 리소스 및 예산 제약 하에 구조화된 기업 조직 내에서 프로젝트의 선택 및 리소스의 할당을 최적화하기 위한 프레임워크 - Google Patents

시간, 리소스 및 예산 제약 하에 구조화된 기업 조직 내에서 프로젝트의 선택 및 리소스의 할당을 최적화하기 위한 프레임워크 Download PDF

Info

Publication number
KR20160130795A
KR20160130795A KR1020167027126A KR20167027126A KR20160130795A KR 20160130795 A KR20160130795 A KR 20160130795A KR 1020167027126 A KR1020167027126 A KR 1020167027126A KR 20167027126 A KR20167027126 A KR 20167027126A KR 20160130795 A KR20160130795 A KR 20160130795A
Authority
KR
South Korea
Prior art keywords
project
projects
resource
resources
path
Prior art date
Application number
KR1020167027126A
Other languages
English (en)
Other versions
KR102376755B1 (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 KR20160130795A publication Critical patent/KR20160130795A/ko
Application granted granted Critical
Publication of KR102376755B1 publication Critical patent/KR102376755B1/ko

Links

Images

Classifications

    • 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
    • G06Q10/06313Resource planning in a project environment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • G06F16/285Clustering or classification
    • G06F17/3053
    • G06F17/30598
    • G06F17/30864
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic graphical models, e.g. probabilistic networks
    • 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/04Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
    • 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
    • G06Q10/06312Adjustment or analysis of established resource schedule, e.g. resource or task levelling, or dynamic rescheduling
    • 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
    • G06Q10/06315Needs-based resource requirements planning or analysis
    • 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
    • G06Q10/06316Sequencing of tasks or work
    • 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/0633Workflow analysis

Landscapes

  • Business, Economics & Management (AREA)
  • Human Resources & Organizations (AREA)
  • Engineering & Computer Science (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Tourism & Hospitality (AREA)
  • Quality & Reliability (AREA)
  • Operations Research (AREA)
  • Marketing (AREA)
  • Game Theory and Decision Science (AREA)
  • Development Economics (AREA)
  • Educational Administration (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biodiversity & Conservation Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 개시의 양상들은 시간, 리소스 및 예산 제약들 하에서 스케줄에서의 프로젝트들에 리소스들을 효율적으로 할당하기 위해 제공된다. 몇몇 실시예에서, 방법이 제공된다. 상기 방법은 복수의 프로젝트에서의 어떤 프로젝트가 복수의 프로젝트에서의 다른 프로젝트를 완료하기 위한 필요조건으로서 완료되어야 하는지를 나타내는 프로젝트 종속값들의 세트를 포함한, 스케줄에서 리소스의 효율적인 할당을 결정하기 위한 변수를 액세스하는 단계를 포함할 수 있다. 상기 방법은 또한 상기 프로젝트 종속값들의 세트에 기초하여, 완료될 프로젝트들의 순서를 나타내는 종속 경로를 결정하는 단계로서, 상기 종속 경로에서의 프로젝트는 종속 경로에서의 모든 이전 프로젝트가 완료될 때까지 시작될 수 없는, 상기 종속 경로를 결정하는 단계; 및 종속 경로에 기초하며 예산 지출에 의해 제한된, 최적화 목표를 최대화하는 시평 내에서 완료될 프로젝트의 효율적인 선택을 결정하는 단계를 포함할 수 있다.

Description

시간, 리소스 및 예산 제약 하에 구조화된 기업 조직 내에서 프로젝트의 선택 및 리소스의 할당을 최적화하기 위한 프레임워크{A FRAMEWORK TO OPTIMIZE THE SELECTION OF PROJECTS AND THE ALLOCATION OF RESOURCES WITHIN A STRUCTURED BUSINESS ORGANIZATION UNDER TIME, RESOURCE AND BUDGET CONSTRAINTS}
본 명세서에 개시된 주제는 일반적으로 데이터를 프로세싱하는 것에 관한 것이다. 몇몇 실시예에서, 본 개시 내용은 구조화된 기업 조직 내에서 프로젝트의 선택 및 리소스의 할당을 최적화하기 위해 프레임워크를 제공하기 위한 방법 및 장치에 관한 것이다.
기업 조직들 및 다른 회사들의 공통적인 목표는 시간 및 예산 제약 내에서 다양한 태스크 또는 프로젝트를 완료하기 위해 이용 가능한 리소스의 효율적인 사용을 찾는 것이다. 몇몇 경우에서, 효율성의 레벨은, 특정된 수의 프로젝트로의 리소스의 특정한 할당을 고려해볼 때, 얼마나 많은 이득이 얻어지는지에 기초할 수 있다. 다양한 최적화 알고리즘을 이용한 컴퓨터는 리소스를 효율적으로 이용하기 위해 어떤 프로젝트가 완료되어야 하는지에 대한 제안된 스케줄을 결정하기 위해 의존될 수 있다. 그러나, 알려진 알고리즘은 특히 엄청난 수의 프로젝트가 동시에 고려될 수 있을 때, 계산적으로 비효율적일 수 있다. 몇몇 경우에서, 종래의 알고리즘은 보다 많은 프로젝트가 고려를 위해 부가되는 이러한 최적화 문제를 해결할 수 없을 수 있다.
그러므로 계산적으로 효율적인 방식으로 프로젝트의 스케줄을 결정할 수 있는 새로운 알고리즘들 및 휴리스틱스를 개발하는 것이 바람직하다.
방법, 시스템 및 컴퓨터 판독 가능한 미디어는 다양한 시간, 리소스, 및 예산 제약 하에서의 조직에서 다수의 프로젝트에 리소스들을 할당하기 위해 제공된다. 몇몇 실시예에서, 방법이 제공된다. 상기 방법은: 프로세서에 의해, 복수의 프로젝트를 액세스하는 단계; 상기 프로세서에 의해, 상기 복수의 프로젝트에서 적어도 프로젝트들의 서브세트를 완료하기 위한 시간 길이를 나타내는 시평(time horizon)을 액세스하는 단계; 상기 프로세서에 의해, 복수의 리소스를 액세스하는 단계로서, 상기 복수의 리소스에서의 각각의 리소스는 상기 복수의 프로젝트에서 적어도 하나의 프로젝트를 완료하는 것을 향해 상기 리소스에 의해 수행될 수 있는 하나 이상의 기능을 특정하는, 상기 복수의 리소스를 액세스하는 단계; 상기 프로세서에 의해, 상기 복수의 리소스에서의 각각의 리소스에 대해, 각각의 리소스가 상기 복수의 프로젝트에 걸쳐 사용될 수 있는 최대 이용 가능한 용량을 나타내는 예산 지출을 액세스하는 단계; 상기 프로세서에 의해, 상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것과 연관된 비용 제약을 액세스하는 단계; 상기 프로세서에 의해, 상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것으로 획득된 이득의 양을 나타내는 이득값을 액세스하는 단계; 상기 프로세서에 의해, 상기 복수의 프로젝트에서의 어떤 프로젝트가 상기 복수의 프로젝트에서의 다른 프로젝트를 완료하기 위한 필요조건으로서 완료되어야 하는지를 나타내는 프로젝트 종속값들의 세트를 액세스하는 단계; 상기 프로세서에 의해, 상기 프로젝트 종속값들의 세트에 기초하여, 완료될 상기 복수의 프로젝트 중에서 프로젝트들의 순서를 나타내는 적어도 하나의 종속 경로를 결정하는 단계로서, 상기 적어도 하나의 종속 경로에서의 프로젝트는 상기 적어도 하나의 종속 경로에서의 모든 이전 프로젝트가 완료될 때까지 시작될 수 없는, 상기 적어도 하나의 종속 경로 결정 단계; 및 상기 프로세서에 의해, 프로젝트의 효율적인 선택에서 각각의 프로젝트의 이득값 및 상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 비용 제약들 사이에서의 비교에 기초하여 상기 시평 내에서 완료될 상기 복수의 프로젝트 중에서 프로젝트의 효율적인 선택을 결정하는 단계로서, 상기 효율적인 선택은 상기 적어도 하나의 종속 경로 및 각각의 리소스를 위한 상기 예산 지출에 의해 제한된, 프로젝트의 효율적인 선택을 완료하기 위해 상기 복수의 리소스의 효율적인 이용을 결정하는 것에 기초하는, 상기 프로젝트의 효율적인 선택을 결정하는 단계를 포함할 수 있다.
몇몇 실시예에서, 상기 적어도 하나의 종속 경로를 결정하는 단계는: 상기 복수의 프로젝트를 복수의 클러스터로 분할하는 단계; 상기 클러스터에서의 각각의 프로젝트에 대해, 상기 클러스터에서의 상기 프로젝트와 연관된 상기 프로젝트 종속값들에 의해 연계된 상기 복수의 프로젝트 중에서 프로젝트들의 시퀀스를 나타내는 각각의 클러스터에 대한 클러스터 종속 경로를 계산하는 단계; 상기 적어도 하나의 종속 경로를 생성하기 위해 상기 클러스터 종속 경로들의 병합 동작을 수행하는 단계; 및 상기 병합 동작 동안 상기 적어도 하나의 종속 경로에 관계되지 않은 적어도 상기 클러스터 종속 경로들 중 적어도 하나의 서브세트를 잘라내는 단계를 포함한다. 몇몇 실시예에서, 상기 병합 동작은 적어도 두 개의 클러스터 종속 경로를 함께 스플라이싱하는 것을 포함하며, 적어도 하나의 프로젝트에 기초하여 스플라이싱될 상기 적어도 두 개의 클러스터 종속 경로의 선택은 상기 적어도 두 개의 클러스터 종속 경로 중에서 공통적이다.
몇몇 실시예에서, 상기 적어도 하나의 종속 경로를 결정하는 단계는: 상기 프로젝트 종속값들의 세트에 기초하여 제1 종속 경로를 결정하는 단계; 상기 프로젝트 종속값들의 세트에 기초하여 제2 종속 경로를 결정하는 단계; 상기 제1 및 제2 경로 종속성의 추정된 리턴들 사이에서의 비교에 기초하여 상기 제2 종속 경로에 대해 상기 제1 종속 경로를 랭크하는 단계; 및 타임라인을 따라 상기 제2 종속 경로에 프로젝트를 할당하기 전에 상기 시평에 의해 제한된 타임라인을 따라 상기 제1 종속 경로에 프로젝트를 할당하는 단계를 포함한다.
몇몇 실시예에서, 완료될 복수의 프로젝트 중에서 프로젝트의 효율적인 선택을 결정하는 단계는 상기 시평에 의해 제한된 타임라인 상에서 프로젝트에 대한 효율적인 배치를 결정하는 단계를 포함하며, 상기 효율적인 배치는 프로젝트를 완료하기 위한 시간-길이, 프로젝트를 완료하기 위해 요구된 리소스들의 양, 및 프로젝트에 대한 최대 금융 비용들을 정의하는 프로젝트 예산에 기초한다. 몇몇 실시예에서, 상기 프로젝트에 대한 효율적인 배치를 결정하는 단계는: 상기 프로젝트에서의 역할들과 리소스들을 매칭시키는 단계; 상기 역할들과 매칭될 리소스의 선택을 우선순위화하는 단계; 및 상기 리소스들과 매칭될 역할의 선택을 우선순위화하는 단계를 포함한다. 몇몇 실시예에서, 리소스의 선택을 우선순위화하는 단계는: 비-선호 리소스보다 앞서 선호 리소스를 선택하는 단계; 흡인력 없는 리소스들에 앞서 흡인력 있는 리소스를 할당하는 단계로서, 상기 흡인력 있는 리소스는 역할이 고려되기에 앞서 시간-간격에 할당된 리소스를 나타내는, 상기 흡인력 있는 리소스 할당 단계; 융통성 있는 리소스들에 앞서 융통성 없는 리소스들을 할당하는 단계; 역할의 최적합 설명에 매칭되는 역할에 리소스를 할당하는 단계; 및 보다 짧은 가용성 지평을 가진 리소스들보다 보다 긴 가용성 지평을 가진 리소스들을 선호하는 단계를 포함한다. 몇몇 실시예에서, 역할의 선택을 우선순위화하는 단계는: 덜 희귀한 역할 전에 희귀한 역할을 매칭시키는 단계; 보다 짧은 윤곽을 가진 역할 전에 그 윤곽이 요구의 보다 긴 비-제로 시퀀스를 갖는 역할을 매칭시키는 단계; 및 보다 짧은 시간 약정을 가진 역할들 전에 보다 큰 시간 약정을 가진 역할을 매칭시키는 단계를 포함한다.
몇몇 실시예에서, 완료될 복수의 프로젝트 중에서 프로젝트의 효율적인 선택을 결정하는 단계는 복수의 프로젝트 중에서 프로젝트가 왜 프로젝트의 효율적인 선택 중에서 제외되는지에 대한 이유들을 결정하는 단계를 포함한다. 몇몇 실시예에서, 프로젝트가 제외되는 이유를 결정하는 단계는: 예산 부족이 프로젝트를 제외되게 하는지를 결정하는 단계; 리소스 부족이 프로젝트를 제외되게 하는지를 결정하는 단계; 타임라인 부족이 프로젝트를 제외되게 하는지를 결정하는 단계; 및 종속 경로 부족이 프로젝트를 제외되게 하는지를 결정하는 단계를 포함한다.
몇몇 실시예에서, 완료될 복수의 프로젝트 중에서 프로젝트의 효율적인 선택을 결정하는 단계는 프로젝트의 효율적인 선택 중에서 현재 포함되지 않는 복수의 프로젝트 중에서 적어도 하나 이상의 프로젝트가 효율적인 선택 중에서 포함될 수 있는지를 결정하기 위해 프로젝트 제약의 세트를 수정하는 단계를 포함한다. 몇몇 실시예에서, 상기 프로젝트 제약의 세트를 수정하는 단계는: 프로젝트의 효율적인 선택을 완료하기 위한 역할들의 수를 수정하는 것이 하나 이상의 프로젝트가 프로젝트의 효율적인 선택 중에 포함되는 것을 야기하는지를 결정하는 단계; 프로젝트의 효율적인 선택과 연관된 적어도 하나의 예산을 증가시키는 것이 하나 이상의 프로젝트가 상기 프로젝트의 효율적인 선택 중에 포함되는 것을 야기하는지를 결정하는 단계; 또는 상기 프로젝트의 효율적인 선택 중에서 프로젝트 내에서 역할의 용량을 증가시키는 것이 하나 이상의 프로젝트가 상기 프로젝트의 효율적인 선택 중에 포함되는 것을 야기하는지를 결정하는 단계를 포함한다.
몇몇 실시예에서, 시평 내에서 완료될 복수의 프로젝트 중에서 프로젝트의 효율적인 선택을 결정하는 단계는 상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 이득값 및 상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 비용 제약들 사이에서의 비교를 최대화하는 것에 추가로 기초한다.
몇몇 실시예에서, 시스템이 제공된다. 상기 시스템은: 복수의 프로젝트; 상기 복수의 프로젝트에서 적어도 프로젝트들의 서브세트를 완료하기 위한 시간의 길이를 표시한 시평; 복수의 리소스로서, 상기 복수의 리소스에서의 각각의 리소스는 상기 복수의 프로젝트에서의 적어도 하나의 프로젝트를 완료하는 것을 향해 리소스에 의해 수행될 수 있는 하나 이상의 기능을 특정하는, 상기 복수의 리소스; 상기 복수의 리소스에서의 각각의 리소스에 대해, 각각의 리소스가 복수의 프로젝트에 걸쳐 사용될 수 있는 최대 이용 가능한 용량을 나타내는 예산 지출; 상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것과 연관된 금융 비용들을 나타내는 비용 제약; 상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것으로 얻은 이득의 양을 나타내는 이득값; 및 상기 복수의 프로젝트에서의 어떤 프로젝트가 상기 복수의 프로젝트에서의 다른 프로젝트를 완료하기 위한 필요조건으로서 완료되어야 하는지를 나타내는 프로젝트 종속값들의 세트를 포함한 데이터를 저장하도록 구성된 메모리를 포함할 수 있다. 시스템은 또한 메모리에 결합되며, 상기 복수의 프로젝트, 상기 시평, 상기 복수의 리소스, 상기 복수의 리소스에서의 각각의 리소스에 대한 예산 지출, 상기 복수의 프로젝트에서의 각각의 프로젝트에 대한 시간 제약, 상기 복수의 프로젝트에서의 각각의 프로젝트에 대한 이득값, 및 프로젝트 종속값들의 세트를 액세스하고; 상기 프로젝트 종속값들의 세트에 기초하여, 완료될 상기 복수의 프로젝트 중에서 프로젝트들의 순서를 나타내는 적어도 하나의 종속 경로를 결정하는 것으로서, 상기 적어도 하나의 종속 경로에서의 프로젝트는 상기 적어도 하나의 종속 경로에서의 모든 이전 프로젝트가 완료될 때까지 시작될 수 없는, 적어도 하나의 종속 경로를 결정하는 것; 및 프로젝트의 효율적인 선택에서 각각의 프로젝트의 이득값 및 프로젝트의 효율적인 선택에서 각각의 프로젝트의 비용 제약들 사이에서의 비교에 기초하여 상기 시평 내에서 완료될 상기 복수의 프로젝트 중에서 프로젝트의 효율적인 선택을 결정하는 것으로서, 상기 효율적인 선택은 상기 적어도 하나의 종속 경로 및 각각의 리소스에 대한 예산 지출에 의해 제한된, 프로젝트의 효율적인 선택을 완료하기 위해 상기 복수의 리소스의 효율적인 이용을 결정하는 것에 기초하는, 상기 프로젝트의 효율적인 선택을 결정하도록 구성된 프로세서를 포함할 수 있다.
몇몇 실시예에서, 비 일시적 컴퓨터 판독 가능한 매체가 제공된다. 상기 컴퓨터 판독 가능한 매체는, 프로세서에 의해 해석될 때, 기계가 동작들을 수행하게 하는 명령어들을 포함할 수 있으며, 상기 동작들은: 복수의 프로젝트를 액세스하는 것: 상기 복수의 프로젝트에서 적어도 프로젝트들의 서브세트를 완료하기 위한 시간 길이를 표시한 시평을 액세스하는 것; 복수의 리소스를 액세스하는 것으로서, 상기 복수의 리소스에서의 각각의 리소스는 상기 복수의 프로젝트에서 적어도 하나의 프로젝트를 완료하는 것을 향해 상기 리소스에 의해 수행될 수 있는 하나 이상의 기능을 특정하는, 상기 복수의 리소스를 액세스하는 것; 상기 복수의 리소스에서의 각각의 리소스에 대해, 각각의 리소스가 상기 복수의 프로젝트에 걸쳐 사용될 수 있는 최대 이용 가능성 용량을 나타내는 예산 지출을 액세스하는 것; 상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것과 연관된 금융 비용들을 나타내는 비용 제약을 액세스하는 것; 상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것으로 얻은 이득의 양을 나타내는 이득값을 액세스하는 것; 상기 복수의 프로젝트에서의 어떤 프로젝트가 상기 복수의 프로젝트에서의 다른 프로젝트를 완료하기 위한 필요조건으로서 완료되어야 하는지를 나타내는 프로젝트 종속값들의 세트를 액세스하는 것; 상기 프로젝트 종속값들의 세트에 기초하여, 완료될 상기 복수의 프로젝트 중에서 프로젝트들의 순서를 나타내는 적어도 하나의 종속 경로를 결정하는 것으로서, 상기 적어도 하나의 종속 경로에서의 프로젝트는 상기 적어도 하나의 종속 경로에서의 모든 이전 프로젝트가 완료될 때까지 시작될 수 없는, 상기 적어도 하나의 종속 경로를 결정하는 것; 및 프로젝트의 효율적인 선택에서 각각의 프로젝트의 이득값 및 상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 비용 제약들 사이에서의 비교에 기초하여 상기 시평 내에서 완료될 상기 복수의 프로젝트 중에서 프로젝트의 효율적인 선택을 결정하는 것으로서, 상기 효율적인 선택은 상기 적어도 하나의 종속 경로 및 각각의 리소스에 대한 예산 지출에 의해 제한된, 상기 프로젝트의 효율적인 선택을 완료하기 위해 상기 복수의 리소스의 효율적인 이용을 결정하는 것에 기초하는, 상기 프로젝트의 효율적인 선택을 결정하는 것을 포함한다.
몇몇 실시예는 첨부한 도면들의 도들에서 예로서 제한 없이 예시된다.
도 1은 몇몇 실시예에 따라, 본 개시의 양상들을 수행하기에 적합한 예시적인 네트워크 환경을 예시한 네트워크 다이어그램이다.
도 2는 몇몇 실시예에 따라, 다수의 프로젝트에 리소스들을 할당하기 위해 시스템에 대한 시평 및 최적화 정보를 수신하기 위한 그래픽 사용자 인터페이스의 예시적인 디스플레이를 도시한다.
도 3은 몇몇 실시예에 따라, 다수의 프로젝트에 리소스들을 할당하기 위해 시스템에 대한 프로젝트 정보를 수신하기 위한 그래픽 사용자 인터페이스의 제2 예시적인 디스플레이를 도시한다.
도 4는 몇몇 실시예에 따라, 다수의 프로젝트에 리소스들을 할당하기 위해 시스템에 대한 제약 정보를 수신하기 위한 그래픽 사용자 인터페이스의 제3 예시적인 디스플레이를 도시한다.
도 5는 몇몇 실시예에 따라, 최적화 목표를 최대화하는 다수의 프로젝트를 열거한 전체 스케줄에 대한 일 예시적인 디스플레이, 예로서 경영 종합 보고(executive summary)를 도시한다.
도 6은 몇몇 실시예에 따라, 제안된 스케줄에 포함될 프로젝트들에 대한 부가적인 속성들을 설명한, 제2 예시적인 디스플레이, 예로서 그래픽 차트를 도시한다.
도 7은 몇몇 실시예에 따라, 제안된 스케줄에 포함될 프로젝트들에 대한 다른 속성들을 설명한, 제3 예시적인 디스플레이, 예로서 프로젝트 목록을 도시한다.
도 8은 몇몇 실시예에 따라, 제안된 스케줄에 포함될 프로젝트들에 대한 다른 속성들을 설명한, 제4 예시적인 디스플레이, 예로서 타임라인 개요를 도시한다.
도 9는 몇몇 실시예에 따라, 제안된 스케줄에 포함될 프로젝트들에 대한 다른 속성들을 설명한, 제5 예시적인 디스플레이, 예로서 리소스 이용 개요를 도시한다.
도 10은 몇몇 실시예에 따라, 제안된 스케줄에 포함될 프로젝트들에 대한 다른 속성들을 설명한, 제6 예시적인 디스플레이, 예로서 부가적인 잡다한 통계들을 도시한다.
도 11은 몇몇 실시예에 따라, 특정된 시평 내에서 완료될 프로젝트들의 스케줄을 생성하기 위한 예시적인 방법론을 설명한다.
도 12a는 몇몇 실시예에 따라, 도 11의 블록(1116)에서 종속 경로들을 결정하기 위한 예시적인 방법론을 제공한다.
도 12b는 방향성 비순환 그래프들의 몇몇 예의 그래픽 묘사를 제공한다.
도 12c는 도 12a에서의 설명들과 일치하는, 완전한 종속 경로들을 생성하기 위한 예를 제공한다.
도 13은 몇몇 실시예에 따라, 도 11의 블록(1118)에서 프로젝트를 할당하는 것을 결정하기 위한 예시적인 방법론을 제공한다.
도 14는 기계-판독 가능한 매체로부터 명령어들을 판독하며 여기에 논의된 방법론들 중 임의의 하나 이상을 수행할 수 있는, 몇몇 예시적인 실시예에 따른, 기계의 구성요소들을 예시한 블록 다이어그램이다.
다음의 상세한 설명은 도면들을 참조하여 판독되어야 하며, 여기에서 동일한 참조 숫자들은 상이한 도면들 전체에 걸쳐 유사한 요소들을 나타낸다. 반드시 일정한 비율로 그려지는 것은 아닌 도면들은 선택적인 실시예들을 묘사하며 본 발명의 범위를 제한하도록 의도되지 않는다. 상세한 설명은 제한으로서가 아닌, 예로서 본 발명의 원리들을 예시한다. 이러한 설명은 명확하게 이 기술분야의 숙련자가 본 발명을 만들며 사용할 수 있게 할 것이며, 현재 발명을 실행하는 최상의 모드인 것으로 믿어지는 것을 포함하여, 본 발명의 여러 개의 실시예, 각색, 변형, 대안 및 사용을 설명한다. 본 명세서 및 첨부된 청구항들에서 사용된 바와 같이, 단수 형태들은 문맥이 달리 명확하게 표시되지 않는다면 복수의 지시 대상을 포함한다.
시스템들, 방법들, 및 장치들은 다양한 시간, 리소스, 및 예산 제약 하에서 조직에서의 다수의 프로젝트에 리소스들을 할당하기 위해 제공된다. 여기에서 나타내어지는 바와 같이, "프로젝트"는 회사를 위한 특정 목적을 가진 작업의 계획된 부분으로서 정의될 수 있으며, 예를 들면, 달러량으로의 이득, 얻은 평판, 각각의 프로젝트에 대한 스코어, 추정된 장기 전략 값, 다른 수량화 가능한 메트릭들 또는 이들의 임의의 조합을 포함하여, 다양한 방식으로 표현된, 회사를 위한 특정 값을 산출할 수 있다. 프로젝트를 완료하기 위해, 다수의 리소스가 시간 기간에 걸쳐 프로젝트에 다 쏟게 될 필요가 있을 수 있으며, 그러므로 프로젝트는 요구된 리소스들의 연관된 특정 양, 추정된 비용, 완료를 위한 추정 시간, 및 각각의 유형의 리소스에 대한 최대 이용 가능한 용량을 특정한 하나 이상의 예산을 가질 수 있다. 여기에서 나타내어지는 바와 같이, "리소스"는 이것이 수량화되는 태스크들의 세트를 수행할 수 있는 수량화된 전문가의 자원으로서 정의될 수 있다. 다른 경우들에서, 리소스는 컴퓨터, 인쇄 기계, 과학 장비, 건설 장비 등과 같은, 다른 유형의 툴 및 기계를 포함할 수 있다. 기업 조직 및 다른 회사의 공통적인 목표는 시간 및 예산 제약 내에서 다양한 태스트 또는 프로젝트를 완료하기 위해 이용 가능한 리소스들의 효율적인 사용을 찾는 것이다. 몇몇 경우에서, 효율성의 레벨은, 특정된 수의 프로젝트로의 리소스특정한 할당을 고려해 볼 때, 얼마나 많은 이득이 획득되는지에 기초할 수 있다.
최적의 또는 효율적인 해결책을 찾기 위한 표준 접근법은 선형 프로그램으로서 이러한 프로그램을 모델링하는 것 및 동작 리서치 이론 및 알려진 휴리스틱스를 따르는 선형 프로그램을 컴퓨터들을 사용하여 해결하는 것을 포함하여 왔다. 그러나, 이러한 최적화 문제는 문제의 크기(예로서, 프로젝트들의 수)가 선형적으로 증가함에 따라 이러한 문제를 해결하기 위해 요구되는 컴퓨팅 리소스가 기하급수적으로 증가한다는 것을 의미하는, NP-하드(NP-hard)인 것으로 알려져 있다. 따라서, 종래의 방법들이 고려되며 밸런싱될 보다 작은 수의 프로젝트에 대해 이러한 문제를 적절하게 해결할 수 있지만, 이러한 최적화 문제는 고려되는 프로젝트가 많을수록(예로서, 50개 이상) 다루기 힘들어질 수 있다. 기업 조직은 일반적으로 평균적으로 150개 이상의 프로젝트의 고려사항을 다룰 수 있으므로, 효율적인 또는 최적의 해결책들을 찾기 위한 종래의 접근법들은 합리적인 시간 한계 내에서 만족스러운 대답들을 제공할 수 없을 것이다.
본 개시의 양상들은 계산적으로 효율적인 방식으로, 특정된 시간 및 예산 제약을 고려해볼 때, 다수의 프로젝트에 리소스를 할당하기 위해 제공된다. 몇몇 실시예에서, 프로세서는 프로젝트들의 하나 이상의 종속 경로를 결정하도록 구성될 수 있으며, 여기에서 종속 경로는 몇몇 프로젝트가, 다른 프로젝트들이 완료될 수 있기 전에 완료될 것이라는 지정들에 기초하여 완료될 프로젝트들의 순서를 나타낸다. 많은 프로젝트의 세트에서, 몇몇 실시예에서, 프로젝트들의 세트는 프로젝트들의 클러스터들로 분할될 수 있으며, 여기에서 다른 프로젝트(클러스터 내에 있지 않은 프로젝트를 포함)에 대한 종속성을 나타내는, 클러스터 종속 경로가 각각의 클러스터에 대해 계산될 수 있다. 몇몇 실시예에서, 프로젝트들의 전체 세트 중에서 다수의 종속 경로는 각각의 클러스터 내에서 표시된 종속성에 기초하여, 클러스터 종속 경로를 드러냄으로써 결정될 수 있다. 이들 다수의 종속 경로는 그 후 비용들에 비교하여 이득을 최대화하거나 또는 몇몇 다른 유형의 이득값을 최대화하는 것과 같은, 몇몇 최적화 목표에 따라 랭크될 수 있다. 용어("최대화")는 모든 다른 가능한 값에 비교하여 최대값이 달성된다는 의미에서, 절대 최대치를 달성하는 것을 나타낼 수 있다. 몇몇 실시예에서, 용어("최대화")는 제약의 주어진 세트 및 이들 제약을 이용한 규정된 방법론들 하에서 모든 다른 값보다 양호한 값이 달성된다는 의미에서 상대적 최대치를 달성하는 것을 나타낸다. 최고 랭크된 종속 경로들 내에서의 프로젝트들은 그 후 특정된 시평에 의해 제한될 수 있는 프로젝트 스케줄로 할당될 수 있다. 몇몇 실시예에서, 클러스터들로의 프로젝트들의 분할화는 랜덤 선택에 기초할 수 있다.
일반적으로, 클러스터들로의 프로젝트들의 분할화는 병렬화된 계산을 허용할 수 있으며, 그에 의해 여기에 제공된 최적화 문제에 대한 효율적인 해결책을 결정하기 위해 요구된 시간의 양을 감소시킨다. 또한, 프로젝트들의 전체 세트를 클러스터들로 분할하며 먼저 클러스터 종속 경로들을 계산하는 것은 컴퓨팅 프로세서가 전체 세트(예로서, 150개 프로젝트)보다는, 단지 프로젝트들의 서브세트(예로서, 15개 프로젝트)만을 고려하도록 허용하며, 그에 의해 전체로서 전체 세트와 맞붙으려고 할 때 요구된 계산 리소스들에서의 기하급수적 증가를 회피한다. 게다가, 프로젝트들의 전체 세트를 클러스터들로 분할하는 것은 컴퓨팅 프로세서가 서로에 의존하지 않는 프로젝트들 사이에서 상관없는 비교들의 수를 감소시키도록 허용하며, 그에 의해 요구된 계산 리소스들의 양을 추가로 감소시킨다.
도 1을 참조하면, 본 개시의 양상들을 수행하기에 적합한 예시적인 네트워크 환경(100)을 예시한 네트워크 다이어그램이 몇몇 실시예에 따라 도시된다. 예시적인 네트워크 환경(100)은 서버 기계(110), 데이터베이스(115), 제1 클라이언트(132)를 위한 제1 클라이언트 디바이스(130), 및 제2 클라이언트(142)를 위한 제2 클라이언트 디바이스(140)를 포함하며, 모두는 네트워크(120)를 통해 서로 통신적으로 결합된다. 서버 기계(110)는 네트워크-기반 시스템(105)(예로서, 제1 클라이언트 디바이스(130)에 하나 이상의 서비스를 제공하도록 구성된 클라우드-기반 서버 시스템 및 제1 및 제2 클라이언트 디바이스들(130 및 140))의 모두 또는 일부를 형성할 수 있다. 서버 기계(110), 제1 클라이언트 디바이스(130) 및 제2 클라이언트 디바이스(140)는, 도 17에 대하여 이하에서 설명되는 바와 같이, 전체적으로 또는 부분적으로, 각각 컴퓨터 시스템에서 구현될 수 있다.
제1 클라이언트(132) 및 제2 클라이언트(142)가 또한 도 1에 도시된다. 제1 및 제2 클라이언트(132 및 142) 중 하나 이상은 인간 사용자, 기계 사용자(예로서, 소프트웨어 프로그램에 의해 제1 클라이언트 디바이스(130)와 상호 작용하도록 구성된 컴퓨터), 또는 그것의 임의의 적절한 조합(예로서, 기계에 의해 보조되는 인간 또는 인간에 의해 감독되는 기계)일 수 있다. 제1 클라이언트(132)는 제1 클라이언트 디바이스(130)와 연관될 수 있으며 제1 클라이언트 디바이스(130)의 사용자일 수 있다. 예를 들면, 제1 클라이언트 디바이스(130)는 제1 사용자(132)에 속하는 데스크탑 컴퓨터, 차량 컴퓨터, 태블릿 컴퓨터, 내비게이션 디바이스, 휴대용 미디어 디바이스, 스마트폰, 또는 착용 가능한 디바이스(예로서, 스마트 시계 또는 스마트 안경)일 수 있다. 마찬가지로, 제2 클라이언트(142)는 제2 클라이언트 디바이스(140)와 연관될 수 있다.
도 1에 도시된 기계들, 데이터베이스들(115), 제1 클라이언트 디바이스(130), 또는 제2 클라이언트 디바이스들(140) 중 임의의 것은 소프트웨어(예로서, 하나 이상의 소프트웨어 모듈)에 의해 수정된(예로서, 구성되거나 또는 프로그램된) 범용 컴퓨터에서 상기 기계, 데이터베이스(115), 또는 디바이스들(130, 및 140)을 위해 여기에 설명된 기능들 중 하나 이상을 수행하기 위해 특수-목적 컴퓨터이도록 구현될 수 있다. 예를 들면, 여기에 설명된 방법론들 중 임의의 하나 이상을 구현할 수 있는 컴퓨터 시스템은 도 17에 대하여 이하에서 논의된다. 여기에서 사용된 바와 같이, "데이터베이스"는 데이터 저장 리소스를 나타낼 수 있으며 텍스트 파일, 테이블, 스프레드시트, 관계 데이터베이스(예로서, 오브젝트-관계형 데이터베이스), 트리플 스토어, 계층적 데이터 저장소, 데이터를 조직 및 저장하기 위한 임의의 다른 적절한 수단 또는 그것의 임의의 적절한 조합으로서 구조화된 데이터를 저장할 수 있다. 게다가, 도 1에 예시된 기계들, 데이터베이스들, 또는 디바이스들 중 임의의 둘 이상은 단일 기계로 조합될 수 있으며, 임의의 단일 기계, 데이터베이스, 또는 디바이스를 위해 여기에 설명된 기능들은 다수의 기계, 데이터베이스, 또는 디바이스 중에서 세분될 수 있다.
네트워크(120)는 기계들, 데이터베이스들(115), 및 디바이스들(예로서, 서버 기계(110) 및 제1 클라이언트 디바이스(130)) 사이에서 또는 그 중에서 통신을 가능하게 하는 임의의 네트워크일 수 있다. 따라서, 네트워크(120)는 유선 네트워크, 무선 네트워크(예로서, 이동 또는 셀룰러 네트워크), 또는 그것의 임의의 적절한 조합일 수 있다. 네트워크(120)는 사설 네트워크, 공중 네트워크(예로서, 인터넷), 또는 그것의 임의의 적절한 조합을 구성하는 하나 이상의 부분을 포함할 수 있다. 따라서, 네트워크(120)는 예를 들면, 근거리 네트워크(LAN), 광역 네트워크(WAN), 인터넷, 이동 전화 네트워크(예로서, 셀룰러 네트워크), 유선 전화 네트워크(예로서, 기존 전화 시스템(plain old telephone system(POTS) 네트워크), 무선 데이터 네트워크(예로서, WiFi 네트워크 또는 WiMax 네트워크), 또는 그것의 임의의 적절한 조합을 통합하는 하나 이상의 부분을 포함할 수 있다. 네트워크(120)의 임의의 하나 이상의 부분은 송신 매체를 통해 정보를 전달할 수 있다. 여기에서 사용된 바와 같이, "송신 매체"는 기계에 의한(예로서, 이러한 기계의 하나 이상의 프로세서에 의한) 실행을 위해 명령어들을 전달(예로서, 송신)할 수 있는 임의의 무형(예로서, 일시적) 매체를 나타낼 수 있으며, 이러한 소프트웨어의 통신을 용이하게 하기 위해 디지털 또는 아날로그 통신 신호들 또는 다른 무형의 미디어를 포함할 수 있다.
입력들을 수신하기 위한 예시적인 사용자 인터페이스들
도 2를 참조하면, 예시(200)는 몇몇 실시예에 따라, 다수의 프로젝트에 리소스들을 할당하기 위한 시스템에 대한 입력들을 수신하기 위한 그래픽 사용자 인터페이스의 예시적인 디스플레이를 도시한다. 예시(200)에서의 예시적인 디스플레이는 클라이언트 디바이스들(130 또는 140)과 같은, 디바이스 상에서 클라이언트들(132 또는 142)과 같은, 사용자에게 제공될 수 있다. 이하에서, 도 3 및 도 4에서 설명된 입력들을 포함하여, 예시적인 디스플레이에서 수신된 입력들은, 그 후 몇몇 실시예에 따라, 어떻게 프로젝트들이 스케줄링되어야 하는지를 결정하기 위해 이용될 수 있는, 네트워크-기반 시스템(105)과 같은, 시스템에 의해 액세스될 수 있다.
여기에서, 예시적인 디스플레이는 먼저 사용자가 몇몇 최적화 목표에 기초하여 특정된 시간프레임에 걸쳐 다양한 프로젝트의 계획 스케줄을 생성하도록 허용할 수 있다. 이 경우에, 최적화 목표는 "EVM - 계획 값(PV)"으로서 특정되며, 이것은 사용자가 프로젝트들의 추정 값을 최대화하는 프로젝트들의 세트를 찾기를 원한다는 것을 나타낼 수 있다. 또한, 여기에서 "시평" 디스플레이 박스 하에서 도시된 특정된 시간프레임은 사용자가 특정된 시작 일로부터 시작하여 12개월 시간에 걸쳐 프로젝트들의 스케줄을 계획하고 싶어한다는 것을 보여준다.
도 3을 참조하면, 예시(300)는 몇몇 실시예에 따라, 다수의 프로젝트에 리소스들을 할당하기 위한 시스템에 대한 입력들을 수신하기 위한 그래픽 사용자 인터페이스의 제2 예시적인 디스플레이를 도시한다. 여기에서, 사용자는 프로젝트들(305)의 리스트에 의해 도시된 바와 같이, 12개월 스케줄에 위치되기 위해 고려될 수 있는 다수의 프로젝트를 제공받을 수 있다. 몇몇 실시예에서, 사용자는 또한 프로젝트 옵션들(310)에 도시된 바와 같이, 프로젝트들의 각각에 대한 특정한 제외들 또는 다른 변경자들을 특정할 수 있을 것이다. 예를 들면, 사용자는 고려사항으로부터 특정 프로젝트들을 제외시키도록 특정할 수 있어서, 몇몇 예로서, 이들 프로젝트가 그레이 아웃되는 것을 야기한다. 다른 경우들에서, 사용자는 어떤 프로젝트가 요구되거나 또는 단지 선호되어야 하는지를 특정함으로써 최적화 문제에 부가적인 제약을 부가할 수 있다. 또한, 사용자는 또한 단지 스케줄에 너무 많은 시간이 남아있을 수 있는 경우에, 프로젝트가 분리될 수 있는지 및 사용자가 부분 프로젝트들로 하여금 완료되도록 허용하기를 원할 수 있는지 여부를 특정할 수 있을 것이다. 몇몇 실시예에서, 프로젝트들의 목록은 또한 프로젝트들의 각각을 완료함으로써 얻게 될 추정 값(315)을 포함할 수 있다. 몇몇 실시예에서, 프로젝트들의 목록은 또한 예를 들면, 도시된 바와 같이 지정들처럼, 우선순위 또는 중요도의 지정을 포함할 수 있다. 몇몇 실시예에서, 프로젝트들은 또한 상기 프로젝트가 시작될 수 있기 전에 완료된 것으로 결정되는 하나 이상의 프로젝트를 특정한, 연관된 프로젝트 종속성들(도시되지 않음)을 가질 수 있다. 몇몇 실시예에서, 프로젝트들(305)의 목록은 완료하기 위한 추정 시간들, 완료하기 위한 추정 비용들, 요구된 리소스들의 유형들 등과 같은, 프로젝트들에 대한 다른 정보를 또한 포함할 수 있다.
도 4를 참조하면, 예시(400)는 몇몇 실시예에 따라, 다수의 프로젝트에 리소스들을 할당하기 위해 시스템에 대한 입력들을 수신하기 위한 그래픽 사용자 인터페이스의 제3 예시적인 디스플레이를 도시한다. 여기에서, 사용자는 다양한 프로젝트에 리소스들을 바칠 때 어떤 종류의 리소스가 고려되어야 하는지를 특정하기 위한 옵션을 제공받을 수 있다. 몇몇 실시예에서, 다수의 프로젝트에서의 사용을 위해 이용 가능한 리소스는 어떤 프로젝트가 특정된 시평에서 완료되어야 하는지를 고려할 때 제약으로서 보여질 수 있다. 상기 언급된 바와 같이, 리소스는 특정한 세트의 태스크들을 완료하기 위해 유용한 특정한 세트의 기술들을 소유한 작업 전문가의 유형으로서 정의될 수 있다. 이들 유형의 리소스들의 예들은 컴퓨터 프로그래머, 비즈니스 분석가, 관리 보조원, 시장 연구가, 프로젝트 매니저 등을 포함할 수 있다. 다른 경우들에서, 리소스는 또한 컴퓨터들의 수, 인쇄 자료의 양, 구성 재료들, 창고 공간 등과 같은, 유형의 자산들을 포함할 수 있다.
몇몇 실시예에서, 사용자는 어떤 리소스가 리소스 필터(405)를 통해서와 같은, 특정된 시평에 따라 프로젝트들에 쏟기 위해 고려될 수 있는지를 필터링할 수 있을 것이다. 여기에서, 디폴트는 고려될 모든 현재 리소스에 대한 것이며, 이것은 급여 직원, 물품 목록, 이용 가능한 창고 및 사무실 공간 등과 같은, 회사의 데이터베이스에서 알려져 있는 모든 리소스를 의미할 수 있다. 리소스의 각각의 유용성은 이전에 특정되며 시스템으로 입력되어 왔다. 리소스 필터(405)는 몇몇 예로서, 스케줄에 의해 리소스를 제한하는 것, 경험의 레벨, 경험의 유형, 또는 심지어 알려진 계약자 또는 벤더를 포함하기 위해 리스트를 확장하는 것과 같은, 다른 옵션을 허용할 수 있다.
몇몇 실시예에서, 사용자는 또한 옵션(410)과 같은, 부가적인 제약을 특정할 수 있을 것이다. 여기에서, 사용자는 또한 특정된 시평에서 프로젝트를 완료하기 위한 알려진 제약에 기초하여, 고려될 수 있는 리소스들의 양을 추가로 제한하기 위해 임의의 부가적인 금융 제약들을 부가할 수 있을 것이다. 몇몇 실시예에서, 이 기술분야의 숙련자들에게 명백할 수 있는 부가적인 제약이 고려될 수 있으며, 실시예들은 그렇게 제한되지 않는다.
몇몇 실시예에서, 네트워크-기반 시스템(105)과 같은, 본 개시의 양상들에 따른 시스템은, 예로서, 도 2 내지 도 4에서 설명된 바와 같이, 사용자에 의해 공급되며 프로젝트들의 각각과 연관된 정보의 모두를 액세스할 수 있으며, 최적화 목표를 최대화하면서, 예로서 비용들에 비교하여 이익 또는 몇몇 다른 유형의 이득값을 최대화하면서 주어진 예산 지출 내에서 리소스들을 효율적으로 이용하는 특정된 시평에 걸쳐 프로젝트들의 스케줄을 결정할 수 있다. 이러한 스케줄을 결정하기 위한 예시적인 기술들은 도 11 내지 도 13에 대하여, 이하에서 설명된다.
예시적인 출력들
몇몇 실시예에서, 최적화 목표를 최대화하며 특정된 예산 제약 내에서 이용 가능한 리소스들을 고려하는 프로젝트들의 제안된 스케줄을 결정한 후, 네트워크-기반 시스템(105)과 같은, 본 개시의 양상들에 따른 시스템이 이들 결과를 반영한 다양한 출력을 사용자에게 공급할 수 있다.
도 5를 참조하면, 예시(500)는 몇몇 실시예에 따라, 최적화 목표를 최대화하는 다수의 프로젝트를 열거하는 전체 스케줄을 위한 하나의 예시적인 디스플레이를 도시한다. 예시(500)에서의 예시적인 디스플레이는 시평 내에서 포함된 프로젝트들의 추정된 값을 강조하는, 종류들의 경영 종합 보고(executive summary)를 나타낼 수 있다. 부가적인 정보는 몇몇 예로서, 프로젝트를 완료하기 위한 추정 비용들, 프로젝트들의 수, 회사 내에서 얼마나 많은 과들 또는 부서들이 스케줄에서 현재 포함된 프로젝트들의 완료에 의해 서비스되거나 또는 이득을 얻는지, 이용 가능한 리소스들의 종류들에 대한 임의의 잔여 용량, 이용 가능한 리소스들의 퍼센티지로서의 대응하는 리소스 이용, 및 제안된 스케줄에 포함된 프로젝트들의 유형들의 명세를 포함할 수 있다. 몇몇 실시예에서, 제외된 프로젝트들의 목록 또는 요약이 또한 고려되거나 또는 디스플레이될 수 있다. 몇몇 실시예에서, 시스템은 부가적인 입력들이 다양한 수정들을 통해 스케줄에 맞도록 제외된 프로젝트들을 고려하는 것을 허용할 수 있으며, 그 예들은 이하에서 더 많이 설명될 것이다.
도 6을 참조하면, 예시(600)는 몇몇 실시예에 따라, 제안된 스케줄에 포함될 프로젝트들에 대한 부가적인 속성들을 설명하는 제2 예시적인 디스플레이를 도시한다. 이 경우에, 예시적인 디스플레이는 프로젝트들에 대한 다양한 속성의 그래픽 묘사를 제공할 수 있다. 예를 들면, 원들(610)은 각각 제안된 스케줄에 포함되는 상이한 프로젝트들을 나타낼 수 있으며, 여기에서 그것들의 크기는 프로젝트를 완료함으로써 얻게 될 추정 값과 같은, 프로젝트에 대한 속성을 설명할 수 있다. 원들(610)은 프로젝트가 속하는 카테고리 또는 부서와 같은, 공통 주제에 의해 그룹화될 수 있다. 또한, 몇몇 실시예에서, 차트(620)와 같은, 보다 상세한 차트들이, 계획 시작 및 종료 날짜, 프로젝트를 완료함으로써 얻게 될 추정 값, 총 비용, 및 다양한 리소스들에 의해 이행된, 프로젝트를 완료하기 위해 요구될 수 있는 역할들의 유형들과 같은, 프로젝트에 대한 다양한 속성을 설명하는 각각의 프로젝트를 위해 제공될 수 있다. 여기에서의 설명과 일치하는, 각각의 프로젝트에 적절하며 이 기술분야의 숙련자들에게 명백한 다른 유형들의 정보가 또한 포함될 수 있으며, 실시예들은 그렇게 제한되지 않는다.
도 7을 참조하면, 예시(700)는 몇몇 실시예에 따라, 제안된 스케줄에 포함될 프로젝트들에 대한 다른 속성들을 설명한 제3 예시적인 디스플레이를 도시한다. 여기에서, 프로젝트들(705)의 목록은 리스트 형태로 디스플레이될 수 있다. 각각의 프로젝트의 추천된 상태(710)(예로서, "포함됨", "제외됨" 등), 각각의 프로젝트에 대한 추정된 값, 추정된 시작 날짜들 및 종료 날짜들(715), 추정된 비용, 각각의 프로젝트가 속하는 지정된 팀, 각각의 프로젝트의 우선순위 또는 중요도의 지정된 레벨 등과 같은, 다양한 다른 정보가 포함될 수 있다.
몇몇 실시예에서, 리스트에서 특정한 프로젝트의 선택 시, 프로젝트의 보다 상세한 설명이 2차 디스플레이(720)에서 디스플레이될 수 있다. 예를 들면, 여기에서, 프로젝트를 완료하기 위해 요구된 역할들의 목록이 열거된다. 이 경우에, 각각의 리소스에 대한 다양한 추정 용량들을 포함하여, 특정한 기술들을 가진 다양한 사람으로서 열거된, 다양한 리소스가 프로젝트에 할당된다. 이들 명세는 사용자로 하여금 어떤 리소스가 그리고 어떤 비용이 각각의 프로젝트와 연관되는지를 보다 명확하게 알도록 허용할 수 있다. 몇몇 실시예에서, 사용자는 또한 이들 디스플레이에 기초하여, 제안된 프로젝트, 리소스, 날짜 등 중 일부를 수정하도록 허용될 수 있다.
도 8을 참조하면, 예시(800)는 몇몇 실시예에 따라, 제안된 스케줄에 포함될 프로젝트들에 대한 다른 속성들을 설명한 제4 예시적인 디스플레이를 도시한다. 이 경우에, 프로젝트들(705)의 목록은 프로젝트들이 얼마나 길게 지속될 수 있는지에 대한 추정된 시간 흐름을 일련의 바를 통해 시각적으로 도시하는, 타임라인(805)에서 디스플레이될 수 있다. 이러한 뷰를 통한 시스템은 어떤 프로젝트가 동시에 실행 중이거나 또는 작동되고 있는지를 보다 명확하게 보여줄 수 있다. 또한, 여기에서 도시되지 않았지만, 이러한 타임라인 뷰는 또한, 또 다른 프로젝트가 완료된 직후 발생하기 시작하기 위한 추정된 시간에 기초하여, 어떤 프로젝트가 다른 프로젝트에 의존적일 수 있는지를 도시할 수 있다.
몇몇 실시예에서, 이러한 예시적인 디스플레이는 또한 특정된 시간 기간 동안, 예로서 매달 리소스 이용에 대한 바 그래프들(810)을 도시할 수 있다. 여기에서 예를 들면, 기업 분석가, 일반 리소스들, 계약자들, 및 리소스 관리자들의 리소스들에 대한 이용률들이 바 그래프들(810)에서 특정된다. 다른 유형들의 리소스가 이용되는 리소스들의 유형들에 기초하여 디스플레이될 수 있으며, 실시예들은 그렇게 제한되지 않는다.
도 9를 참조하면, 예시(900)는 몇몇 실시예에 따라, 제안된 스케줄에 포함될 프로젝트들에 대한 다른 속성들을 설명한 제5 예시적인 디스플레이를 도시한다. 이 경우에, 특정된 시간 프레임에 걸친 역할들(905)의 이용은 히트 맵(heat map)(910)의 종류에 예시될 수 있다. 역할은 동일한 기술들을 가진 리소스들의 총합으로서 정의될 수 있다. 예로서, 특정된 시평의 각각의 달은, 역할이 각각의 주어진 날에 어떻게 이용되는지에 대한 지정과 함께, 시각적으로 디스플레이될 수 있다. 이 경우에, 지정들은 퍼센트 이용 스케일(915)에 대응하는, 상이한 컬러들에 의해 예시될 수 있다. 이러한 방식으로, 사용자는 특정한 리소스가 과다 이용되거나 또는 과소 이용되는 곳을 알 수 있을 것이다. 부가적인 프로젝트들 또는 다른 태스크들이 그 후 리소스가 과소 이용될 때의 시간들 동안 고려될 수 있거나, 또는 부가적인 리소스들이 리소스가 과다 이용되는 특정한 시간들에서 기울여질 수 있다. 또 다른 예로서, 다양한 리소스는 그들이 휴가를 얻을 수 있는 때를 알거나 또는 보다 많은 자유 시간을 가질 것으로 예상될 때를 알 수 있다.
도 10을 참조하면, 예시(1000)는 몇몇 실시예에 따라, 제안된 스케줄에서 고려될 프로젝트들에 대한 다른 속성들을 설명한 제6 예시적인 디스플레이를 도시한다. 이러한 예시적인 디스플레이에서, 시스템은 다양한 잡다한 통계(1005)와 함께, 제안된 스케줄에 포함되며 제외되는 다양한 프로젝트의 전체 목록을 제공할 수 있다. 이들 예시적인 통계(1005)는 사용자로부터 시스템으로 수신된 입력들에 기초할 수 있거나, 또는 다른 경우들에서, 프로젝트들에 그것을 이미 부여한 사전-지정들에 기초할 수 있다. 예를 들면, 프로젝트 목록(705)에서 프로젝트들의 각각은 프로젝트가 포함, 즉 "요구"되어야 하는지가 특정되었는지, 프로젝트가 포함되도록 선호되는지가 특정되었는지, 프로젝트가 미리 지정된 시작 시간으로부터 이동되도록 허용되었는지, 및 프로젝트가 별개의 시간에서 작동되기 위해 분리되도록 허용될 수 있는지에 관계없이, 프로젝트 유형을 포함할 수 있다. 디스플레이를 위해 적절하며 프로젝트들 또는 제안된 스케줄에 관계된 다른 유형들의 정보가 이 기술분야의 숙련자들에게 명백할 수 있으며 또한 여기에서 고려될 수 있고, 실시예들은 그렇게 제한되지 않는다.
예시적인 최적화 알고리즘들
몇몇 실시예에 따라, 다양한 리소스 및 예산 제약을 고려해볼 때, 어떻게 리소스들이 프로젝트들에 할당될 수 있는지를 포함하여, 본 개시의 양상들이 어떻게 특정된 시평 내에서 완료될 프로젝트들의 선택을 결정할 수 있는지에 대한 예시적인 설명들이 이어진다.
도 11을 참조하면, 플로우차트(1100)는 몇몇 실시예에 따라, 특정된 시평 내에서 완료될 프로젝트들의 스케줄을 생성하기 위한 예시적인 방법론을 설명한다. 예시적인 방법론은 예를 들면, 네트워크-기반 시스템(105)과 같은, 본 개시의 양상들의 시스템 또는 서버에 의해 수행될 수 있다. 몇몇 실시예에서, 네트워크-기반 시스템(105)은 클라이언트 디바이스(130)를 통해 클라이언트(132)와 같은 사용자로부터 수신된 몇몇 입력을 액세스할 수 있다. 몇몇 경우에서, 입력들 중 일부는 또한, 프로젝트들 중 하나 이상에 대한 다양한 속성을 설명하기 위해 사전-프로그램되고 사용된, 데이터베이스(115)와 같은, 데이터베이스로부터 도출될 수 있다.
몇몇 실시예에서, 예시적인 방법론은 먼저 제안된 스케줄을 생성하기 위해 사용될 별개의 변수들의 모두를 액세스함으로써 시작될 수 있다. 예를 들면, 블록(1102)에서, 시스템은 제안된 스케줄에 포함될 고려 중인 복수의 프로젝트를 액세스할 수 있다. 이전에 언급된 바와 같이, 프로젝트는 회사를 위한 특정 목적을 가진 작업의 계획된 부분으로서 정의될 수 있으며, 회사를 위한 특정 값을 산출할 수 있다. 프로젝트들의 유형들의 예들은 도 3 내지 도 10과 같은, 이전 도면들에서 설명된다. 또한, 블록(1104)에서, 시스템은 제안된 스케줄이 얼마자 길게 채워넣어져야 하는지에 대한 시간 범위를 특정한 시평을 액세스할 수 있다. 예를 들면, 이전 도면들의 설명들에서, 예시적인 시평은 12개월 이상의 기간으로서 특정되었다. 몇몇 실시예에서, 시평은 또한 시작 날짜를 포함할 수 있으며, 이것은 반드시 오늘날은 아닐 수 있다.
블록(1106)에서, 시스템은 생성될 스케줄에서 다양한 프로젝트로의 할당을 위해 고려될 복수의 리소스를 액세스할 수 있다. 이전에 언급된 바와 같이, 리소스는 그것들이 수량화되는 태스크들의 세트를 수행할 수 있는 수량화된 전문가들의 자원으로서 정의될 수 있다. 다른 경우들에서, 리소스들은 컴퓨터들, 인쇄 기계들, 과학 장비, 건설 장비 등과 같은, 다른 유형의 툴들 및 기계들을 포함할 수 있다. 리소스들의 유형들의 예들은 도 4 내지 도 10과 같은, 이전 도면들에서 설명된다. 몇몇 경우에서, 리소스는 어떤 리소스가 프로젝트에 작용하기 위해 사용할 수 있는지를 보다 양호하게 설명할 수 있는 귀속된 기술을 가질 수 있다. 유사하게, 각각의 프로젝트는 프로젝트가 완료되기 위해 충족될 필요가 있는 기술을 서술할 수 있다.
블록(1108)에서, 몇몇 실시예에서, 시스템은 복수의 예산 지출을 액세스할 수 있으며, 각각의 예산 지출은 특정한 리소스에 연관되고, 여기에서 각각의 예산 지출은 각각의 리소스가 복수의 프로젝트에 걸쳐 사용될 수 있는 최대 이용 가능한 용량을 나타낸다. 예산 지출의 예는 일당 8시간 또는 주당 40시간과 같은, 일당 또는 주당 고용인의 최대 시간 단위 용량을 포함할 수 있다. 예산 지출의 또 다른 예는 일당 15시간, 또는 주당 100시간과 같은, 연구실에서의 사용을 위한 최대 시간 단위 용량을 포함할 수 있다. 예산 지출의 또 다른 예는 계약자를 이용하기 위한 20,000 달러 예산, 또는 불도저를 빌리기 위한 5,000 달러와 같은, 금융 예산을 포함할 수 있다. 몇몇 실시예에서, 각각의 리소스와 연관된 예산 지출은 이미 사전 지정되고 데이터베이스(115)에 저장될 수 있는 반면, 다른 경우들에서, 예산 지출 중 적어도 일부는 사용자에 의해 특정되며 사용자 인터페이스를 통해 시스템에서 수신될 수 있다.
블록(1110)에서, 시스템은 또한 복수의 비용 제약을 액세스할 수 있으며, 각각의 비용 제약은 특정한 프로젝트와 연관되며, 상기 프로젝트를 완료하는 것과 연관된 추정된 금융 비용을 나타낸다. 몇몇 실시예에서, 비용 제약은 프로젝트를 완료하기 위해 요구되는 것으로 추정되는 리소스들 모두의 추정된 총 값에 기초할 수 있다. 이들 연관된 비용의 예들은 도 5 내지 도 10과 같은, 이전 도면들에서 설명될 수 있다.
블록(1112)에서, 시스템은 또한 복수의 이득값을 액세스할 수 있으며, 각각의 이득값은 특정한 프로젝트와 연관되며, 상기 프로젝트를 완료하는 것과 연관된 획득될 추정 값을 나타낸다. 이득값들의 예들은 금융 통화로 표현된 금융 수익, 또는 랭크된 스코어, 증가된 생산성, 증가된 에너지 절감들, 순 현재 가치(NPV), 회사에 의해 사용되며 이 기술분야의 숙련자들에게 명백한 프로젝트 또는 다른 메트릭들을 완료하는 것에 의해 획득된 평판과 같은 다른 유형들의 값을 포함할 수 있다. 이들 연관된 값의 예들은 도 3 및 도 5 내지 도 10에서의 EVM 값들과 같은, 이전 도면들에서 설명될 수 있다.
블록(1114)에서, 시스템은 또한 각각의 프로젝트와 연관된 복수의 프로젝트 종속성을 액세스할 수 있으며, 블록(1102)에서 어떤 프로젝트가 액세스되었는지를 나타내는 프로젝트 종속값은 다른 프로젝트를 완료하기 위한 필요조건으로서 완료되어야 한다. 몇몇 실시예에서, 이들 프로젝트 종속값은 정사각형 치수(i)의 의존성 상부 삼각 행렬(U)로 표현되거나 또는 나타내어질 수 있으며, 여기에서 i는 액세스된 프로젝트의 수와 같으며, 여기에서 프로젝트(i)가 프로젝트(j)에 대한 필요조건이면 Uij=1이며, 그 외는 Uij=0이다. 몇몇 실시예에서, 프로젝트 종속성은 각각의 프로젝트와 함께 열거될 수 있으며, 여기에서 시스템은 각각의 프로젝트에 대한 열거된 종속성에 기초하여, 이러한 상부 삼각 행렬(U)로 표현된 몇몇 경우에서, 프로젝트 종속값을 생성하도록 구성될 수 있다. 다른 경우들에서, 상부 삼각 행렬(U)은 데이터베이스(115)에서와 같이, 이미 저장될 수 있다. 몇몇 실시예에서, 몇몇 프로젝트는 그에 연계된 임의의 연관된 종속성을 갖지 않을 수 있다. 이들 "독립" 프로젝트 중 일부는 또한, 그것이 사전에 완료될 필요가 있는 임의의 필요한 프로젝트 없이 언제든지 수행될 수 있음을(즉, 그것이 "시프트 가능한") 의미하는, 그것의 요구된 임의의 시작 또는 종료 시간을 갖지 않을 수 있다. 이들 "독립" 및 "시프트 가능한" 프로젝트는 여기에서 "플로터(floater)" 프로젝트로서 불리울 수 있다.
블록(1116)에서, 시스템은 프로젝트 종속값에 기초하여, 특정된 순서로 완료될 프로젝트들의 라인 또는 체인을 나타내는, 하나 이상의 종속 경로를 결정할 수 있다. 즉, 종속 경로에서의 프로젝트는 종속 경로에서의 진행 중인 프로젝트가 완료될 때까지 시작될 수 없다. 일반적으로, 프로젝트는 그것이 상기 프로젝트가 시작할 수 있을 때 연관된 몇몇 시간 제약을 포함한다면 종속 경로에 있을 수 있다. 예를 들면, 특정된 시작 시간 또는 종료 시간을 갖지만 그것이 의존하는 문자 그대로의 프로젝트들을 갖지 않는 프로젝트는 여전히 종속 경로에 위치될 수 있으며, 이 경우에 프로젝트는 길이 1의 종속 경로에 있다. 몇몇 실시예에서, 다수의 종속 경로가 결정될 수 있다. 몇몇 경우에서, 몇몇 종속 경로는 공동으로 하나 이상의 프로젝트를 가질 것이며, 이는 프로젝트를 완료하는 것이 다수의 프로젝트가 시작될 수 있기 전에 전제 조건일 수 있음을 의미한다. 몇몇 실시예에서, 블록(1116)에서, 시스템은 또한 어떤 프로젝트가 플로터일 수 있는지, 및 보다 일반적으로, 어떤 프로젝트가 어떤 종속성도 없는지를 결정할 수 있다. 즉, 몇몇 프로젝트는 종속성이 없을 수 있으며 그것에 주어진 시간 제약을 갖지 않을 수 있는 반면, 다른 프로젝트는 종속성이 없을 수 있지만 특정한 요구된 시작 날짜 또는 종료 날짜를 가질 수 있다. 몇몇 실시예에서, 이 블록에서 종속 경로를 결정하기 위한 부가적인 상세들이 이하에서 도 12a 내지 도 12c에서 설명된다.
블록(1118)에서, 시스템은 제안된 스케줄에 다양한 프로젝트를 할당할 수 있다. 제안된 스케줄에서의 시간의 길이는 시스템에 의해 액세스된 시평과 일치할 수 있다. 스케줄의 제안된 시작 날짜는 사용자에 의해 특정된 시작 날짜에 기초할 수 있거나, 또는 다른 경우들에서, 제안된 스케줄이 생성되는 날짜로부터의 일수와 같은 디폴트 시작 날짜에 기초할 수 있다.
시스템은 어떤 프로젝트가 다른 프로젝트에 비교하여 최적화 목표를 더 양호하게 만족하는지를 결정하는 것에 기초하여 다양한 프로젝트를 할당할 수 있다. 몇몇 실시예에서, 프로젝트는 먼저 그것이 최적화 목표를 얼마나 잘 만족하는지에 기초하여 랭크되거나 또는 순서화될 수 있다. 그러나, 다른 프로젝트의 완료 시 의존하는 프로젝트들이 있다면, 즉 프로젝트가 종속 경로를 따라 놓여있다면, 그것은 별개로 또는 단독으로 이들 프로젝트를 고려하는 것이 이해되지 않을 것이다. 따라서, 몇몇 실시예에서, 시스템은 종속 경로들 내에서의 프로젝트들의 총 값에 기초하여 종속 경로들의 값을 랭크할 수 있다. 몇몇 실시예에서, 최적화 목표를 가장 잘 만족하기 위해 프로젝트를 할당하기 위한 추가 상세들이 이하에서, 도 13에서 설명된다.
몇몇 실시예에서, 블록(1120)에서, 블록(1118)으로부터 할당된 프로젝트들에 기초한 제안된 스케줄은 그것들이 가져올 수 있는 임의의 제외된 프로젝트들 및 값들을 분석함으로써 수정될 수 있다. 시스템은 제외된 프로젝트들이 제안된 스케줄을 수정함으로써 보다 많은 값을 찾기 위한 방식들을 고려할 때 몇몇 융통성을 사용자에게 허용하기 위해 분석되도록 허용할 수 있다. 몇몇 실시예에서, 제외된 프로젝트들은 제안된 스케줄이 기초하는 제약들 중 하나 이상을 증가시키거나 또는 완화시킴으로써 고려될 수 있다. 예를 들면, 시스템은 하나 이상의 프로젝트가 다른 프로젝트들의 완료에 의존하지 않을 수 있도록 하나 이상의 예산 변수가 증가되도록, 하나 이상의 리소스 변수가 증가되도록, 시평이 확장되도록, 및/또는 종속값들 중 하나 이상이 수정되도록 허용할 수 있다. 시스템은 통상적으로 사용자에 의해 입력된, 이들 수정 중 임의의 것을 수신하도록 구성될 수 있으며, 몇몇 경우에서, 본 개시의 최적화 알고리즘은 이들 수정이 어떤 효과를 가질 수 있는지를 알기 위해 재실행될 수 있다. 예를 들면, 프로젝트는 예산 부족, 리소스 부족, 타임라인 부족, 종속성 부족 등으로 인해 제외되었다고 결정될 수 있다. 이들 원인은 그 다음에 이전 제외된 프로젝트가 이제 개정된 스케줄에 포함되도록 허용할 수 있는 이들 제약 중 하나의 완화를 통해 결정될 수 있다. 몇몇 실시예에서, 시스템은 또한 완화될 시간-시프팅 제약을 허용할 수 있으며, 그에 의해 시스템이 프로젝트가 그것의 요구된 시작 시간 간격에 맞출 수 없기 때문에 프로젝트가 제외되었다고 결정되도록 허용한다. 몇몇 실시예에서, 이러한 제외 분석은 다수의 제약을 위해, 및/또는 제외되는 다수의 프로젝트의 원인들을 분석하기 위해 수행될 수 있다.
몇몇 실시예에서, 블록(1122)에서, 시스템은 분석된 제외들에 기초하여, 하나 이상의 수정이 제안되며 개정된 스케줄로 포함되도록 허용할 수 있다. 몇몇 실시예에서, 분석된 제외들에 기초하여, 시스템은 사용자가 그 후 까다롭게 고를 수 있을 수 있는 수정들에 대한 하나 이상의 제안을 제안하도록 구성될 수 있다. 예를 들면, 시스템은 분석된 제외들에 기초하여 다음의 제안들 중 하나 이상을 제안하도록 구성될 수 있다:
- 프로젝트에 1개의 추가 역할을 부가하는 것은 1개 이상의 프로젝트가 할당되는 것을 야기할 수 있다.
- 예산에서의 10% 증가는 프로젝트들의 몇몇 그룹이 할당될 수 있게 할 것이다.
- 특정 시간-간격에서 단일 역할의 증가된 용량은 특정한 프로젝트가 할당될 수 있게 할 것이다.
- 예산에서의 증가는 새로운 비용 조정에 대해 값에서의 큰 증분적 이득을 야기할 수 있다.
- 프로젝트 값들에 대해 작은 커버 부족들은 보다 양호한 전체 스케줄 값을 야기할 수 있다. 예를 들면, 휴가 중이며 프로젝트에 필요불가결한 고용인은 프로젝트가 몇몇 입안 하에서 적절하게 할당되는데 실패하는 것으로 인해, 프로젝트가 처음에 스케줄에 포함되지 않게 할 수 있다. 그러나, 그것은 여전히 예를 들면, 고용인이 휴가에서 돌아올 때 및 프로젝트를 완료한 값이 임의의 잠재적인 지연들 또는 다른 비용들에도 불구하고 프로젝트를 유지하는 것을 여전히 가치있게 만든다면, 단지 시평 내에서의 상이한 시간에서, 스케줄에 프로젝트를 포함하는 것이 여전히 가치있을 수 있다.
시스템은 그 후 수정들로서 제안된 스케줄에 통합될 이들 제안 중 하나 이상을 수용하도록 구성될 수 있다.
블록(1124)에서, 시스템은 그 후 블록(1118)으로부터 제안된 스케줄에 할당된 랭크된 프로젝트들에 기초하여 스케줄을 생성하거나 또는 블록들(1120 및 1122)에서 수행된 분석에 기초하여 임의의 통합된 수정들을 또한 포함하도록 구성될 수 있다. 몇몇 실시예에서, 이 스케줄은 도 5 내지 도 10에서 설명된 예들 중 임의의 것을 통해서와 같은, 다양한 상이한 형태로 디스플레이될 수 있다. 생성된 스케줄은 또한 도 5 내지 도 10에 설명된 예시적인 통계들 중 임의의 것과 같은, 스케줄에 대한 다양한 통계 및 메트릭을 설명하는 디스플레이될 수 있는 부가적인 정보를 포함할 수 있다.
도 12a를 참조하면, 플로우차트(1200)는 몇몇 실시예에 따라, 도 11의 블록(1116)에서 종속 경로들을 결정하기 위한 예시적인 방법론을 제공한다. 블록(1202)에서 시작하여, 시스템은 상부 삼각 행렬에서의 값들과 같은, 프로젝트 종속값들을 하나 이상의 방향성 비순환 그래프들(DAG들)로 변환할 수 있다. DAG는 꼭짓점들 및 방향성 에지들의 모음으로서 정의될 수 있으며, 각각의 에지는 하나의 꼭짓점을 또 다른 것으로 연결하고, 따라서 몇몇 꼭짓점(v)에서 시작하며 결국 v로 다시 루프 백하는 에지들의 시퀀스를 따르기 위한 어떤 방식도 없다. 이 경우에, 각각의 꼭짓점은 프로젝트를 나타내며, 제1 프로젝트로부터의 각각의 방향성 에지는 제2 프로젝트의 프로젝트 종속값이 그것이 제1 프로젝트에 의존적임을 말하는지에 기초하여 제2 프로젝트에 대한 포인터를 나타낸다. 다수의 DAG는, 간단히 다수의 프로젝트를 함께 연결한 방향성 에지들을 생성하기 위해 프로젝트 종속값들을 따르는 것에 기초하여, 생성될 수 있다.
대안적으로, 몇몇 실시예에서, 하나 이상의 DAG가 아닌 다른 유형들의 관계가 생성될 수 있다. 일반적으로, 프로젝트 종속값들에 기초하여, 다수의 프로젝트의 각각의 종속 관계들을 정의하며, 이 기술분야의 숙련자들에게 분명한 하나 이상의 데이터 구조가 생성될 수 있으며, 실시예들은 그렇게 제한되지 않는다.
블록(1204)에서, 몇몇 실시예에서, 시스템은 프로젝트들의 세트를 복수의 클러스터로 분할할 수 있다. 각각의 클러스터는 프로젝트들의 총 수 중에서 프로젝트들의 서브세트를 포함할 수 있다. 예를 들면, 스케줄에서의 배치를 위해 고려될 프로젝트들의 전체 세트가 150개 프로젝트라면, 시스템은 프로젝트들의 세트를, 각각이 15개 프로젝트를 갖는, 10개의 클러스터로 분할할 수 있다. 몇몇 실시예에서, 클러스터들로의 프로젝트들의 선택은 랜덤화 프로세스이다. 각각의 프로젝트가 얼마나 많은 종속성들과 연관되는지를 연역적으로 알고 있지 않으므로, 평균적으로, 프로젝트들을 클러스터들로 랜덤하게 분할하는 것은 각각의 클러스터가 얼마나 많은 종속성들을 갖는지에 대해 프로젝트들의 가장 가능성 있는 균일한 분배를 야기할 것이라는 것이 판단될 수 있다. 다른 경우들에서, 프로젝트들은 알파벳순으로 프로젝트들을 분류하는 것과 같은, 다른 프로세스들을 통해 클러스터들로 세분될 수 있어서, 추정된 값들에 기초하여 프로젝트들을 균일하게 분배하고, 요구된 역할들의 유형들에 기초하여 프로젝트들을 스트리밍하는 것 등을 한다. 몇몇 실시예에서, 시스템은 또한 각각의 클러스터에 포함될 최적의 수의 프로젝트들을 결정할 수 있다. 최적의 수의 프로젝트들은 통계 분석에 기초할 수 있으며, 여기에서 평균 계산 시간 및 리소스들(예로서, 메모리)의 평균 양은 각각의 클러스터의 크기가 변경될 때 측정된다. 예를 들면, 클러스터 크기를 49 또는 51개 프로젝트들 설정하는 것은 평균적으로, 보다 많은 계산 시간 및 보다 많은 사용 리소스들을 야기한다는 의미에서, 최적의 클러스터 크기는 50개 프로젝트라고 이전에 결정되어왔을 수 있다. 몇몇 실시예에서, 시스템은 프로젝트들의 세트를 클러스터들로 분할하는 부분으로서 최적의 클러스터 크기를 결정하기 위해 이러한 통계 분석을 수행하도록 구성될 수 있다.
블록(1206)에서, 몇몇 실시예에서, 시스템은 각각의 클러스터에 대해, 특정한 클러스터에서 프로젝트들의 종속 경로들을 결정할 수 있다. 각각의 클러스터 내에서 종속 경로들의 이들 미니 세트는 클러스터 종속 경로들로서 불리울 수 있다. 즉, 종속 경로들은 단지 동일한 클러스터 내에서 프로젝트들에 걸쳐 형성될 수 있다. 몇몇 실시예에서, 이들 클러스터 종속 경로는 상기 특정한 클러스터를 위해 생성된 종속성들의 DAG의 깊이 우선 탐색을 수행함으로써 생성될 수 있다. 이것은 현재 시간에 대해 불완전한 종속 경로들을 야기할 가능성이 있지만, 클러스터 종속 경로들을 생성하는 것은 시스템이 모든 프로젝트 및 모든 종속성을 한꺼번에 고려할 필요가 없도록 허용한다. 이것은 시스템이 전체 세트의 프로젝트들을 이들 클러스터들의 서브세트로 분해함으로써 많은 수의 프로젝트를 보다 효율적으로 핸들링하도록 허용할 수 있다. 또한, 몇몇 실시예에서, 클러스터 경로 종속성들을 결정하는 프로세스는 다수의 병렬 프로세서에 걸쳐 병렬화될 수 있으며, 계산 속도를 추가로 증가시킨다.
블록(1208)에서, 몇몇 실시예에서, 시스템은 그 후 완전한 종속 경로들을 형성하기 위해 다른 클러스터들로부터 클러스터 종속 경로들을 함께 병합할 수 있다. 즉, 시스템은 그 후 아직 연결되지 않은 임의의 종속성들을 위해 다른 클러스터 종속 경로들의 불완전한 에지들을 검사함으로써 클러스터 종속 경로들의 불완전한 에지들을 연결할 수 있다. 다수의 클러스터 종속 경로가 이미 각각의 클러스터 내에서 다수의 연결을 하였으므로, 검사될 필요가 있는 불완전한 에지들의 수는 극적으로 감소될 수 있으며, 그에 의해 계산 시간을 상당히 감소시킬 수 있다. 예를 들면, 전체 세트의 프로젝트들을 클러스터들로 분할하지 않고, 프로세서는 연결된 종속성들을 결정하기 위해 모든 프로젝트를 한꺼번에 고려하도록 강요될 수 있다. 반대로, 클러스터 종속 경로들을 함께 병합하는 것은 그 후 시스템이 클러스터 종속 경로들의 불완전한 에지들만을 고려할 필요가 있도록 허용하며, 그에 의해 이미 연결되거나 또는 임의의 종속성들을 갖지 않는 많은 상관없는 프로젝트를 고려사항으로부터 제거한다. 그것들의 종속성들을 조사하도록 요구하는 것으로부터 프로젝트들을 자연스럽게 제거하는 이러한 개념은 여기에서 "가지치기(pruning)"로서 불리울 수 있다.
블록(1210)에서, 이제 불완전한 종속 경로들을 생성하면, 몇몇 실시예에서, 종속 경로들은 미리 결정된 값 기준에 기초하여 랭크되거나 또는 분류될 수 있다. 예를 들면, 값 기준은 각각의 종속 경로가 특정된 최적화 목표를 향해 얼마나 많은 값에 기여하는지를 포함할 수 있다. 예를 들면, 최적화 목표가 이익을 최대화하는 것이면, 완전한 종속 경로들은 각각의 종속 경로의 완료가 얼마나 많은 추정된 이익을 가져올 수 있는지에 의해 랭크될 수 있다. 일반적으로, 값 기준을 보다 양호하게 만족시키는 종속 경로들은 그렇지 않은 종속 경로들보다 높은 "밀도"를 갖는 것이라고 할 수 있다. 즉, 종속 경로의 "밀도"는 종속 경로의 전체 리턴의 양의 양적 표현일 수 있다. 몇몇 실시예에서, 종속 경로의 "밀도"는 종속 경로에서의 프로젝트들에 의해 획득된 몇몇 이득 대 프로젝트들을 완료하는 것과 연관된 비용의 비를 포함하는 반면, 다른 경우들에서, 종속 경로의 "밀도"는 이득 및 비용들 사이에서의 차이를 포함한다.
블록(1212)에서, 몇몇 실시예에서, 시스템은 임의의 남아있는 미해결 종속성들을 해결할 수 있다. 예를 들면, 임의의 종속성들이 없는 프로젝트들 및 다른 플로터 프로젝트들은 또한 여전히 랭크될 필요가 있을 것이다. 몇몇 실시예에서, 임의의 종속성들이 없는 프로젝트들 및 다른 플로터 프로젝트들은 별개의 랭킹으로 랭크될 수 있다. 몇몇 실시예에서, 종속 경로들 및 종속성들 또는 다른 플로터들이 없는 임의의 프로젝트들의 랭킹들의 마스터 리스트는 본 개시의 양상들에 따른 최적화 알고리즘의 나중 스테이지들에서의 사용을 위해 저장될 수 있다.
도 12b를 참조하면, 예시(1250)는 방향성 비순환 그래프들의 몇몇 예의 그래픽 묘사를 제공한다. 여기에서, 각각의 꼭짓점은 프로젝트들의 전체 세트에서의 프로젝트를 표현한다. 방향성 에지들은 다른 꼭짓점들을 나타내는 화살표들에 의해 표현된다. 따라서, 상이한 경로들은 세미콜론들에 의해 분리된, 예시(1250)에 도시된 경로들의 설명과 일치하는 이들 두 개의 예시적인 DAG에서 예시된다.
도 12c를 참조하면, 플로우차트(1270)는 플로우차트(1200)에서의 설명들과 일치하는, 완전한 종속 경로들을 생성하기 위한 예를 제공한다. 도시된 바와 같이, 프로젝트들의 세트는 다수의 파티션들로 랜덤하게 분할될 수 있으며, 여기에서 그것들의 종속값들에 기초하여, 각각의 파티션에서의 프로젝트들을 연결하기 위한 깊이 우선 탐색이 수행된다. 그 후, 이들 부분 연결의 각각은 다른 랜덤 파티션들로부터의 다른 부분 연결들과 함께 병합될 수 있으며, 그에 의해 하나 이상의 완전한 종속 경로를 생성한다. 미해결 종속성은, 어떤 종속성 및 다른 플로터 없이 프로젝트를 분석하며 핸들링하는 것과 같이, 연관될 수 있다.
도 13을 참조하면, 플로우차트(1300)는 몇몇 실시예에 따라, 도 11의 블록(1118)에서 프로젝트를 할당하는 것을 결정하기 위한 예시적인 방법론을 제공한다. 특정 시평에 맞추기 위해 프로젝트를 할당하기 위한 프로세스는 입력으로서 생성된 종속 경로들을 포함한다는 것을 상기하자. 몇몇 경우에서, 이러한 프로세스는 입력으로서 종속 경로들 및 플로터들을 랭크된 순서로 포함한다. 몇몇 실시예에서, 블록(1302)에서, 시스템은 종속 경로들 및 플로터들을 별개의 지정들로 분류할 수 있으며, 각각의 지정은 생성된 스케줄로 포함될 종속 경로들에서 프로젝트들의 중요도를 특정한다(또는 플로터들로서 분리된다). 예를 들면, 몇몇 실시예에서, 종속 경로들 및 플로터들은 3개의 별개의 세트들 중 하나로 분류될 수 있다: 필수, 선호, 및 선택. 이들 지정은 프로젝트들 중 임의의 것이 도 3에서의 프로젝트 목록(305)에서 임의의 특수한 지정들을 제공받는 경우와 같은, 프로젝트들에 대한 미리 정의된 속성들에 기초할 수 있다. 몇몇 실시예에서, 상이한 지정들을 가진 다수의 프로젝트를 갖는 종속 경로에 대해, 시스템은 그것의 종속 경로 내에서 임의의 프로젝트 상에 수여된 최고 또는 가장 중요한 지정에 기초하여 전체 종속 경로를 지정하도록 구성될 수 있다. 예를 들면, 10개의 프로젝트의 종속 경로에서, 심지어 하나의 프로젝트가 "필수"로서 지정되었다면, 전체 종속 경로는 필수로서 지정될 수 있다. 최고 중요성을 가진 지정으로 분류된 프로젝트들은 보다 낮은 중요성을 갖고 지정되어 온 다른 프로젝트들에 비해 먼저 스케줄로 할당될 것이다. 예를 들면, "필수"로서 지정되어 온 종속 경로들 및 플로터들에서의 프로젝트들은 "선호" 카테고리에서 지정된 임의의 프로젝트들 전에 스케줄로 할당될 것이다.
블록(1304)에서, 몇몇 실시예에서, 시스템은 리소스들을 할당하기 위해 종속 경로들 및 플로터들을 통해 반복할 수 있다. 몇몇 실시예에서, 시스템은 먼저 가장 중요한 및 최고 값 종속 경로들 및 플로터들에 리소스들을 할당할 수 있으며, 계속해서 덜 중요한 및 덜 가치 있는 종속 경로들 및 플로터들로 철저하게 지속한다. 이러한 프로세스는 모든 이용 가능한 리소스가 프로젝트들의 요구된 규정된 역할들에 기초하여 할당될 때까지 계속될 수 있으며, 이것은 몇몇 경우에서, 최저 우선순위 및 최저 값 종속 경로들 및 플로터들이 임의의 리소스들을 할당받지 않게 할 수 있다. 몇몇 실시예에서, 플로터 프로젝트들은 플로터가 종속 경로에서 프로젝트들의 누적 밀도의 합보다 큰 밀도를 갖는다면 종속 경로에서 다수의 프로젝트에 걸쳐 리소스들을 제공받을 수 있다. 몇몇 실시예에서, 다양한 종속 경로 및 플로터로의 리소스의 할당은 또한 리소스와 연관된 임의의 예산 지출, 및 프로젝트와 연관된 임의의 예산과 같은, 다른 다양한 제약을 고려할 수 있다. 예를 들면, 프로젝트는 연관된 예산을 가질 수 있으며, 따라서 특정한 높은-값 또는 값비싼 리소스들이 상기 프로젝트에 다 쏟게 될 수 없다고 결정될 수 있다. 대신에, 동일한 기능을 수행할 수 있는 보다 저렴한 리소스들이 프로젝트에 다 쏟게 될 수 있다.
블록(1306)에서, 몇몇 실시예에서, 시스템은 그 후 그것들의 리소스 요구의 모두를 충족하는 종속 경로들을 스케줄에 맞출 수 있다. 예로서 종속 경로에서의 프로젝트들의 누적 밀도의 합보다 큰, 높은 밀도 값을 가진 임의의 플로터들이 또한 보다 낮은 누적 밀도를 가진 종속 경로들 전에 스케줄로 배치될 수 있다. 몇몇 실시예에서, 시스템은 또한 시평이 전체 종속 경로를 완료하기 위해 전체 추정된 시간보다 짧다면 종속 프로젝트들의 체인에서 최종 프로젝트들의 종속 경로들을 절단하는 것을 고려할 수 있다. 따라서, 종속 경로의 절단된 버전은 스케줄에 적합할 수 있다. 몇몇 실시예에서, 아직 할당되지 않은 임의의 남아있는 플로터들은 허용한 스케줄, 시간 및 리소스에 맞춰질 수 있다.
몇몇 실시예에서, 시스템은 또한 우선순위화들의 세트에 기초하여 프로젝트들에서의 역할들에 리소스들을 할당할 수 있다. 이러한 우선순위화들의 세트는 몇몇 리소스가 다른 것들보다 더 부족할 수 있으며, 특정한 프로젝트들에서의 몇몇 역할이 다른 것들보다 더 가치 있을 수 있다는 추론을 갖고, 시스템이 리소스를 보다 효율적으로 할당하도록 허용할 수 있다. 다음은 시스템이 몇몇 실시예에 따라, 역할에 리소스의 할당을 안내하기 위해 통합할 수 있는 우선순위화들의 몇몇 예이다.
역할들의 우선순위화
1. 희귀한 역할들은 덜 희귀한 것들보다 빨리 매칭된다.
2. 그 "윤곽들"이 요구들의 가장 긴 비-제로 시퀀스를 갖는 역할들은 보다 짧은 이러한 윤곽들을 가진 것들보다 빨리 매칭된다. 몇몇 실시예에서, 종속 경로들이 생성된 후, 프로젝트에서의 역할은 말하자면, 예를 들면, 높은 우선순위, 높은 위험이거나, 또는 높은 값을 가진 프로젝트로 인해, 그것에 전념된 보다 많은 리소스들을 갖도록 허용될 수 있다. 시스템은 상기 프로젝트가 종속 경로에서 근처의 프로젝트들로부터 부가적인 리소스들을 인출하도록 허용할 수 있으며, 그에 의해 다른 프로젝트들에 대한 리소스 허용들을 감소시키지만, 보다 전념된 프로젝트가 제때 완료됨을 보장하도록 돕는다. 프로젝트들의 체인에서 특정한 역할들에 과잉 보상을 하는 이러한 프로세스는 "윤곽들", 즉 과잉 보상된 하나 이상의 역할들을 가진 프로젝트들의 체인을 생성한다.
3. 프로젝트에서 현재 시간 간격 동안, 시간들로, 보다 큰 약정을 가진 역할들은 보다 작은 약정들을 가진 것들보다 빨리 매칭된다.
리소스들의 우선순위화
1. 선호 리소스들은 비-선호 리소스들에 앞서 선택된다. 몇몇 실시예에서, 리소스는 리소스가 이와 같이 지정된다면 선호될 수 있다. 다른 경우들에서, 수, 시간, 또는 예산이 더 적은 리소스들은 보다 많은 양들의 이들 메트릭을 가진 리소스들에 비해 선호되는 것으로 고려될 수 있다.
2. "흡인력 있는" 리소스들은 다른 것들에 앞서 할당되며, 여기에서 "흡인력 있는"은 고려 중인 것 이전의 시간 간격에 할당되는 리소스를 의미한다.
3. 융통성 없는 리소스들은 융통성 있는 것들에 앞서 할당된다. 융통성 없음은 미리 지정된 시간 또는 위치 제약에 기초할 수 있다.
4. 논의 중인 역할-요구에 관하여 가장 작은 상대적 에러를 가진 리소스("최고-매칭" 기준).
5. 동일한 모든 다른 것은 논의 중인 역할-요구에 대해 가장 긴 가용성 지평을 가진 리소스를 고른다.
몇몇 실시예에서, 시스템은 또한 다음의 가이드라인들 중 하나 이상에 따라 프로젝트들을 할당할 수 있을 것이다:
1. 요구된 프로젝트들은 역할-요구들이 이용 가능한 리소스 용량을 넘을 때조차 강제로 할당되는 의미로 "과도-할당"될 수 있다. 이 경우에, 이용 가능한 리소스 용량의 최대 이용을 야기하는 최고-배치 정책이 이용될 수 있다.
2. 임계치의 대상이 되는, 부분 할당들이 지원될 수 있다. 분리 가능하며 시프트 가능하지 않은 프로젝트들은 결코 경계화의 대상이 되지 않는다.
3. 지속 기간 > 1 시간 유닛(예로서, 날들, 시간들 등)을 가진 플로터들은 선택적으로 분리될 수 있다.
4. 플로터들은 잔여 리소스 용량을 최소화하는 플로터에 대한 시간-간격들의 주사를 선택하는 최적화 휴리스틱스에 기초하여 할당된다.
5. 시프트 가능하지 않은 프로젝트들은 종속 경로에 있을 수 있다.
6. 예산은 몇몇 시간-간격이 예산-부족일 때 "윤곽 재생"될 수 있다. 일 예는 윤곽 재생 기회가 실행 가능한 가장 이른 적격의 시간-간격을 선호하는 것에 의한다.
도 14를 참조하면, 블록 다이어그램은 기계-판독 가능한 매체(1422)(예로서, 비-일시적 기계-판독 가능한 매체, 기계-판독 가능한 저장 매체, 컴퓨터-판독 가능한 저장 매체, 또는 그것의 임의의 적절한 조합)로부터 명령어들(1424)을 판독하며 여기에 논의된 방법론들 중 임의의 하나 이상을, 전체적으로 또는 부분적으로, 수행할 수 있는, 몇몇 예시적인 실시예에 따른, 기계(1400)의 구성요소들을 예시한다. 구체적으로, 도 14는 기계(1400)로 하여금 여기에 논의된 방법론들 중 임의의 하나 이상을 수행하게 하기 위한 명령어들(1424)(예로서, 소프트웨어, 프로그램, 애플리케이션, 애플릿, 앱, 또는 다른 실행 가능한 코드)이 전체적으로 또는 부분적으로 실행될 수 있는 컴퓨터 시스템의 예시적인 형태(예로서, 컴퓨터)로 기계(1400)를 도시한다.
대안적인 실시예들에서, 기계(1400)는 독립형 디바이스로서 동작하거나 또는 다른 기계들에 연결(예로서, 네트워킹)될 수 있다. 네트워킹된 배치에서, 기계(1400)는 서버-클라이언트 네트워크 환경에서 서버 기계(110) 또는 클라이언트 기계의 용량에서, 또는 분산(예로서, 피어-투-피어) 네트워크 환경에서 피어 기계로서 동작할 수 있다. 기계(1400)는 하드웨어, 소프트웨어, 또는 그것의 조합들을 포함할 수 있으며, 예로서 서버 컴퓨터, 클라이언트 컴퓨터, 개인용 컴퓨터(PC), 태블릿 컴퓨터, 랩탑 컴퓨터, 넷북, 셀룰러 전화, 스마트폰, 셋-탑 박스(STB), 개인용 디지털 보조기(PDA), 웹 기기, 네트워크 라우터, 네트워크 스위치, 네트워크 브리지, 또는 상기 기계에 의해 취해질 동작들을 특정하는, 명령어들(1424)을 순차적으로 또는 그 외 실행할 수 있는 임의의 기계일 수 있다. 뿐만 아니라, 단지 단일 기계(1400)만이 예시되지만, 용어("기계")는 또한 여기에 논의된 방법론들 중 임의의 하나 이상의 모두 또는 부분을 수행하기 위해 명령어들(1424)을 개별적으로 또는 공동으로 실행하는 기계들의 임의의 모음을 포함하기 위해 취해질 것이다.
기계(1400)는 프로세서(1402)(예로서, 중앙 프로세싱 유닛(CPU), 그래픽스 프로세싱 유닛(GPU), 디지털 신호 프로세서(DSP), 애플리케이션 특정 집적 회로(ASIC), 라디오-주파수 집적 회로(RFIC), 또는 이들의 임의의 적절한 조합), 메인 메모리(1404), 및 정적 메모리(1406)를 포함하며, 이것은 버스(1408)를 통해 서로와 통신하도록 구성된다. 프로세서(1402)는 프로세서(1402)가 여기에 설명된 방법론들 중 임의의 하나 이상을 전체적으로, 또는 부분적으로 수행하도록 구성 가능하도록 명령어들(1424) 중 일부 또는 모두에 의해, 일시적으로 또는 영구적으로 구성 가능한 마이크로회로들을 포함할 수 있다. 예를 들면, 프로세서(1402)의 하나 이상의 마이크로회로들의 세트는 여기에 설명된 하나 이상의 모듈(예로서, 소프트웨어 모듈)을 실행하도록 구성 가능할 수 있다.
기계(1400)는 비디오 디스플레이(1410)(예로서, 플라즈마 디스플레이 패널(PDP), 발광 다이오드(LED) 디스플레이, 액정 디스플레이(LCD), 프로젝터, 음극선관(CRT), 또는 그래픽들 또는 비디오를 디스플레이할 수 있는 임의의 다른 디스플레이)를 추가로 포함할 수 있다. 기계(1400)는 또한 영숫자 입력 디바이스(1412)(예로서, 키보드 또는 키패드), 커서 제어 디바이스(1414)(예로서, 마우스, 터치패드, 트랙볼, 조이스틱, 모션 센서, 눈 추적 디바이스, 또는 다른 포인팅 기구), 저장 유닛(1416), 신호 발생 디바이스(1418)(예로서, 사운드 카드, 증폭기, 스피커, 헤드폰 잭, 또는 이들의 임의의 적절한 조합), 및 네트워크 인터페이스 디바이스(1420)를 포함할 수 있다.
저장 유닛(1416)은, 그것 상에, 예를 들면, 도 1 내지 도 13의 설명들 중 임의의 것을 포함하여, 여기에서 설명된 방법론들 또는 기능들 중 임의의 하나 이상을 구체화한 명령어들(1424)이 저장되는 기계-판독 가능한 매체(1422)(예로서, 유형의 및 비-일시적 기계-판독 가능한 저장 매체)를 포함한다. 명령어들(1424)은 또한 기계(1400)에 의한 그것의 실행 전 또는 그 동안, 메인 메모리(1404) 내에, 프로세서(1402) 내에(예로서, 프로세서의 캐시 메모리 내에), 또는 양쪽 모두에, 완전히 또는 적어도 부분적으로 존재할 수 있다. 명령어들(1424)은 또한 정적 메모리(1406)에 있을 수 있다.
따라서, 메인 메모리(1404) 및 프로세서(1402)는 기계-판독 가능한 미디어(1422)(예로서, 유형의 및 비-일시적 기계-판독 가능한 미디어)로 고려될 수 있다. 명령어들(1424)은 네트워크 인터페이스 디바이스(1420)를 경유하여 네트워크(1426)를 통해 송신되거나 또는 수신될 수 있다. 예를 들면, 네트워크 인터페이스 디바이스(1420)는 임의의 하나 이상의 전송 프로토콜들(예로서, HTTP)을 사용하여 명령어들(1424)을 전달할 수 있다. 기계(1400)는 또한 도 1 내지 도 13에 설명된 프로세스들을 포함하여, 여기에 설명된 기능들 중 임의의 것을 수행하기 위한 예시적인 수단들을 표현할 수 있다.
몇몇 예시적인 실시예예에서, 기계(1400)는 스마트 폰 또는 태블릿 컴퓨터와 같은, 휴대용 컴퓨팅 디바이스일 수 있으며, 하나 이상의 부가적인 입력 구성요소(예로서, 센서들 또는 게이지들)(도시되지 않음)를 가질 수 있다. 이러한 입력 구성요소들의 예들은 이미지 입력 구성요소(예로서, 하나 이상의 카메라), 오디오 입력 구성요소(예로서, 마이크로폰), 방향 입력 구성요소(예로서, 나침반), 위치 입력 구성요소(예로서, GPS 수신기), 배향 구성요소(예로서, 자이로스코프), 모션 검출 구성요소(예로서, 하나 이상의 가속도계), 고도 검출 구성요소(예로서, 고도계), 및 가스 검출 구성요소(예로서, 가스 센서)를 포함한다. 이들 입력 구성요소 중 임의의 하나 이상에 의해 포획된 입력들은 여기에 설명된 모듈들 중 임의의 것에 의한 사용을 위해 액세스 가능하고 이용 가능할 수 있다.
여기에서 사용된 바와 같이, 용어("메모리")는 일시적으로 또는 영구적으로 데이터를 저장할 수 있는 기계-판독 가능한 매체(1422)를 나타내며 이에 제한되지 않지만, 랜덤-액세스 메모리(RAM), 판독-전용 메모리(ROM), 버퍼 메모리, 플래시 메모리, 및 캐시 메모리를 포함하도록 취해질 수 있다. 기계-판독 가능한 매체(1422)는 단일 매체인 것으로 예시적인 실시예에서 도시되지만, 용어("기계-판독 가능한 매체")는 명령어들(1424)을 저장할 수 있는 단일 매체 또는 다수의 미디어(예로서, 집중된 또는 분산된 데이터베이스(115), 또는 연관된 캐시들 및 서버들)를 포함하도록 취하여질 수 있다. 용어("기계-판독 가능한 매체")는 또한 기계(1400)에 의한 실행을 위해 명령어들(1424)을 저장할 수 있는, 임의의 매체, 또는 다수의 미디어의 조합을 포함하도록 취해질 것이며, 따라서 명령어들(1424)은, 기계(1400)의 하나 이상의 프로세서(예로서, 프로세서(1402))에 의해 실행될 때, 기계(1400)가 여기에 설명된 방법론들 중 임의의 하나 이상을, 전체적으로 또는 부분적으로 수행하게 한다. 따라서, "기계-판독 가능한 매체"는 단일 저장 장치 또는 디바이스(130m, 140, 또는 150), 뿐만 아니라 다수의 저장 장치 또는 디바이스(130, 140 또는 150)를 포함하는 클라우드-기반 저장 시스템들 또는 저장 네트워크들을 나타낸다. 용어("기계-판독 가능한 매체")는 따라서, 이에 제한되지 않지만, 고체-상태 메모리, 광학 매체, 자기 매체, 또는 그것의 임의의 적절한 조합의 형태로 하나 이상의 유형의(예로서, 비-일시적) 데이터 저장소를 포함하도록 취해질 것이다.
더욱이, 기계-판독 가능한 매체(1422)는 그것이 전파 신호를 구체화하지 않는다는 점에서 비-일시적이다. 그러나, 유형의 기계-판독 가능한 매체(1422)를 "비-일시적"으로 라벨링하는 것은 매체가 움직임이 가능하지 않음을 의미하는 것으로 해석되지 않아야 하며; 매체는 하나의 물리적 위치에서 또 다른 것으로 수송 가능한 것으로 고려되어야 한다. 부가적으로, 기계-판독 가능한 매체(1422)는 유형으로므로, 매체는 기계-판독 가능한 디바이스인 것으로 고려될 수 있다.
본 명세서 전체에 걸쳐, 복수의 인스턴스는 단일 인스턴스로서 설명된 구성요소들, 동작들, 또는 구조들을 구현할 수 있다. 하나 이상의 방법의 개개의 동작들은 별개의 동작들로서 예시되며 설명되지만, 개개의 동작들 중 하나 이상은 동시에 수행될 수 있으며, 어떤 것도 동작들이 예시된 순서로 수행됨을 요구하지 않는다. 예시적인 구성들에서 별개의 구성요소들로서 제공된 구조들 및 기능은 조합된 구조 또는 구성요소로서 구현될 수 있다. 유사하게, 단일 구성요소로서 제공된 구조들 및 기능은 별개의 구성요소들로서 구현될 수 있다. 이들 및 다른 변형들, 수정들, 부가들, 및 개선들은 여기에서의 주제의 범위 내에 포함된다.
특정한 실시예들은 로직 또는 다수의 구성요소 모듈, 또는 메커니즘을 포함하는 것으로서 여기에 설명된다. 모듈들은 소프트웨어 모듈들(예로서, 기계-판독 가능한 매체(1422) 상에 또는 송신 매체에 저장되거나 또는 그 외 구체화된 코드), 하드웨어 모듈들, 또는 그것의 임의의 적절한 조합을 구성할 수 있다. "하드웨어 모듈"은 특정한 동작들을 수행할 수 있는 유형의(예로서, 비-일시적) 유닛이며 특정한 물리적 방식으로 구성되거나 또는 배열될 수 있다. 다양한 예시적인 실시예에서, 하나 이상의 컴퓨터 시스템(예로서, 독립형 컴퓨터 시스템, 클라이언트 컴퓨터 시스템, 또는 서버 컴퓨터 시스템) 또는 컴퓨터 시스템의 하나 이상의 하드웨어 모듈(예로서, 프로세서(1402) 또는 프로세서들(1402)의 그룹)은 여기에 설명된 바와 같이 특정한 동작들을 수행하는 하드웨어 모듈로서 소프트웨어(예로서, 애플리케이션 또는 애플리케이션 부분)에 의해 구성될 수 있다.
몇몇 실시예에서, 하드웨어 모듈은 기계적으로, 전자적으로, 또는 그것의 임의의 적절한 조합으로 구현될 수 있다. 예를 들면, 하드웨어 모듈은 영구적으로 특정한 동작들을 수행하도록 구성되는 전용 회로 또는 로직을 포함할 수 있다. 예를 들면, 하드웨어 모듈은 필드 프로그램 가능한 게이트 어레이(FPGA) 또는 ASIC과 같은, 특수-목적 프로세서일 수 있다. 하드웨어 모듈은 또한 특정한 동작들을 수행하도록 소프트웨어에 의해 일시적으로 구성되는 프로그램 가능한 로직 또는 회로를 포함할 수 있다. 예를 들면, 하드웨어 모듈은 범용 프로세서(1402) 또는 다른 프로그램 가능한 프로세서(1402) 내에 포함된 소프트웨어를 포함할 수 있다. 기계적으로, 전용 및 영구적으로 구성된 회로에서, 또는 일시적으로 구성된 회로(예로서, 소프트웨어에 의해 구성된)에서 하드웨어 모듈을 구현하기 위한 결정은 비용 및 시간 제약에 의해 구동될 수 있다는 것이 이해될 것이다.
하드웨어 모듈들은 다른 하드웨어 모듈들에 정보를 제공하며 그것으로부터 정보를 수신할 수 있다. 따라서, 설명된 하드웨어 모듈들은 통신적으로 결합되는 것으로 간주될 수 있다. 다수의 하드웨어 모듈이 동시에 존재하는 경우에, 통신들은 하드웨어 모듈들 중 둘 이상 사이에서 또는 그 중에서 신호 송신을 통해(예로서, 적절한 회로들 및 버스들(1408)을 통해) 달성될 수 있다. 다수의 하드웨어 모듈이 상이한 시간들에서 구성되거나 또는 인스턴스화되는 실시예들에서, 이러한 하드웨어 모듈들 사이에서의 통신들은 예를 들면, 다수의 하드웨어 모듈이 액세스를 갖는 메모리 구조들에서 정보의 저장 및 검색을 통해 달성될 수 있다. 예를 들면, 하나의 하드웨어 모듈은 동작을 수행하며 그것이 통신적으로 결합되는 메모리 디바이스에 상기 동작의 출력을 저장할 수 있다. 추가 하드웨어 모듈은, 그 후, 나중에, 저장된 출력을 검색하며 프로세싱하기 위해 메모리 디바이스를 액세스할 수 있다. 하드웨어 모듈들은 또한 입력 또는 출력 디바이스들과의 통신을 개시할 수 있으며, 리소스(예로서, 정보의 모음)에 대해 동작할 수 있다.
여기에 설명된 예시적인 방법들의 다양한 동작은, 적어도 부분적으로, 관련된 동작들을 수행하도록 일시적으로 구성되거나(예로서, 소프트웨어에 의해) 또는 영구적으로 구성되는 하나 이상의 프로세서(1402)에 의해 수행될 수 있다. 일시적으로 또는 영구적으로 구성되는지에 관계없이, 이러한 프로세서들(1402)은 여기에 설명된 하나 이상의 동작 또는 기능을 수행하기 위해 동작하는 프로세서-구현된 모듈들을 구성할 수 있다. 여기에서 사용된 바와 같이, "프로세서-구현 모듈"은 하나 이상의 프로세서(1402)를 사용하여 구현된 하드웨어 모듈을 나타낸다.
유사하게, 여기에서 설명된 방법들은 적어도 부분적으로 프로세서-구현될 수 있으며, 프로세서(1402)는 하드웨어의 예이다. 예를 들면, 방법의 동작들 중 적어도 일부는 하나 이상의 프로세서(1402) 또는 프로세서-구현 모듈에 의해 수행될 수 있다. 여기에서 사용된 바와 같이, "프로세서-구현 모듈"은 하드웨어 모듈을 나타내며 여기에서 하드웨어는 하나 이상의 프로세서(1402)를 포함한다. 게다가, 하나 이상의 프로세서(1402)는 또한 "클라우드 컴퓨팅" 환경에서 또는 "서비스로서의 소프트웨어(SaaS)"로서 관련된 동작의 수행을 지원하도록 동작할 수 있다. 예를 들면, 동작들 중 적어도 일부는 컴퓨터들의 그룹(프로세서들(1402)을 포함하는 기계들(1400)의 예들로서)에 의해 수행될 수 있으며, 이들 동작은 네트워크(1426)(예로서, 인터넷)를 통해 및 하나 이상의 적절한 인터페이스(예로서, API)를 통해 액세스 가능하다.
특정한 동작들의 수행은 단일 기계(1400) 내에 있을 뿐만 아니라, 다수의 기계(1400)에 걸쳐 배치되는, 하나 이상의 프로세서(1402) 중에서 분배될 수 있다. 몇몇 예시적인 실시예에서, 하나 이상의 프로세서(1402) 또는 프로세서-구현 모듈은 단일의 지리적 위치에(예로서, 홈 환경, 사무실 환경, 또는 서버 팜 내에서) 위치될 수 있다. 다른 예시적인 실시예들에서, 하나 이상의 프로세서(1402) 또는 프로세서-구현 모듈은 다수의 지리적 위치에 걸쳐 분배될 수 있다.
달리 구체적으로 서술되지 않는다면, "프로세싱하는", "계산하는", "산출하는", "결정하는", "제공하는", "디스플레이하는" 등과 같은 단어들을 사용한 여기에서의 논의들은 하나 이상의 메모리(예로서, 휘발성 메모리, 비-휘발성 메모리, 또는 그것의 임의의 적절한 조합), 레지스터, 또는 정보를 수신하고, 저장하고, 송신하거나, 또는 디스플레이하는 다른 기계 구성요소들 내에서 물리적(예로서, 전자적, 자기적, 또는 광학적) 양으로서 표현된 데이터를 조작하거나 또는 변형하는 기계(1400)(예로서, 컴퓨터)의 동작 또는 프로세스를 나타낼 수 있다. 더욱이, 달리 구체적으로 서술되지 않는다면, 단수 용어들은, 특허 문서들에 공통적인 바와 같이, 하나 또는 하나 이상의 인스턴스를 포함하기 위해 여기에서 사용된다. 최종적으로, 여기에서 사용된 바와 같이, 접속사("또는")는 달리 구체적으로 서술되지 않는다면, 비-배타적 "또는"을 나타낸다.
본 개시는 예시적이며 제한적이지 않다. 추가 수정들이 본 개시를 고려하여 이 기술분야의 숙련자에게 명백할 것이며 첨부된 청구항들의 범위 내에 포함되도록 의도된다.

Claims (20)

  1. 방법으로서,
    프로세서에 의해, 복수의 프로젝트를 액세스하는 단계;
    상기 프로세서에 의해, 상기 복수의 프로젝트에서 적어도 프로젝트들의 서브세트를 완료하기 위한 시간 길이를 나타내는 시평(time horizon)을 액세스하는 단계;
    상기 프로세서에 의해, 복수의 리소스를 액세스하는 단계로서, 상기 복수의 리소스에서의 각각의 리소스는 상기 복수의 프로젝트에서의 적어도 하나의 프로젝트를 완료하는 것을 향해 상기 리소스에 의해 수행될 수 있는 하나 이상의 기능을 특정하는, 상기 복수의 리소스를 액세스하는 단계;
    상기 프로세서에 의해, 상기 복수의 리소스에서의 각각의 리소스에 대해, 각각의 리소스가 상기 복수의 프로젝트에 걸쳐 사용될 수 있는 최대 이용 가능한 용량을 나타내는 예산 지출을 액세스하는 단계;
    상기 프로세서에 의해, 상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것과 연관된 비용 제약을 액세스하는 단계;
    상기 프로세서에 의해, 상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것으로 획득된 이득의 양을 나타내는 이득값을 액세스하는 단계;
    상기 프로세서에 의해, 상기 복수의 프로젝트에서의 어떤 프로젝트가 상기 복수의 프로젝트에서의 다른 프로젝트를 완료하기 위한 필요조건으로서 완료되어야 하는지를 나타내는 프로젝트 종속값들의 세트를 액세스하는 단계;
    상기 프로세서에 의해, 상기 프로젝트 종속값들의 세트에 기초하여, 완료될 상기 복수의 프로젝트 중에서 프로젝트들의 순서를 나타내는 적어도 하나의 종속 경로를 결정하는 단계로서, 상기 적어도 하나의 종속 경로에서의 프로젝트는 상기 적어도 하나의 종속 경로에서의 모든 이전 프로젝트가 완료될 때까지 시작될 수 없는, 상기 적어도 하나의 종속 경로 결정 단계; 및
    상기 프로세서에 의해, 프로젝트의 효율적인 선택에서 각각의 프로젝트의 상기 이득값 및 상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 비용 제약들 사이에서의 비교에 기초하여 상기 시평 내에서 완료될 상기 복수의 프로젝트 중에서 상기 프로젝트의 효율적인 선택을 결정하는 단계로서, 상기 효율적인 선택은 상기 적어도 하나의 종속 경로 및 각각의 리소스에 대한 예산 지출에 의해 제한된, 상기 프로젝트의 효율적인 선택을 완료하기 위해 상기 복수의 리소스의 효율적인 이용을 결정하는 것에 기초하는, 상기 프로젝트의 효율적인 선택을 결정하는 단계를 포함하는, 방법.
  2. 제1항에 있어서, 상기 적어도 하나의 종속 경로를 결정하는 단계는,
    상기 복수의 프로젝트를 복수의 클러스터로 분할하는 단계;
    상기 클러스터에서의 각각의 프로젝트에 대해, 상기 클러스터에서의 상기 프로젝트와 연관된 상기 프로젝트 종속값에 의해 연계된 상기 복수의 프로젝트 중에서 프로젝트들의 시퀀스를 나타내는 각각의 클러스터에 대한 클러스터 종속 경로를 계산하는 단계;
    상기 적어도 하나의 종속 경로를 생성하기 위해 상기 클러스터 종속 경로들의 병합 동작을 수행하는 단계; 및
    상기 병합 동작 동안 상기 적어도 하나의 종속 경로에 관련되지 않은 적어도 상기 클러스터 종속 경로들 중 적어도 하나의 서브세트를 잘라내는 단계를 포함하는, 방법.
  3. 제1항 또는 제2항에 있어서, 상기 병합 동작은 적어도 두 개의 클러스터 종속 경로를 함께 스플라이싱하는 단계를 포함하며, 스플라이싱될 상기 적어도 두 개의 클러스터 종속 경로의 선택은 상기 적어도 두 개의 클러스터 종속 경로 중에서 공통적인 적어도 하나의 프로젝트에 기초하는, 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서, 상기 적어도 하나의 종속 경로를 결정하는 단계는,
    상기 프로젝트 종속값들의 세트에 기초하여 제1 종속 경로를 결정하는 단계;
    상기 프로젝트 종속값들의 세트에 기초하여 제2 종속 경로를 결정하는 단계;
    상기 제1 및 제2 경로 종속성의 추정된 리턴들 사이에서의 비교에 기초하여 상기 제2 종속 경로에 대해 상기 제1 종속 경로를 랭크하는 단계; 및
    타임라인을 따라 상기 제2 종속 경로에 상기 프로젝트를 할당하기 전에 상기 시평에 의해 제한된 상기 타임라인을 따라 상기 제1 종속 경로에 상기 프로젝트를 할당하는 단계를 포함하는, 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서, 완료될 상기 복수의 프로젝트 중에서 상기 프로젝트의 효율적인 선택을 결정하는 단계는 상기 시평에 의해 제한된 타임라인 상에서 프로젝트에 대한 효율적인 배치를 결정하는 단계를 포함하며, 상기 효율적인 배치는 상기 프로젝트를 완료하기 위한 시간-길이, 상기 프로젝트를 완료하기 위해 요구된 리소스들의 양, 및 상기 프로젝트에 대한 최대 금융 비용을 규정하는 프로젝트 예산에 기초하는, 방법.
  6. 제1항 내지 제5항 중 어느 한 항에 있어서, 상기 프로젝트에 대한 상기 효율적인 배치를 결정하는 단계는,
    상기 프로젝트에서의 역할과 상기 리소스를 매칭시키는 단계;
    상기 역할과 매칭될 상기 리소스의 선택을 우선순위화하는 단계; 및
    상기 리소스와 매칭될 상기 역할의 선택을 우선순위화하는 단계를 포함하는, 방법.
  7. 제1항 내지 제6항 중 어느 한 항에 있어서, 상기 리소스의 선택을 우선순위화하는 단계는:
    비-선호 리소스보다 앞서 선호 리소스를 선택하는 단계;
    흡인력 없는 리소스보다 앞서 흡입력 있는 리소스를 할당하는 단계로서, 상기 흡인력 있는 리소스는 상기 역할이 고려되기 전의 시간 간격에 할당된 리소스를 나타내는, 상기 흡입력 있는 리소스를 할당하는 단계;
    융통성 있는 리소스보다 앞서 융통성 없는 리소스를 할당하는 단계;
    상기 역할의 최적합 설명에 매칭되는 역할에 리소스를 할당하는 단계; 및
    보다 짧은 가용성 지평을 가진 리소스에 비해 보다 긴 가용성 지평을 가진 리소스를 선호하는 단계를 포함하는, 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서, 상기 역할의 선택을 우선순위화하는 단계는,
    덜 희귀한 역할 전에 희귀한 역할을 매칭시키는 단계;
    보다 짧은 윤곽을 가진 역할 전에 윤곽이 요구의 보다 긴 비-제로 시퀀스를 갖는 역할을 매칭시키는 단계; 및
    보다 짧은 시간 약정을 가진 역할 전에 보다 큰 시간 약정을 가진 역할을 매칭시키는 단계를 포함하는, 방법.
  9. 제1항 내지 제8항 중 어느 한 항에 있어서, 완료될 상기 복수의 프로젝트 중에서 상기 프로젝트의 효율적인 선택을 결정하는 단계는 상기 복수의 프로젝트 중에서 프로젝트가 왜 상기 프로젝트의 효율적인 선택 중에서 제외되는지에 대한 이유들을 결정하는 단계를 포함하는, 방법.
  10. 제1항 내지 제9항 중 어느 한 항에 있어서, 상기 프로젝트가 제외되는 이유를 결정하는 단계는,
    예산 부족이 상기 프로젝트로 하여금 제외되게 하는지를 결정하는 단계;
    리소스 부족이 상기 프로젝트로 하여금 제외되게 하는지를 결정하는 단계;
    타임라인 부족이 상기 프로젝트로 하여금 제외되게 하는지를 결정하는 단계; 및
    종속 경로 부족이 상기 프로젝트로 하여금 제외되게 하는지를 결정하는 단계를 포함하는, 방법.
  11. 제1항 내지 제10항 중 어느 한 항에 있어서, 완료될 상기 복수의 프로젝트 중에서 상기 프로젝트의 효율적인 선택을 결정하는 단계는 상기 프로젝트의 효율적인 선택 중에서 현재 포함되지 않은 상기 복수의 프로젝트 중에서 적어도 하나 이상의 프로젝트가 상기 효율적인 선택 중에 포함될 수 있는지를 결정하기 위해 프로젝트 제약들의 세트를 수정하는 단계를 포함하는, 방법.
  12. 제1항 내지 제11항 중 어느 한 항에 있어서, 상기 프로젝트 제약들의 세트를 수정하는 단계는,
    상기 프로젝트의 효율적인 선택을 완료하기 위한 역할들의 수를 수정하는 것이 하나 이상의 프로젝트가 상기 프로젝트의 효율적인 선택 중에 포함되는 것을 야기하는지를 결정하는 단계;
    상기 프로젝트의 효율적인 선택과 연관된 적어도 하나의 예산을 증가시키는 것이 하나 이상의 프로젝트가 상기 프로젝트의 효율적인 선택 중에 포함되는 것을 야기하는지를 결정하는 단계; 또는
    상기 프로젝트의 효율적인 선택 중에서 프로젝트 내에서의 역할의 용량을 증가시키는 것이 하나 이상의 프로젝트가 상기 프로젝트의 효율적인 선택 중에 포함되는 것을 야기하는지를 결정하는 단계를 포함하는, 방법.
  13. 제1항 내지 제12항 중 어느 한 항에 있어서, 상기 시평 내에서 완료될 상기 복수의 프로젝트 중에서 상기 프로젝트의 효율적인 선택을 결정하는 단계는 상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 이득값 및 상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 비용 제약들 사이에서의 비교를 최소화하는 것에 추가로 기초하는, 방법.
  14. 시스템으로서,
    데이터를 저장하도록 구성된 메모리; 및
    상기 메모리에 결합된 프로세서를 포함하되,
    상기 데이터는,
    복수의 프로젝트;
    상기 복수의 프로젝트에서 적어도 프로젝트들의 서브세트를 완료하기 위한 시간의 길이를 나타내는 시평;
    복수의 리소스로서, 상기 복수의 리소스에서의 각각의 리소스는 상기 복수의 프로젝트에서의 적어도 하나의 프로젝트를 완료하는 것을 향해 상기 리소스에 의해 수행될 수 있는 하나 이상의 기능을 특정하는, 상기 복수의 리소스;
    상기 복수의 리소스에서의 각각의 리소스에 대해, 각각의 리소스가 상기 복수의 프로젝트에 걸쳐 사용될 수 있는 최대 이용 가능한 용량을 나타내는 예산 지출;
    상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것과 연관된 금융 비용들을 나타내는 비용 제약;
    상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것으로 획득된 이득의 양을 나타내는 이득값; 및
    상기 복수의 프로젝트에서의 어떤 프로젝트가 상기 복수의 프로젝트에서의 다른 프로젝트를 완료하기 위한 필요조건으로서 완료되어야 하는지를 나타내는 프로젝트 종속값들의 세트를 포함하고;
    상기 프로세서는,
    상기 복수의 프로젝트, 상기 지평, 상기 복수의 리소스, 상기 복수의 리소스에서의 각각의 리소스에 대한 상기 예산 지출, 상기 복수의 프로젝트에서의 각각의 프로젝트에 대한 상기 비용 제약, 상기 복수의 프로젝트에서의 각각의 프로젝트에 대한 상기 이득값, 및 상기 프로젝트 종속값들의 세트를 액세스하도록;
    상기 프로젝트 종속값들의 세트에 기초하여, 완료될 상기 복수의 프로젝트 중에서 프로젝트들의 순서를 나타내는 적어도 하나의 종속 경로를 결정하되, 상기 적어도 하나의 종속 경로에서의 프로젝트는 상기 적어도 하나의 종속 경로에서의 모든 이전 프로젝트가 완료될 때까지 시작될 수 없는, 적어도 하나의 종속 경로를 결정하도록; 그리고
    상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 상기 이득값 및 상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 상기 비용 제약들 사이에서의 비교에 기초하여 상기 시평 내에서 완료될 상기 복수의 프로젝트 중에서 상기 프로젝트의 효율적인 선택을 결정하되, 상기 효율적인 선택은 상기 적어도 하나의 종속 경로 및 각각의 리소스에 대한 상기 예산 지출에 의해 제한된, 상기 프로젝트의 효율적인 선택을 완료하기 위해 상기 복수의 리소스의 효율적인 이용을 결정하는 것에 기초하는, 상기 프로젝트의 효율적인 선택을 결정하도록
    구성된, 시스템.
  15. 제14항에 있어서, 상기 적어도 하나의 종속 경로를 결정하는 것은,
    상기 복수의 프로젝트를 복수의 클러스터들로 분할하는 것;
    상기 클러스터에서의 각각의 프로젝트에 대해, 상기 클러스터에서의 상기 프로젝트와 연관된 상기 프로젝트 종속값들에 의해 연계된 상기 복수의 프로젝트 중에서 프로젝트들의 시퀀스를 나타내는 각각의 클러스터에 대한 클러스터 종속 경로를 계산하는 것;
    상기 적어도 하나의 종속 경로를 생성하기 위해 상기 클러스터 종속 경로들의 병합 동작을 수행하는 것; 및
    상기 병합 동작 동안 상기 적어도 하나의 종속 경로에 관련되지 않은 적어도 상기 클러스터 종속 경로들 중 적어도 하나의 서브세트를 잘라내는 것을 포함하는, 시스템.
  16. 제14항 또는 제15항에 있어서, 상기 병합 동작은 적어도 두 개의 클러스터 종속 경로를 함께 스플라이싱하는 것을 포함하며, 스플라이싱될 상기 적어도 두 개의 클러스터 종속 경로의 선택은 상기 적어도 두 개의 클러스터 종속 경로 중에서 공통적인 적어도 하나의 프로젝트에 기초하는, 시스템.
  17. 제14항 내지 제16항 중 어느 한 항에 있어서, 상기 적어도 하나의 종속 경로를 결정하는 것은,
    상기 프로젝트 종속값들의 세트에 기초하여 제1 종속 경로를 결정하는 것;
    상기 프로젝트 종속값들의 세트에 기초하여 제2 종속 경로를 결정하는 것;
    상기 제1 및 제2 종속 경로의 추정된 리턴들 사이에서의 비교에 기초하여 상기 제2 종속 경로에 대해 상기 제1 종속 경로를 랭크하는 것; 및
    타임라인을 따라 상기 제2 종속 경로에 상기 프로젝트를 할당하기 전에 상기 시평에 의해 제한된 상기 타임라인을 따라 상기 제1 종속 경로에 상기 프로젝트를 할당하는 것을 포함하는, 시스템.
  18. 제14항 내지 제17항 중 어느 한 항에 있어서, 완료될 상기 복수의 프로젝트 중에서 상기 프로젝트의 효율적인 선택을 결정하는 것은 상기 시평에 의해 제한된 타임라인 상에서 프로젝트에 대한 효율적인 배치를 결정하는 것을 포함하며, 상기 효율적인 배치는 상기 프로젝트를 완료하기 위한 시간 길이, 상기 프로젝트를 완료하기 위해 요구된 리소스들의 양, 및 상기 프로젝트에 대한 최대 금융 비용을 규정하는 프로젝트 예산에 기초하는, 시스템.
  19. 제14항 내지 제18항 중 어느 한 항에 있어서, 상기 프로젝트에 대한 상기 효율적인 배치를 결정하는 것은,
    상기 프로젝트에서의 역할과 상기 리소스를 매칭시키는 것;
    상기 역할과 매칭될 상기 리소스의 선택을 우선순위화하는 것으로서:
    비-선호 리소스보다 앞서 선호 리소스를 선택하는 것;
    흡인력 없는 리소스들보다 앞서 흡인력 있는 리소스를 할당하는 것으로서, 상기 흡인력 있는 리소스는 상기 역할이 고려되기 전의 시간 간격에 할당된 리소스를 나타내는, 상기 흡인력 있는 리소스를 할당하는 것;
    융통성 있는 리소스보다 앞서 융통성 없는 리소스를 할당하는 것;
    상기 역할의 최적합 설명에 매칭되는 역할에 리소스를 할당하는 것; 및
    보다 짧은 가용성 지평을 가진 리소스들보다 보다 긴 가용성 지평을 가진 리소스들을 선호하는 것에 기초하는, 상기 리소스의 선택을 우선순위화하는 것; 및
    상기 리소스와 매칭될 상기 역할의 선택을 우선순위화하는 것으로서:
    덜 희귀한 역할 전에 희귀한 역할을 매칭시키는 것;
    보다 짧은 윤곽을 가진 역할 전에 윤곽이 요구의 보다 긴 비-제로 시퀀스를 갖는 역할을 매칭시키는 것; 및
    보다 짧은 시간 약정을 가진 역할 전에 보다 큰 시간 약정을 가진 역할을 매칭시키는 것에 기초하는, 상기 역할의 선택을 우선순위화하는 것을 포함하는, 시스템.
  20. 프로세서에 의해 해석될 때, 기계가 동작들을 수행하게 하는 명령어들을 포함한 비 일시적 컴퓨터 판독 가능한 매체에 있어서, 상기 동작들은,
    복수의 프로젝트를 액세스하는 것;
    상기 복수의 프로젝트에서 적어도 프로젝트들의 서브세트를 완료하기 위한 시간의 길이를 나타내는 시평을 액세스하는 것;
    복수의 리소스를 액세스하는 것으로서, 상기 복수의 리소스에서의 각각의 리소스는 상기 복수의 프로젝트에서 적어도 하나의 프로젝트를 완료하는 것을 향해 상기 리소스에 의해 수행될 수 있는 하나 이상의 기능을 특정하는, 상기 복수의 리소스를 액세스하는 것;
    상기 복수의 리소스에서의 각각의 리소스에 대해, 각각의 리소스가 상기 복수의 프로젝트에 걸쳐 사용될 수 있는 최대 이용 가능한 용량을 나타내는 예산 지출을 액세스하는 것;
    상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것과 연관된 금융 비용들을 나타내는 비용 제약을 액세스하는 것;
    상기 복수의 프로젝트에서의 각각의 프로젝트에 대해, 상기 프로젝트를 완료하는 것으로 획득된 이득의 양을 나타내는 이득값을 액세스하는 것;
    상기 복수의 프로젝트에서의 어떤 프로젝트가 상기 복수의 프로젝트에서의 다른 프로젝트를 완료하기 위한 필요조건으로서 완료되어야 하는지를 나타내는 프로젝트 종속값들의 세트를 액세스하는 것;
    상기 프로젝트 종속값들의 세트에 기초하여, 완료될 상기 복수의 프로젝트 중에서 프로젝트들의 순서를 나타내는 적어도 하나의 종속 경로를 결정하는 것으로서, 상기 적어도 하나의 종속 경로에서의 프로젝트는 상기 적어도 하나의 종속 경로에서의 모든 이전 프로젝트가 완료될 때까지 시작될 수 없는, 적어도 하나의 종속 경로를 결정하는 것; 및
    프로젝트의 효율적인 선택에서 각각의 프로젝트의 상기 이득값 및 상기 프로젝트의 효율적인 선택에서 각각의 프로젝트의 상기 비용 제약들 사이에서의 비교에 기초하여 상기 시평 내에서 완료될 상기 복수의 프로젝트 중에서 상기 프로젝트의 효율적인 선택을 결정하는 것으로서, 상기 효율적인 선택은 상기 적어도 하나의 종속 경로 및 각각의 리소스에 대한 상기 예산 지출에 의해 제한된, 상기 프로젝트의 효율적인 선택을 완료하기 위해 상기 복수의 리소스의 효율적인 이용을 결정하는 것에 기초하는, 상기 프로젝트의 효율적인 선택을 결정하는 것을 포함하는, 비 일시적 컴퓨터 판독 가능한 매체.
KR1020167027126A 2014-03-25 2015-03-25 시간, 리소스 및 예산 제약 하에 구조화된 기업 조직 내에서 프로젝트의 선택 및 리소스의 할당을 최적화하기 위한 프레임워크 KR102376755B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461967714P 2014-03-25 2014-03-25
US61/967,714 2014-03-25
PCT/US2015/022448 WO2015148641A1 (en) 2014-03-25 2015-03-25 A framework to optimize the selection of projects and the allocation of resources within a structured business organization under time, resource and budget constraints

Publications (2)

Publication Number Publication Date
KR20160130795A true KR20160130795A (ko) 2016-11-14
KR102376755B1 KR102376755B1 (ko) 2022-03-21

Family

ID=54190907

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167027126A KR102376755B1 (ko) 2014-03-25 2015-03-25 시간, 리소스 및 예산 제약 하에 구조화된 기업 조직 내에서 프로젝트의 선택 및 리소스의 할당을 최적화하기 위한 프레임워크

Country Status (6)

Country Link
US (1) US20150278736A1 (ko)
EP (1) EP3123417A4 (ko)
JP (1) JP6564015B2 (ko)
KR (1) KR102376755B1 (ko)
AU (1) AU2015236099A1 (ko)
WO (1) WO2015148641A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102349118B1 (ko) * 2021-09-07 2022-01-11 주식회사 디케이브라더스 프로젝트 중개 플랫폼 서비스 제공 방법 및 장치

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170220974A1 (en) * 2016-01-29 2017-08-03 Sap Se Resource optimization for production efficiency
US10489204B2 (en) * 2017-01-31 2019-11-26 Samsung Electronics Co., Ltd. Flexible in-order and out-of-order resource allocation
US10789208B2 (en) * 2017-08-02 2020-09-29 Sap Se Dependency mapping in a database environment
KR102298999B1 (ko) * 2018-03-02 2021-09-07 (주) 빌트온 웹브라우저에 입력된 이벤트에 대응하는 빅데이터분석결과와 경영정보를 통합하여 제공하는 토탈경영정보제공장치
US10810524B1 (en) * 2018-05-21 2020-10-20 Amazon Technologies, Inc. Dynamic resource prediction simulation
AU2019253789B1 (en) * 2019-04-24 2020-10-08 Advanced New Technologies Co., Ltd. Distributed resource allocation
WO2020219040A1 (en) * 2019-04-24 2020-10-29 Alibaba Group Holding Limited Distributed resource allocation
WO2020219041A1 (en) * 2019-04-24 2020-10-29 Alibaba Group Holding Limited Distributed resource allocation
DE102020203716A1 (de) * 2020-03-23 2021-09-23 Zf Friedrichshafen Ag Computerimplementiertes Verfahren für eine Produktionsplanung und/oder -steuerung eines Produktionssystems und Produktionsplanung und/oder-steuerungssystem
US20230410011A1 (en) * 2022-06-09 2023-12-21 Abductive Services LLC Systems, Devices, and/or Methods for Managing Projects
CN117648179A (zh) * 2023-11-23 2024-03-05 北京菱云科技有限公司 一种资源分配方法、装置、电子设备和存储介质
KR102669893B1 (ko) 2024-02-19 2024-05-28 주식회사 똑똑한개발자 스마트 업무일지를 활용한 it프로젝트별 손익 금액 자동 계산 시스템

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008530692A (ja) * 2005-02-11 2008-08-07 ヴォルト インフォメーション サイエンシズ インコーポレーテッド プロジェクト作業の計画/範囲変更の運営情報およびビジネス情報シナジーシステムおよび方法
JP2010211364A (ja) * 2009-03-09 2010-09-24 Hitachi Ltd プロジェクトのシミュレーション方法及びシミュレーションシステム
JP2011515759A (ja) * 2008-03-15 2011-05-19 マイクロソフト コーポレーション リソースの割り当てをスケジューリングするためのユーザーインターフェース
JP2012238054A (ja) * 2011-05-10 2012-12-06 Takenaka Komuten Co Ltd スケジューリング装置及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5630070A (en) * 1993-08-16 1997-05-13 International Business Machines Corporation Optimization of manufacturing resource planning
US5408663A (en) * 1993-11-05 1995-04-18 Adrem Technologies, Inc. Resource allocation methods
US7496886B2 (en) * 2004-09-30 2009-02-24 Microsoft Corporation Method and system for providing cross project commitments
US8281313B1 (en) * 2005-09-29 2012-10-02 Hewlett-Packard Development Company, L.P. Scheduling computer processing jobs that have stages and precedence constraints among the stages
US20080255910A1 (en) * 2007-04-16 2008-10-16 Sugato Bagchi Method and System for Adaptive Project Risk Management
US20090119144A1 (en) * 2007-11-02 2009-05-07 International Business Machines Corporation Method, system and program product for optimal project selection and tradeoffs
US7991632B1 (en) * 2011-01-28 2011-08-02 Fmr Llc Method and system for allocation of resources in a project portfolio
US20140032256A1 (en) * 2012-07-27 2014-01-30 International Business Machines Corporation Multi-project portfolio optimization

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008530692A (ja) * 2005-02-11 2008-08-07 ヴォルト インフォメーション サイエンシズ インコーポレーテッド プロジェクト作業の計画/範囲変更の運営情報およびビジネス情報シナジーシステムおよび方法
JP2011515759A (ja) * 2008-03-15 2011-05-19 マイクロソフト コーポレーション リソースの割り当てをスケジューリングするためのユーザーインターフェース
JP2010211364A (ja) * 2009-03-09 2010-09-24 Hitachi Ltd プロジェクトのシミュレーション方法及びシミュレーションシステム
JP2012238054A (ja) * 2011-05-10 2012-12-06 Takenaka Komuten Co Ltd スケジューリング装置及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102349118B1 (ko) * 2021-09-07 2022-01-11 주식회사 디케이브라더스 프로젝트 중개 플랫폼 서비스 제공 방법 및 장치

Also Published As

Publication number Publication date
JP6564015B2 (ja) 2019-08-21
US20150278736A1 (en) 2015-10-01
EP3123417A1 (en) 2017-02-01
AU2015236099A1 (en) 2016-09-08
KR102376755B1 (ko) 2022-03-21
WO2015148641A1 (en) 2015-10-01
JP2017514247A (ja) 2017-06-01
EP3123417A4 (en) 2017-08-30

Similar Documents

Publication Publication Date Title
KR102376755B1 (ko) 시간, 리소스 및 예산 제약 하에 구조화된 기업 조직 내에서 프로젝트의 선택 및 리소스의 할당을 최적화하기 위한 프레임워크
Abrishami et al. Cost-driven scheduling of grid workflows using partial critical paths
US8463633B2 (en) Methods and systems for deploying a service workflow in a hybrid cloud environment
Hans Resource loading by branch-and-price techniques
US20170185943A1 (en) Data analysis for predictive scheduling optimization for product production
US20150058053A1 (en) Shifting a group of tasks along a timeline
US9304817B2 (en) Method and apparatus for a user-driven priority based job scheduling in a data processing platform
US9953284B2 (en) Systems and methods for prioritizing funding of projects
Degbotse et al. IBM blends heuristics and optimization to plan its semiconductor supply chain
US8818832B2 (en) Decision support system and method for distributed decision making for optimal human resource deployment
CN116529741A (zh) 基于仿真的闭环aps调度优化方法、系统及存储介质
US20160140473A1 (en) Creating and displaying a work sequence
US20140089932A1 (en) Concurrency identification for processing of multistage workflows
US20120197677A1 (en) Multi-role based assignment
US10789400B2 (en) Scheduling simultaneous optimization of multiple very-large-scale-integration designs
CN117196530A (zh) 一种软件项目集与人力资源池数字智能化调度方法及系统
US20210365872A1 (en) A system and method for management of project portfolios
US20140236666A1 (en) Estimating, learning, and enhancing project risk
US10282144B2 (en) System and method for distributed cellular manufacturing with outsourcing group constraints
US20200057972A1 (en) System and method for management of project portfolios
Kyngäs et al. Workforce scheduling using the PEAST algorithm
JP6753521B2 (ja) 計算資源管理装置、計算資源管理方法、及びプログラム
Qu Dynamic Scheduling in Large-Scale Manufacturing Processing Systems Using Multi-Agent Reinforcement Learning
US8675231B2 (en) Methods and systems for load leveling in a print shop
US20200364640A1 (en) Optimizing Reserve Crew Patterns

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant