计算机仿真大赛选拔赛Word文件下载.docx
- 文档编号:22269819
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:30
- 大小:219.29KB
计算机仿真大赛选拔赛Word文件下载.docx
《计算机仿真大赛选拔赛Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机仿真大赛选拔赛Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。
图一
(黄色网格表示平原,绿色网格表示丛林。
)
(2)、坦克性能假设:
1.红蓝双方的坦克性能相同。
2.坦克在各个方向的命中率相同。
3.坦克的攻击范围是它的周边六个网格。
结果只有击中目标、未击中目标两种可能。
击中目标,目标就被摧毁。
4.阵亡的坦克对战斗不在有其它影响。
5.在单位时间内坦克的机动距离是它的周边六个网格或不移动。
6.在丛林中的坦克被发现概率会降低,即存活率会上升固定比值。
三、建立模型
(一)、兰切斯特平方律兵力模型
建立兰切斯特模型,对作战过程进行模拟。
预测交战中哪一方会获胜,预测作战过程持续的大致时间,预测战斗结束时胜方的战斗损失,预测初始总兵力和战斗力的变化对作战结局的影响。
仿真的对象为坦克连长各自指挥10辆坦克进行对抗,故采用兰切斯特平方律建立兵力模型,可以更好的反映现代坦克战争集中优势兵力作战这一重要因素。
内容:
1.暂不考虑地貌对坦克伪装的影响。
方程基本形式为
(1)
式中:
x、y为作战双方在t时刻的瞬时兵力(或剩余兵力)。
双反的初始兵力分别为
、
,两式相除,得
(2)
双方实力相等得条件为
(3)
由式
(2)、(3)得
(4)
即战斗单位数量的平方与单个战斗单位的平均战斗力的乘机相等时,两支军队的总战斗实力相等。
式
(2)在(0,t)积分,得
(5)
战斗结局预测
a)、当时
,红方获胜概率较大。
其剩余兵力为
(6)
红蓝双方每辆坦克的存活率分别为为
(7)
b)、当时
,蓝方获胜概率较大。
(8)
(9)
c)、当时
,获胜概率相同,平局。
2.重新考虑地貌对坦克伪装性能的影响
当坦克处在丛林地貌时,其被发现的概率会降低一定比值
。
坦克的实际存活率会上升。
可近似为
(10)
(2)、蒙特卡洛偶然事件模型
兰切斯特平方律建立的兵力模型能预测交战中哪一方会获胜,预测战斗结束时胜方的战斗损失等,但这并不能反映出战场的偶然性事件。
所以建立蒙特卡洛偶然事件模型,用计算机生成的随机概率,对一次交战中坦克的存亡进行仿真。
用此方法检验兰切斯特平方律兵力模型的正确性。
蒙特卡罗方法解的误差由3方面组成:
截断误差、方法本身、随机数的品质不足。
在忽略截断误差的同时,进行大量重复独立的试验,可以使误差不断逼近于零。
假设:
1.忽略截断误差
2.每一次的试验相互独立
(11)
是
次独立试验中事件
出现的次数,
是事件
的概率。
根据此定律,只要试验次数足够多,此事件出现的频率就趋近与它的概率。
对于生成随机概率的正确与否,可以通过大量的独立试验来检验结果。
a)、在一次交火中,红蓝双方兵力为3:
9,分别进行10次、100次、1000次试验得到如下结果:
红蓝对抗(兵力3:
9)
试验次数
A存活数
B存活数
A平均值
B平均值
10次
4
83
0.400000
8.300000
100次
32
853
0.320000
8.530000
1000次
304
8492
0.304000
8.492000
10000次
3053
84957
0.305300
8.495700
理论值
3000
84853
0.300000
8.485281
表格二
随着试验次数增大,结果越接近理论值。
符合兰切斯特平方律兵力模型,集中优势兵力作战对交战结果有重大影响。
与实际战争理论,分割包围、逐个击破的作战思想相符合。
对100次详细分析:
气泡图一
100次实验中,点主要集中于(0,8)、(1,9),其趋势在理论值附近。
符合离散型随机规律。
b)、在一次交火中,红蓝双方兵力为10:
10,分别进行10次、100次、1000次试验得到如下结果:
红蓝对抗(兵力10:
10)
51
48
5.100000
4.800000
497
501
4.970000
5.010000
4883
4948
4.883000
4.948000
49766
50086
4.976600
5.008600
50000
5.000000
表格二
随着试验次数增大,结果越接近理论值,并在理论附近跳动。
在相同的兵力下交战双方的获胜率相同,存活率也相同,与实际战争相符合。
气泡图二
100次实验中,点主要集中于(5,5)及其周边,其趋势在理论值附近。
结论
1、示例分析
使用说明:
地图为六方格网,一个方格中只能有一辆坦克,一个方格中的地貌相同。
地图只体现了地貌特征,不显现地形特征。
红蓝双方轮流指挥各自坦克,每一次指挥,最多能机动三辆坦克,即一个排的兵力。
也可机动同一辆坦克,即快速机动。
机动范围是周边的六个方格,或不移动,每次移动一格。
每一次指挥结束后,坦克会对周边六格的敌坦克进行射击。
射击结果只有击中、未击中,击中敌坦克即阵亡。
阵亡的坦克会从地图移除。
击中概率与交战的双方兵力有关。
当其中一方的坦克全部阵亡,战斗结束。
推演示例:
红方采用斜行、后三角的阵型,两翼包围中间的战法。
蓝队采用锥形、前三角的阵型,横队并列推进的战法。
步骤:
红方:
前期,部署两翼斜行、中间后三角的阵型。
中期,红方优先机动两翼部队,以中间部队牵制蓝方主力,两翼在歼灭蓝方两侧后向中间靠拢。
后期,三侧包围蓝方,并歼灭残余部队。
蓝方:
前期,左右分别部署成锥形,中间部署成前三角阵型。
中期,蓝方实施横队并列推进左中右坦克,随后两侧部队与红方交战被歼灭。
后期,,中间部队分散突围,后被包围全灭。
(具体过程见附录:
示例详细步骤,第13页)
结果:
红方获得战斗的胜利,蓝方被全歼失败。
二、自我评价
对地形地貌模型简化,并突出其对坦克作战的影响。
对坦克模型简化得当,保留坦克火力、机动、防护的特性,简化其它特征以简化计算。
模型的假设较为合理。
兰切斯特平方律的兵力模型能较符合的模拟战场上坦克的兵力,能突显出集中优势兵力对战争的影响,能准确预测交战中哪一方会获胜,预测战斗结束时胜方的战斗损失,预测初始总兵力和战斗力的变化对作战结局的影响。
蒙特卡洛偶然事件模型合理的反映出战场的偶然性对战争的影响,并且不失其概率的准确性。
随试验次数增大,误差逐渐减小,结果逼近理论值,与实际数据相符合。
模型具有一定的准确性。
参考文献
[1]叶利民,龚立,刘忠.兵棋推演系统设计与建模研究.计算机与数字工程,2011,12.
[2]杨南征.虚拟演兵:
兵棋、作战模拟与仿真.北京:
解放军出版社,2007:
99-127.
[3]王正元,刘靖旭,谭跃进,沙红兵.基于仿真的主战坦克作战效能评估方法.计算机仿真,2005,1.
[4]张佳琳,赵琳.MWGM:
基于兰彻斯特方程的微观兵棋推演模型.计算机工程与设计,2011,11.
[5]彭文成,周电杰,张文.基于协同作战的兵力损耗兰彻斯特方程.运筹与管理,2009,3.
[6]关世义.从伪蒙特卡洛法到蒙特卡洛法.战术导弹技术,2003,3:
45-48.
[7]赖斯,卢秀玉.蒙特卡罗方法与拟蒙特卡罗方法解线性方程组,战术导弹技术,2010,4.
[8]陈建祥,魏迎梅,吴玲达.虚拟战场环境中的态势标绘与表现.计算机应用,2005,25:
1701-1703.
附录
一、蒙特卡洛实验结果
1)、表格
表格一
2)、气泡图
3)、程序源码
//============================start====================================//
//
//tank检验随机真确性.cpp
//windows7x64
//VisualC++6.0
//结果保存于otank.txt
//======================
#include<
iostream>
fstream>
cstdlib>
cmath>
usingnamespacestd;
structtank//定义坦克
{
inttx,ty;
//坐标
intlife;
//生命值,0--死亡,1--存活
}red[10],blue[10];
structmap//定义地图网格
intspace;
//0--无坦克,1--有坦克
doublehide;
//0--平原,1.0--丛林
charjpg;
//'
.'
--平原,'
*'
--丛林,'
A'
--红方坦克,'
B'
--蓝方坦克
}grid[37][17];
intmain()
voidinitial();
voidfire(structtanka[10],doublex,structtankb[10],doubley);
doublex,y;
intenemy[2][10]={0},mate[2][10]={0};
initial();
//====检验随机真确性====//
inti,j;
doublexx,yy;
intasum=0,bsum=0;
intanum,bnum;
intn;
cout<
<
"
红方蓝方次数\n"
;
xx=yy=n=\n"
cin>
>
xx>
yy>
n;
ofstreamcout("
otank.txt"
);
numberresultresult\n"
for(j=0;
j<
j++)
{
for(i=0;
i<
10;
i++)
{red[i].life=1;
blue[i].life=1;
}
x=xx;
//x--红方参战兵力
y=yy;
//y--蓝方参战兵力
fire(red,x,blue,y);
for(i=0,anum=0;
x;
if(red[i].life==1)
{asum++;
anum++;
}
for(i=0,bnum=0;
y;
if(blue[i].life==1)
{bsum++;
bnum++;
cout<
A="
anum<
B="
bnum<
\n"
\nThefrequency\nn="
\nTheoriginalvalue\nA="
x<
B="
\nTheaveragevalue\nA="
fixed<
(double)asum/n<
(double)bsum/n;
\nThesumvalue\nA="
asum<
bsum<
return0;
//====初始化地图====//
voidinitial()
for(i=0;
37;
i++)//生成平原地图
for(j=0;
17;
grid[i][j].hide=1.0;
//====射击摧毁====//
voidfire(structtanka[],doublex,structtankb[],doubley)
inti;
doublepx,py;
doubleplife[10],hide;
if(x*x>
y*y)
px=sqrt(x*x-y*y)/x;
py=y*y/(x*x+y*y);
if(x*x<
px=x*x/(x*x+y*y);
py=sqrt(y*y-x*x)/y;
if(x*x==y*y)
px=1.0/2.0;
py=1.0/2.0;
hide=grid[a[i].tx][a[i].ty].hide;
plife[i]=(double)rand()/RAND_MAX*hide;
if(plife[i]>
px)
a[i].life=0;
hide=grid[b[i].tx][b[i].ty].hide;
py)
b[i].life=0;
}
//=============================end======================================//
二、兵棋推演系统示例
1)、示例详细步骤
回合(车号)
0(A)
1(B)
2(A)
3(B)
4(A)
5(B)
6(A)
7(B)
8(A)
9(B)
10(A)
车号\方向
0\2
1\8
9\2
8\8
2\2
3\8
3\2
7\2
0\9
9\7
6\8
2\8
1\2
4\8
8\2
7\8
6\2
4\5
4\3
0\8
5\8
阵亡
11(B)
12(A)
13(B)
14(A)
15(B)
16(A)
17(B)
18(A)
19(B)
20(A)
4\2
5\2
9\8
B1
A9B8
21(B)
22(A)
23(B)
24(A)
25(B)
26(A)
27(B)
3\7
7\3
4\1
7\1
5\9
A0A1B0B2
A8B7
B9
B6
A6B3B4B5
表格三
2)、程序源码====兵棋推演系统
//tank__wargame.cpp
//----------------------
//0--无坦克,1--有坦克
-平原,'
-丛林,'
-红方坦克,'
-蓝方坦克
}grid[37][23];
double*point_x=&
x,*point_y=&
structtank*a[10],*b[10];
intn_move=0;
voidshowmap();
voidmove(structtankrb[],charab);
voidadjust(intx_coordinate,inty_coordinate);
voidscout(structtankrb[],charab,intenemy[2][10]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机仿真 大赛 选拔赛