Ejemplo n.º 1
0
    def verify_mode(status_chain, modes, v=10):
        """ 验证一个状态链是否在模型集合中
            如果在,则返回模型编号(在modes中的索引)
            否则返回验证未通过的原因
        """
        tmp_mat = get_prob_mat(status_chain)
        foo_1 = list()

        #==============================================================================
        #         产生新模式的原因,
        #         其中在出现新任务模式中,原因为新任务
        #         出现新转移概率模型中,原因是转移概率发生变化的任务
        #==============================================================================
        reason = list()
        for x in modes:
            new_task = check_new_task(tmp_mat, x)
            if len(new_task) == 0:
                foo_1.append(True)
            else:
                foo_1.append(False)
                reason.append(new_task)

        if True not in foo_1:
            return ('new task', reason)
            #return False
        else:
            ''' 无新的任务出现则检查矩阵状态 '''
            foo_2, reason = list(), dict()
            for x in modes:
                new_angle = cmp_mat(*(list((lambda: mat_trim(tmp_mat, x))()) +
                                      [v]))
                if new_angle == True:
                    foo_2.append(True)
                else:
                    foo_2.append(False)
                    # 返回的原因包含新模型与已知模型相比发生变化的任务
                    reason[modes.index(x)] = new_angle

            #foo_2 = map(lambda x: cmp_mat(*(list((lambda: mat_trim(tmp_mat, x))()) + [v])) == True, modes)
            if True not in foo_2:
                #==============================================================================
                #                 #以下代码可以只返回导致新模型的任务名,直接返回reason可以得到更加详细的信息
                #                 #reason = list(set([i for i in x.keys() for x in reason.values()]))
                #==============================================================================

                #以下代码可以导致返回任务的真实名字
                r = dict()
                for i in reason.keys():
                    x = dict()
                    for e in reason[i].keys():
                        x[get_taskname(app_c_path, e)] = round(reason[i][e], 2)
                    r[i] = x
                reason = r
                return ('new mode', reason)
                #return False
            return foo_2.index(True)
Ejemplo n.º 2
0
    def verify_mode(status_chain, modes, v=10):
        """ 验证一个状态链是否在模型集合中
            如果在,则返回模型编号(在modes中的索引)
            否则返回验证未通过的原因
        """
        tmp_mat = get_prob_mat(status_chain)
        foo_1 = list()

        reason = list()
        for x in modes:
            new_task = check_new_task(tmp_mat, x)
            if len(new_task) == 0:
                foo_1.append(True)
            else:
                foo_1.append(False)
                reason.append(new_task)

        if True not in foo_1:
            return ('new task', reason)
            #return False
        else:
            ''' 无新的任务出现则检查矩阵状态 '''
            foo_2, reason = list(), dict()
            for x in modes:
                new_angle = cmp_mat(*(list((lambda: mat_trim(tmp_mat, x))()) +
                                      [v]))
                if new_angle == True:
                    foo_2.append(True)
                else:
                    foo_2.append(False)
                    # 返回的原因包含新模型与已知模型相比发生变化的任务
                    reason[modes.index(x)] = new_angle
            if True not in foo_2:
                #以下代码可以导致返回任务的真实名字
                r = dict()
                for i in reason.keys():
                    x = dict()
                    for e in reason[i].keys():
                        x[get_taskname(app_c_path, e)] = round(reason[i][e], 2)
                    r[i] = x
                reason = r
                return ('new mode', reason)
            return foo_2.index(True)
Ejemplo n.º 3
0
                    err_state.append(get_prob_mat(i))
                else:
                    foo_ = verify_mode(i, err_state, 10)
                    if type(foo_) is not int:
                        foo_ = len(err_state)
                        err_state.append(get_prob_mat(i))
            foo_ += len(modes)
            #type(foo) is not int and format_print_mat(get_prob_mat(i)) # 打印错误状态的矩阵
            job_flow.append(
                (lambda: [foo, True]
                 if type(foo) is types.IntType else [foo_, False])())

        def job_flow_print(job_flow):
            """ 工作流输出
            """
            for i in job_flow:
                if i[1]:
                    print('\033[1;42;37m%d' % i[0], )
                    #print '\033[1;32m█',
                else:
                    print('\033[1;41;37m%d' % i[0], )
                    #print '\033[1;41;37m✘',
            print('\033[0m')

        print('\n\n')
        job_flow_print(job_flow)
        print('\n\n')

    for i in nodes[node_No].called_func:
        print(i, ': ', get_taskname(app_c_path, i))
Ejemplo n.º 4
0
                    else:
                        print '\033[1;42;37m%d' % i[0],
                    #print '\033[1;32m█',
                else:
                    if cnt % 28 == 0:
                        print '\033[1;41;37m%d' % i[0]
                    else:
                        print '\033[1;41;37m%d' % i[0],
                    #print '\033[1;41;37m✘',
            print '\033[0m'

        print '\n\n'
        job_flow_print(job_flow)
        print '\n\n'
#==============================================================================
#
#     tmp_mat = modes[0]
#     for e in tmp_mat:
#         print e, int(e, 16),  tmp_mat[e]
#==============================================================================
    name2id = dict()
    for i in nodes[node_No].called_func:
        name2id[get_taskname(app_c_path, i)] = i
    print '异常任务:'
    for e in set(err_task):  # 打印异常任务
        print "\033[1;41;37m(%s)\033[1;40;34m %s \033[0m" % (name2id[e], e)
#==============================================================================
#     for i in nodes[node_No].called_func:
#         print i, ': ', get_taskname(app_c_path, i)
#==============================================================================