Skip to content

Commit

Permalink
[grippers] rewritten in python
Browse files Browse the repository at this point in the history
  • Loading branch information
guicho271828 committed Nov 28, 2021
1 parent a5564af commit a538a4b
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
20 changes: 20 additions & 0 deletions grippers/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@

# Grippers (python)

usage: gripper.py [-h] [--seed SEED] balls robots grippers rooms

positional arguments:
balls the number of balls
robots the number of robots
grippers the number of grippers per robot
rooms the number of rooms

optional arguments:
-h, --help show this help message and exit
--seed SEED, -s SEED random seed


# Grippers (C language)


This version is equivalent to the python version with 2 grippers per robot.
60 changes: 60 additions & 0 deletions grippers/gripper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
#!/usr/bin/env python

import argparse
import random

parser = argparse.ArgumentParser()

parser.add_argument("balls", type=int, help="the number of balls")
parser.add_argument("robots", type=int, help="the number of robots")
parser.add_argument("grippers", type=int, help="the number of grippers per robot")
parser.add_argument("rooms", type=int, help="the number of rooms")
parser.add_argument("--seed", "-s", type=int, help="random seed")

args = parser.parse_args()

random.seed(args.seed)

robots = [f"robot{i}" for i in range(args.robots)]
rooms = [f"room{i}" for i in range(args.rooms)]
grippers = [f"gripper{i}" for i in range(args.grippers)]
balls = [f"ball{i}" for i in range(args.balls)]



def init():
facts = [f"(free {r} {g})"
for r in robots
for g in grippers]

for ball in balls:
room = random.choice(rooms)
facts.append(f"(at {ball} {room})")
for robot in robots:
room = random.choice(rooms)
facts.append(f"(at-robby {robot} {room})")

return " ".join(facts)


def goal():
facts = []

for ball in balls:
room = random.choice(rooms)
facts.append(f"(at {ball} {room})")

return " ".join(facts)


print("(define (problem gripper)")
print(" (:domain gripper-ex-typed)")
print(" (:objects "
+ " ".join(
robots + ["-", "robot"] +
rooms + ["-", "room"] +
grippers + ["-", "gripper"] +
balls + ["-", "ball"])
+ ")")
print(" (:init " + init() + ")")
print(" (:goal (and " + goal() + ")))")

0 comments on commit a538a4b

Please sign in to comment.