MCPcopy Create free account
hub / github.com/Tong89/smartNode / __init__

Method __init__

backend/core.py:401–490  ·  view source on GitHub ↗
(self, ground_station_count=DEFAULT_GROUND_STATION_COUNT, leo_satellite_count=DEFAULT_LEO_SATELLITE_COUNT, rng=None, autostart=True)

Source from the content-addressed store, hash-verified

399
400
401 def __init__(self, ground_station_count=DEFAULT_GROUND_STATION_COUNT, leo_satellite_count=DEFAULT_LEO_SATELLITE_COUNT, rng=None, autostart=True):
402 self.current_time = 0.0
403 self.running = False
404 # 可注入随机源以保证可复现(未注入则用独立 Random 实例,不污染全局 random)
405 self.rng = rng if rng is not None else random.Random()
406 # ⭐ 使用 RLock(可重入锁)减少死锁风险
407 self.lock = threading.RLock()
408
409 # ⭐ LEO卫星列表 (从预定义轨道中选择指定数量)
410 self.all_leo_satellites = LEO_SATELLITES # 所有可用的LEO卫星(轨道预先已知)
411 self.leo_satellite_count = max(MIN_LEO_SATELLITE_COUNT, leo_satellite_count)
412 self.leo_satellites = self.all_leo_satellites[:self.leo_satellite_count] # 选择前N颗
413
414 self.meo_satellites = MEO_SATELLITES
415 self.geo_relays = GEO_RELAY_SATELLITES
416
417 # ⭐ 波束指向约束管理器(BeamPointing)
418 # 每个 GEO 中继星与随遇接入站各持有一个 BeamPointing 实例,
419 # 用于扫描范围校验、偏轴增益损耗计算与 max_beams 并发约束。
420 self._beam_managers: dict = {}
421 for geo in self.geo_relays:
422 self._beam_managers[geo["id"]] = from_geo_satellite(geo)
423 for opp in OPPORTUNISTIC_STATIONS:
424 self._beam_managers[opp["id"]] = from_opportunistic_station(opp)
425
426 # 地面站列表 (从50个中随机选择指定数量)
427 self.all_ground_stations = CHINA_GROUND_STATIONS
428 self.ground_station_count = max(MIN_GROUND_STATION_COUNT,
429 min(ground_station_count, MAX_GROUND_STATION_COUNT))
430 self.ground_stations = self.rng.sample(self.all_ground_stations, self.ground_station_count)
431
432 # 传输请求队列
433 self.transmission_requests = []
434 self.request_history = []
435
436 # 资源占用与时间槽统一由 ResourceManager 管理
437 self._resources = ResourceManager()
438 self._resources.init_pools(self.leo_satellites, self.all_ground_stations, self.geo_relays)
439
440 # 链路切换控制器(迟滞 + 最小驻留 + 冷却,统一约束所有切换)
441 self.handover = HandoverController(
442 HANDOVER_RATE_RATIO, HANDOVER_MIN_DWELL, HANDOVER_COOLDOWN, HANDOVER_MIN_ELEVATION
443 )
444 # 链路选路与重调度集中于 Scheduler(使用 QoS 感知策略)
445 from backend.scheduling.qos import QosAwareStrategy
446 self.scheduler = Scheduler(self, strategy=QosAwareStrategy())
447
448 # 调度决策轨迹环形缓冲(上限 500 条,不会无限增长)
449 self.decision_trace_buffer = DecisionTraceBuffer()
450
451 # 背景任务生成器配置(降低频率以提高性能)
452 self.background_task_enabled = False # ⭐ 关闭背景任务,便于调试
453 self.background_task_interval = 30.0 # 每30秒生成一个背景任务(原10秒)
454 self.last_background_task_time = 0.0
455
456 # 统计数据
457 self.stats = {
458 "total_requests": 0,

Callers

nothing calls this directly

Calls 9

start_simulationMethod · 0.95
from_geo_satelliteFunction · 0.90
ResourceManagerClass · 0.90
HandoverControllerClass · 0.90
SchedulerClass · 0.90
QosAwareStrategyClass · 0.90
DecisionTraceBufferClass · 0.90
init_poolsMethod · 0.80

Tested by

no test coverage detected