遺傳演算法馬投籃代碼
㈠ 發一份遺傳演算法給我,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、因此,對訓練時間沒有影響。