Skip to content

zrc0622/HIRL4UCAV

Repository files navigation

An Imitative Reinforcement Learning Approach for Dogfight

实验结果

模型

BC、TD3、SAC、E-SAC、本文提出的方法训练的最佳模型存储在results文件夹下,模型验证结果如下表所示(每个模型的成功率和随机初始化成功率使用5个不同的随机种子运行50个回合得到,±表示标准差;命中率运行10个回合得到;加粗表示最佳结果)

最佳模型验证成功率及奖励值

模型名 算法 击落成功率 命中成功率 奖励值
OurAdaptive_Agent_successRate100_Actor_Harfang_GYM Ours(adaptive) 100.0%±0.0% 100.0%±0.0% -680.8±6.7
OurLinear_Agent_successRate100_Actor_Harfang_GYM Ours(linear) 100.0%±0.0% 100.0%±0.0% -953.9±13.8
TD3_Agent_successRate0_Actor_Harfang_GYM TD3 0.0%±0.0% 0.0%±0.0% -4707.2±0.0
ESAC_Agent_successRate100_Actor.pth E-SAC 100.0%±0.0% 100.0%±0.0% -1431.2±0.2
SAC_Agent_successRate100_Actor.pth SAC 100.0%±0.0% 0.0%±0.0% -2985.7±0.0
BC_Agent_successRate63_Harfang_GYM BC 62.8%±1.0% 62.8%±1.0% -12228.3±880.2

最佳模型随机初始化验证成功率及奖励值

算法 击落成功率 命中成功率 奖励值
OurAdaptive_Agent_successRate100_Actor_Harfang_GYM Ours(adaptive) 98.0%±1.3% 98.0%±1.3%
OurLinear_Agent_successRate100_Actor_Harfang_GYM Ours(linear) Ours(linear) 86.0%±5.4%
TD3_Agent_successRate0_Actor_Harfang_GYM TD3 0.0%±0.0% 0.0%±0.0%
ESAC_Agent_successRate100_Actor.pth E-SAC 90.0%±2.8% 90.0%±2.8%
SAC_Agent_successRate100_Actor.pth SAC 44.0%±3.3% 0.0%±0.0%
BC_Agent_successRate63_Harfang_GYM BC 22.4%±3.2% 22.4%±3.2%

开火效率

算法 命中次数/发射次数
OurAdaptive_Agent_successRate100_Actor_Harfang_GYM Ours(adaptive)
OurLinear_Agent_successRate100_Actor_Harfang_GYM Ours(linear)
ESAC_Agent_successRate100_Actor.pth E-SAC
BC_Agent_successRate63_Harfang_GYM BC

本文方法训练得到的策略

单一炮弹场景下的策略

image

无限炮弹场景下的策略

image

配置

  1. 安装Harfang3D sandboxRelease版本源代码,推荐安装源代码版本,这样可以自行更改环境的端口
  2. 安装本代码所需依赖
    conda env create -f environment.yaml
    

训练

  1. Harfang3D sandbox下的source文件夹,使用以下命令打开Harfang3D sandbox,使用network_port指定端口号,打开后进入网络模式(NETWORK MODE)
    python main.py network_port 12345
    
  2. 本代码文件夹下使用以下命令进行训练(注意修改代码train_all.py中的IP号,使用--render开启训练渲染,使用--plot绘制可视化结果)
    # 自适应权重NIRL
    python train_all.py --agent ROT --port 12345 --type soft --model_name srot
    
    # 线性权重NIRL
    python train_all.py --agent ROT --port 12345 --type linear --bc_weight 1 --model_name lrot
    
    # 固定权重NIRL
    python train_all.py --agent ROT --port 12345 --type fixed --bc_weight 0.5 --model_name frot
    
    # TD3
    python train_all.py --agent TD3 --port 12345 --model_name td3
    
    # BC
    python train_all.py --agent BC --port 12345 --model_name bc
    
    # SAC
    python train_sac.py --type sac --port 12345 --model_name sac
    
    # E-SAC
    python train_sac.py --type esac --port 12345 --model_name esac
    

测试

  1. Harfang3D sandbox下的source文件夹,使用以下命令打开Harfang3D sandbox,使用network_port指定端口号,打开后进入网络模式
    python main.py network_port 12345
    
  2. BC、TD3、NIRL方法在本代码文件夹下使用以下命令进行测试(注意修改代码train_all.py中的IP号及导入模型名称(仅需‘xxx_Harfang_GYM之前的名称’),使用--render开启测试渲染)
    # 成功率测试
    # 在相应训练代码后添加'--test --test_mode 1'即可,其中test mode 1为随机初始化,test mode 2为无限导弹,test mode 3为原始环境测试
    # 以下为一个例子
    python train_all.py --agent ROT --port 12345 --type soft --model_name srot --test --test_mode 1 --seed 1
    
    # 奖励测试
    # 在相应训练代码后添加'--test --test_mode 4'即可,其中test mode 4为随机初始化,test mode 5为原始环境测试
    # 以下为一个例子
    python train_all.py --agent ROT --port 12345 --type soft --model_name srot --test --test_mode 4 --seed 1
    
  3. SAC、E-SAC方法在本代码文件夹下使用以下命令进行测试(测试模式类型同上)
    python validate_sac.py --test_mode 1 --port 12345 --seed 1 
    

About

highly imitative reinforcement learning for UCAV

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages