159 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Python
		
	
	
	
#!/usr/bin/env python3
 | 
						||
# -*- coding: utf-8 -*-
 | 
						||
"""
 | 
						||
增强版优先级算法测试脚本
 | 
						||
测试新的优先级算法在起承转合辩论系统中的表现
 | 
						||
"""
 | 
						||
 | 
						||
import sys
 | 
						||
import os
 | 
						||
sys.path.append(os.path.join(os.path.dirname(__file__), 'src'))
 | 
						||
 | 
						||
from jixia.debates.qi_cheng_zhuan_he_debate import QiChengZhuanHeDebateSystem, DebateStage
 | 
						||
from jixia.debates.enhanced_priority_algorithm import EnhancedPriorityAlgorithm
 | 
						||
 | 
						||
def test_enhanced_priority_algorithm():
 | 
						||
    """测试增强版优先级算法"""
 | 
						||
    print("🧪 开始测试增强版优先级算法")
 | 
						||
    print("=" * 50)
 | 
						||
    
 | 
						||
    # 创建辩论系统
 | 
						||
    debate_system = QiChengZhuanHeDebateSystem()
 | 
						||
    
 | 
						||
    # 模拟辩论场景
 | 
						||
    test_scenarios = [
 | 
						||
        {
 | 
						||
            "name": "起阶段开始",
 | 
						||
            "stage": DebateStage.QI,
 | 
						||
            "progress": 1,
 | 
						||
            "history": []
 | 
						||
        },
 | 
						||
        {
 | 
						||
            "name": "承阶段中期",
 | 
						||
            "stage": DebateStage.CHENG,
 | 
						||
            "progress": 3,
 | 
						||
            "history": [
 | 
						||
                {"speaker": "正1", "content": "AI投资具有巨大潜力", "timestamp": "2024-01-01T10:00:00"},
 | 
						||
                {"speaker": "反1", "content": "但风险也很高", "timestamp": "2024-01-01T10:01:00"}
 | 
						||
            ]
 | 
						||
        },
 | 
						||
        {
 | 
						||
            "name": "转阶段激烈辩论",
 | 
						||
            "stage": DebateStage.ZHUAN,
 | 
						||
            "progress": 5,
 | 
						||
            "history": [
 | 
						||
                {"speaker": "正2", "content": "数据显示AI投资回报率很高", "timestamp": "2024-01-01T10:02:00"},
 | 
						||
                {"speaker": "反2", "content": "这些数据可能有偏差", "timestamp": "2024-01-01T10:03:00"},
 | 
						||
                {"speaker": "正3", "content": "我们有严格的风控措施", "timestamp": "2024-01-01T10:04:00"},
 | 
						||
                {"speaker": "反3", "content": "风控措施并不能完全避免风险", "timestamp": "2024-01-01T10:05:00"}
 | 
						||
            ]
 | 
						||
        },
 | 
						||
        {
 | 
						||
            "name": "合阶段总结",
 | 
						||
            "stage": DebateStage.HE,
 | 
						||
            "progress": 2,
 | 
						||
            "history": [
 | 
						||
                {"speaker": "正4", "content": "综合来看,AI投资利大于弊", "timestamp": "2024-01-01T10:06:00"},
 | 
						||
                {"speaker": "反4", "content": "我们需要更谨慎的态度", "timestamp": "2024-01-01T10:07:00"}
 | 
						||
            ]
 | 
						||
        }
 | 
						||
    ]
 | 
						||
    
 | 
						||
    for i, scenario in enumerate(test_scenarios, 1):
 | 
						||
        print(f"\n📋 测试场景 {i}: {scenario['name']}")
 | 
						||
        print("-" * 30)
 | 
						||
        
 | 
						||
        # 设置辩论状态
 | 
						||
        debate_system.context.current_stage = scenario['stage']
 | 
						||
        debate_system.context.stage_progress = scenario['progress']
 | 
						||
        debate_system.context.debate_history = scenario['history']
 | 
						||
        
 | 
						||
        # 获取推荐发言者
 | 
						||
        try:
 | 
						||
            recommended_speaker = debate_system._get_priority_speaker()
 | 
						||
            analysis = debate_system.context.last_priority_analysis
 | 
						||
            
 | 
						||
            print(f"🎯 推荐发言者: {recommended_speaker}")
 | 
						||
            print(f"📊 优先级分数: {analysis.get('priority_score', 'N/A'):.3f}")
 | 
						||
            
 | 
						||
            if 'analysis' in analysis:
 | 
						||
                detailed_analysis = analysis['analysis']
 | 
						||
                print(f"🔍 详细分析:")
 | 
						||
                
 | 
						||
                # 显示推荐发言者的详细信息
 | 
						||
                if recommended_speaker in detailed_analysis:
 | 
						||
                    speaker_info = detailed_analysis[recommended_speaker]
 | 
						||
                    print(f"   - 发言者: {recommended_speaker}")
 | 
						||
                    print(f"   - 优先级分数: {speaker_info.get('priority_score', 'N/A'):.3f}")
 | 
						||
                    print(f"   - 分析时间: {speaker_info.get('analysis_timestamp', 'N/A')}")
 | 
						||
                    
 | 
						||
                    profile = speaker_info.get('profile')
 | 
						||
                    if profile:
 | 
						||
                        print(f"   - 团队: {profile.team}")
 | 
						||
                        print(f"   - 发言次数: {profile.total_speech_count}")
 | 
						||
                        print(f"   - 当前能量: {profile.current_energy:.2f}")
 | 
						||
                        print(f"   - 辩论风格: {profile.debate_style}")
 | 
						||
                
 | 
						||
                # 显示所有发言者的分数排名
 | 
						||
                print(f"\n   📊 所有发言者排名:")
 | 
						||
                sorted_speakers = sorted(detailed_analysis.items(), 
 | 
						||
                                       key=lambda x: x[1].get('priority_score', 0), 
 | 
						||
                                       reverse=True)
 | 
						||
                for rank, (speaker, info) in enumerate(sorted_speakers[:5], 1):
 | 
						||
                    score = info.get('priority_score', 0)
 | 
						||
                    print(f"      {rank}. {speaker}: {score:.3f}")
 | 
						||
                
 | 
						||
        except Exception as e:
 | 
						||
            print(f"❌ 测试失败: {e}")
 | 
						||
            import traceback
 | 
						||
            traceback.print_exc()
 | 
						||
    
 | 
						||
    print("\n" + "=" * 50)
 | 
						||
    print("✅ 增强版优先级算法测试完成")
 | 
						||
 | 
						||
def test_algorithm_performance():
 | 
						||
    """测试算法性能"""
 | 
						||
    print("\n⚡ 性能测试")
 | 
						||
    print("-" * 20)
 | 
						||
    
 | 
						||
    import time
 | 
						||
    
 | 
						||
    algorithm = EnhancedPriorityAlgorithm()
 | 
						||
    available_speakers = ["正1", "正2", "正3", "正4", "反1", "反2", "反3", "反4"]
 | 
						||
    
 | 
						||
    context = {
 | 
						||
        "current_stage": "承",
 | 
						||
        "stage_progress": 3,
 | 
						||
        "max_progress": 6,
 | 
						||
        "time_remaining": 0.5,
 | 
						||
        "topic_keywords": ["AI", "投资", "风险"],
 | 
						||
        "positive_team_score": 0.6,
 | 
						||
        "negative_team_score": 0.4,
 | 
						||
        "positive_recent_speeches": 3,
 | 
						||
        "negative_recent_speeches": 2
 | 
						||
    }
 | 
						||
    
 | 
						||
    recent_speeches = [
 | 
						||
        {"speaker": "正1", "content": "AI技术发展迅速"},
 | 
						||
        {"speaker": "反1", "content": "但存在不确定性"}
 | 
						||
    ]
 | 
						||
    
 | 
						||
    # 性能测试
 | 
						||
    start_time = time.time()
 | 
						||
    iterations = 100
 | 
						||
    
 | 
						||
    for _ in range(iterations):
 | 
						||
        speaker, score, analysis = algorithm.get_next_speaker(
 | 
						||
            available_speakers, context, recent_speeches
 | 
						||
        )
 | 
						||
    
 | 
						||
    end_time = time.time()
 | 
						||
    avg_time = (end_time - start_time) / iterations * 1000  # 转换为毫秒
 | 
						||
    
 | 
						||
    print(f"📈 平均处理时间: {avg_time:.2f}ms")
 | 
						||
    print(f"🔄 总迭代次数: {iterations}")
 | 
						||
    print(f"⚡ 处理速度: {1000/avg_time:.0f} 次/秒")
 | 
						||
 | 
						||
if __name__ == "__main__":
 | 
						||
    test_enhanced_priority_algorithm()
 | 
						||
    test_algorithm_performance() |