示例#1
0
def run_view():
    '''此方法为单步运行测试方法,带图像显示'''
    time_logo = 0
    # allPeople = InitPeolple.creatPeople()  # 产生随机行人
    # allPeople=InitPeolple.creatPeople_force_normal()
    # allPeople=InitPeolple.creatPeople_force_fix()
    allPeople = InitPeolple.creatPeople_force_random()
    # allPeople=InitPeolple.creatAppointPeo()#产生指定行人
    # allPeople=InitPeolple.creatAreaPeople()
    # print(len(allPeople))
    # allWall = InitPeolple.creatWall()  # 创建墙壁
    # allExit = InitPeolple.creatExit()  # 创建出口
    DrawFirst.drawPeople(allPeople)
    while Data.flag:  #循环开始
        if Data.FX_S_R < 21:
            count_R_O_V(time_logo)
        for p in allPeople:  #遍历行人
            Income.outDirection(p, allPeople)  #计算收益
            direction = max(p.allInComeBySort.items(),
                            key=lambda x: x[1])[0]  #获取方向
            Rule.chickOverAround(p, allPeople)  #检测是否到达出口
            Rule.PeopleMove(p, direction)  #行人移动
        DrawFirst.drawPeople(allPeople)
        time_logo = time_logo + 1
        print(
            time_logo,
            "\033[4;32;40mxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\033[0m"
        )
示例#2
0
def run_insert(case_s, density, radius, radius_ob, radius_v, force, force_type,
               peo_view, steps):
    '''此方法为运行方法,带参数接受和返回,不带图像显示'''
    Data.flag = True
    time_logo = 0

    if case_s == 0:  #危险源位置设置
        Data.FX_N = 19
    elif case_s == 1:
        Data.FX_N = 15
    elif case_s == 2:
        Data.FX_N = 10
    elif case_s == 3:
        Data.FX_N = 5
    elif case_s == 4:
        Data.FX_N = 2

    Data.PEOPLE_DENSYTY = density
    Data.PEOPLE_NUMBER = Data.count_PEOPLE_NUMBER(density)

    Data.FX_SIGMA_2 = radius  # 危险源大小
    Data.FX_R = Data.count_FX_R(radius)  # 影响范围半径
    Data.FX_P = Data.count_FX_P(radius)  # 系数 p越大 高斯函数的圆形越大

    Data.FX_S_SIGMA_2 = radius_ob
    Data.FX_S_R = Data.count_FX_S_R(radius_ob)
    Data.FX_S_P = Data.count_FX_S_P(radius_ob)

    Data.FX_S_V = radius_v

    Data.PEOPLE_FORCE = force

    if force_type == 0:  # fix
        allPeople = InitPeolple.creatPeople_force_fix()
    else:  #random
        allPeople = InitPeolple.creatPeople_force_random()

    Data.PEOPLE_FAN_R = peo_view
    while Data.flag:  #循环开始
        if Data.FX_S_R < 21:
            count_R_O_V(time_logo)
        for p in allPeople:  #遍历行人
            Income.outDirection(p, allPeople)  #计算收益
            direction = max(p.allInComeBySort.items(),
                            key=lambda x: x[1])[0]  #获取方向
            Rule.chickOverAround(p, allPeople)  #检测是否到达出口
            Rule.PeopleMove(p, direction)  #行人移动
        if len(allPeople) == 0:
            Data.flag = False
        time_logo = time_logo + 1
    # print(time_logo)
    # print("\033[4;32;40mxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx\033[0m")

    return time_logo