Files
lora_route_py/sim/analysis_tools/channel_analysis.py
sinlatansen d357a25076 只有hello包实现多跳,还没加入业务数据
具体的还要看opencode和gpt记录接着优化
2026-02-24 17:17:45 +08:00

59 lines
1.4 KiB
Python

"""
Channel Analysis Tools.
Functions for analyzing channel utilization and collisions.
"""
from typing import Dict, Any
def analyze_channel_utilization(collisions: int, busy_time: float, total_time: float) -> Dict[str, Any]:
"""
Analyze channel utilization.
Args:
collisions: Number of collisions
busy_time: Total channel busy time
total_time: Total simulation time
Returns:
Dictionary with channel analysis
"""
utilization = busy_time / total_time if total_time > 0 else 0
# Determine network state
if utilization < 0.3:
network_state = "LIGHT_LOAD"
elif utilization < 0.7:
network_state = "MODERATE"
else:
network_state = "SATURATED"
return {
'busy_time': busy_time,
'total_time': total_time,
'utilization': utilization,
'utilization_percent': round(utilization * 100, 2),
'collisions': collisions,
'collision_rate': collisions / total_time if total_time > 0 else 0,
'network_state': network_state,
}
def get_network_state(utilization: float) -> str:
"""
Get network state based on utilization.
Args:
utilization: Channel utilization ratio (0-1)
Network state string
"""
Returns:
if utilization < 0.3:
return "LIGHT_LOAD"
elif utilization < 0.7:
return "MODERATE"
else:
return "SATURATED"