遗传算法马投篮代码
㈠ 发一份遗传算法给我,c++实现的,qq819458070
程序使用VS2008写的 从命令行读取文件Message.txt 然后将结果写到 coded.txt decoded.txt 运行时候需要填写命令行参数 并采用FAT32解决方案从命令行输入参数 这个你应该会吧? 上面的三个文件名都要用命令行参数输入的~~~额。。。是我自己写的。。。
#include <stdio.h>
#include<memory.h>
#include<string.h>
#include <time.h>
#define Decode 0
#define Encode 1
bool Sub_Key[16][48];
//明文初始置换
unsigned char Initial [] =
{
58, 50, 42, 34, 26, 18, 10, 2,
60, 52, 44, 36, 28, 20, 12, 4,
62, 54, 46, 38, 30, 22, 14, 6,
64, 56, 48, 40, 32, 24, 16, 8,
57, 49, 41, 33, 25, 17, 9, 1,
59, 51, 43, 35, 27, 19, 11, 3,
61, 53, 45, 37, 29, 21, 13, 5,
63, 55, 47, 39, 31, 23, 15, 7
};
//最终置换
unsigned char Final[] =
{
40, 8, 48, 16, 56, 24, 64, 32,
39, 7, 47, 15, 55, 23, 63, 31,
38, 6, 46, 14, 54, 22, 62, 30,
37, 5, 45, 13, 53, 21, 61, 29,
36, 4, 44, 12, 52, 20, 60, 28,
35, 3, 43, 11, 51, 19, 59, 27,
34, 2, 42, 10, 50, 18, 58, 26,
33, 1, 41, 9, 49, 17, 57, 25
};
//S-盒置换
unsigned char S_Box[8][64] =
{
/* S1 */
,
/* S2 */
,
/* S3 */
,
/* S4 */
,
/* S5 */
,
/* S6 */
,
/* S7 */
,
/* S8 */
};
unsigned char Key_Exchange[56] =
{
57, 49, 41, 33, 25, 17, 9,
1, 58, 50, 42, 34, 26, 18,
10, 2, 59, 51, 43, 35, 27,
19, 11, 3, 60, 52, 44, 36,
63, 55, 47, 39, 31, 23, 15,
7, 62, 54, 46, 38, 30, 22,
14, 6, 61, 53, 45, 37, 29,
21, 13, 5, 28, 20, 12, 4
};
//压缩变换
unsigned char Compression[] =
{
14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10,
23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2,
41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48,
44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32
};
//扩展变换
unsigned char Expansion[] =
{
32, 1, 2, 3, 4, 5,
4, 5, 6, 7, 8, 9,
8, 9, 10, 11, 12, 13,
12, 13, 14, 15, 16, 17,
16, 17, 18, 19, 20, 21,
20, 21, 22, 23, 24, 25,
24, 25, 26, 27, 28, 29,
28, 29, 30, 31, 32, 1
};
//P_盒置换
unsigned char P_Box[]=
{
16, 7, 20, 21, 29, 12, 28, 17,
1, 15, 23, 26, 5, 18, 31, 10,
2, 8, 24, 14, 32, 27, 3, 9,
19, 13, 30, 6, 22, 11, 4, 25
};
//密钥置换
unsigned char Key[]=
{
57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18,
10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36,
63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22,
14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4
};
//
unsigned char Key_Move[]=
{
1 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 1 , 2 , 2 , 2 , 2 , 2 , 2 , 1
};
void Key_Process(char *);
void DES(char*,char *,int);
void Generate_SubKey(bool*,bool*);
void Rotate_Key(bool *,int);
void Initial_Exchange(char *, bool*,bool* );
void Exchange_Key(char *, bool*);
void Expand_Right(bool*, bool*);
void S_function(bool* ,bool* );
void P_function(bool * );
void Final_Exchange(bool* , bool*,char*);
void BitToByte(char *Out, const bool *In, int bits);
//主函数
int main(int argc,char**argv)
{
unsigned long start,end;
//time when execution begins
start = clock();
char Final_Result[12]=;
char Message[12]=;
char S_Key[8]=;//64bits
//打开文件 用于输入
FILE *input = fopen( argv[1], "r");
if(ferror( input ))
return 0 ;
//创建文件 用于输出密文
FILE *encyption = fopen(argv[2],"w");
if(ferror( encyption ))
return 0 ;
//创建文件 用于输出解密后的明文
FILE *decyption = fopen(argv[3],"w");
if(ferror( decyption ))
return 0 ;
while( !feof(input) )
{
int i=0;
while( !feof(input) && i<8 )
{
Message[i]=fgetc(input);
i++;
}
if (i==0)
break ;
else if(i<8)
{
for(;i<8;i++)
Message[i]='\0';
}
Key_Process(S_Key);
DES(Message,Final_Result,Encode);
Final_Result[8]=0;
fputs( Final_Result, encyption );
memset(Message,0,8);
DES(Final_Result,Message,Decode);
Message[8]=0;
fputs( Message, decyption );
}
//time when execution ends
end = clock();
printf("The execution time is %ld ms\n", end-start );
return 0;
}
void Key_Process(char *S_Key)
{
int round ;
bool Bit_Key[56];//56bits
Exchange_Key(S_Key,Bit_Key);
for(round = 0 ;round<16;round++)
{
//KL->消息左28位,KR->消息右28位
bool*KL = &Bit_Key[0], *KR = &Bit_Key[28];
//循环左移
Rotate_Key(KL,Key_Move[round]);
Rotate_Key(KR,Key_Move[round]);
//产生子密钥
Generate_SubKey(Bit_Key,Sub_Key[round]);
}
}
void Exchange_Key(char *Key , bool* New_Key)
{
int i ,j;
bool Bit_Key[64];
//Transform the initial key to bool type
for(i = 0 ;i<8;i++)
for(j=0;j<8;j++)
{
Bit_Key[i*8+j] = (Key[i]>>j)&0x01;
}
for(i=0;i<56;i++)
New_Key[i]=Bit_Key[Key_Exchange[i]-1];
}
void Rotate_Key(bool*Key ,int round)
{
bool temp[64];
//void *memcpy( void *to, const void *from, size_t count );
//函数从from中复制count 个字符到to中,并返回to指针
memcpy(temp, Key, round);
memcpy(Key, Key+round, 28-round);
memcpy(Key+28-round, temp, round);
}
void Generate_SubKey(bool*Input, bool* Output)
{
for(int i=0;i<48;i++ )
{
Output[i]=Input[Compression[i]-1];
}
}
//DES函数
void DES( char*Message,char *Final_Result,int type)
{
bool Right[32];//32bits
bool Left[32];//32bits
bool Expanded_Right[48];//扩展后的右消息
bool flag[32];//用于左右消息交换
bool Result1[48];//48bits
bool Result2[32];//32bits
int round ,i;
Initial_Exchange(Message,Left,Right);
//加密算法
if(type == Encode)
{
for( round = 0 ; round < 16 ; round++ )
{
memcpy(flag,Right,32);
Expand_Right(Right,Expanded_Right);
for( i = 0 ; i<48 ; i++ )
Result1[i]=Expanded_Right[i]^Sub_Key[round][i];
S_function(Result1,Result2);
P_function(Result2);
for( i = 0 ; i<32 ; i++)
Right[i] = Result2[i]^Left[i];
memcpy(Left,flag,32);
}
}
//解密算法
else if(type == Decode)
{
for( round = 15 ; round >=0 ; round-- )
{
memcpy(flag,Left,32);
Expand_Right(Left,Expanded_Right);
for( i = 0 ; i<48 ; i++ )
Result1[i]=Expanded_Right[i]^Sub_Key[round][i];
S_function(Result1,Result2);
P_function(Result2);
for( i = 0 ; i<32 ; i++)
Left[i] = Result2[i]^Right[i];
memcpy(Right,flag,32);
}
}
Final_Exchange( Left , Right , Final_Result) ;
}
void Initial_Exchange(char *Message , bool*Left,bool*Right)
{
bool temp[64];
int i,j;
//把 Message 转化成 bit形式
for(i=0;i<8;i++)
for(j=0;j<8;j++)
temp[i*8+j]= (Message[i]>>j)&0x01;
for(i=0;i<32;i++)
Left[i]=temp[Initial[i]-1];
for(;i<64;i++)
Right[i-32]=temp[Initial[i]-1];
}
void Expand_Right(bool*Input , bool*Output)
{
for(int i =0;i<48;i++)
Output[i]=Input[Expansion[i]-1];
}
void S_function(bool* Input,bool*Output)
{
unsigned int x,y;
char z;
bool* in=Input;
bool* out=Output;
for(int j=0; j<8; j++,in+=6,out+=4)
{
//第1位和第6位
x = (in[0]<<1) + in[5];
//2-4位
y = (in[1]<<3) + (in[2]<<2) + (in[3]<<1) + in[4];
//由x y 确定的数z
z = S_Box[j][x*16+y];
//z用4个bit表示
for(int i=0; i<4; i++)
{
out[i] = (z>>i) & 1;
}
}
}
void P_function(bool* a)
{
bool temp[32];
memcpy(temp,a,32);
for(int i = 0 ;i<32;i++)
a[i]=temp[P_Box[i]-1];
}
void Final_Exchange(bool*left , bool*right ,char*result )
{
memset(result,0,8);
bool temp1[64];
//left 和 right 组合成 temp1
memcpy(temp1,left,32);
memcpy(temp1+32,right,32);
bool temp2[64];
for(int i=0;i<64;i++)
{
//由末置换得到temp2
temp2[i]=temp1[Final[i]-1];
//将temp2转化成char型
result[i/8] |= temp2[i]<<(i%8);
}
}
㈡ 高分奖励--急求粗粒度并行遗传算法源程序
参考答案 从不奢求生活能给予我最好的,只是执着于寻求最适合我的!
㈢ 急!!求遗传算法图像边缘检测的matlab程序,马上就要交毕设了,谁能帮我啊我的邮箱942406137,有加分啊
http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=49464 Matlab程序:遗传算法/大津法/区域生长法/迭代法分割图像
㈣ 计算电磁学是研究什么的
内容简介
本书在论述计算智能及计算电磁学基本概念和研究领域的基础上,系统地介绍了计算智能中的遗传算法、神经网络、模糊系统在电磁建模和优化问题中的应用。全书共分6章,内容主要包括计算智能、遗传算法基本原理及电磁应用、模糊理论基本原理、神经网络基本原理及电磁应用等。同时,书后附有相关程序。
本书可供计算电磁学、电磁场理论、电磁场工程、宽带微带天线、计算智能等领域从事研究和开发工作的科技人员和高校教师参考阅读,也可作为高等院校相关专业的高年级本科生和研究生的教学用书。
第1章 绪论
1.1 计算智能
1.1.1 人工智能的概念
1.1.2 计算智能的概念
1.1.3 计算智能研究领域
1.2 计算电磁学
1.3 计算智能的电磁应用
参考文献
第2章 遗传算法基本原理
2.1 遗传算法概述
2.1.1 遗传算法简史
2.1.2 遗传算法特点
2.1.3 遗传算法研究课题
2.2 遗传算法的数学基础
2.2.1 模式的概念
2.2.2 模式定理
2.2.3 隐并行性
2.2.4 积木块假说
2.3 基本遗传算法
2.3.1 编码技术
2.3.2 群体设定
2.3.3 适应度函数
2.3.4 遗传操作
2.3.5 遗传算法的收敛性
2.3.6 几种流行遗传算法策略
2.4 微量遗传算法
2.5 免疫遗传算法
参考文献
第3章 遗传算法电磁应用
3.1 遗传算法电磁应用概述
3.2 吸波材料优化设计应用
3.2.1 电磁吸波材料简介
3.2.2 吸波材料设计中的分层优化
3.2.3 吸波材料设计中的分块优化
3.2.4 分层设计和分块设计相结合
3.3 天线阵列优化设计应用
3.3.1 天线阵列综合的发展现状
3.3.2 天线阵列综合用遗传算法
3.3.3 模拟退火算法
3.3.4 遗传模拟退火算法的实现
3.3.5 直线天线阵列的综合
3.3.6 平面天线阵列的综合
3.4 电磁复超越方程求解应用
3.4.1 算法描述
3.4.2 算法实例
3.4.3 算法特点
参考文献
第4章 模糊理论基本原理
4.1 模糊理论概述
4.1.1 模糊理论简史
4.1.2 模糊理论特点
4.1.3 模糊理论研究课题
4.2 模糊理论基础知识
4.2.1 模糊概念与模糊集合
4.2.2 常用的隶属函数
4.2.3 模糊集合的运算
4.3 模糊关系和模糊推理
4.3.1 模糊关系
4.3.2 模糊关系的运算
4.3.3 模糊蕴含和模糊推理
4.4 模糊逻辑系统
4.4.1 模糊系统
4.4.2 模糊逻辑系统框架
4.4.3 Takagi-Sugeno模糊逻辑系统
4.4.4 模糊逻辑系统的逼近问题
4.5 模糊理论电磁应用概述
参考文献
第5章 神经网络基本原理
5.1 神经网络概述
5.1.1 神经网络简史
5.1.2 神经网络特点
5.1.3 神经网络研究课题
5.2 神经网络基础知识
5.2.1 神经网络模型
5.2.2 神经网络的训练和学习
5.2.3 神经网络训练用样本
5.3 BP神经网络
5.3.1 BP神经网络结构
5.3.2 BP学习算法
5.3.3 BP神经网络应用要点
5.3.4 BP算法的不足及改进
5.4 RBF神经网络
5.4.1 RBF神经网络结构和工作原理
5.4.2 RBF神经网络常用的学习算法
5.4.3 RBF神经网络的特点及注意事项
5.4.4 RBF神经网络与BP神经网络的比较
5.5 遗传神经网络
5.5.1 遗传算法和神经网络的融合
5.5.2 遗传神经网络的实现
5.6 模糊神经网络
5.6.1 模糊系统与神经网络比较
5.6.2 模糊神经网络实现
参考文献
第6章 神经网络电磁应用
6.1 神经网络电磁应用概述
6.2 波导匹配负载设计
6.2.1 H面T型波导匹配负载设计
6.2.2 E面T型波导匹配负载设计
6.2.3 波导终端短小匹配负载设计
6.3 微带天线设计
6.3.1 微带天线概述
6.3.2 微带天线设计
6.4 谐振频率计算
6.4.1 微带天线谐振频率
6.4.2 谐振频率计算用神经网络
6.4.3 自适应网络基模糊推理系统
6.4.4 混合法用于计算谐振频率
6.5 智能天线的波束形成
6.5.1 智能天线的基本原理
6.5.2 基于RBF神经网络的自适应波束形成
参考文献
附录1 计算智能和计算电磁学相关网站
附录2 相关程序
附录2.1 遗传算法MATLAB程序
附录2.2 BP神经网络MATLAB程序
附录2.3 RBF神经网络MATLAB程序
更多介绍
--------------------------------------------------------------------------------
其他说明
版本:第一版 开本:B5
责任编辑:孙芳,王志欣 字数:294千字
读者对象:本科以上文化程度 页数:233
--------------------------------------------------------------------------------
第一发货地
西安
--------------------------------------------------------------------------------
相关书籍
出现频率最高的100种典型题型精解精练-电路
核电厂水泵定期试验规范(DL/T1072-2007)
大型火力发电机组检修工程费用管理
模拟集成电路设计与仿真
配电线路作业技术与安全1000问
电气设备安装工艺与技能训练(建筑类)
发电企业安全运行技术问答丛书锅炉分册
六氟化硫电气设备中绝缘气体湿度测量方法(DL/T506-2007)
电力生产"1000个为什么"系列书:火电建设工程施工-汽轮机部分
电工基础
㈤ 利用遗传算法求解TSP问题 从北京出发 四个城市
太复杂了
还是找专业的吧
㈥ MATLAB中的遗传算法最佳适应度值和平均适应度曲线怎么描绘
每一代群体中每一个个体的适应度都必须算出来对吧,把它存在一个向量里面,然后将每一代中适应度最大的max()和平均值mean()取出来放在一个向量里面,当进化完毕的时候画出这个向量就行了
㈦ 对于预测方面,是马尔科夫链比较好,还是遗传算法优化bp神经网络比较好
1、遗传算法优化BP神经网络是指优化神经网络的参数;
2、因此,对训练时间没有影响。