武器目标动态分配问题
结构
1.变量
建模符号 | 参数意义 | 类型 | 变量名称 | 初始 |
---|
E | 目标函数 | double | e | N |
N | 目标个数 | int | Target_Num | Y |
M | 防空武器个数 | int | Weapons_Num | Y |
i | 目标编号 | int | i | Y |
j | 武器编号 | int | j | Y |
Plantform_Num | 平台个数 | int | Plantform_Num | Y |
Pkij | 第k武器平台防空武器j对目标i的毁伤概率 | double | destory [Target_Num] [Plantform_Num] [Weapons_Num] | Y |
Cij | 目标i对第k武器平台防空武器j的威胁值 | double | threat [Target_Num] [Plantform_Num] [Weapons_Num] | Y |
ri | 每一个目标分配的武器数量 | int | onet_w [Target_Num] | N |
//si | /分配每一个武器的目标数量 | //int | //onew_t | //N |
x(i,j) | 武器j对目标i的拦截情况=1 拦截 =0不拦截 | int | intercept | N |
2.目标函数
E=∑i=1N(1−∏j=1M(1−Cij⋅Pji⋅x(i,j)))
E = \displaystyle\sum_{i=1}^N (1-\prod_{j=1}^M(1-C{ij}\cdot P{ji}\cdot x(i,j)))
E=i=1∑N(1−j=1∏M(1−Cij⋅Pji⋅x(i,j)))
3.其它变量
名称 | 意义 | 类型 | 变量名称 |
---|
Wki | 第k武器平台第i个武器 | 结构体 | Plantform |
D | 一个目标的武器分配情况 | 结构体 | Distribution |
each_plant_weapons | 每一个平台的武器数目 | int [ ] | each_plant_weapons[Plantform_Num] |
num | 迭代数 | int | Iterations |
PopSize | 种群内染色体个数 | int | Group_Num |
Chrom | 染色体 | 结构体 | Chrom |
Group | 种群 | 结构体 | Group |
P_Change | 交叉概率 | float | P_Change |
P_Variation | 变异概率 | float | P_Variation |
P_Copy | 复制概率 | float | P_Copy |
4.平台结构体(Plantform )
名称 | 意义 | 类型 | 变量名称 |
---|
k | 平台编号 | int | k |
j | 武器编号 | int | j |
destory | 毁伤概率 | double | destory |
threat | 目标对该平台的威胁值 | double | threat |
| | | |
5.一个目标的武器分配情况结构体(GD)
名称 | 意义 | 类型 | 变量名称 |
---|
Wki | 第k武器平台第i个武器 | 结构体数组 | Plantform [onet_w [i]] |
i | 目标编号 | int | i |
ri | 每一个目标分配的武器数量 | int | onet_w |
| | | |
6.染色体结构体(Chrom)
名称 | 意义 | 类型 | 变量名称 |
---|
GD | 所有武器的分配情况 | 结构体数组 | Group_distribution [target_num] |
chrom_num | 染色体编号 | int | chrom_num |
E | 目标函数的值 | double | e |
7.种群结构体(Group)
名称 | 意义 | 类型 | 变量名称 |
---|
Chrom | 染色体 | 数组 | Chrom [Group_Num] |
fitness | 适应度数组 | double | fitness[ ] |
Bestchrom | 最优个体 | Chrom | Bestchrom |
BestFitness | 最优适应度 | double | BestFitness |
BestNum | 最优个体编号 | int | BestNum |
数据源
1.毁伤值(参考)
平台 | 武器 | 1 | 2 | 3 | 4 | 5 |
---|
1 | 1 | 0.3 | 0.1 | 0.9 | 0.9 | 0.9 |
1 | 2 | 0.4 | 0.2 | 0.9 | 0.9 | 0.9 |
1 | 3 | 0.3 | 0.6 | 0.6 | 0.8 | 0.5 |
2 | 1 | 0.2 | 0.8 | 0.2 | 0.7 | 0.3 |
2 | 2 | 0.2 | 0.4 | 0.1 | 0.1 | 0.4 |
2 | 3 | 0.1 | 0.5 | 0.4 | 0.6 | 0.5 |
2 | 4 | 0.4 | 0.6 | 0.1 | 0.5 | 0.1 |
2 | 5 | 0.3 | 0.8 | 0.1 | 0.1 | 0.8 |
2 | 6 | 0.1 | 0.9 | 0.7 | 0.6 | 0.7 |
2 | 7 | 0.1 | 0.9 | 0.8 | 0.2 | 0.7 |
3 | 1 | 0.5 | 0.6 | 0.5 | 0.5 | 0.6 |
3 | 2 | 0.4 | 0.5 | 0.2 | 0.4 | 0.3 |
3 | 3 | 0.2 | 0.4 | 0.6 | 0.2 | 0.1 |
3 | 4 | 0.1 | 0.2 | 0.5 | 0.7 | 0.3 |
3 | 5 | 0.3 | 0.1 | 0.5 | 0.6 | 0.2 |
2.目标武器分配情况
处理过程
1.计算适应度
适应度函数和目标函数一致公式E=∑i=1N(1−∏j=1M(1−Cij⋅Pji⋅x(i,j)))
适应度函数和目标函数一致公式\\ E = \displaystyle\sum_{i=1}^N (1-\prod_{j=1}^M(1-C{ij}\cdot P{ji}\cdot x(i,j)))
适应度函数和目标函数一致公式E=i=1∑N(1−j=1∏M(1−Cij⋅Pji⋅x(i,j)))
2.选择 采用轮盘赌方法
适应度概率
fitness[i]=adepti∑j=1Nadeptj
fitness[i]=\dfrac{adept_i}{\sum_{j=1}^{N}adept_j}
fitness[i]=∑j=1Nadeptjadepti
个体累计概率
add[i]=∑j=1ifitness[j]
add[i]=\sum_{j=1}^{i}fitness[j]
add[i]=j=1∑ifitness[j]
3.复制
P_Copy * Group_Num
轮盘赌法选择个体直接复制到子代
随机生成[0,1] 之间的数r ,若add[j] >r,则选择个体 j, 若add[j]<r 继续遍历j并产生新的随机数r,直到达到P_Copy * Group_Num个
4.交叉、变异
(1-P_Copy) * Group_Num
把轮盘赌没有选择到的进行两两配对
在[0,1]产生新的随机数s,若s>P_Varitation,进行交叉,随机产生两个目标的编号x,y,把连续的两对染色体进行[x,y]目标武器的分配情况进行交换。
若s<P_Varitiation,进行变异,随机产生数x,选择编号x的目标,随机产生x,y两个数,改变武器分配为x平台y武器
输出情况
目标 | (平台,武器) | (平台,武器) | (平台,武器) | (平台,武器) | … |
---|
1 | | | | | |
2 | | | | | |
3 | | | | | |
4 | | | | | |
5 | | | | | |
6 | | | | | |
7 | | | | | |
8 | | | | | |
9 | | | | | |
10 | | | | | |