コード例 #1
0
ファイル: cogsci_demo_ma.py プロジェクト: COLAB2/midca

writePort = 5150
readPort = 5151
DISPLAY_FUNC = util.asqiiDisplay
DECLARE_METHODS_FUNC = methods.declare_methods
DECLARE_OPERATORS_FUNC = operators.declare_ops
argsPyHopPlanner = [util.pyhop_state_from_world,
					util.pyhop_tasks_from_goals,
					DECLARE_METHODS_FUNC,
					DECLARE_OPERATORS_FUNC]

myMidca = predicateworld.UserGoalsMidca(domainFile = MIDCA_ROOT + "domains/blocksworld/arsonist.sim", stateFile = MIDCA_ROOT + "domains/blocksworld/states/defstate.sim", display = DISPLAY_FUNC, argsPyHopPlanner=argsPyHopPlanner)

myMidca.append_module('Perceive', MAReporter.MAReporter(writePort))
myMidca.insert_module('Simulate', simulator.ArsonSimulator(arsonChance = 0.9, arsonStart = 2), 1)
myMidca.insert_module('Simulate', simulator.FireReset(), 0)
myMidca.insert_module('Interpret', TFStack.TFStack(), 1)
myMidca.insert_module('Interpret', TFFire.TFFire(), 2)
myMidca.insert_module('Interpret', MAQuery.MAQuery(readPort), 3)
myMidca.insert_module('Eval', Scorer.Scorer(), 0)


def preferApprehend(goal1, goal2):
	if 'predicate' not in goal1 or 'predicate' not in goal2:
		return 0
	elif goal1['predicate'] == 'free' and goal2['predicate'] != 'free':
		return -1
	elif goal1['predicate'] != 'free' and goal2['predicate'] == 'free':
		return 1
	elif goal1['predicate'] == 'onfire' and goal2['predicate'] != 'onfire':
コード例 #2
0
ファイル: simple_run_arson.py プロジェクト: COLAB2/midca
myMidca.append_module("Perceive", PerfectObserver.PerfectObserver())
myMidca.append_module("Interpret",
                      ADistanceAnomalyNoter.ADistanceAnomalyNoter())
#myMidca.append_module("Interpret", UserGoalInput.UserGoalInput())
myMidca.append_module("Eval", SimpleEval.SimpleEval())
myMidca.append_module("Intend", SimpleIntend.SimpleIntend())
myMidca.append_module(
    "Plan",
    PyHopPlanner.PyHopPlanner(util.pyhop_state_from_world,
                              util.pyhop_tasks_from_goals,
                              DECLARE_METHODS_FUNC, DECLARE_OPERATORS_FUNC))

myMidca.append_module("Act", SimpleAct.SimpleAct())

myMidca.insert_module('Simulate',
                      simulator.ArsonSimulator(arsonChance=0.3, arsonStart=2),
                      1)
myMidca.insert_module('Interpret', TFStack.TFStack(), 1)
myMidca.insert_module('Interpret', TFFire.TFFire(), 2)

#tells the PhaseManager to copy and store MIDCA states so they can be accessed later. Note: this drastically increases MIDCA's running time.
myMidca.storeHistory = True
myMidca.initGoalGraph(cmpFunc=GOAL_GRAPH_CMP_FUNC)
myMidca.init()
myMidca.run()
'''
The code below would print out MIDCA's goal set for the first 20 phases of the run above. Note that any memory values can be accessed in this way, assuming that the storeHistory value was set to True during the run. This code is left as an example, but commented out because it will throw an error if fewer than 20 cycles were simulated.

for i in range(20):
    print myMidca.history[i].mem.get(myMidca.midca.mem.CURRENT_GOALS)
コード例 #3
0
ファイル: simple_run_jshop.py プロジェクト: COLAB2/midca
                      simulator.ASCIIWorldViewer(display=DISPLAY_FUNC))
myMidca.append_module("Perceive", PerfectObserver.PerfectObserver())
myMidca.append_module("Interpret",
                      ADistanceAnomalyNoter.ADistanceAnomalyNoter())
#myMidca.append_module("Interpret", UserGoalInput.UserGoalInput())
myMidca.append_module("Eval", SimpleEval.SimpleEval())
myMidca.append_module("Intend", SimpleIntend.SimpleIntend())
myMidca.append_module(
    "Plan",
    JSHOPPlanner.JSHOPPlanner(util.jshop_state_from_world,
                              util.jshop_tasks_from_goals, JSHOP_DOMAIN_FILE,
                              JSHOP_STATE_FILE))
myMidca.append_module("Act", SimpleAct.SimpleAct())

myMidca.insert_module('Simulate',
                      simulator.ArsonSimulator(arsonChance=0.9, arsonStart=10),
                      1)
myMidca.insert_module('Simulate', simulator.FireReset(), 0)
myMidca.insert_module('Interpret', TFStack.TFStack(), 1)
myMidca.insert_module('Interpret', TFFire.TFFire(), 2)
myMidca.insert_module('Interpret', ReactiveApprehend.ReactiveApprehend(), 3)
myMidca.insert_module(
    'Eval', Scorer.Scorer(),
    1)  # this needs to be a 1 so that Scorer happens AFTER SimpleEval

#tells the PhaseManager to copy and store MIDCA states so they can be accessed later.
myMidca.storeHistory = True
myMidca.initGoalGraph(cmpFunc=GOAL_GRAPH_CMP_FUNC)
myMidca.init()
myMidca.run()
'''
コード例 #4
0
ファイル: arson_experiment_1.py プロジェクト: COLAB2/midca
    def createMIDCAObj(self):
        # in this demo, always keep extinguish to false
        extinguish = False

        thisDir = os.path.dirname(
            os.path.abspath(inspect.getfile(inspect.currentframe())))

        MIDCA_ROOT = thisDir + "/../"

        domainFile = MIDCA_ROOT + "worldsim/domains/arsonist.sim"
        stateFile = MIDCA_ROOT + "worldsim/states/defstate.sim"

        self.world = domainread.load_domain(domainFile)
        stateread.apply_state_file(self.world, stateFile)
        # creates a PhaseManager object, which wraps a MIDCA object
        myMidca = base.PhaseManager(self.world,
                                    display=asqiiDisplay,
                                    verbose=4)
        #asqiiDisplay(world)
        # add phases by name
        for phase in [
                "Simulate", "Perceive", "Interpret", "Eval", "Intend", "Plan",
                "Act"
        ]:
            myMidca.append_phase(phase)

        # add the modules which instantiate basic blocksworld operation
        myMidca.append_module("Simulate", simulator.MidcaActionSimulator())
        myMidca.append_module("Simulate", simulator.ASCIIWorldViewer())
        myMidca.append_module("Perceive", perceive.PerfectObserver())
        myMidca.append_module("Interpret", note.ADistanceAnomalyNoter())
        # need to make sure to disable all user input modules #myMidca.append_module("Interpret", guide.UserGoalInput())
        myMidca.append_module("Eval", evaluate.SimpleEval())
        myMidca.append_module("Intend", intend.SimpleIntend())
        myMidca.append_module("Plan", planning.PyHopPlanner(extinguish))
        myMidca.append_module("Act", act.SimpleAct())

        myMidca.insert_module(
            'Simulate',
            simulator.ArsonSimulator(arsonChance=self.arsonChanceArg,
                                     arsonStart=10), 1)
        myMidca.insert_module('Simulate', simulator.FireReset(), 0)
        myMidca.insert_module('Interpret', guide.TFStack(), 1)

        if self.usingTFTreeFire:
            myMidca.insert_module('Interpret', guide.TFFire(), 2)

        if self.usingSimulatedMA:
            myMidca.insert_module('Interpret', guide.ReactiveApprehend(), 3)

        myMidca.insert_module(
            'Eval', evaluate.Scorer(),
            1)  # this needs to be a 1 so that Scorer happens AFTER SimpleEval

        def preferApprehend(goal1, goal2):
            if 'predicate' not in goal1 or 'predicate' not in goal2:
                return 0
            elif goal1['predicate'] == 'free' and goal2['predicate'] != 'free':
                return -1
            elif goal1['predicate'] != 'free' and goal2['predicate'] == 'free':
                return 1
            elif goal1['predicate'] == 'onfire' and goal2[
                    'predicate'] != 'onfire':
                return -1
            elif goal1['predicate'] != 'onfire' and goal2[
                    'predicate'] == 'onfire':
                return 1
            return 0

        # tells the PhaseManager to copy and store MIDCA states so they can be accessed later.
        myMidca.storeHistory = False
        myMidca.initGoalGraph(cmpFunc=preferApprehend)
        ## DO NOT DO THIS: experiment.py will do this automatically: myMidca.init()

        print("Created MIDCA " + str(id(myMidca)) + " w/ arsonchance=" +
              str(self.arsonChanceArg) + ", usingTFTreeFire=" +
              str(self.usingTFTreeFire) + ",usingSimMA=" +
              str(self.usingSimulatedMA))

        self.myMidca = myMidca
        self.initialized = True