예제 #1
0
def fc_test():
    engine.reset()
    try:
        engine.activate('fc_findall')
    except:
        krb_traceback.print_exc()
        sys.exit(1)
def bc_test(person1='bruce'):
    engine.reset()  # Allows us to run tests multiple times.

    start_time = time.time()
    engine.activate('bc_example')
    fc_end_time = time.time()
    fc_time = fc_end_time - start_time

    print("doing proof")
    try:
        with engine.prove_goal(
               'bc_example.how_related($person1, $person2, $relationship)',
               person1=person1) \
          as gen:
            for vars, plan in gen:
                print("%s, %s are %s" % \
                        (person1, vars['person2'], vars['relationship']))
    except Exception:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
    prove_time = time.time() - fc_end_time
    print()
    print("done")
    engine.print_stats()
    print("bc time %.2f, %.0f goals/sec" % \
          (prove_time, engine.get_kb('bc_example').num_prove_calls / prove_time))
예제 #3
0
def fc_test(coil_kind, external_diameter, width, status1=1, Flag='0'):
    fc_goal = goal.compile('coil_area.move_area($coil_kind,$area,$status)')
    try:
        with fc_goal.prove(engine, coil_kind=coil_kind, status=status1) as gen:
            for vars, plan in gen:
                # 读取数据库中库区的信息
                # 当前库区的最大长度
                Max_Length = select_data('UACS_STOCK_INFO', vars['area'])[0]
                # 当前库区的最大宽度
                Max_Width = select_data('UACS_STOCK_INFO', vars['area'])[1]
                # 当前库区的库容率
                Current_Ratio = select_data('UACS_STOCK_INFO', vars['area'])[2]
                #  计算该钢卷放入之后的库容率
                Cal_Capacity = Current_Ratio + (external_diameter * width) / (
                    Max_Length * Max_Width)
                # print "若该钢卷放入%s区域,库容率为%f"%(vars['area'],Cal_Capacity)
                if Cal_Capacity < 1 and Flag == '0':
                    print "%s should be played in %s" % (coil_kind,
                                                         vars['area'])
                    return vars['area']
                if Cal_Capacity >= 1 or Flag == '1':
                    if Flag == '1':
                        print "the saddle of  %s area is full" % (vars['area'])
                    else:
                        print "the %s area is full" % (vars['area'])
                    status_n = status1 + 1
                    return fc_test(coil_kind,
                                   external_diameter,
                                   width,
                                   status1=status_n)
        return "null"
    except:
        print "something err"
        krb_traceback.print_exc()
        sys.exit()
def general(person1=None, person2=None, relationship=None):

    engine.reset()  # Allows us to run tests multiple times.

    start_time = time.time()
    engine.activate('bc2_example')  # same rule base as bc2_test()
    fc_end_time = time.time()
    fc_time = fc_end_time - start_time

    print("doing proof")
    args = {}
    if person1: args['person1'] = person1
    if person2: args['person2'] = person2
    if relationship: args['relationship'] = relationship
    try:
        with engine.prove_goal(
                'bc2_example.how_related($person1, $person2, $relationship)',
                **args) as gen:
            for vars, plan in gen:
                print("%s, %s are %s" %
                      (vars['person1'], vars['person2'], vars['relationship']))
    except Exception:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
    prove_time = time.time() - fc_end_time
    print()
    print("done")
    engine.print_stats()
    print("bc time %.2f, %.0f goals/sec" % \
          (prove_time,
           engine.get_kb('bc2_example').num_prove_calls / prove_time))
예제 #5
0
def fc_test():
    engine.reset()
    try:
        engine.activate('fc_findall')
    except:
        krb_traceback.print_exc()
        sys.exit(1)
def test(person1='bruce'):
    engine.reset()  # Allows us to run tests multiple times.

    # Also runs all applicable forward-chaining rules.
    start_time = time.time()
    engine.activate('example')
    fc_end_time = time.time()
    fc_time = fc_end_time - start_time

    print("doing proof")
    try:
        # In this case, the relationship is returned when you run the plan.
        with engine.prove_goal(
               'example.how_related($person1, $person2)',
               person1=person1) \
          as gen:
            for vars, plan in gen:
                print("%s, %s are %s" % (person1, vars['person2'], plan()))
    except Exception:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
    prove_time = time.time() - fc_end_time
    print()
    print("done")
    engine.print_stats()
    print("fc time %.2f, %.0f asserts/sec" % \
          (fc_time, engine.get_kb('family').get_stats()[2] / fc_time))
    print("bc time %.2f, %.0f goals/sec" % \
          (prove_time, engine.get_kb('example').num_prove_calls / prove_time))
    print("total time %.2f" % (fc_time + prove_time))
예제 #7
0
파일: driver.py 프로젝트: e-loue/pyke
def general(person1=None, person2=None, relationship=None):

    engine.reset()  # Allows us to run tests multiple times.

    start_time = time.time()
    engine.activate("bc2_example")  # same rule base as bc2_test()
    fc_end_time = time.time()
    fc_time = fc_end_time - start_time

    print "doing proof"
    args = {}
    if person1:
        args["person1"] = person1
    if person2:
        args["person2"] = person2
    if relationship:
        args["relationship"] = relationship
    try:
        with engine.prove_goal("bc2_example.how_related($person1, $person2, $relationship)", **args) as gen:
            for vars, plan in gen:
                print "%s, %s are %s" % (vars["person1"], vars["person2"], vars["relationship"])
    except StandardError:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
    prove_time = time.time() - fc_end_time
    print
    print "done"
    engine.print_stats()
    print "bc time %.2f, %.0f goals/sec" % (prove_time, engine.get_kb("bc2_example").num_prove_calls / prove_time)
예제 #8
0
파일: driver.py 프로젝트: e-loue/pyke
def test(person1="bruce"):
    engine.reset()  # Allows us to run tests multiple times.

    # Also runs all applicable forward-chaining rules.
    start_time = time.time()
    engine.activate("example")
    fc_end_time = time.time()
    fc_time = fc_end_time - start_time

    print "doing proof"
    try:
        # In this case, the relationship is returned when you run the plan.
        with engine.prove_goal("example.how_related($person1, $person2)", person1=person1) as gen:
            for vars, plan in gen:
                print "%s, %s are %s" % (person1, vars["person2"], plan())
    except StandardError:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
    prove_time = time.time() - fc_end_time
    print
    print "done"
    engine.print_stats()
    print "fc time %.2f, %.0f asserts/sec" % (fc_time, engine.get_kb("family").get_stats()[2] / fc_time)
    print "bc time %.2f, %.0f goals/sec" % (prove_time, engine.get_kb("example").num_prove_calls / prove_time)
    print "total time %.2f" % (fc_time + prove_time)
예제 #9
0
def bc_test(rb_names, goal, num_return, args = (), rb_name = None,
            plan_args = None, plan_kws = None):
    Engine.reset()
    try:
        if isinstance(rb_names, types.StringTypes): rb_names = (rb_names,)
        for rb_name in rb_names:
            Engine.activate(rb_name)
        if rb_name is None: rb_name = rb_names[0]
        with Engine.prove_n(rb_name, goal, args, num_return) as gen:
            for ret_args, plan in gen:
                first = True
                for ret_arg in ret_args:
                    if first: first = False
                    else: print ",",
                    print ret_arg,
                print
                if plan_args is None and plan_kws is None:
                    assert plan is None, "unexpected plan"
                else:
                    assert plan is not None, "expected plan"
                    print "plan:"
                    if plan_args is None: ans = plan(**plan_kws)
                    elif plan_kws is None: ans = plan(*plan_args)
                    else: ans = plan(*plan_args, **plan_vars)
                    if ans is not None: print ans
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #10
0
    def evaluate(self, kb, rule, subject):
        """ Evaluates a rule or fact in the knowledge base

        Args:
            kb: Knowledge base to be checked
            rule: Rule/Fact to be checked
            actor: Entity performing the action. Defaults to the player
            subject: The target of the action
        """

        # To expand the subject arg, refer to:
        # http://stackoverflow.com/questions/6913084/how-to-split-list-and-pass-them-as-separate-parameter
        # Useful with FrameNet API

        # Construct argument string for testing the rule

        self.engine.reset()
        if kb is not None:
            self.arg_string = kb + "." + rule

            print("KB: " + kb)
            print("arg_string: " + self.arg_string)
            print("Subject: " + subject)
            print("Current KB: " + str(self.currentKB))
            print("New KB: " + (kb))


            try:
                self.engine.activate(kb)
                if self.engine.prove_1_goal(self.arg_string + "("")"):
                    return True

            except StandardError:
                krb_traceback.print_exc()
                return False
예제 #11
0
def myTest():
    engine = knowledge_engine.engine(__file__)
    engine.activate('subway_rules')
    kb = engine.get_kb('subway')
    kb.dump_universal_facts()
    print("Specific facts are:")
    engine.get_kb('subway').dump_specific_facts()
    # all forward-chaining rules are run
    print("doing proof")
    try:
        stmt = 'subway.at_station(Airport)'  # {}
        stmt = 'subway_rules.at_station($a)'
        # take_line($from, $line, $to)
        # stmt = 'subway_rules.take_line(Airport, $a, $b)'
        # stmt = 'subway_rules.connected(Airport, $b)'
        # stmt = 'subway_rules.half_sibling($af, $bf)'
        with engine.prove_goal(stmt) as gen:
            for variable, plan in gen:
                print(variable)
                # print("%s at_station" % (variable['a']))
    except Exception:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
    print()
    print("done")
    engine.print_stats()
예제 #12
0
def bc_test(person1 = 'bruce'):
    engine.reset()      # Allows us to run tests multiple times.

    start_time = time.time()
    engine.activate('bc_example')
    fc_end_time = time.time()
    fc_time = fc_end_time - start_time

    print "doing proof"
    try:
        with engine.prove_goal(
               'bc_example.how_related($person1, $person2, $relationship)',
               person1=person1) \
          as gen:
            for vars, plan in gen:
                print "%s, %s are %s" % \
                        (person1, vars['person2'], vars['relationship'])
    except StandardError:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
    prove_time = time.time() - fc_end_time
    print
    print "done"
    engine.print_stats()
    print "bc time %.2f, %.0f goals/sec" % \
          (prove_time, engine.get_kb('bc_example').num_prove_calls / prove_time)
예제 #13
0
def create_stackup():
    fc_goal = goal.compile('pcb.needs_gnd_layer($net)')
    engine.reset()  # Allows us to run tests multiple times.

    # Also runs all applicable forward-chaining rules.
    start_time = time.time()
    engine.activate('fc_pcb')
    #print "dumping facts..:"
    #engine.get_kb('pcb').dump_universal_facts()
    fc_end_time = time.time()
    fc_time = fc_end_time - start_time

    print "Requires neighboring gnd layer:"
    try:
        # In this case, the relationship is returned when you run the plan.
        with fc_goal.prove(
               engine\
               ) \
          as gen:
            for vars, plan in gen:
                print "%s" % (vars['net'])
                #print "%s is a suitable material for %s" % (vars['material'], vars['net'])
    except StandardError:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
예제 #14
0
def run():
    engine.reset()
    try:
        engine.activate('pattern_matching')
        engine.prove_1_goal('pattern_matching.knows_pattern_matching()')
    except Exception:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #15
0
def fc_test():
    consulta()
    engine.reset()
    try:
        engine.activate('fc_diagnostico')
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #16
0
def run():
    engine.reset()
    try:
        engine.activate('anime_suggestion')
        engine.prove_1_goal('anime_suggestion.getting_started()')
    except Exception:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #17
0
def fc_test(*rb_names):
    Engine.reset()
    try:
        for rb_name in rb_names:
            Engine.activate(rb_name)
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #18
0
def run():
    engine.reset()
    try:
        engine.activate('pattern_matching')
        engine.prove_1_goal('pattern_matching.knows_pattern_matching()')
    except StandardError:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #19
0
파일: agent.py 프로젝트: bok/AI-with-Pyke
    def step(self, universe):
        """The agent generates his plan and tries to execute it."""
        self.ke = universe.ke

        if (self.satisfied):
            return

        # Generate a new plan if needed
        if self.running_plan is None:
            plan = None
            for goal in self.goals:

                initial_state = []

                # Extract informations from the knowledge.
                initial_state.extend(self.knowledge)

                if type(goal[0]) != tuple:
                    final_state = (goal,)
                else:
                    final_state = goal

                # reset the knowledge engine
                self.ke.reset()
                try:
                    self.ke.activate('universe_rules', 'facts',
                                     'actions_plan', 'planning',
                                     'actions_exec', 'execution')
                except:
                    krb_traceback.print_exc()
                try:
                    # Generate the plan (can fail)
                    plan = self.gen_plan(initial_state, final_state)
                    if plan is None:
                        # Successfully generated a no-op plan
                        self.goals.remove(goal)
                    break
                except CanNotProve as e:
                    # Cannot prove the plan, so do nothing.
                    continue

            if plan is not None:
                plan = list(plan)
                self.running_plan = plan
                self.running_goal = goal

        # Execute running plan
        if self.running_plan is not None:
            success = self.execute(universe)
            if success:
                if (len(self.running_plan) == 0):
                    self.running_plan = None
                    self.goals.remove(self.running_goal)
                    self.running_goal = None

        # If the agent has completed all its goals, it is satisfied.
        if len(self.goals) == 0:
            self.satisfied = True
예제 #20
0
    def step(self, universe):
        """The agent generates his plan and tries to execute it."""
        self.ke = universe.ke

        if (self.satisfied):
            return

        # Generate a new plan if needed
        if self.running_plan is None:
            plan = None
            for goal in self.goals:

                initial_state = []

                # Extract informations from the knowledge.
                initial_state.extend(self.knowledge)

                if type(goal[0]) != tuple:
                    final_state = (goal, )
                else:
                    final_state = goal

                # reset the knowledge engine
                self.ke.reset()
                try:
                    self.ke.activate('universe_rules', 'facts', 'actions_plan',
                                     'planning', 'actions_exec', 'execution')
                except:
                    krb_traceback.print_exc()
                try:
                    # Generate the plan (can fail)
                    plan = self.gen_plan(initial_state, final_state)
                    if plan is None:
                        # Successfully generated a no-op plan
                        self.goals.remove(goal)
                    break
                except CanNotProve as e:
                    # Cannot prove the plan, so do nothing.
                    continue

            if plan is not None:
                plan = list(plan)
                self.running_plan = plan
                self.running_goal = goal

        # Execute running plan
        if self.running_plan is not None:
            success = self.execute(universe)
            if success:
                if (len(self.running_plan) == 0):
                    self.running_plan = None
                    self.goals.remove(self.running_goal)
                    self.running_goal = None

        # If the agent has completed all its goals, it is satisfied.
        if len(self.goals) == 0:
            self.satisfied = True
예제 #21
0
파일: test.py 프로젝트: jhidding/pyke
def run(rule_bases_to_activate,
        default_rb=None,
        init_fn=None,
        fn_to_run_plan=eval_plan,
        plan_globals={}):
    if not Did_init: init()

    if not isinstance(rule_bases_to_activate, (tuple, list)):
        rule_bases_to_activate = (rule_bases_to_activate, )

    if default_rb is None: default_rb = rule_bases_to_activate[0]

    while True:
        print()
        goal_str = input("goal: ")
        if not goal_str: break
        goal, args_str = parse(goal_str)
        if goal == "trace":
            args = args_str.split()
            if len(args) == 1:
                Engine.trace(default_rb, args[0])
            else:
                Engine.trace(*args)
            continue
        if goal == "untrace":
            args = args_str.split()
            if len(args) == 1:
                Engine.untrace(default_rb, args[0])
            else:
                Engine.untrace(*args)
            continue
        args_str = args_str.strip()
        rb_name = default_rb
        if args_str[0] == '.':
            rb_name = goal
            goal, args_str = parse(args_str[1:])
        args = parse(args_str)[0]
        print("proving: %s.%s%s" % (rb_name, goal, args))
        goal_args = tuple(as_pattern(arg) for arg in args)
        Engine.reset()
        if init_fn: init_fn(Engine)
        context = contexts.simple_context()
        try:
            Engine.activate(*rule_bases_to_activate)
            with Engine.prove(rb_name, goal, context, goal_args) as it:
                for prototype_plan in it:
                    final = {}
                    print("got: %s%s" % \
                          (goal, tuple(arg.as_data(context, True, final)
                                       for arg in goal_args)))
                    if not prototype_plan:
                        print("no plan returned")
                    else:
                        plan = prototype_plan.create_plan(final)
                        fn_to_run_plan(plan_globals, locals())
        except:
            krb_traceback.print_exc(100)
예제 #22
0
def bc_test():
    engine.reset()
    try:
        engine.activate('bc_forall')
        with engine.prove_goal('bc_forall.no_step_siblings($child)') as gen:
            for vars, plan in gen:
                print vars['child']
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #23
0
def bc_test():
    engine.reset()
    try:
        engine.activate('bc_forall')
        with engine.prove_goal('bc_forall.no_step_siblings($child)') as gen:
            for vars, plan in gen:
                print(vars['child'])
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #24
0
파일: test.py 프로젝트: crash-at-work/pyke
def run(rule_bases_to_activate,
        default_rb = None, init_fn = None, fn_to_run_plan = eval_plan,
        plan_globals = {}):
    if not Did_init: init()

    if not isinstance(rule_bases_to_activate, (tuple, list)):
        rule_bases_to_activate = (rule_bases_to_activate,)

    if default_rb is None: default_rb = rule_bases_to_activate[0]

    while True:
        print
        goal_str = raw_input("goal: ")
        if not goal_str: break
        goal, args_str = parse(goal_str)
        if goal == "trace":
            args = args_str.split()
            if len(args) == 1:
                Engine.trace(default_rb, args[0])
            else:
                Engine.trace(*args)
            continue
        if goal == "untrace":
            args = args_str.split()
            if len(args) == 1:
                Engine.untrace(default_rb, args[0])
            else:
                Engine.untrace(*args)
            continue
        args_str = args_str.strip()
        rb_name = default_rb
        if args_str[0] == '.':
            rb_name = goal
            goal, args_str = parse(args_str[1:])
        args = parse(args_str)[0]
        print "proving: %s.%s%s" % (rb_name, goal, args)
        goal_args = tuple(as_pattern(arg) for arg in args)
        Engine.reset()
        if init_fn: init_fn(Engine)
        context = contexts.simple_context()
        try:
            Engine.activate(*rule_bases_to_activate)
            with Engine.prove(rb_name, goal, context, goal_args) as it:
                for prototype_plan in it:
                    final = {}
                    print "got: %s%s" % \
                          (goal, tuple(arg.as_data(context, True, final)
                                       for arg in goal_args))
                    if not prototype_plan:
                        print "no plan returned"
                    else:
                        plan = prototype_plan.create_plan(final)
                        fn_to_run_plan(plan_globals, locals())
        except:
            krb_traceback.print_exc(100)
예제 #25
0
def bc_test():
    engine.reset()
    try:
        engine.activate('bc_findall')
        with engine.prove_goal('bc_findall.cousins_of($child, $cousins)') \
          as gen:
            for vars, plan in gen:
                print "%s has %s as cousins" % (vars['child'], vars['cousins'])
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #26
0
def bc_test():
    engine.reset()
    try:
        engine.activate('bc_findall')
        with engine.prove_goal('bc_findall.cousins_of($child, $cousins)') \
          as gen:
            for vars, plan in gen:
                print("%s has %s as cousins" % (vars['child'], vars['cousins']))
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #27
0
def test(num_disks):
    engine.reset()
    try:
        engine.activate('towers_of_hanoi')
  
        with engine.prove_goal('towers_of_hanoi.solve($num_disks, $moves)',
                               num_disks=num_disks) \
          as gen:
            for i, (vars, no_plan) in enumerate(gen):
                print "got %d:" % (i + 1), vars['moves']
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #28
0
def test(num_disks):
    engine.reset()
    try:
        engine.activate('towers_of_hanoi')

        with engine.prove_goal('towers_of_hanoi.solve($num_disks, $moves)',
                               num_disks=num_disks) \
          as gen:
            for i, (vars, no_plan) in enumerate(gen):
                print("got %d:" % (i + 1), vars['moves'])
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #29
0
def test():
    engine.reset()
    try:
        engine.assert_('sports', 'weighs', ('p1', 100))
        engine.assert_('sports', 'weighs', ('p2', 200))
        engine.activate('bc_sports')
        with engine.prove_goal('bc_sports.heavier($h, $l)') as goal:
            for vars, plan in goal:
                print vars
        print engine.prove_1_goal('bc_sports.heavier(p2, p1)')
        #print engine.prove_1_goal('bc_sports.heavier(p1, p2)')
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #30
0
def bc_test(client="client1"):
    engine.reset()
    try:
        engine.activate('bc_functions')
        with engine.prove_goal('bc_functions.findB($client)',
                               client=client) as gen:
            for k, v in gen:
                print("iter")
                print(k)
                print(v())
                print("----")
    except:
        krb_traceback.print_exc()
        sys.exit(1)
    def present_activities(self):

        if self.mode == "online":
            self.is_running = False

        elif self.mode == "offline":
            self.answer_list = []

            for items in question_list1:
                for i in range(len(items.answer)):
                    if items.answer[i] == True:
                        self.answer_list.append(
                            (items.question_num, self.INDEX_ANSWER_DICT[i]))

            for items in question_list2:
                for i in range(len(items.answer)):
                    if items.answer[i] == True:
                        self.answer_list.append(
                            (items.question_num, self.INDEX_ANSWER_DICT[i]))

            engine = knowledge_engine.engine(__file__)
            engine.reset()
            engine.activate('category_rules')

            for answers in self.answer_list:
                engine.assert_('answer', 'question', answers)

            print("Facts gathered:")
            engine.get_kb('answer').dump_specific_facts()

            try:
                vars, plan = engine.prove_1_goal(
                    'category_rules.top2($category1, $category2)')
                print()
                print("Top 2 Activity Categories selected are: %s, %s" %
                      (self.RBS_CATEGORIES_DICT[vars['category1']],
                       self.RBS_CATEGORIES_DICT[vars['category2']]))
                print()
            except knowledge_engine.CanNotProve:
                krb_traceback.print_exc()

            self.user_preferences = list(
                (self.RBS_CATEGORIES_DICT[vars['category1']],
                 self.RBS_CATEGORIES_DICT[vars['category2']]))
            selector_obj = Selector.city_selector()
            throwaway, self.cities_and_activities_results_list = selector_obj.find_matching_city(
                self.user_preferences)
            self.show_offline_result()
예제 #32
0
def bc_test():
    engine.reset()
    try:

        engine.activate('bc_syll')
        with engine.prove_goal('bc_syll.all($S, $P)') as goalAll:
            for vars, plan in goalAll:
                print 'All that are', vars['S'], 'are', vars['P']

        with engine.prove_goal('bc_syll.some($S, $P)') as goalSome:
            # looking for "some elderly are mortal"
            for vars, plan in goalSome:
                print 'Some that are', vars['S'], 'are', vars['P']
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #33
0
def getoffering(product):
    results = []

    engine = start()
    engine.reset()
    try:
        getfacts(engine)
        engine.activate('fc_components')

        with engine.prove_goal('vendors.vendor_offering_supports_forcost($vendor, $offering, '+product+', $cost)') as gen:
            for (r, p) in gen:
                results.append(r)
    except:
        krb_traceback.print_exc()
        sys.exit(1)

    return results
예제 #34
0
def general(lista):

    engine.reset()

    start_time = time.time()
    engine.activate('bc_regras')
    fc_end_time = time.time()
    fc_time = fc_end_time - start_time

    febre, dia_febre, dia_manchas, dorMuscular, dorArticulacao, intesiDorArtic, edema, conjuntivite, dorCabeca, coceira, hipertrofia, discrasia, acometimento, neonato = lista
    #hipertrofia, discrasia, acometimento, neonato = lista

    args = {}

    if febre: args['febre'] = febre
    if dia_febre: args['dia_febre'] = dia_febre
    if dia_manchas: args['dia_manchas'] = dia_manchas
    if dorMuscular: args['dorMuscular'] = dorMuscular
    if dorArticulacao: args['dorArticulacao'] = dorArticulacao
    if intesiDorArtic: args['intesiDorArtic'] = intesiDorArtic
    if edema: args['edema'] = edema
    if conjuntivite: args['conjuntivite'] = conjuntivite
    if dorCabeca: args['dorCabeca'] = dorCabeca
    if coceira: args['coceira'] = coceira
    if hipertrofia: args['hipertrofia'] = hipertrofia
    if discrasia: args['discrasia'] = discrasia
    if acometimento: args['acometimento'] = acometimento
    if neonato: args['neonato'] = neonato
    #if doenca: args['doenca'] = doenca
    try:
        with engine.prove_goal(
                'bc_regras.diagnostico_resultado ($febre, $dia_febre, $dia_manchas, $dorMuscular, $dorArticulacao, $intesiDorArtic, $edema, $conjuntivite, $dorCabeca, $coceira, $hipertrofia, $discrasia, $acometimento, $neonato, $doenca)',
                #'bc_regras.diagnostico_4 ($hipertrofia, $discrasia, $acometimento, $neonato, $doenca)',
                **args) as gen:
            for vars, plan in gen:
                print("Provavelmente é %s" % vars['doenca'])
    except Exception:

        krb_traceback.print_exc()
        sys.exit(1)
    prove_time = time.time() - fc_end_time
    print('\n done')
예제 #35
0
def bc_test():
    engine.reset()
    try:
        engine.activate('bc_notany')

        #with engine.prove_goal(
        #       'bc_notany.siblings($sibling1, $sibling2, $_, $_)') \
        #  as gen1:
        #    for vars, plan in gen1:
        #        print "siblings:", vars['sibling1'], vars['sibling2']
  
        with engine.prove_goal('bc_notany.child_with_no_aunt($child)') as gen2:
            for vars, plan in gen2:
                print vars['child'], "has no aunt"

        with engine.prove_goal('bc_notany.child_with_no_uncle($child)') as gen3:
            for vars, plan in gen3:
                print vars['child'], "has no uncle"
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #36
0
def recommend_controlled_z():
    fc_goal = goal.compile('pcb.needs_ctrl_z($net)')
    engine.reset()  # Allows us to run tests multiple times.

    # Runs all applicable forward-chaining rules.
    engine.activate('fc_pcb')
    print "Requires controlled impedance tracewidth:"
    try:
        # In this case, the relationship is returned when you run the plan.
        with fc_goal.prove(
               engine\
               ) \
          as gen:
            for vars, plan in gen:
                print "%s" % (vars['net'])
                #print "%s is a suitable material for %s" % (vars['material'], vars['net'])
    except StandardError:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
def bc_test():
    engine.reset()
    try:
        engine.activate('bc_notany')

        #with engine.prove_goal(
        #       'bc_notany.siblings($sibling1, $sibling2, $_, $_)') \
        #  as gen1:
        #    for vars, plan in gen1:
        #        print "siblings:", vars['sibling1'], vars['sibling2']

        with engine.prove_goal('bc_notany.child_with_no_aunt($child)') as gen2:
            for vars, plan in gen2:
                print(vars['child'], "has no aunt")

        with engine.prove_goal(
                'bc_notany.child_with_no_uncle($child)') as gen3:
            for vars, plan in gen3:
                print(vars['child'], "has no uncle")
    except:
        krb_traceback.print_exc()
        sys.exit(1)
예제 #38
0
def myTest():
    # knowledge_engine.debug = True
    engine = knowledge_engine.engine(__file__)
    # engine = knowledge_engine.engine()
    # engine.add_universal_fact('family', 'son_of', ('david', 'bruce'))
    # engine.get_kb('family').dump_universal_facts()
    # engine.get_kb('family').dump_specific_facts()
    # son_of('david', 'bruce')
    # engine.reset()
    engine.activate('example')
    kb = engine.get_kb('family')
    kb.dump_universal_facts()
    print("Specific facts are:")
    engine.get_kb('family').dump_specific_facts()
    # all forward-chaining rules are run
    print("doing proof")
    try:
        with engine.prove_goal('example.real_siblings($a, $b)') as gen:
            for variable, plan in gen:
                print("%s and %s" % (variable['a'], variable['b']))
    except Exception:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
    print("doing second proof")
    try:
        with engine.prove_goal('example.half_sibling($a, $b)') as gen:
            for variable, plan in gen:
                print("%s, %s are half_siblings" % (variable['a'], variable['b']))
    except Exception:
        # This converts stack frames of generated python functions back to the
        # .krb file.
        krb_traceback.print_exc()
        sys.exit(1)
    print()
    print("done")
    engine.print_stats()
def getremedy(fault):
    engine.reset()
    i = -1
    try:
        engine.activate('remedyget')
        c_check = input("Is cost an issue?:[y/n]")
        c_check = c_check[0].lower()
        t_check = input("Is time an issue?;[y/n]")
        t_check = t_check[0].lower()
        with engine.prove_goal('remedyget.get($fault,$remedy)',
                               fault=fault) as gen:
            for i, (vars, no_plan) in enumerate(gen):
                remedy = tuple(vars['remedy'])
                ob = REMEDY(remedy[0], remedy[1], remedy[2])
                remedy_list.append(ob)
            if (c_check == "y" and t_check == "y"):
                min_heap("prod")
            elif (c_check == "y"):
                min_heap("cost")
            elif (t_check == "y"):
                min_heap("time")
            else:  #No priority to solution...displaying all
                print("Remedy:", remedy[0])
            if i == -1:
                print("No remedy available")
            elif (c_check == "y" or t_check == "y"):
                print("\nRemedy:", remedy_list[0].name, "Cost:",
                      remedy_list[0].cost, "Time:", remedy_list[0].time,
                      "is the best solution")
                print("All solutions: ")

                #print("The remedy to the fault: ",fault,"; is ", vars['remedy'])
                #print (vars)
    except:
        krb_traceback.print_exc()

        sys.exit(1)
예제 #40
0
def forwardChani():

    try:

        engine.reset()
        engine.activate('rules')

        with engine.prove_goal('rules.diagnostico($resultado)') as gen:
            for i, (vars, no_plan) in enumerate(gen):
                resultado = vars['resultado']
                total = resultado[0] + resultado[1] + resultado[2] + resultado[
                    3]
                print("Denge: ", round(100 * resultado[0] / total),
                      "% de chance ")
                print("Zika: ", round(100 * resultado[1] / total),
                      "% de chance ")
                print("Chikungunya: ", round(100 * resultado[2] / total),
                      "% de chance ")
                print("Outro: ", round(100 * resultado[3] / total),
                      "% de chance ")

    except:
        krb_traceback.print_exc()
        sys.exit(1)
def getremedy():
    engine.reset()
    i = -1
    global remedy_list
    try:
        #inputs
        engine.activate('Remedyrule')
        a_time = input(
            "Enter application response time is less than or greater than 15[less\greater]"
        )
        print("Virtual Machine Paramaeters")
        storage1 = int(input("Enter Storage percentage:[0-100]"))
        memory1 = int(input("Enter Memory percentage:[0-100]"))
        network1 = int(input("Enter Network level:[0-100]"))
        cpu1 = int(input("Enter CPU level:[0-100]"))
        storage11 = scale(storage1)
        memory11 = scale(memory1)
        network11 = scale(network1)
        cpu11 = scale(cpu1)
        print("\nPhysical Machine Parameters")
        storage2 = int(input("Enter Storage percentage:[0-100]"))
        memory2 = int(input("Enter Memory percentage:[0-100]"))
        network2 = int(input("Enter Network level:[0-100]"))
        cpu2 = int(input("Enter CPU level:[0-100]"))
        storage22 = scale(storage2)
        memory22 = scale(memory2)
        network22 = scale(network2)
        cpu22 = scale(cpu2)
        fault = (a_time, (storage11, memory11, network11, cpu11),
                 (storage22, memory22, network22, cpu22))
        print(fault)
        #        print(fault,'hello')
        sum1 = int(storage1) + int(cpu1) + int(network1) + int(memory1) + int(
            storage2) + int(cpu2) + int(network2) + int(memory2)

        ##############################################################################################

        try:
            remedy_list = []
            op = search(sum1, fault)
            #op=[(('Regular_checkpointing', (20, 10)), ('application_rejuvination', (25, 8)), ('application_migration', (9, 20)))(('Regular_cg', (20, 10)), ('application', (25, 8)), ('applicattion', (9, 20)))]
            #            print(op[1])
            print(op)
            temp = op[1]
            print('The following are the faults\n')
            if (type(temp) == str):
                print(temp + '\n')
                return
            for i in temp:
                for k in range(len(i)):
                    print(i[k])
            for k in op[0]:
                for j in k:
                    #                    print(j)
                    ob = REMEDY(j[0], j[1][0], j[1][1])
                    remedy_list.append(ob)
            while (True):
                print('inside hash')
                c_check = input('Do you want to check based on cost\n')
                t_check = input('Do you want to check based on time\n')
                if (c_check == "y" and t_check == "y"):
                    ob = min_heap("prod")
                elif (c_check == "y"):
                    ob = min_heap("cost")
                elif (t_check == "y"):
                    ob = min_heap("time")
#                        print(ob,'dssd')
                else:
                    for i in remedy_list:
                        print(i)
                    break
                try:
                    print("Remedy:", ob.cost, ob.name, ob.time)
                except:
                    pass
        except:
            remedy_list = []
            temp = []
            with engine.prove_goal(
                    'Remedyrule.get($fault,$actualfault,$remedy)',
                    fault=fault) as gen:
                for i, (vars, no_plan) in enumerate(gen):
                    remedy = vars['remedy']

                    temp.append(vars['actualfault'])
                    print(temp, 'helo')
                    insert(sum1,
                           [fault, [vars['remedy']], [vars['actualfault']]])
                    for j in remedy:
                        #                        print(j)
                        ob = REMEDY(j[0], j[1][0], j[1][1])
                        #                        print(ob)
                        remedy_list.append(ob)
                print("The following faults were diagonised\n")
                #                print(temp)
                for i in temp:
                    for k in range(len(i)):
                        print(i[k])
                while (True):
                    c_check = input('Do you want to check based on cost\n')
                    t_check = input('Do you want to check based on time\n')
                    if (c_check == "y" and t_check == "y"):
                        ob = min_heap("prod")
                    elif (c_check == "y"):
                        ob = min_heap("cost")
                    elif (t_check == "y"):
                        ob = min_heap("time")
                    else:
                        try:
                            print("Remedy:", vars['remedy'])
                            break
                        except:
                            insert(sum1, [
                                fault, ['No Remedy Availaible'],
                                ['No faults detected']
                            ])
                            print('No faults detected\n')
                            break

                    try:

                        print("Remedy:", ob.name, "Cost is", ob.cost,
                              "Time is", ob.time)
                    except:
                        pass

                if i == -1:
                    print("No remedy available")


#                    insert(sum1,[fault,['No Remedy Availaible'],['No faults detected']])
#elif (c_check=="y" or t_check=="y"):
#print ("\nRemedy:",remedy_list[0].name,"Cost:",remedy_list[0].cost,"Time:",remedy_list[0].time,"is the best solution")
#print("All solutions: ")
#for i in remedy_list:
#print(i.name,i.cost,i.time)

#print("The remedy to the fault: ",fault,"; is ", vars['remedy'])
#print (vars)

    except:
        krb_traceback.print_exc()

        sys.exit(1)
def run():
    global Robot, Building_center

    engine = knowledge_engine.engine(__file__)

    Robot = robot_simulator.start()

    # Add the following universal facts:
    #
    #   layout.board(width, height)
    #   layout.building(left, top, right, bottom)
    #   layout.building_center(x, y)
    #   layout.car(width, height)
    #   layout.car_logical_center(x_offset, y_offset)
    #   layout.range_finder(width, length)
    #   layout.safety_factor(safety_factor)
    #   layout.track(left, top, right, bottom)
    #   layout.direction(cc|ccw)
    #   layout.waypoint(x, y)

    engine.add_universal_fact('layout', 'board',
                              (robot_simulator.Width, robot_simulator.Height))
    corners = left, top, right, bottom = \
             robot_simulator.Building.left, \
             robot_simulator.Building.top, \
             robot_simulator.Building.right, \
             robot_simulator.Building.bottom
    print "building corners", corners
    engine.add_universal_fact('layout', 'building',
                              corners)
    Building_center = robot_simulator.Building.center
    engine.add_universal_fact('layout', 'building_center',
                              Building_center)
    engine.add_universal_fact('layout', 'car',
                              Robot.car.rect[2:])
    engine.add_universal_fact('layout', 'car_logical_center',
                              Robot.car.logical_center)
    engine.add_universal_fact('layout', 'range_finder',
                              Robot.rf.rect[2:])
    safety_factor = max(Robot.car.rect.size) + 5
    engine.add_universal_fact('layout', 'safety_factor',
                              (safety_factor,))
    track = (left - safety_factor,
             top - safety_factor,
             right + safety_factor,
             bottom + safety_factor)
    print "track", track
    engine.add_universal_fact('layout', 'track', track)
    initial_direction = direction(Robot.heading)
    print "initial_direction", initial_direction
    engine.add_universal_fact('layout', 'direction', (initial_direction,))
    engine.add_universal_fact('layout', 'waypoint', (track[0], track[1]))
    engine.add_universal_fact('layout', 'waypoint', (track[0], track[3]))
    engine.add_universal_fact('layout', 'waypoint', (track[2], track[1]))
    engine.add_universal_fact('layout', 'waypoint', (track[2], track[3]))
    engine.add_universal_fact('layout', 'waypoint', Robot.position)

    for step in itertools.count():
        x, y = Robot.position
        print "Robot position %d, %d" % Robot.position
        engine.add_universal_fact('history', 'position', (step, x, y))
        print "Robot heading %d" % Robot.heading
        engine.add_universal_fact('history', 'heading', (step, Robot.heading))
        engine.add_universal_fact('history', 'car_radial',
                                  (step,
                                   heading(Building_center, Robot.position)))
        engine.reset()
        engine.activate('rules')
        print "proving step", step
        try:
            vars, _ = engine.prove_1_goal('rules.get_plan($step, $plan)',
                                          step=step)
        except:
            krb_traceback.print_exc()
            sys.exit(1)
        plan = vars['plan']
        if plan is None:
            print "Success!"
            break
        ans = plan()
        print "plan done, Robot at (%d, %d)" % Robot.position
        engine.add_universal_fact('history', 'result', (step, ans))
예제 #43
0
파일: pyketest.py 프로젝트: zartata/pyke
 def setUp(self):
     try:
         self.activate()
     except:
         krb_traceback.print_exc()
         raise
예제 #44
0
def getremedy():
    engine.reset()
    i = -1
    try:
        engine.activate('Remedyrule')
        a_time = input(
            "Enter application response time is less than or greater than 15[less\greater]"
        )
        print("Virtual Machine Paramaeters")
        storage1 = int(input("Enter Storage percentage:[0-100]"))
        memory1 = int(input("Enter Memory percentage:[0-100]"))
        network1 = int(input("Enter Network level:[0-100]"))
        cpu1 = int(input("Enter CPU level:[0-100]"))
        storage11 = scale(storage1)
        memory11 = scale(memory1)
        network11 = scale(network1)
        cpu11 = scale(cpu1)
        print("\nPhysical Machine Parameters")
        storage2 = int(input("Enter Storage percentage:[0-100]"))
        memory2 = int(input("Enter Memory percentage:[0-100]"))
        network2 = int(input("Enter Network level:[0-100]"))
        cpu2 = int(input("Enter CPU level:[0-100]"))
        storage22 = scale(storage2)
        memory22 = scale(memory2)
        network22 = scale(network2)
        cpu22 = scale(cpu2)
        fault = (a_time, (storage11, memory11, network11, cpu11),
                 (storage22, memory22, network22, cpu22))
        #        print(fault,'hello')
        sum1 = int(storage1) + int(cpu1) + int(network1) + int(memory1) + int(
            storage2) + int(cpu2) + int(network2) + int(memory2)
        try:
            op = search(sum1, fault)
            print(op)
        except:
            with engine.prove_goal('Remedyrule.get($fault,$remedy)',
                                   fault=fault) as gen:
                for i, (vars, no_plan) in enumerate(gen):
                    #remedy=tuple(vars['remedy'])
                    #ob=REMEDY(remedy[0],remedy[1],remedy[2])
                    #if (c_check=="y" and t_check=="y"):
                    #min_heap(ob,"prod")
                    #elif (c_check=="y"):
                    #min_heap(ob,"cost")
                    #elif (t_check=="y"):
                    #min_heap(ob,"time")
                    #else: #No priority to solution...displaying all
                    #print("Remedy:",ob.cost,ob.name,ob.time)
                    print("Remedy:", vars['remedy'])
                    insert(sum1, (fault, ('Insert the fault here',
                                          'Insert best possible remedy here')))
                if i == -1:
                    print("No remedy available")
                    insert(sum1, (fault, 'No Remedy Availaible'))
                #elif (c_check=="y" or t_check=="y"):
                #print ("\nRemedy:",remedy_list[0].name,"Cost:",remedy_list[0].cost,"Time:",remedy_list[0].time,"is the best solution")
                #print("All solutions: ")
                #for i in remedy_list:
                #print(i.name,i.cost,i.time)

                #print("The remedy to the fault: ",fault,"; is ", vars['remedy'])
                #print (vars)
    except:
        krb_traceback.print_exc()

        sys.exit(1)