PDDL-인공지능 분야 기획 언어 학습 노트-1
domain
파일과 problem
파일로 구성됩니다.이 두 가지를 상세히 소개하기 전에 PDDL 코드에서 흔히 볼 수 있는 데이터 구성원을 살펴보자(본 글에서 언급한 데이터 구성원은 가장 기초적인 문제를 해결하기 위한 간단한 요구 사항일 뿐 다른 것은 깊이 있게 공부한 후에야 알 수 있다)init
,goal
,objects
는 문제 파일의 구성 부분이고 기타는domain 파일의 구성이다.다음은 우리가 하나의 예를 통해 설명한다
만약에 두 개의 방이 있는데 로마와 로마가 있다. 두 개의 공이 있는데 ball1과 ball2가 모두 로마에 있다. 우리는 로봇 로비가 있다. 로마에서 로비는 두 팔의 left와 right가 있다. 지금 우리는 로비에게 두 개의 공을 로마에서 로마로 옮기도록 해야 한다.
domain
domain의 정의
(define (domain )
(:predicates )
(:action
:parameters
:precondition
:effect
)
)
우리는 예시 중의 문제에 대해domain objects라고 쓰는 것이 뚜렷하다. 구체적으로 우리가 문제를 쓸 때 우리가 지금 알아야 할 Objects의 속성은 다음과 같다. - 룸인지 아닌지를 판단한다. - 공인지 아닌지를 판단한다. - 공이 어느 방에 있는지 판단한다. - 로봇이 어느 방에 있는지 판단한다. - 로봇의 팔인지 판단한다. - 로봇의 팔이 한가한지 판단한다. - 로봇의 어느 팔이 어느 공을 들고 있는지 판단한다.
이에 대응하여 먼저 domain의 첫 번째 단계를 완료합니다.
(define (domain gripper-strips)
(:predicates (room ?r)
(ball ?b)
(at ?b ?r)
(at-robby ?r)
(gripper ?g)
(free ?g)
(carry ?b ?g))
)
다음에 우리가 분석할 때 필요한 동작의 첫 번째 동작은pick동작, 즉 들어올리는 동작이다. 이 동작과 관련된 Objects는 공, 팔, 방이다.들고 있는 전제는 공과 로봇이 같은 방에 있고 로봇의 한 팔이 비어 있다는 것이다.이제 두 번째 할게요.
(define (domain gripper-strips)
(:predicates (room ?r)
(ball ?b)
(at ?b ?r)
(at-robby ?r)
(gripper ?g)
(free ?g)
(carry ?b ?g))
(:action pick
:parameters(?obj ?room ?gripper)
:precondition (and (ball ?obj) (room ?room) (gripper ?gripper)
(free ?gripper) (at ?obj ?room) (at-robby ?room))
:effect (and (not (free ?gripper)) (carray ?obj ?gripper) (not (at ?obj ?room)))
)
)
두 번째 동작은 이동 동작이다. 로봇이 한 방에서 다른 방으로 이동하는 세 번째 동작은 내려놓는 것이다. 로봇이 어느 방에 도착하면 손 안의 공을 놓는다.
(define (domain gripper-strips)
(:predicates (room ?r)
(ball ?b)
(at ?b ?r)
(at-robby ?r)
(gripper ?g)
(free ?g)
(carry ?b ?g))
(:action pick
:parameters(?obj ?room ?gripper)
:precondition
(and
(ball ?obj)
(room ?room)
(gripper ?gripper)
(free ?gripper)
(at ?obj ?room)
(at-robby ?room)
)
:effect
(and
(not
(free ?gripper)
)
(carry ?obj ?gripper)
(not (at ?obj ?room))
)
)
(:action move
:parameters (?from ?to)
:precondition
(and
(room ?from)
(room ?to)
(at-robby ?from)
)
:effect
(and
(at-robby ?to)
(not
(at-robby ?from)
)
)
)
(:action drop
:parameters (?room ?ball ?gripper)
:precondition
(and
(room ?room)
(ball ?ball)
(at-robby ?room)
(gripper ?gripper)
(not
(free ?gripper)
)
(carry ?ball ?gripper)
(at-robby ?room))
:effect
(and
(free ?gripper)
(at ?ball ?room)
(not
(carry ?ball ?gripper)
)
)
)
)
Problem
Problem의 구성원 포함
objects
,init
,goal
의 형식은 이렇다.(define (problem )
(:domain )
(:objects )
(:init )
(:goal )
)
이 문제에서 문제 코드는 이렇게 씁니다
(define (problem solve)
(:domain gripper-strips)
(:objects
rooma roomb ball1 ball2 left right
)
(:init
(room rooma)
(room roomb)
(ball ball1)
(ball ball2)
(gripper left)
(gripper right)
(free left)
(free right)
(at ball1 rooma)
(at ball2 rooma)
(at-robby rooma)
)
(:goal
(and
(at ball1 roomb)
(at ball2 roomb)
)
)
)
상기 예에서 설명한 바와 같이 init일 때 변수 앞에는
?
를 추가할 필요가 없고 나중에 컴파일러가 오류를 보고할 수 있다. 이때의 init상태는 Objects가True를 위한 모든 속성을 제시하고goal은 and
를 사용해야 한다. 이런 상태는 반드시 동시에 만족해야 하며 그렇지 않으면 오류를 보고해야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
axios 요청 차단, 응답 차단,router 내비게이션 수위axios 요청 차단: 요청 헤더에 token 등을 통일적으로 추가할 수 있습니다 axios 응답 차단: 로그인 판단 내비게이션 선행 수위beforeEach: 로그인 여부를 판단할 수 있지만, 응답으로 차단하는 것이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.