KR20120030452A - 합의 기반 분산 작업 실행 - Google Patents

합의 기반 분산 작업 실행 Download PDF

Info

Publication number
KR20120030452A
KR20120030452A KR1020117030870A KR20117030870A KR20120030452A KR 20120030452 A KR20120030452 A KR 20120030452A KR 1020117030870 A KR1020117030870 A KR 1020117030870A KR 20117030870 A KR20117030870 A KR 20117030870A KR 20120030452 A KR20120030452 A KR 20120030452A
Authority
KR
South Korea
Prior art keywords
agent
agents
updated
situation
information
Prior art date
Application number
KR1020117030870A
Other languages
English (en)
Other versions
KR101635246B1 (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 KR20120030452A publication Critical patent/KR20120030452A/ko
Application granted granted Critical
Publication of KR101635246B1 publication Critical patent/KR101635246B1/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/30087Synchronisation or serialisation instructions
    • 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/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/543Local

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Hardware Redundancy (AREA)
  • Image Processing (AREA)
  • Telephonic Communication Services (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

작업을 수행하고 있는 복수의 장치들을 조정하기 위하여 컴퓨터에서 구현된 방법, 시스템, 및 컴퓨터 판독가능 저장 매체가 공개된다. 특정 컴퓨터에서 구현된 방법은 갱신된 상황 정보를 장치에 저장하는 단계를 포함하는데, 갱신된 상황 정보는 하나 이상의 복수의 장치들의 작업 상태에 대한 투표에서의 변경을 반영한다. 제1 갱신된 상황 메시지는 하나 이상의 복수의 장치들로 보내지는데, 제1 갱신된 상황 메시지는 갱신된 상황 정보를 전달한다. 적어도 미리 정해진 수량의 복수의 장치들이 작업 상황에 동의한다는 것을 갱신된 상황 정보가 나타낼 때 장치에서의 작업 합의가 갱신된다.

Description

합의 기반 분산 작업 실행{CONSENSUS BASED DISTRIBUTED TASK EXECUTION}
본 발명은 일반적으로 작업(task)들을 수행하고 있는 복수의 에이전트들 또는 장치들을 조정하는 것에 관한 것이다.
로봇, 로봇 차량, 또는 소프트웨어 에이전트들과 같은 자동 에이전트들은 중앙 노드(central node)를 통해서 공유된 또는 상호의존적인 작업들의 수행을 조정할 수 있다. 중앙 노드는 자동 에이전트들이 작업을 수행할 준비가 된 때를 결정하기 위해 자동 에이전트들 각각의 상황을 결정하도록 자동 에이전트들 각각과 통신하고, 다음 동작(action)을 개시하기 위해 자동 에이전트들 각각과 통신한다. 중앙 노드는 중앙 "블랙보드(blackboard)"로서 동작하는데, 자동 에이전트들 각각은 자신의 상황을 게시할 수 있고 다른 자동 에이전트들의 상황을 검토할 수 있다.
중앙 노드에 대한 의존은 어느 정도의 단점들을 나타낸다. 예를 들어, 자동 에이전트들 각각이 통신을 위해서 중앙 노드에 의존적이기 때문에, 중앙 노드가 고장이 나면, 자동 에이전트들은 작업들을 수행할 수 없다. 다른 예로서, 통신 간섭 또는 경쟁(contention)이 비효율적인 작동을 초래하기 전에 중앙 노드는 단지 제한된 수의 자동 에이전트들과 적정한 통신을 유지할 수 있기 때문에, 중앙 노드에 대한 의존은 시스템의 확장성을 제한할 수 있다. 유사하게, 자동 에이전트들 각각이 중앙 노드와 통신을 유지해야 한다면, 중앙 노드의 전송 범위는 자동 에이전트들이 공유된 또는 상호의존적인 작업들을 수행할 수 있는 영역의 사이즈를 제한할 수 있다.
자동 에이전트들이 중앙 노드와 독립적으로 동작할 수 있는 분산 시스템들에서는 이러한 우려들의 일부를 해결할 수 있다. 하지만, 자동 에이전트들이 중앙 노드에 대한 의존 없이 동작할 수 있다고 하더라도, 자동 에이전트들 각각이 다른 자동 에이전트들의 상황을 결정하기 위해서 모든 다른 자동 에이전트들과 상의해야 한다면 이러한 제한들은 시스템 확장성 및 영역 커버리지(coverage)를 제한할 수 있다.
본 발명은 합의 기반 분산 작업 실행에 관한 기술을 제공하는 것을 목적으로 한다.
본 명세서에서 공개된 실시 예들은 작업을 수행하고 있는 복수의 장치들을 조정하기 위하여 컴퓨터에서 구현된 방법, 시스템, 및 컴퓨터 판독가능 저장 매체를 포함한다. 예시적 실시 예에 따르면, 복수의 장치들, 로봇 에이전트들, 또는 다른 에이전트들은 중앙 노드를 이용해서 그들의 동작을 조정함으로써라기 보다는 피어 투 피어 통신을 이용해서 통신한다. 각각의 에이전트들은 그 자신의 작업 상황 및 하나 이상의 피어 에이전트들의 상황을 포함하는 로컬 상황 정보를 유지한다. 에이전트가 그 자신의 작업 상황을 갱신하거나 피어 에이전트들 중의 하나의 작업 상황에서의 변경을 나타내는 메시지를 수신하면, 로컬 상황 정보가 갱신되고, 에이전트에게 알려진 가장 최근의 상황 정보를 공유하기 위하여 하나 이상의 피어(peer)들로 메시지가 보내진다. 각각의 에이전트들은 그 실행에 관여되어 있다면 그 피어들로부터 수신된 메시지들을 처리하고 작업의 상태를 지역적으로 갱신함으로써 시간의 흐름에 따른 작업의 상태를 파악한다. 에이전트들의 작업 상황에 대한 합의는 주어진 시간에 작업의 상태에 대한 일반적 일치(general agreement)이다. 모든 활성 에이전트들이 동일한 상황에 도달할 때 또는 미리 정해진 수(number) 또는 비율(portion)의 에이전트들 또는 활성 에이전트들이 동일한 상황에 도달할 때, 합의가 존재할 수 있다. 합의가 존재한다고 판단하면, 에이전트들은 다음 동작으로 진행할 수 있다.
컴퓨터에서 구현된 방법의 하나의 예시적 실시 예에서, 갱신된 상황 정보는 장치에 저장된다. 갱신된 상황 정보는 하나 이상의 복수의 장치들의 작업 상태에 대한 투표에서의 변경을 반영한다. 제1 갱신된 상황 메시지는 하나 이상의 복수의 장치들로 보내진다. 제1 갱신된 상황 메시지는 갱신된 상황 정보를 전달한다. 미리 정해진 수량(quantity)의 복수의 장치들이 작업 상황에 동의한다는 것을 갱신된 상황 정보가 나타내는 경우에 장치에서 작업 합의가 갱신된다.
다른 예시적 실시 예에서, 로봇 에이전트를 제어하기 위한 시스템은 작업의 할당된 역할을 수행하고 있는 로봇 에이전트를 제어하기 위한 작업 제어기를 포함한다. 작업 제어기는 할당된 역할의 수행을 개시하고, 할당된 역할의 수행의 완료를 보고한다. 시스템은 또한, 작업 제어기와 통신하고 로봇 에이전트에 저장된 상황 정보를 갱신하는 상황 관리기를 포함한다. 상황 정보는 로봇 에이전트 및 하나 이상의 피어 로봇 에이전트들 각각의 작업 상태에 대한 투표를 포함한다. 시스템은 또한, 상황 관리기와 통신하기 위한 피어 투 피어 통신 시스템을 포함한다. 피어 투 피어 통신 시스템은 하나 이상의 피어 로봇 에이전트들 중의 적어도 하나로부터 제1 상황 메시지를 수신한다. 제1 상황 메시지는 하나 이상의 피어 로봇 에이전트들 중의 하나에 의하여 보고된 피어 상황 정보를 포함한다. 시스템은 제2 상황 메시지를 하나 이상의 피어 로봇 에이전트들로 보낸다. 제2 상황은 로봇 에이전트에 저장된 로컬 상황 정보를 포함한다.
또 다른 예시적 실시 예에서, 컴퓨터 판독가능 저장 매체는 컴퓨터 시스템에 의해서 실행가능한 명령어들을 저장한다. 컴퓨터 판독가능 저장 매체는 작업과 관련된 하나 이상의 피어 에이전트들 및 로컬 에이전트 각각의 작업 상태에 대한 투표를 나타내는 상황 정보를 저장하기 위한 명령어들을 저장한다. 컴퓨터 판독가능 저장 매체는 하나 이상의 피어 에이전트들 중의 적어도 하나 또는 로컬 에이전트의 작업 상태에 대한 투표에서의 변경을 식별하기 위하여 컴퓨터 시스템에 의해서 실행가능한 명령어들을 저장한다. 컴퓨터 판독가능 저장 매체는 작업 상태에 대한 투표에서의 변경을 반영하도록 상황 정보를 갱신하기 위하여 컴퓨터 시스템에 의해서 실행가능한 명령어들을 저장한다. 컴퓨터 판독가능 저장 매체는 갱신된 상황 정보를 보내기 위한 상황 메시지를 하나 이상의 피어 에이전트들 중의 하나 이상으로 전송하기 위하여 컴퓨터 시스템에 의해서 실행가능한 명령어들을 저장한다. 컴퓨터 판독가능 저장 매체는 또한, 특정 수량의 에이전트들이 작업 상황에 동의한다는 것을 상황 정보가 나타내는지 여부를 기초로 해서 작업 합의를 판단하기 위하여 컴퓨터 시스템에 의해서 실행가능한 명령어들을 저장한다.
설명된 특징들, 기능들, 및 이점들은 여러 실시 예들에서 독립적으로 달성될 수 있고, 또는 또 다른 실시 예들에서 조합될 수 있으며, 이들의 세부내용은 다음의 설명 및 도면들을 참조하여 공개된다.
도 1은 작업을 수행하고 있는 복수의 에이전트 장치들을 조정하기 위한 예시적 실시 예에서 에이전트들에 의해 이용된 유한 상태 기계(finite state machine)의 블록도이고;
도 2는 당해 에이전트의 상태 변경 또는 다른 에이전트의 상태 변경에 대해 응답하여 지역적으로 유지되는(locally-maintained) 합의 및 상황 정보를 갱신하는 방법의 특정 실시 예의 흐름도이고;
도 3은 복수의 에이전트 장치들에 의해 수행될 작업들을 포함하는 공유 계획의 특정 실시 예의 블록도이고;
도 4 내지 17은 작업을 수행하고 있는 복수의 장치들을 조정하는 시스템 및 방법의 예시적 실시 예에 따라 복수의 공유 및 비공유 작업들을 수행하고 있는 복수의 에이전트들을 도시하는 블록도들이고;
도 18은 작업을 수행하고 있는 복수의 장치들을 조정하기 위한 방법의 예시적 실시 예의 흐름도이고;
도 19는 작업을 수행하고 있는 복수의 로봇 에이전트들을 조정하기 위한 시스템의 예시적 실시 예를 포함하는 로봇 에이전트들의 블록도이고; 및
도 20은 작업을 수행하고 있는 복수의 로봇 에이전트들을 조정하는, 컴퓨터 실행가능 프로그램 명령어들 및 컴퓨터에서 구현된 방법들의 실시 예들을 구현하도록 동작할 수 있는 범용 컴퓨터 시스템의 블록도이다.
특정 예시적 실시 예들에 따라서, 하나 이상의 공유 작업들을 수행하고 있는 복수의 장치들을 조정하는 것을 위해 컴퓨터에서 구현된 방법, 시스템, 및 컴퓨터 판독가능 저장 매체가 개시된다. 예시적 실시 예에 따라서, 복수의 장치들, 로봇 에이전트들, 또는 다른 에이전트들은 중앙 노드를 통해 그들의 동작을 조정함으로써라기 보다는 피어 투 피어(peer to peer) 통신을 이용해서 통신한다. 에이전트들 각각은 작업 상태에 대한 그 자신의 투표(vote) 및 하나 이상의 피어 에이전트들의 투표들을 포함하는 로컬 상황 정보를 유지한다. 에이전트가 작업 상태에 대한 그 자신의 투표를 갱신하거나 피어 에이전트들 중의 하나의 투표에서의 변경을 나타내는 메시지를 수신하는 경우에, 로컬 상황 정보가 갱신되고, 상황 메시지가 가장 최근의 상황 정보를 공유하기 위해 하나 이상의 피어 에이전트들로 보내진다.
예시적 일 실시 예에 따르면, 상황 정보의 버전들은 낙관적 복제(optimistic replication)를 이용해서 공유된다. 그래서, 상황 정보의 다수의 버전들이 공동 시간 프레임 동안 복수의 에이전트들 사이에서 순환되고 있을 수 있다. 수정(modification) 및 동기화(synchronization) 벡터들의 이용을 통하는 것과 같은 버전 제어(version control)는 상황 정보의 다수의 순환된 세트들 중에 어느 것이 가장 최근의 것인지를 결정하기 위해 이용될 수 있다.
특정 예시적 일 실시 예에 따르면, 에이전트들 각각은 공유된 또는 상호의존적인 작업들을 처리할지 말지 또는 어떻게 처리할지를 결정하기 위하여 에이전트들의 작업 상태에 대한 투표들의 합의(consensus)를 모니터한다. 각각의 에이전트는 다음 상태로 진행하기 전에 합의가 작업 상황에 대한 일치(agreement)를 나타낼 때까지 기다릴 수 있다. 예를 들어, 합의는 모든 에이전트들, 활성인 모든 에이전트들, 또는 미리 정해진(predetermined) 수의 에이전트들이 작업 상황에 대해서 동의할 때 작업 상황에 대한 일치를 나타낼 수 있다. 에이전트들은 또한 외부 제어 소스에 의해 전송된 제어 메시지들을 활성화하는 것, 중지시키는 것, 및 취소하는 것에 종속될 수 있다. 에이전트들 중 임의의 것의 상황에 있어서 실패는 공유된 또는 상호의존적인 작업들 중의 하나 이상의 실행을 종료시킬 수 있다.
도 1은 작업을 수행하고 있는 복수의 에이전트들을 조정하는 에이전트들에 의해 이용된 유한 상태 기계(100)의 블록도이다. 이 유한 상태 기계는 그 실행을 조정하고 모니터할 목적으로 작업의 라이프 사이클(life-cycle)을 나타낸다. 추가적인 도메인 특정(domain-specific) 데이터는 그것을 완전하게 정의하기 위하여 작업과 관련될 수 있다. 예를 들어, 추가적인 정보는 로봇 에이전트가 열고자 하는 문(door), 혹은 수행이 일어나는 최소 또는 최대 기간을 포함할 수 있다. 예시적 실시 예에 따르면, 공유 작업을 수행하는데 가담된 복수의 장치들 또는 복수의 에이전트들 각각은 공유 작업을 위한 유한 상태 기계(100)의 로컬 사본(local copy)을 유지해서 에이전트들 각각에 대한 일관된 상황 경로를 유지한다.
합의는 공유 작업에 참가하는 각각의 에이전트가 작업의 다음 상태에 대해 투표하도록 허용함으로써 유지된다. 이는 에이전트에 따라서 작업이 전이(transition) 되어야 하는 상태이다. 다음 상태에 대한 합의가 나타나면, 각각의 에이전트는 동시에 유한 상태 기계를 다음 상태로 전이시킨다. 에이전트는 피어 투 피어 통신을 통해서 다른 에이전트들과 자신의 투표를 공유한다. 이 투표는 이 에이전트에 의해 수신된 다른 참가 에이전트에 의해 행하여진 가장 최근 투표들 또한 포함하는 작업 상황 메시지에 포함된다. 버전 벡터와 같은 버저닝(versioning) 정보는 수신하는 에이전트들이 메시지의 내용과 그들이 현재 작업 상황을 합치는 것을 허용하는 상황 메시지에 포함된다. 상황 메시지를 수신한 후에, 각각의 에이전트는 투표들을 집계하는데, 즉 합의를 계산한다. 만일 합의가 새로운 상태로 전이하는 것이면, 에이전트는 그에 맞추어 자신의 유한 상태 기계 레플리카(replica)의 상태를 갱신한다. 동률 처리 규정(tie breaking rule)은 특정 상황에 대해 이하에서 정의된다. 작업에 참가하지 않는 에이전트들인 모니터링(monitoring) 에이전트들은 동일한 알고리즘을 수행하지만 투표를 하지는 않는다. 모니터링 에이전트들은 상황 메시지들을 중계(relay)하도록 동작할 수 있다. 특정 실시 예에 따르면, 모니터링 에이전트들은 상황 메시지가 더 최근의 상황 정보를 중계하는지 여부를 판단해서 갱신된 정보를 기존 상황 정보와 합칠 수 있다. 현재의 것이라고 판단된 상황 정보만을 전송함으로써 모니터링 에이전트들 및 다른 에이전트들은 다른 에이전트들이 오래된(out of date) 상황 메시지들을 처리해야 하는 것을 방지할 수 있다. 에이전트들이 어떻게 작업 상태에 대하여 투표하고, 상황 메시지들을 공유하고, 상이한 작업 상태들로 진행하기 위한 합의에 도달하는지의 예들이 도 4 내지 17을 참조하여 이하에서 설명된다.
유한 상태 기계(100)는 여섯 개의 정상 상태를 포함한다. 정상 상태는 공유 작업에 참가하는 에이전트들 각각이 작업을 수행하는 과정 중에 들어갈 수 있는 상태들을 포함한다. 여섯 개의 정상 상태는: 뉴(new) 상태(102), 디스패칭(dispatching) 상태(104), 준비(ready) 상태(106), 활성(active) 상태(108), 완료(complete) 상태(110), 중지(paused) 또는 중단(suspended) 상태(112), 및 취소(canceled) 상태(114)를 포함한다. 유한 상태 기계(100)는 또한 두 개의 에러 상태를 포함한다. 시스템 고장 또는 어떤 다른 조건이 하나 이상의 에이전트로 하여금 공유 작업에서 자신의 역할을 성공적으로 수행할 수 없도록 하는 때에 에이전트들은 에러 상태로 들어갈 수 있다. 두 개의 에러 상태는 생성 실패(creation failed) 상태(116) 및 실패(failed) 상태(118)를 포함한다.
뉴 상태(102)는 작업이 에이전트에서 생성될 때인 각각의 작업의 개시 상태를 나타낸다. 작업이 에이전트로 배부되면 에이전트는 자동으로 디스패칭 상태(104)로 들어간다. 특정 예시적 실시 예에 따르면, 유한 상태 기계(100)의 레플리카를 각각의 에이전트들에 배부함으로써, 작업은 작업을 구독(subscribe)하거나 작업에 참가하는 각각의 에이전트들에 배부된다. 에이전트가 특정 작업에 참가하지 않을 수 있을지라도, 그 에이전트는 에이전트들이 모니터하거나 수행할 일부 다른 작업에 대한 전제조건으로서 작업의 수행을 모니터할 수 있다.
공유 작업에 참가하는 에이전트들은 언제 다음 상태로 전이할 것인가에 대해 투표하기 때문에, 유한 상태 기계는 집합적 관점으로 설명된다. 준비 상태(106)는 참가 에이전트들이 작업에서 자신의 할당된 역할을 수행할 준비가 되었다는 것을 의미한다. 활성 상태(108)는 에이전트들이 작업에서 자신의 할당될 역할을 수행하는 과정 중에 있다는 것을 의미한다. 이하에서 더 설명되는 예시적 실시 예에 따르면, 공유 작업에 참가하는 미리 정해진 수량의 에이전트들 또는 모든 에이전트들이 투표하여 준비 상태(106)에 대한 합의에 도달한 때, 에이전트는 자동으로 준비 상태(106)로부터 활성 상태(108)로 진행할 수 있다. 하나 이상의 다른 에이전트에 의해서 수행될 전제조건 작업이 완료된 때, 에이전트는 준비 상태(106)로부터 활성 상태(108)로 진행할 것을 투표할 수도 있다. 이와 달리, 다른 예시적 실시 예에 따르면, 에이전트는 외부 제어 소스(external control source)(도 1에 도시되지 않음)로부터 신호를 수신하는 것에 대한 응답에 의해서만 준비 상태(106)로부터 활성 상태(108)로 진행할 것을 투표할 수 있다. 외부 제어 소스는 복수의 에이전트들의 합의를 기초로 하여 또는 외부 소스나 인간 제어 결정으로부터의 데이터와 같은 다른 조건을 기초로 하여 활성 상태(108)로의 전이에 대한 신호를 보낼 수 있다. 완료 상태(110)는 참가 에이전트들이 작업에서 자신을 역할을 완료하였다는 것을 나타낸다.
유한 상태 기계(100)의 정상 상태는 또한 중지 상태(112) 또는 취소 상태(114)를 포함할 수 있다. 중지 상태(112) 또는 취소 상태(114) 중의 어느 하나는 작업이 활성 상태(108)에 있을 때 외부 제어 소스에 의해서 개시될 수 있다. 예를 들어, 외부 제어 소스는 활성 상태(108)로부터 중지 상태(112)로 작업을 전이시키기 위하여 중지 신호를 보낼 수 있다. 특정 예시적 실시 예에 따르면, 중지 상태(112)로의 전이를 수행하기 위한 합의를 형성하기 위해 모든 참가 에이전트로부터 신호가 수신될 것이다. 외부 제어 소스는 또한 중지 상태(112)로부터 활성 상태(108)로 다시 전이시키기 위해 에이전트들이 투표하는 재개(resume) 신호를 보낼 수 있다. 이와 달리, 외부 제어 소스는 에이전트가 취소 상태(114)로 전이하는 것에 대해 투표하도록 초래하는 취소 신호를 보내어, 작업을 취소시킬 수 있다. 작업은 활성 상태(108) 또는 중지 상태(112) 중 어느 하나로부터 취소 상태(114)로 전이될 수 있다.
두 개의 에러 상태 중에 첫 번째는 생성 실패 상태(116)이다. 생성 실패 상태(116)는, 작업을 위한 유한 상태 기계(100)의 레플리카를 성공적으로 생성하는 것에 대한 또는 작업을 수행하는 데 이용될 추가적인 명령어들을 수신하는 것에 대한 에이전트의 불능(inability)을 나타낸다. 예시적 실시 예에 따르면, 에이전트들은 디스패칭 상태(104)로부터만 생성 실패 상태(116)로 전이하기 위한 투표를 한다. 두 개의 에러 상태 중에 두 번째는 실패 상태(118)이다. 에이전트는 에이전트가 작업에서 자신의 할당된 역할을 수행할 수 없을 때 실패 상태(118)로 전이하기 위한 투표를 할 수 있다. 예를 들어, 에이전트가 자신의 할당된 역할을 수행하는 것을 막는 임의의 상황을 직면했을 때 또는 에이전트가 극복할 수 없는 조건을 만난 것에 대해 응답하여, 하드웨어 또는 소프트웨어 고장의 결과로서 실패 상태(118)로 전이할 수 있다. 에이전트는 또한 작업을 수행하는데 관여된 다른 에이전트의 고장 시 실패 상태(118)로 전이할 수 있다. 예시적 실시 예에 따르면, 동률 처리 규정으로서, 고장 상태들에 대한 투표들은 보통 상태들에 대한 투표들보다 우선시되어 선택된 고장 상태로 합의하도록 한다. 이후에 더 설명하는 바와 같이, 피어 에이전트 또는 피어 장치가 고장이 났음을 나타내는 상황 정보를 수신하는 것이 에이전트에 의해 등록된 준비 상태(106) 또는 활성 상태(108) 또는 중지 상태(112)를 이길 수 있는데, 그래서 할당된 에이전트들 중의 하나가 작업의 그 일부를 수행하는 데 실패한 경우에 합의가 완료된 작업을 반영하지 않을 수 있다.
특정 예시적 실시 예에서, 공유 작업에 참가하는 각각의 에이전트는 공유 작업을 위한 유한 상태 기계(100)의 독립적 사본을 유지할 수 있다. 예를 들어, 에이전트는 다른 피어 에이전트들 또는 피어 장치들 중 어느 것의 상태와도 독립적으로 준비 상태(106)에 들어가기 위한 투표를 할 수 있다. 하지만, 에이전트가 특정 상태에서 작동할지 아닐지는 에이전트와 작업에 참가하는 다른 에이전트들의 합의에 의존할 수 있다. 달리 말해, 피어 에이전트들의 일부 또는 전부가 아직 의견일치를 보지 못하고 있고, 준비 상태(106)에 대한 투표를 전달했다고 할지라도 에이전트는 준비 상태(106)를 상정하기 위해 투표할 수 있다. 그래서, 에이전트가 준비 상태(106)를 상정하기 위해 투표할지라도, 참가 에이전트들의 합의는 준비 상태(106)가 아닐 수 있고, 에이전트와 피어 에이전트들 어느 것도 에이전트들이 준비 상태(106)에 대해 동의한 것처럼 동작하지는 않을 것이다.
도 2는 에이전트의 상태에서의 변경 또는 다른 에이전트의 상태의 변경에 대해 응답하여 에이전트가 지역적으로 유지되는 합의 및 상황 정보를 갱신하는 방법(200)의 특정 실시 예에 대한 흐름도이다. 에이전트는 복수의 에이전트들 중의 하나이다. 에이전트는 로컬 에이전트로부터의 투표들 및 공유 작업에 참가하는 모든 다른 에이전트들로부터의 투표들을 포함하는 상황 정보를 유지한다. 에이전트는 언제 다음 작업 상태로 전이할 것인지를 판단하기 위해 공유 작업에 참가하는 에이전트들의 합의를 판단하기 위하여 상황 정보를 이용한다. 에이전트가 새로운 작업 상태로 이동하기 위해 그 투표를 변경할 때(예컨대, 작업이 완료된 때, 에이전트는 도 1을 참조로 설명된 바와 같이 활성에서 완료로 그 투표를 변경할 것이다), 에이전트는 합의를 판단하기 위해 유지하고 있는 로컬 상황 정보를 갱신한다. 이와 달리, 로컬 상황 정보에서 반영된 것이 아닌, 하나 이상의 다른 에이전트들에 대한 상이한 투표를 보고하는 다른 에이전트로부터 상황 정보를 받을 때, 에이전트는 로컬 상황 정보를 갱신한다. 로컬 상황 정보가 변할 때, 에이전트는 갱신된 로컬 상황 정보를 전송 또는 브로드캐스트(broadcast)한다.
방법(200)은 작업 유한 상태 기계(100)(도 1)에서 현재 상태와 같은 현재 상태(202)에서 에이전트와 함께 시작한다. 에이전트가 204에서 그 자신의 투표를 변경하는지 여부가 판단된다. 그렇지 않다면, 방법(200)은 로컬 에이전트의 투표에서의 변경에 대해서 모니터를 계속하는 202로 돌아간다. 반면에, 204에서, 에이전트가 그 투표를 변경하는 것으로 판단된다면, 에이전트는 210에서 로컬 상황 정보를 갱신한다. 병행하여, 현재 상태(202)로부터, 에이전트가 206에서 다른 에이전트로부터 상황 메시지를 수신하는지 여부가 판단된다. 그렇지 않다면, 방법(200)은 로컬 에이전트의 투표에서의 변경에 대해서 또는 다른 에이전트로부터의 상황 메시지의 수신에 대해서 모니터를 계속하는 202로 돌아간다. 반면에, 에이전트가 206에서 다른 에이전트로부터 상황 메시지를 수신한 것으로 판단되면, 에이전트는 208에서 상황 메시지에서 나타난 에이전트들 중의 어느 것의 투표가 로컬 상황 정보에서 나타난 투표들로부터 변경되었는지를 판단한다. 그렇지 않다면, 방법(200)은 로컬 에이전트의 투표에서의 변경에 대하여 또는 다른 에이전트로부터의 상황 메시지의 수신에 대하여 모니터를 계속하는 202로 돌아간다. 반면에, 208에서 에이전트들 중의 어느 것의 투표가 변경되었다고 판단되면, 에이전트는 210에서 로컬 상황 정보를 갱신한다. 버전 벡터의 이용 또는 다른 프로세스를 통한 버저닝 제어(versioning control)는 수신된 상황 메시지에서 나타난 상황 정보가 최근의 것인지 또는 적어도 에이전트에 의해 유지되는 상황 정보보다 더 최근의 것인지를 판단하기 위해서 사용될 수 있다.
변경된 투표 또는 투표들을 나타내는 로컬 상황 정보를 201에서 갱신한 후에, 에이전트는 갱신된 상황 정보를 브로드캐스트하기 위해서 상황 메시지를 212에서 전송한다. 에이전트는 갱신된 상황 정보의 결과로서 새로운 합의에 도달되었는지 여부를 214에서 결정한다. 만일 어떠한 새로운 합의에도 도달되지 않았다면, 방법은 로컬 상황 정보를 변경할 수 있는 투표들에서의 변경에 대해서 모니터하기 위하여 현재 상태(202)로 돌아간다. 반면에, 214에서 새로운 합의에 도달되었다고 판단되면, 에이전트는 216에서 작업 유한 상태 기계(100)(도 1)에 의해 나타난 다음 상태와 같은 새로운 상태로 전이시킨다. 방법은 투표에서의 변경에 대해서 모니터하기 위하여 현재 상태(202)로 다시 돌아간다. 예를 들어, 제2 상황 메시지가 다른 에이전트로부터 수신될 수 있는데, 여기서 제2 상황 메시지는 작업 상태에 대한 투표가 변경되었다는 것을 나타낸다. 그러면, 로컬 상황 정보는 210에서 다시 갱신되고, 212에서 다시 전송될 것이다.
투표를 변경하는 것, 상황 정보를 공유하는 것, 및 새로운 합의에 도달되었는지 판단하는 것에 대한 예들이 도 4 내지 17의 블록도에서 도시되고, 이들은 공유된 또는 상호의존적인 작업들을 수행하는 복수의 에이전트들의 예들을 묘사한다. 작업들은 도 3을 참조로 하여 설명된 공유 계획의 일부이다.
도 3은 작업을 수행하고 있는 복수의 에이전트들을 조정하는 예시적 실시 예에 따라서 복수의 에이전트들이 복수의 공유 작업들을 포함하는 작업들을 수행하는 공유 계획(300)의 블록도이다. 공유 계획(300)은 복수의 작업들을 포함한다. 공유 계획(300)에서 작업들의 일부의 실행은 도 4 내지 17을 참조하여 설명된다. 공유 계획(300)은 방들 중의 하나로부터 다른 방으로 물체(object)를 이동시키기 위해 복수의 에이전트들을 이용하는 일련의 작업들을 도시한다. 설명을 위한 목적으로, 두 개의 다른 에이전트들, 에이전트 B 및 에이전트 C가 두 방 사이에서 물체를 방 X에서 방 Y로 이동시키는 동안 에이전트 A에게는 문을 작동시키는 작업이 주어질 것이다. 물체가 이동된 후, 에이전트 A는 문을 닫고, 공유 계획(300)은 완료된다.
공유 계획(300)을 실행하기 위해서, 작업들의 일부는 문으로 이동하는 작업(304) 및 주차하러 돌아가는 작업(332)을 포함하고, 공유 계획(300)에 가담된 모든 에이전트들에 의해서 수행될 수 있다. 문을 여는 작업(312) 및 문을 닫는 작업(314)과 같은 다른 작업들은 하나의 에이전트에 의해서만 수행될 수 있다. 이들은 다른 에이전트들이 참가할 공동 또는 공유 작업들이 아닌 개별적인 단독 작업들이다. 그럼에도, 다른 에이전트들은 다른 에이전트들에 할당된 개별적인 작업들의 수행을 모니터할 수 있다. 예를 들어, 방에서 방으로 물체를 이동시키는 작업이 주어진 에이전트들은 문이 열린 때에 대한 정보를 받기 위해서 문을 작동시키는 개별적인 작업 또는 작업들을 구독할 수 있다.
도 4 내지 17의 예에서, 물체를 이동시키는데 관여된 작업들은 공유 작업들이다. 다시 말해, 에이전트 B(414) 및 에이전트 C(416)를 포함하는 복수의 에이전트들이 가담될 것이고, 협력하여 작동할 것이다. 에이전트들은 그들의 작업들을 성공적으로 수행하기 위해서 공유된 상황에 대해서 동의할 수 있다. 물체를 이동시키는 에이전트들에 의해서 수행될 작업들은 문을 작동시키는 에이전트, 즉 에이전트 A(412)에 의해서도 구독되어, 에이전트 A(412)가 문을 닫을 때에 대한 정보를 받을 것이다.
도 3을 참조하면, 시작 작업(302) 후에, 에이전트들 모두는 공유된 문을 여는 작업(304)의 일부로서 문 옆의 개시 위치로 이동할 것이다. 제1 에이전트(또는 만일 작업이 하나 이상의 에이전트를 요한다면 복수의 제1 에이전트들)는 문을 여는 작업(312)을 수행한다. 일단 문이 제1 에이전트에 의해서 열리면, 복수의 제2 에이전트들은 다수의 공유 작업들을 수행한다. 공유 작업들은 물체로 이동하는 작업(322), 물체를 잡는 작업(324), 방 Y로 이동하는 작업(326), 및 물체를 놓는 작업(328)을 포함한다. 복수의 제2 에이전트들이 공유 작업들(322-328)을 완료하였다고 제1 에이전트가 판단하면, 제1 에이전트는 문을 닫는 작업(314)을 수행한다. 그리고, 모든 에이전트들은 주차하러 돌아가는 작업(332) 및 종료 작업(334)이라는 공유 작업들을 수행한다.
도 4 내지 17은 작업을 수행하고 있는 복수의 장치들을 조정하는 예시적 실시 예들에 따라서 복수의 공유(shared) 및 비공유(unshared) 작업들을 수행하는 복수의 에이전트들의 블록도들이다. 공유 및 비공유 작업들의 수행은 도 3의 공유 계획(300)을 참조하여 설명된 공유 및 비공유 작업들의 일부를 수행하는 것을 포함한다. 도 4 내지 17의 예들에서, 도 4에서 도시된 바와 같이 공유 계획이 개시될 때, 에이전트 A(412), 에이전트 B(414), 및 에이전트 C(416) 모두는 방 Y(406)에서 주차(parking) 영역(418)에 위치한다. 물체(402)는 X(404)에 위치한다. 방 X(404) 및 방 Y(406) 사이의 문(408)은 에이전트 B(414) 및 에이전트 C(416)가 방 X(404)로부터 방 Y(406)로 물체(402)를 이동시킬 수 있도록 하기 위하여 (예컨대, 도 3에서 도시된 바와 같이 문을 여는 작업(312)에서) 에이전트 A(412)에 의해 열릴 것이다. 작업들을 수행하는 동안의 시점들에서, 외부 제어 소스(420)는 일부 작업들의 부분들의 수행을 개시하거나 멈추게 하기 위해서 에이전트 A(412), 에이전트 B(414), 및 에이전트 C(416)에 메시지를 보낼 수 있다.
도 4는 시간 T=0(422)에서, 에이전트 A(412), 에이전트 B(414), 및 에이전트 C(416)의 개시 상태를 도시한다. 시간 T=0(422)에서 에이전트 A(412), 에이전트 B(414), 및 에이전트 C(416) 각각은 "뉴(new)" 상태로 들어간다. 뉴 상태에서부터 시작해서, 각각의 에이전트들은 문(408)으로 이동하는 공유 작업에서 할당된 역할을 수행한다. 도 4는 공유 계획을 수행하는 데 있어서, 에이전트 A(412), 에이전트 B(414), 및 에이전트 C(416) 각각에 의해서 유지되는 상황 정보(430, 440, 및 450)를 각각 도시한다. 에이전트 A 상황 정보(430)는 에이전트 A의 투표(432), 에이전트 B의 투표(434), 에이전트 C의 투표(436), 및 합의(438)를 포함한다. 합의(438)는 에이전트 A의 투표(432), 에이전트 B의 투표(434), 및 에이전트 C의 투표(436)로부터 에이전트 A(412)에 의해서 얻어진다. 에이전트들(412-416) 각각의 투표는 에이전트들(412-416) 각각에 의해서 유지되는 상황 정보(430, 440, 450)를 기초로 하여 에이전트들 각각의 의해서 판단된 합의를 각각 나타낸다. 특정 예시적 실시 예에서, 합의(438)는 에이전트들(412, 414, 및 416)의 상태의 만장일치 합의를 나타낼 수 있다. 합의의 다른 형태가 도 5를 참조하여 이하에서 설명된다.
에이전트 A(412)에 대한 합의(438)는 에이전트 A 상황 정보(430)에 포함된 에이전트 A의 투표(432), 에이전트 B의 투표(434), 및 에이전트 C의 투표(436)를 기초로 하여 지역적으로 판단된다. 에이전트 B(414) 및 에이전트 C(416)는 공유 계획에 참가하는 에이전트들(412-416)에 대한 로컬 상황 정보를 유사하게 유지한다. 예를 들어, 에이전트 B 상황 정보(440)는 에이전트 A의 투표(442), 에이전트 B의 투표(444), 에이전트 C의 투표(446), 및 에이전트 B 상황 정보(440)에 포함된 모든 에이전트들(412-416)의 상태에 대한 가장 마지막 동의를 나타내는 합의(448)를 포함한다. 에이전트 C 상황 정보(450)는 에이전트 A의 투표(452), 에이전트 B의 투표(454), 에이전트 C의 투표(456), 및 에이전트 C 상황 정보(450)에 포함된 모든 에이전트들(412-416)의 상태에 대한 가장 마지막 동의를 나타내는 합의(458)를 포함할 수 있다.
예시적 실시 예에 따르면, 각각의 에이전트들(412-416)에 의해서 유지되는 상황 정보(430, 440, 450)는 상황 정보(430, 440, 450)가 변경될 때마다 피어 투 피어 통신을 이용해서 다른 에이전트들(412-416)로 전송된다. 에이전트들(412-416) 중의 하나가 그 자신의 상태를 갱신하면, 에이전트는 그 상황 정보를 갱신하고 그 상황 정보를 다른 에이전트들(412-416)로 전송한다. 또한, 에이전트들(412-416) 중의 하나가 하나 이상의 에이전트들(412-416)의 상황을 변경하는 에이전트들(412-416) 중의 다른 하나로부터 상황 정보를 수신하면, 에이전트는 그 상황 정보를 갱신하고 그 갱신된 상황 정보를 다른 에이전트들(412-416)로 중계하는 상황 메시지를 전송한다. 이하에서 더 설명되는 바와 같이, 상황 정보(430, 440, 450)의 상이한 세트들을 운반하는 복수의 상황 메시지들은 낙관적 복제를 이용해서 한 번에 전송될 수 있다. 상황 정보(430, 440, 450)의 일부는 더 최근의 것일 수 있고, 다른 정보보다 더 최근에 발급될 수 있다. 각각의 에이전트들(412-416)이 현재 상황 정보를 식별하고 반응하는 것을 보장하기 위하여, 동기화 및 수정 벡터들 또는 다른 유형의 버저닝 제어가 이용될 수 있다.
도 4에서, 다른 에이전트들(412-416)에 전달된 바와 같이 각각의 에이전트들의 투표는 "뉴(new)" 상태이다. 예를 들어, 에이전트 A 상황 정보(430)는 에이전트 A의 투표(432)가 뉴(new)이고, 에이전트 B의 투표(434)가 뉴(new)이고, 에이전트 C의 투표(436)가 뉴(new)라는 것을 도시한다. 모든 에이전트들(412-416)이 뉴(new) 상태에 동의하기 때문에, 합의(438) 또한 뉴(new) 상태이다. 유사하게, 에이전트 B 상황 정보(440)는 에이전트 A의 투표(442)가 뉴(new)이고, 에이전트 B의 투표(444)가 뉴(new)이고, 에이전트 C의 투표(446)가 뉴(new)이고, 그래서 합의(448)가 뉴(new)라는 것을 도시한다. 에이전트 C 상황 정보(450)는 에이전트 A의 투표(452)가 뉴(new)이고, 에이전트 B의 투표(454)가 뉴(new)이고, 에이전트 C의 투표(446)가 뉴(new)이고, 그래서, 합의(458)가 뉴(new) 상태라는 것을 도시한다.
도 5는 시간 T=1(522)에서 각각의 에이전트들(412-416)을 도시하는 블록도이다. 시간 T=1(522)에서, 작업을 나타내는 유한 상태 기계(502)의 레플리카들은 외부 제어 소스(420)로부터 각각의 에이전트들로 디스패치(dispatch)된다. 각각의 에이전트들(412-416)은 작업의 수행 동안 에이전트들(412-416)의 전이를 안내하는 유한 상태 기계(502)의 사본을 수신한다. 에이전트 A 상황 정보(430)는 에이전트 A의 투표(532)를 디스패칭(dispatching)으로서, 에이전트 B의 투표(534)를 디스패칭(dispatching)으로서, 그리고 에이전트 C의 투표(536)를 디스패칭(dispatching)으로서 도시한다. 모든 에이전트들의 투표는 에이전트 A 상황 정보(430)에서 일치하고, 그래서 에이전트 A 상황 정보(430)와 관련된 합의(538)는 시간 T=1(522)에 디스패칭(dispatching)으로 갱신된다. 유사하게, 에이전트 B 상황 정보(440)는 에이전트 A의 투표(542)를 디스패칭(dispatching)으로서, 에이전트 B의 투표(544)를 디스패칭(dispatching)으로서, 그리고 에이전트 C의 투표(546)를 디스패칭(dispatching)으로서 도시한다. 에이전트 B 상황 정보(440)의 합의(548)는 또한 시간 T=1(522)에 디스패칭(dispatching)으로 갱신된다. 에이전트 C 상황 정보(450)의 합의(558) 또한 시간 T=1(522)에서 디스패칭(dispatching)으로 갱신된다.
특정 예시적 실시 예에서, 상황 정보(430, 440, 및 450)에서 모든 에이전트들(412-416)의 투표가 시간 T=1(522)에서 디스패칭(dispatching)으로 도시되기 때문에 합의(538, 548, 558)가 디스패칭(dispatching)으로 갱신되었다. 하지만, 다른 특정 예시적 실시 예에서, 합의(538, 548, 558)는 만장일치 합의를 달성하지 않고서도 갱신될 수 있다. 차라리, 합의는 미리 정해진 수(number) 또는 미리 정해진 비율(portion)의 에이전트들(412-416)이 갱신된 상태를 보고할 때 합의가 갱신될 수 있다. 나아가, 이와 달리, 미리 정해진 수의 활성 에이전트들(412-416), 미리 정해진 비율의 활성 에이전트들(412-416), 또는 활성 에이전트들(412-416) 모두가 갱신된 상태를 보고할 때 합의가 갱신될 수 있다. 에이전트들(412-416)이 활성이라는 것을 통신하기 위해 에이전트들(412-416)이 주기적인 "하트비트(heartbeat)"를 전송하도록 프로그램함으로써 에이전트들(412-416)이 활성인지와 기능하고 있는지 여부가 판단될 수 있다. 에이전트들(412-416) 중의 하나가 하나 이상의 하트비트 신호들을 전송하는 것에 실패하면, 보고에 실패한 에이전트(412-416)의 상태가 비활성(inactive)으로 변경될 수 있고, 실패한 에이전트는 그 투표권을 상실한다.
특정 실시 예에서, 뉴(new)에서 디스패칭(dispatching)으로의 전이가 자동으로 일어날 수 있다. 특정 실시 예에서, 에이전트는 디스패칭 단계를 완료할 것이고, 그 상황을 보고하기 전에 그 상태를 평가하기 위해서 상태 기계를 수신할 것이다. 하지만, 에이전트들의 작업 상태의 합의를 기초로 한 작업 상태의 과정을 도시하기 위해서, 도 4 내지 8의 예는 합의 도달을 기초로 하여 디스패칭 상태로 전이하는 에이전트들(412-416)을 도시한다.
예를 들어, 에이전트들(412-416) 중의 두 개와 같이 미리 정해진 수의 에이전트들의 상태가 갱신될 때 합의가 갱신될 수 있다. 유사하게, 에이전트들(412-416)의 과반수(majority) 또는 2/3과 같이 미리 정해진 비율의 에이전트들(412-416)의 상태가 갱신될 때 합의가 갱신될 수 있다. 상황 정보(430, 440, 450)에서 도시된 바와 같이, 시간 T=1'(522')에서, 에이전트 A 투표(432, 442, 452)는 디스패칭(dispatching)으로 갱신되지 않았고, 뉴(new)로서 보고된다. 에이전트 B 투표(444, 454, 464) 및 에이전트 C 투표(446, 456, 466)는 디스패칭(dispatching)으로 갱신된 채로 남아있다. 모든 에이전트들(412-416)의 상태가 디스패칭으로 보고된 것은 아니기 때문에, 에이전트들(412-416)의 만장일치 합의는 디스패칭으로 존재할 수 없다. 하지만, 에이전트들(412-416) 중의 2개와 같이 미리 정해진 수의 에이전트들(412-416)이 갱신된 상태를 보고할 때 합의(538', 548', 558')가 갱신될 수 있도록 에이전트들(412-416)이 구성될 수 있다. 그래서, 시간 T'=422'에서, 에이전트 B 투표(534, 544, 554) 및 에이전트 C 투표(536, 546, 556)를 포함하는 두 개의 에이전트들의 상태가 디스패칭으로 보고되었기 때문에, 합의(538', 548', 558')가 디스패칭으로 갱신될 수 있다. 에이전트 A 투표(432, 442, 및 452)가 갱신되지 않았더라고, 합의(538', 548', 558')는 갱신된다.
유사하게, 에이전트들(412-416)의 과반수 또는 에이전트들(412-416)의 2/3와 같이 미리 정해진 비율의 에이전트들(412-416)이 갱신된 상태를 보고할 때 합의(538', 548', 558')가 갱신될 수 있도록 에이전트들(412-416)이 구성될 수 있다. 그래서, 시간 T'=422'에서 에이전트 B 투표(534, 544, 554) 및 에이전트 C 투표(536, 546, 556)의 과반수(또는 2/3)가 디스패칭으로 보고되었기 때문에 합의(538', 548', 558')는 디스패칭으로 갱신될 수 있다. 에이전트 A 투표(432, 442, 및 452)가 갱신되지 않았더라고, 합의(538', 548', 558')는 갱신된다.
다른 예를 위해, 시간 T=1''(522'')에서, 미리 정해진 수의 기간 또는 미리 정해진 길이의 시간 동안 하트비트 신호를 등록하는 것에 실패했기 때문에 에이전트 A(412)는 비활성으로 되거나 비활성으로 분류되었다. 결과적으로, 시간 T=1''(522'')에서 에이전트 A(412)에 대해 어떠한 상황 정보도 보고되지 않는다. 그렇더라도, 에이전트 B(414) 및 에이전트 C(416)는 모든 에이전트들(412-416)이 보고하고 있지 않을 때조차 합의(548'', 558'')가 갱신되는 것을 허용하도록 구성될 수 있다. (하트비트 또는 상태를 등록하기 위한 에이전트 A(412)의 고장은 도 5에서 에이전트 A 투표(542'', 552'')에 대해 제공된 "X"에 의하여 표시된다.)
시간 T=1''(522'')에서, 에이전트 B 투표(544, 554) 및 에이전트 C 투표(546, 556)는 디스패칭으로 보고된다. 결과적으로, 활성인 에이전트들(412-416) 모두가 갱신되었을 때 에이전트 B(414) 및 에이전트 C(416)가 합의(548'', 558'')를 갱신하도록 구성된다면 합의(548'', 558'')는 디스패칭으로 갱신될 수 있다. 이와 달리, 미리 정해진 수의 에이전트들(412-416)이 갱신되었을 때 에이전트 B(414) 및 에이전트 C(416)가 합의(548'', 558'')를 디스패칭으로 갱신하도록 구성될 수 있다. 예를 들어, 에이전트들(412-416) 중에서 적어도 2개가 갱신되었을 때 또는 활성인 에이전트들(412-416) 중에서 적어도 2개가 갱신되었을 때 합의(548'', 558'')를 갱신하도록 에이전트 B(414) 및 에이전트 C(416)가 구성된 경우에, 합의(548'', 558'')는 시간 T=1(522'')에서 디스패칭으로 갱신될 수 있다. 이와 달리, 미리 정해진 비율의 에이전트들(412-416)이 갱신되었을 때 합의(548'', 558'')를 갱신하도록 에이전트 B(414) 및 에이전트 C(416)가 구성된 경우에, 합의(548'', 558'')는 시간 T=1''(522'')에서 디스패칭으로 갱신될 수 있다. 예를 들어, 에이전트들(412-416)의 과반수가 갱신되었을 때 또는 활성인 에이전트들(412-416)의 과반수가 갱신되었을 때 합의(548'' 및 558'')는 시간 T=1''(522'')에서 갱신될 수 있다. 이와 달리, 에이전트들(412-416)의 2/3가 갱신되었거나 활성인 에이전트들(412-416)의 2/3가 갱신되었을 때 합의(548'' 및 558'')는 또한 시간 T=1''(522'')에서 갱신될 수 있다.
그래서, 특정 예시적 실시 예들은 에이전트들(412-416)의 상태들의 만장일치 합의보다 적을 때 에이전트들(412-416)의 합의를 갱신할 수 있다. 하지만, 도 4 내지 17의 예들의 목적을 위해서, 에이전트들(412-416)은 에이전트들(412-416)의 상태의 만장일치 합의를 확인한 때에만 합의를 갱신하는 것으로 가정된다.
도 6은 시간 T=2(622)에서 각각의 에이전트들(412-416)을 도시하는 블록도인데, 이때 에이전트 A 투표(532, 542, 552) 및 에이전트 B 투표(434, 444, 454)가 디스패칭(dispatching)으로부터 갱신되고 있지 않은 동안 에이전트 C 투표(636, 646, 656)가 준비(ready)로 갱신된다. 에이전트 C(416)는 에이전트 C 상황 정보(450)의 에이전트 C 투표(558)를 준비(ready)로 갱신한다. 에이전트 C 상황 정보(450)를 갱신함으로써, 에이전트 C(416)는 에이전트 A(412) 및 에이전트 B(414)에 에이전트 C 상황 정보(450)를 전달하기 위한 상황 메시지를 전송한다. 하지만, 에이전트 C 투표(636, 646, 656)가 에이전트 상황 정보(430, 440, 450)에서 준비(ready)로 갱신되었을지라도, 에이전트 A 투표(532, 542, 552)는 디스패칭(dispatching)으로 남아있고, 에이전트 B 투표(534, 544, 554)가 디스패칭(dispatching)으로 남아있다. 에이전트들(412-416)의 상태들의 만장일치 합의를 발견한 때에만 합의를 갱신하도록 에이전트들(412-416)이 구성되었기 때문에, 합의(538, 548, 558)는 디스패칭(dispatching)으로 남아 있다.
도 7은 시간 T=3(722)에서 각각의 에이전트들(412-416)을 도시하는 블록도인데, 이때 에이전트 A(412) 및 에이전트 B(414)가 준비 상태에 도달하였다. 에이전트 A(412) 및 에이전트 B(414)는 다른 에이전트들로부터 수신된 각각의 상황 정보를 가지지만, 에이전트 C(416)는 아직 에이전트 A(412)에 관한 갱신된 상황 정보를 수신하지 못하였다. 에이전트 A 상황 정보(430)에서, 에이전트 A 투표(732)는 준비(ready)로 갱신된다. 에이전트 A(412)는 이전에 에이전트 C 투표(636)를 준비(ready)로 갱신했다. 에이전트 A 상황 정보(430)는 시간 T=3(722)에서 모든 에이전트들(412-416)이 준비 상태를 위해 투표하였다는 것을 나타내기 때문에, 합의(738)는 준비(ready)로 갱신된다. 유사하게, 에이전트 B 상황 정보(440)에서, 에이전트 A 투표(742)가 준비(ready)로 갱신되고, 에이전트 B 투표(744)가 준비(ready)로 갱신되고, 반면에 에이전트 C 투표(646)는 이전에 준비(ready)로 갱신되었다. 에이전트 B 상황 정보(430)는 모든 에이전트들(412-416)이 현재 준비 상태를 위해 투표하여 준비 상태에 동의한다는 것을 나타내기 때문에, 합의(748)는 준비(ready)로 갱신된다.
에이전트 C(416)는 에이전트 A(412)의 투표를 준비 상태로 갱신하는 상황 정보를 운반하는 상황 메시지를 아직 수신하지 못하였다. 그래서, 에이전트 C 상황 정보(450)는 에이전트 A 투표(652)가 디스패칭(dispatching)이라고 계속해서 보이고 있다. 에이전트 B 투표(754)가 준비(ready)로 갱신되었고, 에이전트 C 투표(656)가 이전에 준비(ready)로 갱신되었지만, 에이전트 C 상황 정보(450)를 위한 합의(658)는 디스패칭(dispatching)으로 남아 있다.
도 8은 시간 T=4(822)에서 각각의 에이전트들(412-416)을 도시하는 블록도인데, 이때 에이전트 C가 에이전트 A(412)로부터 갱신된 상황 정보를 갖고 있는 상황 메시지를 수신하였다. 에이전트 C(416)는 에이전트 A(412)로부터 에이전트 A 상황 정보(430)의 전송을 수신하거나 에이전트 B(414)로부터 에이전트 B 상황 정보(440)를 운반하는 상황 메시지를 수신함으로써 에이전트 A(412)의 갱신된 상황 정보를 수신할 수 있는데, 둘 다 시간 T=3(722)에서 에이전트 A(412)가 준비 상태에 도달했었다는 것을 보였다. 에이전트 A 상황 정보(430) 및 에이전트 B 상황 정보(440)가 시간 T=3(722)에서 최근의 것이었기 때문에, 에이전트 A 상황 정보(430)나 에이전트 B 상황 정보(440)에 어떠한 변경도 가해지지 않는다. 또한, 에이전트 A 상황 정보(430) 및 에이전트 B 상황 정보가 시간 T=3(722)에서 최근의 것이었기 때문에, 에이전트 A 상황 정보(430)의 합의(738) 및 에이전트 B 상황 정보(440)의 합의(748)는 변하지 않고 남아 있다. 하지만, 에이전트 C 상황 정보(450)는 에이전트 A 투표(852)가 준비(ready)로 보이도록 갱신된다. 유사하게, 에이전트 C 상황 정보(450)는 모든 에이전트들(412-416)이 준비 상태에 동의한다는 것을 나타내기 때문에, 합의(858)는 준비(ready)로 갱신된다.
도 9는 시간 T=5(922)에서 각각의 에이전트들(412-416)을 도시하는 블록도이다. 시간 T=5(922)에서, 모든 에이전트들(412-416)은 준비 상태를 보고하였고, 외부 제어 소스(420)는 에이전트들(412-416)로 활성화 신호(970)를 보냈다. 예시적 실시 예에 따르면, 각각의 에이전트들(412-416)에 의해 유지되는 상황 정보의 합의(430, 440, 450)에 의하여 결정된 바와 같이, 일단 모든 에이전트들(412-416)이 준비 상태에 도달해서 준비 상태를 위해서 투표했으면, 에이전트들(412-416)은 자동으로 활성(active) 상태로 갱신하고 할당된 역할을 수행하는데 관계를 맺는다. 다른 예시적 실시 예에 따르면, 도 9에서 도시된 바와 같이, 에이전트들(412-416)의 활성 상태로의 전이는 외부 제어 소스(420)에 의해 유발된다. 에이전트들(412-416)처럼, 외부 제어 소스(420)는 에이전트들(412-416)이 활성 상태로 갱신하기 전에 준비 상태에 동의하였다는 합의에 에이전트들(412-416)이 도달한 때를 식별하기 위하여 에이전트들(412-416)에 의하여 전송된 상황 정보를 모니터할 수 있다.
시간 T=5(922)에서, 외부 제어 소스(420)로부터 활성화 신호(970)를 수신하는 것에 반응하여, 각각의 에이전트들(412-416)은 그 자신의 상태를 활성 상태로 갱신한다. 그래서, 에이전트 A 상황 정보(430)는 에이전트 A 투표(932)가 활성(active)으로 보이도록 갱신되고, 에이전트 B 상황 정보(440)는 에이전트 B 투표(944)가 활성(active)으로 보이도록 갱신되고, 에이전트 C 상황 정보(450)는 에이전트 C 투표(956)가 활성(active)으로 보이도록 갱신된다. 그 자신의 상태를 변경하는 것에 반응하여, 각각의 에이전트들(412-416)은 에이전트들(412-416) 중의 다른 것들이 지역적으로 유지되는 상황 정보(430, 440, 450)를 갱신할 수 있도록 하기 위해서 자신의 상황 정보를 전송한다. 그래서, 에이전트 B(414) 및 에이전트 C(416)로부터 갱신된 상황 정보를 수신한 후에, 에이전트 A 상황 정보(430)는 에이전트 B 투표(934)를 활성(active)으로 갱신하고, 에이전트 C 투표(936)를 활성(active)으로 갱신한다. 에이전트 A 상황 정보(430)에 따라서 모든 에이전트들(412-416)의 투표들이 일치하기 때문에, 합의(938)는 활성(active)으로 갱신된다. 그래서, 에이전트 A(412)는 그 제1 작업: 문(408)으로 이동하는 것을 수행하기 시작한다.
에이전트 A(412) 및 에이전트 C(416)로부터 갱신된 상황 정보를 수신한 후에, 에이전트 B 상황 정보(440)는 에이전트 A 투표(942)를 활성(active)으로 갱신하고, 에이전트 C 투표(946)를 활성(active)으로 갱신한다. 모든 에이전트들의 투표들이 일치하기 때문에, 에이전트 B 상황 정보(440)를 위한 합의(948)는 활성(active)으로 갱신된다. 그리고, 에이전트 B(414)는 문(408)으로 이동하는 작업을 수행하기 시작한다. 에이전트 A(412) 및 에이전트 B(414)로부터 갱신된 상황 정보를 수신한 후에, 에이전트 C 상황 정보(450)는 에이전트 A 투표(952)를 활성(active)으로 갱신하고, 에이전트 B 투표(954)를 활성(active)으로 갱신한다. 모든 에이전트들(412-416)의 투표들이 일치하기 때문에, 에이전트 C 상황 정보(440)를 위한 합의(958)는 활성(active)으로 갱신된다. 그리고, 에이전트 C(416)는 문(408)으로 이동하는 작업을 수행하기 시작한다.
도 10은 시간 T=6(1022)에서 각각의 에이전트들(412-416)을 도시하는 블록도이다. 시간 T=6(1022)에서, 에이전트 A(412)는 작업에서 그 역할을 완료하였고, 문(408)에 도달하였다. 그래서, 에이전트 A 상황 정보(430)는 에이전트 A 투표(1032)가 완료(complete)로 보이도록 갱신되고, 갱신된 에이전트 A 상황 정보(430)는 다른 에이전트들(414, 416)로 전송된다. 에이전트 B(414) 및 에이전트 C(416)는 아직 작업에서 그들의 역할을 완료하지 못하였고, 그래서 각각은 여전히 활성(active)이다. 그래서, 에이전트 A 상황 정보(430)는 에이전트 B 투표(934)가 활성(active)이고 에이전트 C 투표(936)가 활성(active)인 것을 나타낸다. 에이전트 A 상황 정보(430)를 위한 합의(938)는 활성(active)으로서 계속된다.
유사하게, 에이전트 B 상황 정보(440)는 에이전트 A 투표(1042)가 완료(complete)로 보이도록 갱신되지만, 에이전트 B 투표(944)는 활성(active)으로 나타나고, 에이전트 C 투표(946)는 활성(active)으로 나타난다. 에이전트 B 상황 정보(440)를 위한 합의(948)는 활성(active)으로 남아 있다. 에이전트 C 상황 정보(450)는 에이전트 A 투표(1052)가 완료(complete)로 보이도록 갱신되고, 에이전트 B 투표(954)는 활성(active)으로 나타나고, 에이전트 C 투표(956)는 활성(active)으로 나타난다. 에이전트 C 상황 정보(450)를 위한 합의(958)는 활성(active)으로 남아 있다.
도 11은 시간 T=7(1122)에서 각각의 에이전트들(412-416)을 나타내는 블록도이다. 시간 T=7(1122)에서, 에이전트 B(414) 및 에이전트 C(416)는, 에이전트 A(412)처럼, 작업에서 그들의 역할을 완료하였고, 문(408)에 도달하였다. 그래서, 에이전트 B 상황 정보(440)는 에이전트 B 투표(1144)가 완료(complete)로 보이도록 갱신되고, 에이전트 B 상황 정보(440)가 다른 에이전트들(412, 416)로 전송된다. 에이전트 C 상황 정보(450) 또한 에이전트 C 투표(1156)가 완료(complete)로 보이도록 갱신되고, 에이전트 C 상황 정보(450)가 다른 에이전트들(412, 414)로 전송된다.
다른 에이전트들(414, 416)로부터 갱신된 상황 정보를 수신한 것에 반응하여, 에이전트 A 상황 정보(430)는 에이전트 B 투표(1134)가 완료(complete)로 보이도록 갱신하고, 에이전트 C 투표(1136)가 완료(complete)로 보이도록 갱신한다. 결과적으로, 에이전트 A 상황 정보(430)를 위한 합의(1138)는 완료(complete)로 갱신된다. 에이전트 B 상황 정보(440)는 에이전트 C 투표(1146)가 완료(complete)로 보이도록 갱신된다. 결과적으로 에이전트 B 상황 정보(440)를 위한 합의(1148)는 완료(complete)로 갱신된다. 에이전트 C 상황 정보(450)는 에이전트 C 투표(1154)가 완료(complete)로 보이도록 갱신된다. 결과적으로, 에이전트 C 상황 정보(450)를 위한 합의(1158)는 완료(complete)로 갱신된다.
도 12는 시간 T=8(1222)에서 각각의 에이전트들(412-416)을 도시하는 블록도이다. 시간 T=8(1222)에서, 에이전트 A(412)는 문(408)을 여는 비공유 작업을 수행하고 있으며 활성(active)이다. 문(408)을 여는 작업이 공유되지 않기 때문에, 이 작업은 다른 에이전트들(414, 416)이 도움없이, 그래서 다른 에이전트들(414, 416)의 합의 없이 에이전트 A(412)에 의해 수행될 수 있다.
예시적 실시 예에 따르면, 에이전트 A 상황 정보(430)는 에이전트 A 투표(1232)가 활성(active)으로 보이도록 갱신된다. 에이전트 B(414) 및 에이전트 C(416)는 에이전트 A(412)에 의하여 수행되고 있는 작업에 대한 참가자가 아니기 때문에, 에이전트 B 투표(1234) 및 에이전트 C 투표(1236)는 어떠한 상태도 보고하지 않는다. 결과적으로, 에이전트 A 상황 정보(430)를 위한 합의(1238)는 에이전트 A 투표(1232)에만 의존한다. 그래서, 합의(1238)는 활성(active)이다.
에이전트 B(414) 및 에이전트 C(416)가 문(408)을 여는 작업에 참가하지 않지만, 그럼에도 에이전트 B(414) 및 에이전트 C(416)는 비공유 작업을 위한 에이전트 A 상황 정보(430)를 구독할 수 있다. 에이전트 B(414) 및 에이전트 C(416)는 물체(402)를 잡아서 이동시키는 작업에 할당된다. 에이전트 B(414) 및 에이전트 C(416)는 물체(402)를 이동시키는 작업에 대한 전제조건으로서 문(408)을 여는 에이전트 A(412)에 의존한다. 그래서, 에이전트 A 상황 정보(430)를 구독함으로써, 에이전트 B(414) 및 에이전트 C(416)는 문(408)이 열린 때를 판단해서, 그들의 다음 작업을 진행할 수 있다. 그래서, 다른 에이전트들의 작업을 구독하는 것은 하나의 작업이 하나 이상의 다른 에이전트들(412-416)에 의해서 수행될 작업의 완료에 의존할 수 있는 비공유인 하지만 상호 의존적인 작업에 에이전트들(412-416)이 관계를 맺는 것을 가능하게 한다.
에이전트 B 상황 정보(440)는 에이전트 A 작업 상태(1242)가 활성(active)이라는 것을 나타낸다. 다시 말해, 에이전트 B(414) 및 에이전트 C(416)는 에이전트 A(412)의 비공유 작업에 대해 비참가자(non-participant)이기 때문에, 에이전트 B 투표(1244) 및 에이전트 C 투표(1246)는 아무런 상태도 보이지 않는다. 합의(1248)는 단지 에이전트 A 투표(1242)에만 의존한다. 에이전트 A 투표(1242)가 여전히 활성(active)인 동안, 즉 에이전트 A(412)가 여전히 문(408)을 여는 과정 중에 있는 동안, 에이전트 B(414)는 그 다음 작업을 수행하길 기다린다. 에이전트 A 투표(1242)가 에이전트 A(412)의 작업이 완료(complete)로 보이도록 갱신될 때, 에이전트 B(414)는 그 다음 작업을 진행할 수 있다. 유사하게, 에이전트 C 상황 정보(450)는 에이전트 A 작업 상태(1252)가 활성(active)이라는 것을 보인다. 다시 말해, 에이전트 B(414) 및 에이전트 C(416)는 에이전트 A(412)의 비공유 작업에 대해 비참가자(non-participant)이기 때문에, 에이전트 B 투표(1254) 및 에이전트 C 투표(1256)는 아무런 상태도 보이지 않는다. 합의(1258)는 에이전트 A 투표(1242)에만 의존한다. 에이전트 A 투표(1252)가 여전히 활성(active)인 동안, 즉 즉 에이전트 A(412)가 여전히 문(408)을 여는 과정 중에 있는 동안, 에이전트 C(416)는 그 다음 작업을 수행하길 기다린다. 에이전트 A 투표(1252)가 에이전트 A(412)의 작업이 완료(complete)로 보이도록 갱신될 때, 에이전트 C(416)는 그 다음 작업을 진행할 수 있다.
도 13은 시간 T=9(1322)에서 각각의 에이전트들(412-416)을 도시하는 블록도이다. 시간 T=9(1322)까지, 에이전트 A(412)는 문(408)을 여는 그 비공유 작업의 수행을 완료하였다. 그래서, 시간 T=9(1322)에서, 에이전트 B(414) 및 에이전트 C(416)는 방 X(404)으로 이동하는 중이고, 물체(402)를 이동시키기 위한 준비로 물체(402)에 접근한다.
시간 T=9(1322)에서, 에이전트 B(414) 및 에이전트 C(416)는 에이전트 A(412)가 참가하지 않는 공유 작업에 관계를 맺는다. 에이전트 A(412)는 에이전트 B(414) 및 에이전트 C(416)가 물체(402)와 맞물리고, 물체(402)를 이동시키고, 물체(402)로부터 맞물림을 해제하는데, 이때 에이전트 A(412)는 문(408)을 닫을 것이다. 그래서, 에이전트 A(412)가 참가하지 않는 하나 이상의 작업들을 수행하면서 에이전트 B(414) 및 에이전트 C(416)가 활성인 동안, 에이전트 A(412)는 에이전트 A(412)가 다음에 언제 동작을 수행할지를 결정하기 위하여 에이전트 B(414) 및 에이전트 C(416)에 의해 전송된 상황 정보를 구독할 수 있다.
에이전트 B(414) 및 에이전트 C(416)가 상술한 바와 같이 서로에게 상황 정보를 전송한다고 가정하면, 에이전트 B 상황 정보(440)는 에이전트 B 투표(1344) 및 에이전트 C 투표(1346)가 활성(active)으로 나타나도록 갱신된다. 에이전트 A 투표(1342)는 에이전트 A(412)가 현재 작업에 참가하고 있지 않다는 것을 나타내기 위해서 아무런 상태도 나타내지 않는다. 에이전트 B 상황 정보(440)를 위한 합의(1348)는 참가 에이전트들이 에이전트 A(412)의 상태와 무관하게 활성(active)이라는 것을 보인다. 에이전트 C 상황 정보(450)는 에이전트 B 투표(1354) 및 에이전트 C 투표(1356)가 활성(active)으로 나타나도록 갱신된다. 에이전트 A 투표(1352)는 아무런 상태도 나타내지 않는다. 에이전트 C 상황 정보(450)의 합의(1358)는 참가 에이전트들이 에이전트 A(412)의 상태와 무관하게 활성(active)이라는 것을 보인다.
도 14는 시간 T=10(1422), 시간 T=11(1423), 및 시간 T=12(1425)에서 각각의 에이전트들(412-416)을 나타내는 블록도이다. 도 14는 중지 또는 중단 신호(1470)를 보냄으로써 작업을 중지하고, 재개(resume) 신호(1480)를 보냄으로써 작업을 재개하는 외부 제어 소스(420)를 도시한다.
시간 T=10(1422)에서, 에이전트 B(414)는 물체(402) 주변에 그것의 의도된 위치에 도달하였고, 반면에 에이전트 C(416)는 아직 그것의 의도된 위치에 도달하지 않았다. 에이전트 B(414) 및 에이전트 C(416)는 서로에게 상황 정보를 전송한다(이것은 또한 에이전트 A(412)에 의해서 모니터된다). 에이전트 B 상황 정보(440)는 에이전트 B 투표(1444)를 완료(complete)로 변경하도록 갱신되고, 반면에 에이전트 C 상황 정보(1346)는 활성(active)으로 남아 있다. 에이전트 B 투표(1434)는 에이전트 A 상황 정보(430)에서 완료(complete)로 갱신되고, 에이전트 B 투표(1454)는 에이전트 C 상황 정보(450)에서 완료(complete)로 갱신된다. 하지만, 에이전트 C(416)가 작업의 그 일부를 완료하지 않았기 때문에, 합의(1338, 1348, 및 1358)는 활성(active)으로 남아 있다.
시간 T=11(1423)에서, 외부 제어 소스(420)는 중지 또는 중단 신호(1470)를 전송한다. 특정 예시적 실시 예에 따르면, 중지 신호(1470)를 수신하자마자 작업에 참여하는 임의의 활성 에이전트는 그것의 투표를 중지(paused)로 갱신한다. 그래서, 에이전트 C 투표(1436, 1446, 1456)는 중지(paused)로 변경된다.
도 15는 외부 제어 소스(420)가 취소 신호(1570)를 전송한 후 T=13(1522)에서 각각의 에이전트들(412-416)을 도시하는 블록도이다. 예시적 실시 예에 따르면, 취소 신호(1570)가 보내지면 에이전트의 상황과 무관하게 에이전트들(412-416)은 작동을 멈춘다. 각각의 에이전트들(412-416)은 그 투표를 취소(cancel)로 갱신하고, 갱신된 상황 정보(430, 440, 450)를 다른 에이전트들로 전송한다. 에이전트 A 투표(1532, 1542, 1552)는 취소(cancel)로 갱신된다. 에이전트 B 투표(1534, 1544, 1554)는 취소(cancel)로 갱신된다. 에이전트 C 투표(1536, 1546, 1556)는 취소(cancel)로 갱신된다. 각각의 에이전트들(412-416)을 위한 합의(1538, 1548, 1558)는 취소(cancel)로 갱신된다.
도 16은 에이전트 C(416)가 그 작업을 수행하는 것에 실패한 후 시간 T=14(1622)에서 각각의 에이전트들(412-416)을 도시하는 블록도이다. 도 16의 목적을 위하여, 외부 제어 소스(420)는 도 15를 참조로 하여 설명된 작업의 수행을 취소하지 않았고 에이전트 C(416)의 고장 전에 각각의 에이전트들은 시간 T=12(1425)(도 14)에서와 동일한 상황을 가졌었다고 가정한다.
작업을 수행하는 에이전트 C(416)의 고장은 시스템 고장의 결과, 외부 조건의 결과, 또는 임의의 수의 다른 요인들일 수 있다. 에이전트 C(416)가 실패한 경우에, 에이전트 C 상황 정보(450)에서 에이전트 C 투표(1656)를 실패(failed)로 갱신한다. 에이전트 C 상황 정보(450)는 다른 에이전트들로 전송되고, 이로써 에이전트 A 상황 정보(430)는 에이전트 C 투표(1636)를 실패(failed)로 갱신하도록 한다. 에이전트 B 상황 정보(440) 또한 에이전트 C 투표(1646)를 실패(failed)로 갱신하도록 갱신된다. 특정 예시적 실시 예에 따르면, 에이전트들(412-416) 중의 하나가 그 투표를 실패(failed)로 갱신하면, 각각의 다른 에이전트들은 그 투표를 실패(failed)로 갱신한다. 그래서, 에이전트 A 투표(1632, 1642, 1652) 및 에이전트 B 투표(1634, 1644, 1654)는 실패(failed)로 갱신된다. 나아가, 각각의 에이전트들(412-416)을 위한 합의(1638, 1648, 1658)가 실패(failed)로 갱신된다. 에이전트 C(416)의 고장에 대해 응답하여 계획 또는 작업을 복구하기 위한 단계들이 외부 제어 소스(420)를 통해서 취해질 수 있다.
도 17은 시간 T=7'(1722), 시간 T=7''(1723), 및 시간 T=7'''(1725)에서 각각의 에이전트들(412-416)을 나타내는 블록도이다. 도 11을 참조하면, 시간 T=7에서, 모든 에이전트들(412-416)은 완료 상태에 도달했고, 합의(1138, 1148, 및 1158)가 완료 상태를 보고할 수 있도록 서로에게 갱신된 상황 정보를 전달하였다. 하지만, (예컨대, 그들 자신의 상황에 대한 갱신을 만드는 것에 대해 응답하여 또는 에이전트들(412-416) 중의 다른 것들로부터 상황 정보를 수신하는 것에 대해 응답하여) 에이전트들(412-416)은 상태 갱신을 비동기적으로(asynchronously) 보고할 수 있기 때문에, 상충하는 상황 정보가 에이전트들(412-416)에 의해서 수신되는 것이 가능하다. 도 17에 도시된 예에서, 시간 T=7'(1722)에서 모든 에이전트들이 완료 상태에 도달했지만, 에이전트 A(412)는 에이전트 C(416)로부터 갱신된 상황 정보를 수신하였으나 에이전트 B(414)로부터는 수신하지 않은 것으로 가정한다. 에이전트 B(414)는 에이전트 A(412)로부터 갱신된 상황 정보를 수신하였으나, 에이전트 C(416)로부터는 수신하지 않았다. 에이전트 B(414)는 에이전트 B 투표(1144)를 완료(complete)로 포함하도록 에이전트 B 상황 정보(440)를 갱신한다. 시간 T=7''에서, 에이전트 A(412) 및 에이전트 B(414)는 각각이 에이전트들(412-416) 중의 다른 것들로부터 갱신된 상황 정보를 수신하지 않았더라도 현재의 상황 정보를 전송한다.
시간 T=7'''에서, 에이전트 C(416)는 에이전트 A(412) 및 에이전트 B(414)로부터 모순되는 갱신들을 수신한다. 시간 T=7'''에서, 에이전트 A(412) 및 에이전트 B(414)는 모든 에이전트들(412-416)이 그들의 작업들을 완료하였다는 것을 나타내는 갱신된 상황 정보를 수신하지만, 에이전트 C(416)는 이러한 정보를 가지지 않는다. 대신, 에이전트 A(412)로부터 에이전트 C(416)에 의해 수신된 갱신된 상황 정보(1770)는 에이전트 A 투표(1032)가 완료(complete)이고, 에이전트 B 투표(1034)가 활성(active)이고, 에이전트 C 투표(1136)가 완료(complete)라는 것을 나타낸다. 에이전트 B(414)로부터 에이전트 C(416)에 의해 수신된 갱신된 상황 정보(1780)는 에이전트 A 투표(1042)가 완료(complete)이고, 에이전트 B 투표(1144)가 완료(complete)이고, 에이전트 C 투표(1046)가 활성(active)이라는 것을 나타낸다. 만일 에이전트 C(416)가 어느 하나의 갱신을 수락한다면 에이전트 C(416)는 부정확한 상태로 갱신할 것이다. 도 17의 간단한 세 개의 에이전트의 예에서, 에이전트들(412-416)을 위한 상태 항목들을 비교해서 보고된 상황 정보 중 어느 것이 가장 최근 것인지 판단하는 것은 간단한 문제이겠지만, 수많은 비동기 갱신들을 보내는 다수의 널리 분산된 에이전트들을 가진 시스템에서 내용의 조사 및 비교를 기초로 한 해결은 가능하지 않을 수 있다.
특정 예시적 실시 예에서, 갱신된 상황 정보는 낙관적 복제를 이용해서 비동기적으로 교환된다. 낙관적 복제는 갱신들이 수락, 무시, 또는 병합되어야 할 때를 결정하기 위하여 갱신들 간에서의 구별을 위해 버저닝 제어를 이용한다. 예시적 실시 예에 따르면, 수정 벡터 및 동기화 벡터를 이용하는 낙관적 복제의 유형이 버저닝 제어를 위해 이용된다.
수정 벡터는 갱신을 만드는 에이전트가 상황 정보를 마지막으로 수정한 때를 나타낸다. 에이전트 A(412)로부터의 갱신된 상황 정보(1770)는 에이전트 A(412)가 도 10에서 도시된 바와 같이 시간 T=6에서 - 다른 상황 정보로의 동기화를 포함하지 않고 - 수정을 마지막으로 만들었다는 것을 나타내는 수정 벡터(1772)를 가진다. 동기화 벡터(1774)는 에이전트 A(412)가 (에이전트 C(416)로부터 갱신된 상황 정보를 수신한 것에 대해 응답하여) 시간 T=7'에서 그 상황 정보를 마지막으로 동기화하였다는 것을 나타낸다. 에이전트 B(414)로부터의 갱신된 상황 정보(1780)는 에이전트 B 투표(1144)를 완료(complete)로 갱신한 때인 시간 T=7'에서 상황 정보를 마지막으로 수정했다는 것을 나타내는 수정 벡터(1782)를 가진다. 동기화 벡터(1784)는 에이전트 B(414)가 도 10에서 도시된 바와 같이 에이전트 A(412)로부터 상태 갱신을 수신한 때인 시간 T=6에 다른 갱신과 마지막으로 동기화하였다는 것을 나타낸다.
수정 및 동기화 벡터를 이용함으로써, 하나의 갱신이 언제 다른 갱신보다 더 최근의 것이 되는지가 판단될 수 있다. 제2 갱신을 위한 수정 및 동기화 벡터에 의해서 식별된 갱신 시간들 양쪽 모두가 제1 갱신을 위한 것보다 더 최신이면, 제2 갱신은 제1 갱신보다 더 최근의 것이고, 제1 갱신을 교체하기 위해 사용될 수 있다. 제2 갱신을 위한 수정 및 동기화 벡터에 의해서 저장된 시간들이 제1 갱신을 위한 것들과 동일하면, 갱신들은 등가적(equivalent)이다. 하지만, 수정 벡터에 의해 식별된 갱신 시간이 동기화 벡터에 의해 식별된 갱신 시간과 일치하지 않으면, 하나의 벡터가 언제 다른 것보다 더 최근의 것이 될 수 있는지를 판단하기 위한 해결책이 이용될 수 있고, 또는 상황 정보의 세트에서 더 최근인 항목들이 언제 상황 정보의 이전에 생성된 세트에서 상황 정보를 갱신하기 위하여 병합될 수 있는지를 판단하기 위한 해결책이 이용될 수 있다.
도 18은 작업을 수행하고 있는 복수의 장치들을 가지고 조정하는 장치를 위한 방법(1800)의 예시적 실시 예의 흐름도이다. 방법(1800)은 예컨대, 도 19를 참조하여 설명된 바와 같은 제어 시스템에 의해서 또는 도 20을 참조하여 설명된 바와 같은 범용 컴퓨팅 시스템에 의해서 수행가능하다.
1802에서, 갱신된 상황 정보가 장치에 저장되고, 갱신된 상황 정보는 하나 이상의 복수의 장치들의 작업 상태에 대한 투표에서의 변경을 반영한다. 제1 갱신된 상황 메시지가 하나 이상의 복수의 장치들로 보내지는데, 제1 갱신된 상황 메시지는 제1 갱신된 상황 정보를 전달한다. 1806에서, 미리 정해진 수량(quantity)의 복수의 장치들이 작업 상태에 동의한다는 것을 갱신된 상황 정보가 나타내면 장치에서 작업 합의가 갱신된다.
도 19는 작업을 수행하고 있는 복수의 로봇 에이전트들을 조정하는 제어 시스템(1910)의 예시적 실시 예를 포함하는 로봇 에이전트(1900)의 블록도이다. 로봇 에이전트(1900)는 공유 작업들의 수행 또는 일련의 상호의존적 작업들에 참여하는 다수의 로봇 에이전트들 중의 하나일 수 있다. 로봇 에이전트(1900)는 UAV(unmanned aerial vehicle)와 같은 로봇 차량, 도 14 내지 17의 로봇 에이전트들과 같은 이동 로봇(mobile robot), 제조 공장에서의 조립 로봇, 네트워크 작동을 모니터하는 로봇 소프트웨어 에이전트, 또는 다른 유형의 로봇 에이전트일 수 있다.
제어 시스템(1910)은 공유 작업, 상호의존적 작업, 또는 비공유 작업일 수 있는 작업에서 할당된 역할을 수행하고 있는 로봇 에이전트(1900)를 제어하기 위한 작업 제어기(1920)를 포함한다. 도 4 내지 17의 예를 고려하면, 물체 또는 문과 맞물리도록 하기 위해서 조종기(manipulator)와 관계를 맺고, 조종기 또는 전체 로봇 에이전트(1900)가 움직여서 물체를 지정된 위치로 이동시키게 만들도록 채택된 제어 로직을 작업 제어기가 포함할 수 있다. 하나의 예시적 실시 예에서, 작업 제어기(1920)는 로봇 에이전트(1900)에 의한 할당된 역할의 수행을 개시하고 할당된 역할의 수행의 완료를 보고하도록 채택된다.
상황 관리기(1930)는 로컬 상황 정보(1940)를 유지하고 모니터한다. 상술한 바와 같이, 로컬 상황 정보(1940)는 로봇 에이전트(1900)의 작업 상태뿐 아니라 하나 이상의 피어(peer) 로봇 에이전트들(1960)의 피어 작업 상태를 포함한다. 상황 관리기(1930)는 로봇 에이전트(1900)의 작업 상태를 기초로 하여 로컬 상황 정보(1940)를 갱신하기 위하여 작업 제어기(1920)와 통신한다. 예를 들어, 로봇 에이전트(1900)의 작업 상태를 위한 투표가 변경되면 상황 관리기(1930)가 상황 정보(1940)를 갱신한다. 상황 관리기(1930)는 또한 하나 이상의 피어 로봇 에이전트들(1960) 각각에 대한 피어 작업 상태를 판단하기 위하여 피어 로봇 에이전트들(1960)과 상황 메시지들(1955)을 교환하기 위해 피어 투 피어 통신 시스템(1950)과 통신한다. 예를 들어, 로봇 에이전트(1900) 및 미리 정해진 수량의 하나 이상의 피어 로봇 에이전트들(1960)이 작업 상황에 동의한다는 것을 상황 정보(1940)가 나타내면 상황 관리기(1930)는 작업 합의를 갱신할 수 있다. 다른 예로서, 하나 이상의 피어 로봇 에이전트들의 작업 상태에 대한 투표가 변경되었다는 것을 상황 메시지(1955)가 보고하면 상황 관리기(1930)는 상황 정보(1940)를 갱신한다. 다양한 실시 예에서, 상황 관리기(1930)는 또한 상황 메시지(1955)가 로컬 상황 정보(1940)보다 더 최근인 피어 상황 정보를 보고하는지 여부를 판단하기 위하여 상술한 바와 같이 버전 정보를 평가할 수 있다. 버전 정보를 평가한 후에, 상황 관리기(1930)는 상황 메시지(1955)를 기초로 하여 로컬 상황 정보(1940)를 갱신한다.
피어 투 피어 통신 시스템(1950)은 상황 관리기(1930)와 통신할 뿐 아니라 또한 하나 이상의 피어 로봇 에이전트들로부터 상태 메시지들을 수신한다. 피어 투 피어 통신 시스템(1950)은 도 4 내지 17을 참조하여 설명된 바와 같은 각각의 에이전트들에 의해 유지되는 상황 정보를 전달하기 위하여 피어 로봇 에이전트들로부터 상태 메시지를 수신한다. 피어 투 피어 통신 시스템(1950)은 또한 로컬 상황 정보(1940)가 갱신되면 로컬 상황 정보를 전달하기 위하여 하나 이상의 피어 로봇 에이전트들(1960)에 상태 메시지들을 보내도록 채택된다.
도 20은 도 1 내지 18에 의해서 설명된 컴퓨터에서 구현된 방법 및 컴퓨터 실행가능 프로그램 명령어의 실시 예들을 구현하기 위하여 작동하는 범용 컴퓨터 시스템(2000)의 블록도이다. 하나의 예시적 실시 예에서, 컴퓨팅 장치(2010)는 하나 이상의 다른 자동 에이전트들과 협력하여 조정된 작업을 수행하도록 구비된 자동 에이전트를 포함한다. 컴퓨팅 장치(2010)는 전형적으로 적어도 하나의 프로세서(2020)를 포함한다. 컴퓨팅 장치(2010) 내에서, 프로세서(2020)는 시스템 메모리(2030), 하나 이상의 저장 장치들(2040), 하나 이상의 입력/출력 장치들(2060), 및 하나 이상의 네트워크 인터페이스들(2070)과 통신하고, 네트워크 인터페이스들(2070)을 통해서 컴퓨팅 장치는 하나 이상의 다른 컴퓨터 시스템들(2080)과 통신한다.
시스템 메모리(2030)는 RAM(random access memory) 장치들과 같은 휘발성 메모리 장치들 및 ROM(read-only memory), 프로그램가능한 ROM, 및 플래시 메모리와 같은 비휘발성 메모리 장치들을 포함할 수 있다. 시스템 메모리(2030)는 전형적으로 오퍼레이팅 시스템(2032)을 포함하고, 이것은 컴퓨팅 장치(2010)를 부팅(booting)하기 위한 기본적인 입력 출력 시스템뿐 아니라 사용자, 컴퓨팅 장치(2010)가 다른 프로그램, 및 다른 컴퓨터 시스템(2080)과 상호작용하도록 하는 완전한 오퍼레이팅 시스템을 포함할 수 있다. 시스템 메모리(2030)는 또한, 전형적으로 공유 계획의 일부일 수 있는 작업들의 일부인 동작을 수행하면서 자동 에이전트를 지휘하는 프로그램과 같은 하나 이상의 어플리케이션 프로그램들(2034)을 포함한다. 시스템 메모리(2030)는 또한 상술한 바와 같이 로컬 자동 에이전트 또는 하나 이상의 다른 자동 에이전트들에 대한 상황 정보와 같은 프로그램 데이터(2036)를 포함할 수 있다.
프로세서(2020)는 또한 하나 이상의 저장 장치들(2040)과 통신한다. 저장 장치들(2040)은 자기 디스크(magnetic disk), 광학 디스크(optical disk), 또는 플래시 메모리 장치들과 같은 이동식(removable) 비휘발성 저장 장치들을 포함할 수 있다. 저장 장치들(2040)은 또한 하나 이상의 자기 디스크 및 비휘발성 메모리를 전형적으로 포함하는 고정식(nonremovable) 저장 장치들을 포함할 수 있다.
프로세서(2020)는 하나 이상의 입력/출력 인터페이스들(2050)을 통하여 컴퓨팅 장치(2010)가 사용자와 상호작용하는 것을 가능하게 하는 하나 이상의 입력/출력 장치들(2060)과 통신한다. 입력/출력 장치들(2060)은 키보드, 포인팅 장치, 마이크로 폰, 스피커, 및 디스플레이를 포함할 수 있다. 프로세서(2020)는 또한 자동 에이전트에서 사용되는 것과 같은 컴퓨팅 장치(2010)가 다른 자동 에이전트들과 통신하는 것을 가능하게 하는 하나 이상의 네트워크 인터페이스들(2070)과 통신할 수 있다.
도 20에서 도시된 구성요소들 또는 장치들 또는 앞에서 설명된 다른 것들 모두가 본 발명의 공개의 구현을 뒷받침하기 위해서 필요한 것은 아니다. 예를 들어, 장치는 시스템의 작동을 위한 모든 프로그램 및 데이터를 저장하도록 구성된 플래시 메모리를 포함하는 통합된 시스템 메모리 및 저장 장치를 포함할 수 있다. 게다가, 모든 입력 및 출력이 네트워크 인터페이스들(2070)을 통하여 전달되면, 시스템은 임의의 다른 입력/출력 인터페이스들(2050) 또는 입력/출력 장치들(2060)을 포함하지 않을 수 있다.
본 명세서에서 서술된 실시 예들의 설명은 다양한 실시 예들의 구조에 대한 일반적인 이해를 제공하기 위하여 의도된 것이다. 설명이 본 명세서에서 기술된 구조 또는 방법을 이용하는 장치 및 시스템의 모든 구성요소 및 특징의 완전한 설명으로서 제공하기 위하여 의도된 것은 아니다. 많은 다른 실시 예들이 본 공개를 검토하는 당업자들에게 명백할 수 있다. 다른 실시 예들이 본 공개로부터 이용될 수 있고 유도될 수 있으며, 그래서 구조적 및 논리적 치환 및 변경이 본 공개의 범위로부터 벗어나지 않으면서 만들어질 수 있다. 예를 들어, 방법의 단계들은 도면에서 도시된 것과 다른 순서로 수행될 수 있고 혹은 하나 이상의 방법의 단계들이 생략될 수 있다. 따라서, 본 공개 및 도면은 제한이 아니라 설명으로서 간주되어야 한다.
게다가, 특정 실시 예들이 본 명세서에서 설명되고 도시되었을지라도, 동일한 또는 유사한 결과를 달성하도록 설계된 임의의 차후의 배열은 도시된 특정 실시 예들을 위해서 치환될 수 있다는 것이 이해되어야 한다. 본 공개는 본 실시 예들의 임의의 및 모든 차후의 채택 또는 변형을 커버하도록 의도되었다. 상술한 실시 예들의 조합 및 본 명세서에서 구체적으로 설명되지 않은 다른 실시 예들은 본 설명을 검토하는 당업자에게 명백할 것이다.
본 공개의 요약서는 청구항들의 범위 또는 의미를 해석하거나 제한하기 위해서 이용되지는 않을 것이라는 이해를 가지고 제출된다. 게다가, 앞의 발명의 상세한 설명에서, 다양한 특징들은 함께 그룹화될 수 있고 또는 본 공개를 간소화할 목적으로 하나의 실시 예로 설명될 수 있다. 본 공개는 청구된 실시 예들이 각각의 청구항에서 명확하게 기술된 것보다 더 많은 특징을 요구한다는 의도를 반영하는 것으로 해석되지 않아야 한다. 차라리, 다음의 청구항들이 반영하듯이, 청구된 주제물(subject matter)은 공개된 실시 예들의 임의의 모든 특징들보다는 적도록 지향될 수 있다.

Claims (20)

  1. 작업을 수행하고 있는 복수의 장치들을 조정하기 위하여 컴퓨터에서 구현된 방법으로서,
    하나 이상의 복수의 장치들의 작업 상태에 대한 투표에서의 변경을 반영하는 갱신된 상황 정보를 장치에 저장하는 단계;
    갱신된 상황 정보를 전달하는 제1 갱신된 상황 메시지를 하나 이상의 복수의 장치들로 보내는 단계; 및
    적어도 미리 정해진 수량(quantity)의 복수의 장치들이 작업 상황에 동의한다는 것을 갱신된 상황 정보가 나타내면 장치에서 작업 합의를 갱신하는 단계를 포함하는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  2. 제 1 항에 있어서,
    갱신된 상황 정보는 복수의 장치들 중의 하나로부터 제2 갱신된 상황 메시지를 수신하는 것에 대해 응답하여 생성되고,
    제2 갱신된 상황 메시지는 하나 이상의 복수의 장치들의 작업 상태에 대한 투표가 변경되었음을 나타내는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  3. 제 1 항에 있어서,
    갱신된 상황 정보는 장치의 작업 상태에 대한 투표에서의 변경에 대해 응답하여 생성되는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  4. 제 1 항에 있어서,
    미리 정해진 수량의 장치들은 활성(active)인 복수의 장치들 모두를 포함하는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  5. 제 1 항에 있어서,
    미리 정해진 수량의 장치들은 미리 정해진 수(number)의 복수의 장치들을 포함하는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  6. 제 1 항에 있어서,
    제1 갱신된 상황 메시지는 피어 투 피어(peer to peer) 통신을 통하여 보내지는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  7. 제 6 항에 있어서,
    제1 갱신된 상황 메시지는 낙관적 복제(optimistic replication)를 이용해서 배부되는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  8. 제 7 항에 있어서,
    제1 갱신된 상황 메시지는 제1 갱신된 상황 메시지 및 다른 갱신된 상황 메시지들 간에 모순되는 것을 해결하기 위하여 수정(modification) 벡터 및 동기화(synchronization) 벡터를 포함하는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  9. 제 1 항에 있어서,
    복수의 장치들 중에서 식별된 장치에 대한 작업 상황은:
    식별된 장치가 작업에서 할당된 역할을 수행하기 위하여 준비되어 있다는 것을 나타내는 준비(ready) 상황;
    식별된 장치가 작업에서 할당된 역할을 수행하고 있다는 것을 나타내는 활성(active) 상황; 및
    식별된 장치가 작업에서 할당된 역할의 수행을 완료하였다는 것을 나타내는 완료(complete) 상황; 중의 하나를 포함하는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  10. 제 9 항에 있어서,
    미리 정해진 수량의 복수의 장치들이 준비 상황에 동의하는 합의에 도달하였다는 것을 작업 합의가 나타내는 경우; 및
    외부 제어 소스로부터 신호를 수신한 것에 대해 응답하는 경우; 중의 하나의 경우에, 식별된 장치가 활성 상황으로 전이하는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  11. 제 1 항에 있어서,
    갱신된 상황 정보는:
    작업의 실행이 외부 제어 소스에 의하여 중지되었다는 것을 나타내는 중지(paused) 상황;
    작업이 하나 이상의 복수의 장치들에 의해서 수행가능하지 않았다는 것을 나타내는 실패(failed) 상황; 및
    작업의 실행이 외부 제어 소스에 의하여 취소되었다는 것을 나타내는 취소(canceled) 상황; 중의 하나를 포함하는 것을 특징으로 하는 컴퓨터에서 구현된 방법.
  12. 로봇 에이전트를 제어하기 위한 제어 시스템으로서:
    작업의 할당된 역할을 수행하고 있는 로봇 에이전트를 제어하는 작업 제어기;
    작업 제어기와 통신하고, 로봇 에이전트에 저장된 상황 정보를 갱신하는 상황 관리기; 및
    상황 관리기와 통신하는 피어 투 피어 통신 시스템을 포함하고,
    작업 제어기는 할당된 역할의 수행을 개시하고 할당된 역할의 수행의 완료를 보고하고,
    상황 정보는,
    로봇 에이전트; 및
    하나 이상의 피어 로봇 에이전트들 각각;의 작업 상태에 대한 투표를 포함하고,
    피어 투 피어 통신 시스템은,
    하나 이상의 피어 로봇 에이전트들 중의 하나에 의해 보고된 피어 상황 정보를 포함하는 제1 상황 메시지를 하나 이상의 피어 로봇 에이전트들 중의 적어도 하나로부터 수신하고; 그리고,
    로봇 에이전트에 저장된 상황 정보를 포함하는 제2 상황 메시지를 하나 이상의 피어 로봇 에이전트들로 보내는 것을 특징으로 하는 로봇 에이전트를 제어하기 위한 제어 시스템.
  13. 제 12 항에 있어서,
    미리 정해진 수량의 로봇 에이전트 및 하나 이상의 피어 로봇 에이전트들이 작업 상황에 동의한다는 것을 상황 정보가 나타낼 때, 상황 관리기가 작업 합의를 갱신하는 것을 특징으로 하는 로봇 에이전트를 제어하기 위한 제어 시스템.
  14. 제 12 항에 있어서,
    로봇 에이전트의 작업 상태에 대한 투표가 변경되었을 때, 상황 관리기가 상황 정보를 갱신하는 것을 특징으로 하는 로봇 에이전트를 제어하기 위한 제어 시스템.
  15. 제 12 항에 있어서,
    하나 이상의 피어 로봇 에이전트들 중의 적어도 하나의 작업 상태에 대한 투표가 변경되었다는 것을 제1 상황 메시지가 보고할 때, 상황 관리기가 상황 정보를 갱신하는 것을 특징으로 하는 로봇 에이전트를 제어하기 위한 제어 시스템.
  16. 제 15 항에 있어서,
    제1 상황 메시지를 기초로 하여 상황 정보를 갱신하기 전에 제1 상황 메시지가 상황 정보보다 더 최근의 피어 상황 정보를 보고하는 것인지 여부를 판단하기 위하여, 상황 관리기가 제1 상황 메시지와 관련된 버전(version) 정보를 평가하는 것을 특징으로 하는 로봇 에이전트를 제어하기 위한 제어 시스템.
  17. 제 15 항에 있어서,
    상황 정보를 갱신하는 상황 관리기에 대해 응답하여, 피어 투 피어 통신 시스템이 제2 상황 메시지를 보내는 것을 특징으로 하는 로봇 에이전트를 제어하기 위한 제어 시스템.
  18. 작업과 관련된 하나 이상의 피어 에이전트들 및 로컬 에이전트 각각의 작업 상태에 대한 투표를 나타내는 상황 정보를 저장하고;
    하나 이상의 피어 에이전트들 중의 적어도 하나 또는 로컬 에이전트의 작업 상태에 대한 투표에서의 변경을 식별하고;
    작업 상태에 대한 투표에서의 변경을 반영하기 위해 상황 정보를 갱신하고;
    갱신된 상황 정보를 보내기 위한 상황 메시지를 하나 이상의 피어 에이전트들 중의 하나 이상으로 전송하고; 그리고
    특정 수량의 로컬 에이전트 및 하나 이상의 피어 에이전트들이 작업 상황에 동의한다는 것을 상황 정보가 나타내는지 여부를 기초로 해서 작업 합의를 판단하기 위한;
    컴퓨팅 시스템에 의해 실행가능한 명령어들을 저장하는 컴퓨터 판독가능 저장 매체.
  19. 제 18 항에 있어서,
    작업 합의에서의 변경에 대해 응답하여 작업과 관련된 동작을 수행하기 위한 컴퓨팅 시스템에 의해 실행가능한 명령어들을 더 포함하는 것을 특징으로 하는 컴퓨터 판독가능 저장 매체.
  20. 제 18 항에 있어서,
    상황 메시지는 낙관적 복제(optimistic replication)을 이용해서 하나 이상의 피어 에이전트들로 전송되는 것을 특징으로 하는 컴퓨터 판독가능 저장 매체.
KR1020117030870A 2009-06-10 2010-05-13 합의 기반 분산 작업 실행 KR101635246B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/482,318 2009-06-10
US12/482,318 US8656392B2 (en) 2009-06-10 2009-06-10 Consensus based distributed task execution

Publications (2)

Publication Number Publication Date
KR20120030452A true KR20120030452A (ko) 2012-03-28
KR101635246B1 KR101635246B1 (ko) 2016-06-30

Family

ID=42668058

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117030870A KR101635246B1 (ko) 2009-06-10 2010-05-13 합의 기반 분산 작업 실행

Country Status (7)

Country Link
US (1) US8656392B2 (ko)
EP (1) EP2440999A1 (ko)
JP (1) JP5814231B2 (ko)
KR (1) KR101635246B1 (ko)
CN (1) CN102449601B (ko)
SG (1) SG176746A1 (ko)
WO (1) WO2010144212A1 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8910176B2 (en) * 2010-01-15 2014-12-09 International Business Machines Corporation System for distributed task dispatch in multi-application environment based on consensus for load balancing using task partitioning and dynamic grouping of server instance
US10277521B2 (en) * 2013-06-04 2019-04-30 International Business Machines Corporation Authorizing an action request in a networked computing environment
CN104077181B (zh) * 2014-06-26 2017-08-29 国电南瑞科技股份有限公司 一种适用于分布式任务管理系统的状态一致性维护方法
EP3186790A4 (en) * 2014-08-27 2019-05-01 Ponsse Oyj METHOD, CONFIGURATION AND USER INTERFACE FOR PRESENTING DATA DESCRIBING FOREST WORKS UNIT OPERATION
US10397125B2 (en) * 2016-03-09 2019-08-27 Alibaba Group Holding Limited Method of cross-regional data transmission and system thereof
US10552205B2 (en) * 2016-04-02 2020-02-04 Intel Corporation Work conserving, load balancing, and scheduling
US11803420B1 (en) * 2016-12-20 2023-10-31 Amazon Technologies, Inc. Execution of replicated tasks using redundant resources
US10481943B2 (en) * 2016-12-30 2019-11-19 Winmore, Inc. System and method for state machine management
JP6967380B2 (ja) * 2017-06-16 2021-11-17 株式会社 日立産業制御ソリューションズ ロボット制御装置、及びロボット制御システム
CN107276765B (zh) * 2017-07-04 2020-05-05 中国联合网络通信集团有限公司 区块链中共识的处理方法及装置
US11740630B2 (en) * 2018-06-12 2023-08-29 Skydio, Inc. Fitness and sports applications for an autonomous unmanned aerial vehicle
US20210291851A1 (en) * 2020-03-23 2021-09-23 Toyota Motor Engineering & Manufacturing North America, Inc. Switching decision for vehicle computational offloading to roadside edge server
DE102022119798A1 (de) 2022-08-05 2024-02-08 Bayerische Motoren Werke Aktiengesellschaft Verfahren für ein Steuergerät eines Fahrzeugs zur Verringerung eines Energieverbrauchs, Verfahren für ein zentrales Steuergerät, Computerprogramm, Vorrichtung und Fahrzeug

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212933A (ja) * 1998-01-30 1999-08-06 Hitachi Ltd 分散協調型システムにおける協調プロトコル管理及び協調処理実行システム
US6178522B1 (en) * 1998-06-02 2001-01-23 Alliedsignal Inc. Method and apparatus for managing redundant computer-based systems for fault tolerant computing
US20050114854A1 (en) * 2003-11-24 2005-05-26 Microsoft Corporation System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4333144A (en) * 1980-02-05 1982-06-01 The Bendix Corporation Task communicator for multiple computer system
US4733353A (en) * 1985-12-13 1988-03-22 General Electric Company Frame synchronization of multiply redundant computers
US4980824A (en) * 1986-10-29 1990-12-25 United Technologies Corporation Event driven executive
US5261085A (en) * 1989-06-23 1993-11-09 Digital Equipment Corporation Fault-tolerant system and method for implementing a distributed state machine
JP3043351B2 (ja) * 1989-12-20 2000-05-22 富士通株式会社 分散制御システム
US5349654A (en) * 1992-02-20 1994-09-20 The Boeing Company Fault tolerant data exchange unit
ES2154647T3 (es) * 1992-07-01 2001-04-16 Ericsson Telefon Ab L M Metodo y sistema de especificacion de interfaz independiente de la implementacion.
US5513354A (en) * 1992-12-18 1996-04-30 International Business Machines Corporation Fault tolerant load management system and method
JP3526492B2 (ja) * 1995-09-19 2004-05-17 富士通株式会社 並列処理システム
JPH09244731A (ja) * 1996-03-07 1997-09-19 Hitachi Zosen Corp ロボット装置の運転方法
GB9606833D0 (en) * 1996-03-30 1996-06-05 Int Computers Ltd Multi-processor system
US5742753A (en) * 1996-06-06 1998-04-21 The Boeing Company Mesh interconnected array in a fault-tolerant computer system
US20030177187A1 (en) * 2000-11-27 2003-09-18 Butterfly.Net. Inc. Computing grid for massively multi-player online games and other multi-user immersive persistent-state and session-based applications
JP4401564B2 (ja) * 2000-12-12 2010-01-20 本田技研工業株式会社 自律ロボット、集中制御装置、自律ロボットの行動計画策定方法、自律ロボットの集中制御方法、自律ロボットの行動計画策定プログラムを記録した記録媒体、自律ロボットの集中制御プログラムを記録した記録媒体
US7587523B2 (en) * 2002-12-02 2009-09-08 Cedar Point Communications, Inc. Distributed systems for determining card status
US7711825B2 (en) * 2003-12-30 2010-05-04 Microsoft Corporation Simplified Paxos
US8005888B2 (en) * 2003-12-30 2011-08-23 Microsoft Corporation Conflict fast consensus
US7613881B2 (en) * 2004-06-08 2009-11-03 Dartdevices Interop Corporation Method and system for configuring and using virtual pointers to access one or more independent address spaces
US20060080678A1 (en) * 2004-09-07 2006-04-13 Bailey Mark W Task distribution method for protecting servers and tasks in a distributed system
JP2008146149A (ja) * 2006-12-06 2008-06-26 Yaskawa Electric Corp 分散システムの同期処理装置および同期処理方法
JP2009009409A (ja) * 2007-06-28 2009-01-15 Yaskawa Electric Corp 上位コントローラ、モーションコントローラ、モーションコントロール装置およびその同期方法
US8108780B2 (en) * 2008-04-16 2012-01-31 International Business Machines Corporation Collaboration widgets with user-modal voting preference

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11212933A (ja) * 1998-01-30 1999-08-06 Hitachi Ltd 分散協調型システムにおける協調プロトコル管理及び協調処理実行システム
US6178522B1 (en) * 1998-06-02 2001-01-23 Alliedsignal Inc. Method and apparatus for managing redundant computer-based systems for fault tolerant computing
US20050114854A1 (en) * 2003-11-24 2005-05-26 Microsoft Corporation System and method for dynamic cooperative distributed execution of computer tasks without a centralized controller

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
BRADLEY J. CLEMENT 외 1명. 'Continual Coordination through Shared Activities'. AAMAS’03, 2003.07.18, pp.1-8. *

Also Published As

Publication number Publication date
CN102449601A (zh) 2012-05-09
EP2440999A1 (en) 2012-04-18
US20100319005A1 (en) 2010-12-16
JP5814231B2 (ja) 2015-11-17
CN102449601B (zh) 2015-07-29
KR101635246B1 (ko) 2016-06-30
WO2010144212A1 (en) 2010-12-16
US8656392B2 (en) 2014-02-18
JP2012529706A (ja) 2012-11-22
SG176746A1 (en) 2012-01-30

Similar Documents

Publication Publication Date Title
KR20120030452A (ko) 합의 기반 분산 작업 실행
US8452448B2 (en) Robotics systems
Ghavamzadeh et al. Hierarchical multi-agent reinforcement learning
US7760743B2 (en) Effective high availability cluster management and effective state propagation for failure recovery in high availability clusters
US9712472B2 (en) Application spawning responsive to communication
CN105745585B (zh) 卸载人机交互任务
Novas et al. An Approach for the Integration of a Scheduling System and a Multi-Agent Manufacturing Execution System. Towards a Collaborative Framework.
Sariel et al. A distributed multi-robot cooperation framework for real time task achievement
CN104809551A (zh) 一种基于移动Agent客户端的跨系统工作流协同方法
Kashevnik et al. Development of a prototype Cyber Physical Production System with help of Smart-M3
Msala et al. A new robust heterogeneous multi-robot approach based on cloud for task allocation
Seebach et al. How to design and implement self-organising resource-flow systems
Dahl et al. Control components for collaborative and intelligent automation systems
Simão et al. Holonic control metamodel
Dal Moro et al. Developing BDI-based robotic systems with ROS2
Tharumarajah A self-organizing model for scheduling distributed autonomous manufacturing systems
Mayrhofer et al. Assessing adaptability of software architectures for cyber physical production systems
CN110365535B (zh) 一种基于安全多方计算的模型上线方法及装置
Weichhart Representing processes of human robot collaboration
Matusek et al. Adaptation consistency of distributed role-oriented applications based on the actor model of computation
Kosak et al. Ensemble programming for multipotent systems
Barange et al. Task-oriented conversational behavior of agents for collaboration in human-agent teamwork
Srivastava et al. Robotics concurrency: A holistic implementation using actors and promises
Vallejos Modularising Context Dependency and Group Behaviour in Ambient-oriented Programming
Kruger The development and evaluation of an Erlang control system for reconfigurable manufacturing systems

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
FPAY Annual fee payment

Payment date: 20190613

Year of fee payment: 4