コード例 #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':
		return -1
コード例 #2
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