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() |