【特别篇】基于动态规划的武器指挥系统火力分配模型

这篇具有很好参考价值的文章主要介绍了【特别篇】基于动态规划的武器指挥系统火力分配模型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

写在前面

本文仍然只是B站相关视频的代码复现,感兴趣的朋友可以进一步了解武器指挥分类决策火力问题的更多内容。

笔者简介:CCNU计科,喜欢看日漫唱歌看球和弹钢琴,还有偶像梅老板。

问题描述

火力分配属于一种资源分配问题,将供应量有限的若干种资源,比如说资金、机器设备、劳力、武器和兵力等,分配给若干个使用者,使得目标函数达到最优值。

问题就是,我方舰队计划用m枚同型导弹,攻击敌方的n个目标,每个目标的价值不同被导弹击毁的概率仍然不同。问题是:如何合理分配使用导弹,使得毁伤敌人目标的效果可以最优?
火力分配 代码,动态规划,安全,算法,经验分享,数学建模
(一个战争导弹分配攻击目标的图示)

问题假设

建立模型,离不开现实方面的限制和假设,我们分析约定如下:

1)由于目标的防御能力、大小、距离、站位不同,导致每个目标的命中率不同

2)攻击目标在敌方编队中的价值不同,比如说主目标通常攻击价值比较高,有的目标威胁程度比较强,因此在我们导弹资源有限的前提下,攻击敌方目标是具有优先级的。

3)作战阶段是可以划分为若干个互相联系的阶段;每个阶段都需要作出决策,并且遵循多米诺骨牌效应的方式影响着下一阶段的决策。也就是说后一阶段的决策是建立在前一阶段决策结果的基础上的。各个阶段所决定的决策构成一个序列,形成整个作战过程的方略。

4)在模型中,我们的每个阶段抽象为对目标1、目标2、直到目标n的导弹攻击。就是第一个阶段攻击目标1,第n个阶段攻击目标n这样依次类推下去。

模型建立

我方具有m枚同一型号的导弹,攻击敌方n个目标,每个目标的价值为Ck,Xk为向第k个目标发射的导弹数量,且第k个目标被命中毁坏的概率为Pk,PK表达式如下:

Pk=1-e^(-ak*xk)

如果说我们要建立规划模型,那么可以书写如下:

目标函数: max V=Sum( Ck * (1-e ^ (-ak * xk )) ) (k=1…m)
s.t. Sum(Xk)=m ( Sum() 为求和符号 )
(k=1…m) Xk为整数,k=1,2,…,n

那你就要问了,这个Xk是什么东西呢?原来Xk就是表示第K阶段的决策变量,比如说第一阶段我打出2枚导弹,第二阶段我打出1枚导弹,第三阶段我一枚都不打出,直到第四阶段我打出2枚导弹,由此状态变量就是:

X1=2,X2=1,X3=0,X4=2

那么分配给第K个目标直至第n个目标的导弹总数用x表示就是:

x=Sum(Xi) (i=k…m)

火力分配 代码,动态规划,安全,算法,经验分享,数学建模
这个表格可以怎么理解呢?哼哼,其实像xk这一系列的状态变量就是第k个阶段所使用的的导弹数量,而Xk’就是第k个阶段总导弹数量的剩余量

然后呢,你怎么衡量导弹对第k个目标的毁伤效果呢?毕竟最好的情况就是击中一个目标就寄一个目标,但是这是有概率的,我们假设了Pk=1-e^(-ak*xk)的表达式。

其中ak可以理解为由目标的防御能力、大小、距离、站位不同等因素共同决定的参数,这是需要数据支撑和人为调整的。
由此,对第K个目标的毁伤效果衡量的函数可以表达为:

Vk(x)=Ck * ( 1- e ^ (-ak * xk ))

最后我们再规定一个目标最优函数fk(x),表示将x枚导弹分配给第K个目标直至第n个目标的毁伤效果

请大家牢牢地记住以上几个表达式的含义,因为我们马上就要来到动态规划的模型建立了哈!

动态规划

我们先截个原视频里面的图用来表示模型:
火力分配 代码,动态规划,安全,算法,经验分享,数学建模
其中fn(x)就是第n阶段对目标n的目标最优函数,就是第n个阶段的效能函数。

重点是第二个表达式该如何表示,通俗的说,我们是从后面向前面进行推导,fk+1(x-xk)表示了将(x-xk) 枚导弹分配给第K+1个目标直至第n个目标的最优毁伤效果。也就是说,我们需要得到第k个阶段的最佳毁伤效果,因为从第k+1个阶段到第n个阶段已经最优,但是潜在的限制仍然是x,也就是导弹剩余的分配量

咋感觉你讲的云里雾里的,俺听不懂呢!没有关系,我们实例化来看看怎么解释。

战争火力模拟

身临其境,与敌军对弈,我军拥有导弹m=5,现在有敌人目标n=4,依据视频案例数据,我们给出Ck,ak的具体数值如下:
火力分配 代码,动态规划,安全,算法,经验分享,数学建模
利用效能函数公式,计算出各个阶段的效能函数如图所示:
火力分配 代码,动态规划,安全,算法,经验分享,数学建模
这样的话每个阶段用几枚导弹达到的效能都已经表现了出来。然后我们就是一个逆向思维,从第4阶段向第三阶段求解f3(x)的表达式值。

x4 f4(x)
0 0
1 1.78
2 2.50
3 2.80
4 2.92
5 2.97

通过表格我们知道了第四阶段的目标最优函数值,可以确定f4,然后就是对于f3的确定了,那我们其实也是一个讨论的方式:

1.假设第3阶段只剩下1颗导弹,则:
f3(x)=[ v3(0) + f4(1) ] = 1.78 ------(1)

f3(x)=[ v3(1) + f4(0) ] = 2.36 -------(2)

2.假设第三阶段只剩下2颗导弹,则:
f3(x)=[ v3(0) + f4(2) ] = 2.5 ---------(3)

f3(x)=[ v3(1) + f4(1) ] = 4.14 ---------(4)

f3(x)=[ v3(2) + f4(0) ] = 3.79 ----------(5)

我们相当于将所有方案枚举出来,从第三阶段只剩下1颗,2颗,3颗,4颗,5颗,分五种情况讨论,然后取每种情况中的最大值作为该种情况下的最佳方案,然后就可以得到下表:

x3 f3
0 0 (第三阶段剩余0枚)
1 2.36 (第三阶段剩余1枚)
1 4.14 (第三阶段剩余2枚)
2 5.57 (第三阶段剩余3枚)
3 6.44 (第三阶段剩余4枚)
3 7.16 (第三阶段剩余5枚)

由此可以类比推理,得到每一个阶段的最优损伤效益值。最后形成的就是一个方案序列[1,1,2,1]。至此,导弹火力问题建模可以暂告一段落了。
火力分配 代码,动态规划,安全,算法,经验分享,数学建模
最后本例子的MATLAB代码将在代码区全部分享
需要注意的是,我这里每个阶段攻击目标的价值和目标被攻击的概率是利用rand设置的分别在 [5,50] , [0,1] 区间里面的随机数,因此理解动态规划的一个工作流程是至关重要的一点。文章来源地址https://www.toymoban.com/news/detail-738918.html

代码区

n=4;%攻击的目标数量
m=5;%我方持有的导弹数量
c=rand(1,4)*(50-5)+5;%每个目标攻击价值
a=rand(1,4);%每个目标攻击概率
v=[];%效能函数
for i=0:5
    v=[v;c.*(1-exp(-a*i))];
end
%%由第四阶段求第三阶段
m3v=-inf;
m3i=-inf;
f3=[];
f3i=[];
 for i=1:5
for j=0:i
f=v(j+1,3)+v(i-j+1,4);
if f>m3v
m3v=f;
m3i=j+1;
end
end
f3=[f3,m3v];
f3i=[f3i,m3i];
 end
f3=[0;f3'];
f3i=f3i-1;
v(:,3)=f3;

%%由第3阶段求第2阶段
m3v=-inf;
m3i=-inf;
f2=[];
f2i=[];
 for i=1:5
for j=0:i
f=v(j+1,2)+v(i-j+1,3);
if f>m3v
m3v=f;
m3i=j+1;
end
end
f2=[f2,m3v];
f2i=[f2i,m3i];
 end
f2=[0;f2'];
f2i=f2i-1;
v(:,2)=f2;

%%由第2阶段求第1阶段
m3v=-inf;
m3i=-inf;
f1=[];
f1i=[];
 for i=1:5
for j=0:i
f=v(j+1,1)+v(i-j+1,2);
if f>m3v
m3v=f;
m3i=j+1;
end
end
f1=[f1,m3v];
f1i=[f1i,m3i];
 end
f1=[0;f1'];
f1i=f1i-1;
v(:,1)=f1;
cc=[];%最优方案序列
[id1,id11]=max(f1)%id1为全局最大效益
cc=[cc,f1i(1,id11-1)]%id11用来找出全局最大效益下,第一阶段的导弹分配数

if id11-1-cc(1)>0%保证每一个阶段的导弹剩余量大于0
cc=[cc,f2i(1,id11-1-cc(1))]
end

if id11-1-cc(1)-cc(2)>0%保证每一个阶段的导弹剩余量大于0
cc=[cc,f3i(1,id11-1-cc(1)-cc(2))]
end

if id11-1-cc(1)-cc(2)-cc(3)>0%保证每一个阶段的导弹剩余量大于0
cc=[cc,m-cc(1)-cc(2)-cc(3)]
end

到了这里,关于【特别篇】基于动态规划的武器指挥系统火力分配模型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(9) -- 实现系统动态菜单的配置和权限分配

    在WPF应用端开发,它的界面类似于Winform端,因此我们也需要对系统的菜单进行动态配置,这样才能把系统的功能弹性发挥到极致,通过动态菜单的配置方式,我们可以很容易的为系统新增所需的功能,通过权限分配的方式,可以更有效的管理系统的菜单分配到不同的角色用户

    2024年02月08日
    浏览(97)
  • 武器目标分配问题研究进展: 模型、算法与应用

    源自:系统公正与电子技术 作者:李梦杰  常雪凝  石建迈  陈超  黄金才  刘忠 武器目标分配问题是指挥控制与任务规划领域的关键难点之一, 也是军事运筹领域的基础研究课题。经过多年研究, 武器目标分配问题在陆海空天电等领域都得到了广泛研究, 涌现出了大量模型

    2024年02月10日
    浏览(41)
  • 操作系统简单动态分区分配算法(c++)

    首次适应算法 首次适应算法找到一个可以分配的内存块就进行分配,下一次分配时还是从空闲分区链头开始找,该算法倾向于优先利用内存中低址部分的空闲分区,从而保留了高址部分的大空闲区,这为以后到达的大作业分配大的内存空间创造了条件。 但是低址部分不断被

    2024年02月04日
    浏览(57)
  • 操作系统动态内存分配算法【C语言实现】

    题目: 采用五个算法,各自作业在1024kB空间上分配情况。 内存可变分区分配仿真算法 :首次适应,下次适应,最佳适应,最坏适应和快速分配。 使用的结构体数组表示起始地址,内存块大小,内存块状态(0空闲,1占用) void bubbleprint(struct Info info[]) 函数是为了内存块大小

    2024年02月03日
    浏览(44)
  • 操作系统原理 —— 内存动态分区分配算法(二十一)

    在上一个章节我们讲了 内存连续分配 的几种方式,有单一、固定、动态这三种,在固定、动态这种里面,操作系统会记录空闲分区表,这个表是用来记录当前空闲的内存。 那么在之后有新的进程装入内存,需要从空闲分区表中找到一块比较合适的空闲内存,该怎么找呢?

    2024年02月08日
    浏览(52)
  • c语言:通讯录管理系统(动态分配内存版)

    前言: 本通讯录管理系统一共三个版本,除此文章以外还有如下俩个版本,大家可以根据需求自取: 基础增删查改功能版本 :c语言:通讯录管理系统(增删查改)_luming.02的博客-CSDN博客 文件保存版本 :c语言:通讯录管理系统(文件版本)-CSDN博客         本文是在基

    2024年02月08日
    浏览(59)
  • 基于采样的规划算法之动态规划方法

    经过前面对RRT的介绍,我们发现基于采样的规划算法与基于图搜索的规划算法都是通过对路径树进行拓展新节点,来找到起点到终点的路径解。RRT家族通过随机采样来生成这棵路径树,随机采样会面临采样低效的问题——大部分采样的新节点都无益于提升路径解的最优性。动

    2024年02月11日
    浏览(32)
  • 基于动态规划的水库优化调度

       动态规划是最优化领域中的一个重要分支,是一种研究 多段决策 过程的递推最优化方法。所谓多段决策过程,是指根据时间、空间或其它特性可将过程分为若干互相联系的阶段,而在每个阶段必须作出决策的过程。凡是能作为多段决策过程来考虑的问题,都可应用动态

    2024年02月14日
    浏览(40)
  • 基于动态规划的强化学习算法

    学习「强化学习」(基于这本教材,强烈推荐)时的一些总结,在此记录一下。 在马尔可夫决策过程 环境模型已知 (也就是状态转移函数P、奖励函数r已知)的情况下,我们可以通过 「动态规划」 求得马尔可夫决策过程的最优策略 (pi^*) 。 对于做过算法题目的同学而言,

    2024年03月09日
    浏览(42)
  • 指挥通信车360度3d虚拟互动展示系统的优势及特点

    通信车是装有通信装备,用于保障通信联络的专用车辆,用于偏僻/特殊环境下的机动通信。并且机动通信局装备通常分为应急综合通信车、网络管理车、程控电话车、自适应跳频电台车、数字扩频接力车、散射通信车、卫星通信车、光缆引接车、线缆收放车和通信电源车等,

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包