Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactored all classes to their own files; made directories for each phase to hold classes #32

Merged
merged 6 commits into from
Apr 15, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ lib64
# Installer logs
pip-log.txt

# ignore pycharm folders
**/__pycache__

# Unit test / coverage reports
.coverage
.tox
Expand All @@ -42,4 +45,5 @@ examples/log/**
# ignore development settings
.project
.pydevproject
.idea/*
**/.idea
**/venv
30 changes: 15 additions & 15 deletions midca/domains/construction_domain/plan/methods_construction.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,28 +51,28 @@ def all_blocks(state):
def get_by_value(dictionary,val):
block = None
for key, value in dictionary.items():
if value == val:
block = key
if value == val:
block = key
return block

def check_all_blocks_in_goal(table_block,goal_pos,blocks):
if not table_block == None:
#print(blocks)
blocks.append(table_block)
table_block = get_by_value(goal_pos,table_block)
#print(table_block)
return check_all_blocks_in_goal(table_block,goal_pos,blocks)
#print(blocks)
blocks.append(table_block)
table_block = get_by_value(goal_pos,table_block)
#print(table_block)
return check_all_blocks_in_goal(table_block,goal_pos,blocks)
else:
return blocks
return blocks

def blocks_according_to_goal(state,goal):
blocks = []
all_blocks = []
table_block = get_by_value(goal.pos,"table")
blocks = check_all_blocks_in_goal(table_block,goal.pos,blocks)
for each in list(state.clear.keys()):
if not each in blocks:
blocks.append(each)
if not each in blocks:
blocks.append(each)
return blocks


Expand All @@ -94,15 +94,15 @@ def moveb_m(state,goal):
blocks = blocks_according_to_goal(state,goal)
#print(blocks)
for b1 in blocks:
s = status(b1,state,goal)
s = status(b1,state,goal)
# print("status for block" + str(b1) + "is " + str(s))
if s == 'move-to-table':
return [('move_one',b1,'table'),('move_blocks',goal)]
elif s == 'move-to-block':
return [('move_one',b1,goal.pos[b1]), ('move_blocks',goal)]
elif s == 'move-to-block-with-mortar':
return [('move_one_mortar',b1,goal.pos[b1]), ('move_blocks',goal)]
elif s == 'get-from-store':
elif s == 'get-from-store':
return [('move_from_store',b1,goal.pos[b1]), ('move_blocks',goal)]
else:
continue
Expand Down Expand Up @@ -151,10 +151,10 @@ def move_store(state,b1,dest):
if dest == "table":
return [('get_from_store',b1)]
else:
if(state.pos[dest] == "store"):
return [('get_from_store',dest), ('put', dest,'table') , ('get_from_store',b1)]
if(state.pos[dest] == "store"):
return [('get_from_store',dest), ('put', dest,'table') , ('get_from_store',b1)]

return [('get_from_store',b1)]
return [('get_from_store',b1)]

### methods for "get"

Expand Down
15 changes: 7 additions & 8 deletions midca/domains/construction_domain/plan/operators_construction.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,14 +110,13 @@ def searchfor(state, perp):
return state

def get_from_store(state,b):
if state.pos[b] == 'store' and state.clear[b] == True and state.holding == False:
state.pos[b] = 'in-arm'
state.clear[b] = False
state.holding = b
return state
else:
return False

if state.pos[b] == 'store' and state.clear[b] == True and state.holding == False:
state.pos[b] = 'in-arm'
state.clear[b] = False
state.holding = b
return state
else:
return False
"""
Below, 'declare_operators(pickup, unstack, putdown, stack)' tells Pyhop
what the operators are. Note that the operator names are *not* quoted.
Expand Down
22 changes: 11 additions & 11 deletions midca/domains/jshop_domains/blocks_world/bw_ran_problems_5.shp
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
(defproblem bw-ran-5-1 blocks-normal ((arm-empty)
(clear d)
(on-table a)
(on-table c)
(on b a)
(on d b)
(clear c)
)
((achieve-goals ( list
(on c b)

(defproblem bw-ran-5-1 blocks-normal ((arm-empty)
(on b a)
(on-table c)
(clear d)
(on d b)
(on-table a)
(clear c)
)
((achieve-goals ( list
(on c b)
))))
87 changes: 41 additions & 46 deletions midca/domains/jshop_domains/logistics/problem
Original file line number Diff line number Diff line change
@@ -1,47 +1,42 @@

(defproblem problem logistics
(
(AIRPORT loc73)
(AIRPORT loc71)
(AIRPORT loc51)
(AIRPORT loc53)
(AIRPORT loc83)
(AIRPORT loc82)
(AIRPORT loc81)
(AIRPORT loc61)
(AIRPORT loc63)
(AIRPORT loc62)
(IN-CITY loc61 city6)
(airplane-at plane2 loc83)
(obj-at package1 loc83)
(obj-at package4 loc63)
(obj-at package3 loc63)
(airplane-at plane2 loc73)
(TRUCK truck51 city5)
(IN-CITY loc62 city6)
(IN-CITY loc53 city5)
(truck-at truck71 loc71)
(obj-at package2 loc73)
(obj-at package1 loc81)
(IN-CITY loc51 city5)
(IN-CITY loc73 city7)
(airplane-at plane2 loc62)
(TRUCK truck61 city6)
(airplane-at plane1 loc82)
(IN-CITY loc71 city7)
(TRUCK truck81 city8)
(truck-at truck61 loc61)
(IN-CITY loc81 city8)
(IN-CITY loc82 city8)
(truck-at truck81 loc81)
(obj-at package2 loc83)
(TRUCK truck71 city7)
(IN-CITY loc83 city8)
(truck-at truck51 loc51)
(truck-at truck81 loc83)
(IN-CITY loc63 city6)
)
(:unordered
(obj-at package4 loc53)
(obj-at package3 loc61)

(defproblem problem logistics
(
(AIRPORT loc61)
(AIRPORT loc71)
(AIRPORT loc73)
(AIRPORT loc82)
(AIRPORT loc53)
(AIRPORT loc63)
(AIRPORT loc51)
(AIRPORT loc83)
(AIRPORT loc81)
(AIRPORT loc62)
(truck-at truck61 loc61)
(truck-at truck71 loc71)
(IN-CITY loc61 city6)
(airplane-at plane1 loc82)
(IN-CITY loc63 city6)
(IN-CITY loc51 city5)
(truck-at truck51 loc51)
(IN-CITY loc83 city8)
(TRUCK truck71 city7)
(obj-at package1 loc83)
(TRUCK truck61 city6)
(truck-at truck81 loc81)
(IN-CITY loc53 city5)
(IN-CITY loc81 city8)
(TRUCK truck51 city5)
(IN-CITY loc62 city6)
(IN-CITY loc71 city7)
(IN-CITY loc82 city8)
(IN-CITY loc73 city7)
(obj-at package2 loc83)
(airplane-at plane2 loc62)
(obj-at package4 loc63)
(obj-at package3 loc63)
(TRUCK truck81 city8)
)
(:unordered
(obj-at package2 loc73)
(obj-at package1 loc81)
))
2 changes: 1 addition & 1 deletion midca/domains/nbeacons/nbeacons_util.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# This file contains helpful functions for the nbeacons domain

import random
import midca.modules.planning
import midca.modules.plan
from midca.modules._plan import pyhop

class NBeaconGrid():
Expand Down
23 changes: 11 additions & 12 deletions midca/domains/restaurant_domain/plan/restaurant_methods.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,17 @@


def achieve_goals(state,goals):
'''
Go through each goal and create an order for each goal
'''
if goals != []:
goal = goals[0]
#print(goal)
predicate= goal['predicate']
args = goal.args
goals.remove(goal)
if predicate == "order_serve":
return[('create_order',args[0],args[1]) , ('achieve_goals', goals)]
return []
'''
Go through each goal and create an order for each goal
'''
if goals != []:
goal = goals[0]
predicate= goal['predicate']
args = goal.args
goals.remove(goal)
if predicate == "order_serve":
return[('create_order',args[0],args[1]) , ('achieve_goals', goals)]
return []

def c_order(state,person,dish):
return[('take_order', person, dish), ('prepare_order', person, dish),
Expand Down
22 changes: 11 additions & 11 deletions midca/domains/restaurant_domain/plan/restaurant_operators.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
def take_order(state,person,dish):
# add the order to the variable order_pending
if person in state.order_received:
state.order_received[person].append(dish)
state.order_received[person].append(dish)
else:
state.order_received[person] = [dish]
state.order_received[person] = [dish]

if person in state.order_pending:
state.order_pending[person].append(dish)
state.order_pending[person].append(dish)
else:
state.order_pending[person] = [dish]
state.order_pending[person] = [dish]
return state

def prepare_order(state,person,dish):
Expand All @@ -20,11 +20,11 @@ def prepare_order(state,person,dish):
# delete the person from variable order_pending if there are no pending dishes
state.order_pending[person].remove(dish)
if state.order_pending[person] == []:
del state.order_pending[person]
del state.order_pending[person]
if person in state.order_prepared:
state.order_prepared[person].append(dish)
state.order_prepared[person].append(dish)
else:
state.order_prepared[person] = [dish]
state.order_prepared[person] = [dish]

#print(state.order_received)
return state
Expand All @@ -37,13 +37,13 @@ def serve_order(state,person,dish):
state.order_prepared[person].remove(dish)
state.order_received[person].remove(dish)
if state.order_prepared[person] == []:
del state.order_prepared[person]
del state.order_prepared[person]
if state.order_received[person] == []:
del state.order_received[person]
del state.order_received[person]
if person in state.order_served:
state.order_served[person].append(dish)
state.order_served[person].append(dish)
else:
state.order_served[person] = [dish]
state.order_served[person] = [dish]
return state

def declare_ops():
Expand Down
22 changes: 14 additions & 8 deletions midca/examples/Logistics_jshop.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
#!/usr/bin/env python
from midca import base
from midca.modules import simulator, guide, evaluate, perceive, note, intend, planning, act
from midca.modules.perceive import PerfectObserverWithThief
from midca.modules.plan import JSHOP2Planner
from midca.modules.intend import WarehouseIntend
from midca.modules.act import SimpleAct
from midca.modules.interpret import DeliverGoal, UserGoalInput
from midca.modules.evaluate import SimpleEval
from midca.modules import simulator

from midca.worldsim import domainread, stateread
import inspect, os
Expand Down Expand Up @@ -42,17 +48,17 @@
#add the modules which instantiate basic blocksworld operation
myMidca.append_module("Simulate", simulator.MidcaActionSimulator())
#myMidca.append_module("Simulate", simulator.ASCIIWorldViewer(display=DISPLAY_FUNC))
myMidca.append_module("Perceive", perceive.PerfectObserverWithThief())
myMidca.append_module("Interpret", guide.DeliverGoal())
#myMidca.append_module("Interpret", guide.UserGoalInput())
myMidca.append_module("Eval", evaluate.SimpleEval2())
myMidca.append_module("Intend", intend.WarehouseIntend())
myMidca.append_module("Plan", planning.JSHOP2Planner(logistics_util.jshop2_state_from_world,
myMidca.append_module("Perceive", PerfectObserverWithThief.PerfectObserverWithThief())
myMidca.append_module("Interpret", DeliverGoal.DeliverGoal())
#myMidca.append_module("Interpret", UserGoalInput.UserGoalInput())
myMidca.append_module("Eval", SimpleEval.SimpleEval2())
myMidca.append_module("Intend", WarehouseIntend.WarehouseIntend())
myMidca.append_module("Plan", JSHOP2Planner.JSHOP2Planner(logistics_util.jshop2_state_from_world,
logistics_util.jshop2_tasks_from_goals,
JSHOP_DOMAIN_FILE,
JSHOP_STATE_FILE
))
myMidca.append_module("Act", act.SimpleAct())
myMidca.append_module("Act", SimpleAct.SimpleAct())



Expand Down
Loading