Skip to content

电梯交通量仿真分析5

约 4407 字大约 15 分钟

coding

2025-07-30

5. 测试策略:验证方法、测试用例

5.1 测试目标与原则

5.1.1 测试目标

  • 验证仿真结果与真实电梯数据的一致性
  • 确保OD矩阵估计算法的准确性和效率
  • 验证不同控制策略实现的正确性
  • 保证系统在极端条件下的稳定性和可靠性
  • 满足PDF中描述的"real-time elevator group control requirements"

5.1.2 测试原则

  • 基于证据的验证:测试用例应基于PDF中描述的实验数据和理论结果
  • 多方法交叉验证:使用多种验证方法相互印证
  • 场景覆盖全面:涵盖PDF中描述的各种交通模式和建筑类型
  • 可重复性:所有测试应可重复执行,结果可量化比较
  • 性能与准确性平衡:在保证精度的前提下优化性能

5.2 验证方法

5.2.1 与真实电梯数据对比

验证方法

  • 收集真实建筑中的电梯运行数据(基于PDF中描述的"EMS记录数据")
  • 将仿真结果与真实数据进行统计对比
  • 使用Kolmogorov-Smirnov检验比较等待时间分布
  • 计算关键指标的相对误差(如平均等待时间、5分钟输送能力)

实现细节

/**
 * 真实数据验证器,实现PDF中描述的验证方法
 * "the numerical experiments were run with laptop PCs and not with a real elevator group control computer"
 */
public class RealDataValidator {
    
    /**
     * 验证仿真结果与真实数据的一致性
     */
    public ValidationResult validateAgainstRealData(
        SimulationResult simulationResult,
        RealElevatorData realData
    ) {
        List<ValidationIssue> issues = new ArrayList<>();
        
        // 1. 等待时间分布对比
        DistributionComparison waitingTimeComparison = compareDistributions(
            simulationResult.getWaitingTimeMetrics().getOverall().getPercentiles(),
            realData.getWaitingTimePercentiles()
        );
        if (!waitingTimeComparison.isAcceptable()) {
            issues.add(new ValidationIssue(
                "WAITING_TIME_MISMATCH",
                String.format("等待时间分布差异: KS统计量=%.4f, p值=%.4f", 
                             waitingTimeComparison.getKsStatistic(),
                             waitingTimeComparison.getPValue())
            ));
        }
        
        // 2. 5分钟输送能力对比
        double hcError = Math.abs(
            simulationResult.getSystemPerformance().getHandlingCapacity() - 
            realData.getHandlingCapacity()
        );
        if (hcError > 2.0) { // 允许2%的误差
            issues.add(new ValidationIssue(
                "HC_MISMATCH",
                String.format("5分钟输送能力差异: 仿真=%.1f%%, 真实=%.1f%%, 差异=%.1f%%", 
                             simulationResult.getSystemPerformance().getHandlingCapacity(),
                             realData.getHandlingCapacity(),
                             hcError)
            ));
        }
        
        // 3. OD矩阵一致性验证
        ODMetricMatrix simulationOD = simulationResult.getOdMatrix();
        ODMetricMatrix realOD = realData.getOdMatrix();
        double odError = calculateODMatrixError(simulationOD, realOD);
        if (odError > 0.15) { // 允许15%的误差
            issues.add(new ValidationIssue(
                "OD_MATRIX_MISMATCH",
                String.format("OD矩阵差异: 误差率=%.1f%%", odError * 100)
            ));
        }
        
        return new ValidationResult(issues.isEmpty(), issues);
    }
    
    /**
     * 比较两个分布的KS检验
     */
    private DistributionComparison compareDistributions(
        double[] simulatedPercentiles,
        double[] realPercentiles
    ) {
        // 执行Kolmogorov-Smirnov检验
        KolmogorovSmirnovTest ksTest = new KolmogorovSmirnovTest();
        double pValue = ksTest.kolmogorovSmirnovTest(
            convertToSample(simulatedPercentiles),
            convertToSample(realPercentiles)
        );
        double ksStatistic = ksTest.kolmogorovSmirnovStatistic(
            convertToSample(simulatedPercentiles),
            convertToSample(realPercentiles)
        );
        
        // 判断是否可接受(95%置信水平)
        boolean acceptable = pValue > 0.05;
        
        return new DistributionComparison(ksStatistic, pValue, acceptable);
    }
    
    // 其他辅助方法...
}

关键验证指标

  • 等待时间分布的KS检验(p值>0.05表示分布无显著差异)
  • 5分钟输送能力的相对误差(<2%)
  • OD矩阵的误差率(<15%)
  • 电梯利用率的匹配度

5.2.2 与理论计算结果对比

验证方法

  • 针对简化场景,使用PDF中描述的理论公式计算预期结果
  • 比较仿真结果与理论计算结果
  • 验证电梯运行时间模型的准确性
  • 验证批次到达模型与理论分布的匹配度

实现细节

/**
 * 理论验证器,实现PDF中描述的理论验证方法
 */
public class TheoreticalValidator {
    
    /**
     * 验证仿真结果与理论计算的一致性
     */
    public ValidationResult validateAgainstTheory(
        SimulationResult simulationResult,
        TheoreticalModel theoreticalModel
    ) {
        List<ValidationIssue> issues = new ArrayList<>();
        
        // 1. 验证运行时间模型
        validateTravelTimeModel(simulationResult, theoreticalModel, issues);
        
        // 2. 验证停站时间模型
        validateStopTimeModel(simulationResult, theoreticalModel, issues);
        
        // 3. 验证批次到达特性
        validateBatchArrivalModel(simulationResult, theoreticalModel, issues);
        
        return new ValidationResult(issues.isEmpty(), issues);
    }
    
    /**
     * 验证运行时间模型
     * 实现PDF中描述的"运行时间 = √(2×距离/加速度) + (距离-加速段-减速段)/额定速度 + √(2×距离/减速度)"
     */
    private void validateTravelTimeModel(
        SimulationResult result,
        TheoreticalModel model,
        List<ValidationIssue> issues
    ) {
        // 对于每个楼层对,计算理论运行时间
        for (int from = 1; from <= model.getTotalFloors(); from++) {
            for (int to = from + 1; to <= model.getTotalFloors(); to++) {
                double theoreticalTime = calculateTheoreticalTravelTime(from, to, model);
                double simulatedTime = result.getAverageTravelTime(from, to);
                
                double error = Math.abs((simulatedTime - theoreticalTime) / theoreticalTime);
                if (error > 0.05) { // 允许5%的误差
                    issues.add(new ValidationIssue(
                        "TRAVEL_TIME_MISMATCH",
                        String.format("运行时间差异(%d->%d): 理论=%.2f秒, 仿真=%.2f秒, 误差=%.1f%%", 
                                     from, to, theoreticalTime, simulatedTime, error * 100)
                    ));
                }
            }
        }
    }
    
    /**
     * 计算理论运行时间
     */
    private double calculateTheoreticalTravelTime(
        int fromFloor,
        int toFloor,
        TheoreticalModel model
    ) {
        double distance = Math.abs(toFloor - fromFloor) * model.getFloorHeight();
        double ratedSpeed = model.getElevatorRatedSpeed();
        double acceleration = model.getElevatorAcceleration();
        double deceleration = model.getElevatorDeceleration();
        
        // 计算加速段距离
        double accelDistance = (ratedSpeed * ratedSpeed) / (2 * acceleration);
        // 计算减速段距离
        double decelDistance = (ratedSpeed * ratedSpeed) / (2 * deceleration);
        
        // 如果距离不足以达到额定速度
        if (distance <= accelDistance + decelDistance) {
            // 三段式运行: 加速-减速
            double t1 = Math.sqrt(distance / acceleration);
            return 2 * t1;
        } else {
            // 三段式运行: 加速-匀速-减速
            double tAccel = ratedSpeed / acceleration;
            double tDecel = ratedSpeed / deceleration;
            double tCruise = (distance - accelDistance - decelDistance) / ratedSpeed;
            return tAccel + tCruise + tDecel;
        }
    }
    
    // 其他验证方法...
}

关键验证场景

  • 单电梯、单乘客的简单场景(验证基础物理模型)
  • 固定批次大小的到达模式(验证批次模型)
  • 特定交通模式(如纯上行交通)的理论解验证

5.2.3 不同算法结果一致性检查

验证方法

  • 对同一场景运行不同OD矩阵估计方法(LP、BILS、CP)
  • 比较不同方法的结果一致性
  • 验证流量守恒原则
  • 检查算法在时限内的执行情况

实现细节

/**
 * 算法一致性验证器,实现PDF中描述的多算法一致性检查
 * "The results of Publications[III] and[V] suggest that the fastest deterministic CP algorithm 
 * is about as fast as the fastest BILS algorithm and even faster for very complex problem instances."
 */
public class AlgorithmConsistencyValidator {
    
    private static final double MAX_PERCENTILE_DIFF = 0.10; // 10%的百分位差异阈值
    private static final double MAX_HAUSDORFF_DISTANCE = 0.15; // OD矩阵最大豪斯多夫距离
    
    /**
     * 验证不同算法结果的一致性
     */
    public ValidationResult validateAlgorithmConsistency(
        List<SimulationResult> results,
        String[] algorithmNames
    ) {
        List<ValidationIssue> issues = new ArrayList<>();
        
        // 1. 检查等待时间分布一致性
        checkWaitingTimeConsistency(results, algorithmNames, issues);
        
        // 2. 检查OD矩阵一致性
        checkODMatrixConsistency(results, algorithmNames, issues);
        
        // 3. 检查算法执行时间是否满足实时要求
        checkExecutionTime(results, algorithmNames, issues);
        
        return new ValidationResult(issues.isEmpty(), issues);
    }
    
    /**
     * 检查等待时间分布一致性
     */
    private void checkWaitingTimeConsistency(
        List<SimulationResult> results,
        String[] algorithmNames,
        List<ValidationIssue> issues
    ) {
        // 获取所有算法的等待时间百分位数
        double[][] waitingTimePercentiles = new double[results.size()][10];
        for (int i = 0; i < results.size(); i++) {
            WaitingTimeMetrics metrics = results.get(i).getWaitingTimeMetrics();
            System.arraycopy(
                metrics.getOverall().getPercentiles(),
                0,
                waitingTimePercentiles[i],
                0,
                10
            );
        }
        
        // 比较每对算法
        for (int i = 0; i < results.size(); i++) {
            for (int j = i + 1; j < results.size(); j++) {
                double maxPercentileDiff = 0.0;
                for (int k = 0; k < 10; k++) {
                    double diff = Math.abs(
                        (waitingTimePercentiles[i][k] - waitingTimePercentiles[j][k]) / 
                        Math.max(waitingTimePercentiles[i][k], 1.0)
                    );
                    maxPercentileDiff = Math.max(maxPercentileDiff, diff);
                }
                
                if (maxPercentileDiff > MAX_PERCENTILE_DIFF) {
                    issues.add(new ValidationIssue(
                        "WAITING_TIME_INCONSISTENCY",
                        String.format("等待时间分布不一致(%s vs %s): 最大百分位差异=%.1f%%", 
                                     algorithmNames[i], algorithmNames[j], maxPercentileDiff * 100)
                    ));
                }
            }
        }
    }
    
    /**
     * 检查OD矩阵一致性
     */
    private void checkODMatrixConsistency(
        List<SimulationResult> results,
        String[] algorithmNames,
        List<ValidationIssue> issues
    ) {
        // 计算OD矩阵间的豪斯多夫距离
        for (int i = 0; i < results.size(); i++) {
            for (int j = i + 1; j < results.size(); j++) {
                double distance = calculateHausdorffDistance(
                    results.get(i).getOdMatrix(),
                    results.get(j).getOdMatrix()
                );
                
                if (distance > MAX_HAUSDORFF_DISTANCE) {
                    issues.add(new ValidationIssue(
                        "OD_MATRIX_INCONSISTENCY",
                        String.format("OD矩阵不一致(%s vs %s): 豪斯多夫距离=%.4f", 
                                     algorithmNames[i], algorithmNames[j], distance)
                    ));
                }
            }
        }
    }
    
    /**
     * 计算两个OD矩阵间的豪斯多夫距离
     */
    private double calculateHausdorffDistance(
        ODMetricMatrix matrix1,
        ODMetricMatrix matrix2
    ) {
        // 归一化OD矩阵
        ODMetricMatrix normalized1 = normalizeODMatrix(matrix1);
        ODMetricMatrix normalized2 = normalizeODMatrix(matrix2);
        
        // 计算豪斯多夫距离
        double maxDistance = 0.0;
        for (int origin = 1; origin <= normalized1.getBuildingFloors(); origin++) {
            for (int dest = 1; dest <= normalized1.getBuildingFloors(); dest++) {
                if (origin == dest) continue;
                
                double p1 = normalized1.getProbability(origin, dest);
                double p2 = normalized2.getProbability(origin, dest);
                double distance = Math.abs(p1 - p2);
                
                maxDistance = Math.max(maxDistance, distance);
            }
        }
        
        return maxDistance;
    }
    
    // 其他辅助方法...
}

关键验证点

  • 不同OD估计方法(LP、BILS、CP)结果的一致性
  • 流量守恒原则验证(进入某楼层的乘客数 = 离开该楼层的乘客数)
  • 算法执行时间是否满足实时要求(参考PDF中"real-time elevator group control requirements")
  • 复杂问题实例的解质量比较

5.2.4 与PDF研究结果对比

验证方法

  • 实现PDF中描述的疏散实验场景
  • 复现PDF中的电梯交通模式
  • 比较仿真结果与PDF中报告的结果
  • 验证"selfish vs cooperative"行为对疏散时间的影响

实现细节

/**
 * PDF研究验证器,实现PDF中描述的特定验证场景
 */
public class PdfResearchValidator {
    
    /**
     * 验证疏散实验场景
     * 实现PDF中描述的"experiments were organized in a corridor with a lobby at one end and with two exits"
     */
    public ValidationResult validateEvacuationScenario() {
        // 1. 创建疏散实验场景
        Building evacuationBuilding = createEvacuationExperimentBuilding();
        
        // 2. 配置两种行为模式
        SimulationConfig selfishConfig = createBehaviorConfig(BehaviorType.SELFISH);
        SimulationConfig cooperativeConfig = createBehaviorConfig(BehaviorType.COOPERATIVE);
        
        // 3. 运行仿真
        SimulationResult selfishResult = simulationService.runSimulation(
            evacuationBuilding, 
            selfishConfig
        );
        SimulationResult cooperativeResult = simulationService.runSimulation(
            evacuationBuilding, 
            cooperativeConfig
        );
        
        // 4. 验证结果
        return validateEvacuationResults(selfishResult, cooperativeResult);
    }
    
    /**
     * 验证疏散结果是否符合PDF研究
     * "The results suggest that the total evacuation time was significantly shorter... 
     * when the participants were instructed to act selfishly."
     */
    private ValidationResult validateEvacuationResults(
        SimulationResult selfishResult,
        SimulationResult cooperativeResult
    ) {
        List<ValidationIssue> issues = new ArrayList<>();
        
        // 比较总疏散时间
        double selfishTime = selfishResult.getEvacuationTime();
        double cooperativeTime = cooperativeResult.getEvacuationTime();
        double timeDifference = (cooperativeTime - selfishTime) / selfishTime;
        
        // PDF研究表明自私行为使疏散时间显著缩短
        if (timeDifference < 0.05) {
            issues.add(new ValidationIssue(
                "EVACUATION_TIME_MISMATCH",
                String.format("疏散时间差异不符合PDF研究: 自私=%.1f秒, 合作=%.1f秒, 差异=%.1f%%", 
                             selfishTime, cooperativeTime, timeDifference * 100)
            ));
        }
        
        // 执行统计显著性检验(符号检验)
        SignTest signTest = new SignTest();
        double pValue = signTest.signTest(
            getEvacuationTimes(selfishResult),
            getEvacuationTimes(cooperativeResult),
            AlternativeHypothesis.GREATER_THAN
        );
        
        // PDF使用符号检验(Siegel 1956)
        if (pValue > 0.05) {
            issues.add(new ValidationIssue(
                "STATISTICAL_SIGNIFICANCE",
                String.format("疏散时间差异不具有统计显著性: p值=%.4f", pValue)
            ));
        }
        
        return new ValidationResult(issues.isEmpty(), issues);
    }
    
    /**
     * 验证OD矩阵估计算法性能
     * "the simulations presented in Publication[III] show that most of the problems 
     * occurring in reality are relatively simple and can be solved... within a reasonable time"
     */
    public ValidationResult validateODMatrixAlgorithms() {
        List<ValidationIssue> issues = new ArrayList<>();
        
        // 生成不同复杂度的问题实例
        List<ODMatrixProblem> problemInstances = generateProblemInstances();
        
        // 测试每种算法
        Map<String, AlgorithmPerformance> performances = new HashMap<>();
        for (String algorithm : Arrays.asList("LP", "BILS", "CP")) {
            AlgorithmPerformance perf = testAlgorithmPerformance(algorithm, problemInstances);
            performances.put(algorithm, perf);
            
            // 检查是否满足实时要求
            if (perf.getAvgExecutionTime() > 500.0) { // 500ms
                issues.add(new ValidationIssue(
                    "ALGORITHM_PERFORMANCE",
                    String.format("%s算法性能不符合实时要求: 平均执行时间=%.1fms", 
                                 algorithm, perf.getAvgExecutionTime())
                ));
            }
        }
        
        // 比较BILS和CP算法性能
        AlgorithmPerformance bilsPerf = performances.get("BILS");
        AlgorithmPerformance cpPerf = performances.get("CP");
        if (bilsPerf.getAvgExecutionTime() < 0.8 * cpPerf.getAvgExecutionTime()) {
            issues.add(new ValidationIssue(
                "ALGORITHM_COMPARISON",
                String.format("BILS与CP算法性能比较不符合PDF研究: BILS=%.1fms, CP=%.1fms", 
                             bilsPerf.getAvgExecutionTime(), cpPerf.getAvgExecutionTime())
            ));
        }
        
        return new ValidationResult(issues.isEmpty(), issues);
    }
    
    // 其他辅助方法...
}

关键验证场景

  • PDF中描述的疏散实验(走廊一端有大厅,另一端有两个出口)
  • "自私vs合作"行为对疏散时间的影响验证
  • OD矩阵估计算法性能验证(执行时间、解质量)
  • 批次到达模型与PDF中描述的实验数据对比

5.3 测试用例设计

5.3.1 基础功能测试

测试用例 5.3.1.1: 建筑配置验证

  • 场景: 配置一个30层办公楼,包含大厅、车库和办公区域
  • 输入:
    • 建筑类型: OFFICE
    • 总楼层: 30
    • 层高: 4.0米
    • 楼层配置: 1层(大厅), 2-3层(车库), 4-30层(办公)
    • 人口分布: 早高峰8:00-9:00, 进楼交通比例80%
  • 预期结果:
    • 建筑对象正确创建
    • 楼层用途正确分配
    • 交通模式比例符合办公楼特征
    • 批次到达模型符合PDF中描述的早高峰特性

测试用例 5.3.1.2: 电梯组配置验证

  • 场景: 配置一个目的选层系统,包含4台电梯
  • 输入:
    • 控制类型: DESTINATION_CONTROL
    • 电梯参数: 载重16人, 速度3.0m/s, 加速度1.0m/s²
    • 门宽: 1.0米
    • 基准层: 1
    • 服务楼层: 1-30
  • 预期结果:
    • 电梯组正确创建
    • 电梯物理参数计算正确(如开门时间)
    • 服务楼层配置正确
    • 目的选层系统特殊参数正确设置

5.3.2 算法正确性测试

测试用例 5.3.2.1: OD矩阵估计一致性测试

  • 场景: 使用LP、BILS、CP三种方法估计同一电梯行程数据的OD矩阵
  • 输入:
    • 电梯行程数据(100次行程)
    • 建筑信息(10层)
    • 估计方法: LP, BILS(with randomization), CP
  • 预期结果:
    • 三种方法都返回有效的OD矩阵
    • 所有OD矩阵满足流量守恒原则
    • 不同方法的等待时间分布差异<10%
    • BILS和CP算法执行时间<500ms(符合实时要求)
    • 随机化BILS产生多个解,且解质量高于确定性解

测试用例 5.3.2.2: 目的选层系统聚类效果测试

  • 场景: 测试目的选层系统将目的楼层相近的乘客分配到同一电梯的效果
  • 输入:
    • 建筑: 20层办公楼
    • 电梯组: 3台目的选层电梯
    • 乘客流量: 批次到达,目的楼层集中在5-10层和15-20层
  • 预期结果:
    • 目的地相近的乘客被分配到同一电梯
    • 平均停站次数比传统系统减少20%
    • 5分钟输送能力提高15%
    • 乘客流动时间计算考虑门宽影响

5.3.3 边界条件测试

测试用例 5.3.3.1: 极端流量测试

  • 场景: 模拟早高峰极端流量情况(所有乘客同时到达)
  • 输入:
    • 建筑: 50层混合用途建筑
    • 电梯组: 8台群控电梯
    • 乘客流量: 1000名乘客同时在1层大厅到达
    • 批次大小: 10人/批次
  • 预期结果:
    • 系统能处理大流量而不崩溃
    • 电梯分配算法能有效分流乘客
    • 停站时间计算考虑拥挤系数
    • 仿真在合理时间内完成(参考PDF中"most of the problems occurring in reality are relatively simple")

测试用例 5.3.3.2: 电梯故障测试

  • 场景: 模拟电梯组中一台电梯故障
  • 输入:
    • 建筑: 30层办公楼
    • 电梯组: 4台群控电梯
    • 故障设置: 运行中第2台电梯故障
    • 乘客流量: 正常早高峰流量
  • 预期结果:
    • 系统检测到故障并重新分配任务
    • 剩余电梯调整服务策略
    • 等待时间增加但系统保持稳定
    • 故障处理机制符合PDF中描述的可靠性要求

5.3.4 性能测试

测试用例 5.3.4.1: 实时性能测试

  • 场景: 测试系统在大规模仿真中的性能
  • 输入:
    • 建筑: 100层建筑
    • 电梯组: 10组电梯(共20台)
    • 仿真时长: 1天(24小时)
    • 时间切片: 5秒
  • 预期结果:
    • 1秒模拟时间 ≤ 100ms真实时间
    • 内存使用稳定,无OOM异常
    • 大规模仿真在5分钟内完成
    • 符合PDF中"real-time elevator group control requirements"

测试用例 5.3.4.2: API性能测试

  • 场景: 测试关键API的性能和稳定性
  • 测试:
    • /api/v1/simulate: 并发请求测试(100用户)
    • /api/v1/simulations/{id}/timeline: 大数据量响应测试
    • /api/v1/simulations/{id}/results: 复杂查询性能测试
    • /api/v1/od-matrix/estimate: 高频调用测试
  • 预期结果:
    • API响应时间符合SLA要求
    • 系统能处理高并发请求
    • 数据压缩有效减少传输量
    • 缓存机制有效提高响应速度

5.3.5 一致性测试

测试用例 5.3.5.1: 多次运行一致性测试

  • 场景: 多次运行相同配置的仿真
  • 输入:
    • 固定随机种子
    • 相同建筑和电梯配置
    • 相同仿真参数
  • 预期结果:
    • 多次运行结果完全一致(确定性算法)
    • 随机化算法结果在可接受范围内波动
    • 关键指标差异<1%

测试用例 5.3.5.2: 不同控制策略对比测试

  • 场景: 比较单控、并联、群控、目的选层四种策略
  • 输入:
    • 相同建筑配置
    • 相同乘客流量
    • 四种不同控制策略
  • 预期结果:
    • 目的选层系统等待时间比群控系统减少20-30%
    • 群控系统比并联系统效率高
    • 并联系统比单控系统效率高
    • 结果符合PDF中描述的预期性能差异

5.4 测试数据集

5.4.1 基于PDF的案例研究

数据集 5.4.1.1: 办公楼早高峰场景

  • 来源: PDF中描述的办公楼交通模式
  • 内容:
    • 30层办公楼,层高4米
    • 早高峰(8:00-9:00)进楼交通为主
    • 批次到达特性: 批次概率0.7, 批次大小分布[1:0.3, 2:0.4, 3:0.2, 4:0.1]
    • 电梯配置: 6台群控电梯,载重16人,速度3.0m/s
  • 用途: 验证系统在典型办公场景下的准确性

数据集 5.4.1.2: 商场内部交通场景

  • 来源: PDF中描述的商场交通特性
  • 内容:
    • 10层商场,层高5米
    • 交通模式: 楼层间交通比例高(60%)
    • 批次到达特性: 批次概率0.5, 批次大小分布[1:0.2, 2:0.3, 3:0.3, 4:0.2]
    • 电梯配置: 4台目的选层电梯
  • 用途: 验证系统在商场场景下的准确性,特别是楼层间交通处理

5.4.2 标准测试场景

数据集 5.4.2.1: 标准测试建筑集

  • 内容:
    • 小型建筑(5-10层): 用于单元测试和快速验证
    • 中型建筑(11-30层): 用于功能测试和算法验证
    • 大型建筑(31-100层): 用于性能测试和边界条件测试
  • 用途: 系统化测试不同规模建筑的处理能力

数据集 5.4.2.2: 标准交通模式集

  • 内容:
    • 早高峰模式: 上行主导交通
    • 晚高峰模式: 下行主导交通
    • 午餐高峰模式: 双向交通
    • 闲时模式: 低流量随机交通
  • 用途: 验证系统在不同交通模式下的适应性

5.4.3 极端情况测试数据

数据集 5.4.3.1: 极端流量场景

  • 内容:
    • 超高密度流量(1000+乘客同时到达)
    • 异常批次大小(最大批次50人)
    • 非均匀楼层分布(90%流量集中在某几层)
  • 用途: 测试系统在极端条件下的稳定性和鲁棒性

数据集 5.4.3.2: 疏散场景

  • 内容:
    • 基于PDF疏散实验的场景配置
    • 两种出口选择行为(自私vs合作)
    • 不同建筑几何结构
  • 用途: 验证疏散模拟的准确性,特别是与PDF研究结果对比