已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
using System;using System.IO;using System.Collections;using System.Collections.Generic;using System.Text;using System.ComponentModel;using System.Data;using System.Data.OleDb;namespace ConsoleApplication1 public class Genetic_Algorithm Random rand=new Random(); int MaxTime;/最大运行时间 int popsize;/种群数量 int ChromosomeLength;/染色体长度 double CrossRate;/交叉率 double MutateRate;/变异率 double f;/适应度值 int selected;/定义selected数组,用于表示需要进行交叉操作的染色体序号 double wheel;/轮盘 int, pregeneration;/上一代 int, nextgeneration;/下一代 int Best;/定义当前最优解 int convergence;/定义当前最优解的已持续代数 int, timeconstrait; public Genetic_Algorithm(int populationsize, int chromolength)/GA-构造函数,变量初始化 rand = new Random(System.DateTime.Now.Millisecond); MaxTime = 50; popsize=populationsize; ChromosomeLength = chromolength; CrossRate = 0.8; MutateRate = 0.2; f = new double2*popsize; selected = new intpopsize; wheel = new doublepopsize + 1; pregeneration = new intpopsize, ChromosomeLength;/当前的染色体种群 nextgeneration = new intpopsize, ChromosomeLength;/下一代(子代)染色体种群 Best = new intChromosomeLength; convergence = 1; timeconstrait = new int20, 2 2, 6 , 1, 2 , 3, 4 , 1, 4 , 4, 7 , 3, 5 , 2, 6 , 3, 5 , 1, 4 , 3, 7 , 5, 7 , 2, 7 , 2, 4 , 4, 5 , 2, 5 , 4, 6 , 3, 5 , 1, 4 , 1, 5 , 3, 6 ; public void RunGA()/运行 int i; CreateFirstPop();/产生初始种群 i = 0; bool quit = true; while (quit) for (; i MaxTime; i+) Console.WriteLine(The 0th Generation., i + 1); CalFitness(ref pregeneration, popsize);/计算适应值 PrintResult();/输出每步的结果 WheelSelect();/此步确定了selectedi的值 CreateNextGeneration();/产生子代,包括被选择为selectedi的染色体的交叉,还有变异 ProduceNext(); Console.WriteLine(Press q to quit, press Enter to continue.); if (Console.Read() = q) quit = false; else MaxTime += 50; void CreateFirstPop()/产生初始种群 Console.WriteLine(Creating first generation.n); int i,j,r; for(i=0;ipopsize;i+) for(j=0;jChromosomeLength;j+) r=rand.Next(1,11); pregenerationi, j = r; void CreateNextGeneration()/产生下一代种群(经交叉、变异) int i; for (i = 0; i popsize; i+=2) Crossover(selectedi, selectedi + 1, i, i + 1);/将序号为selectedi和selectedi + 1的染色体进行交叉,产生的子代放在pregeneration中i和i+1的位置 Mutation(ref nextgeneration);/变异 void CalFitness(ref int, curgeneration,int number)/计算适应度值的函数 for (int i = 0; i number; i+) double fitness = 0; for (int j = 0; j ChromosomeLength; j+) fitness += Math.Abs(curgenerationi, j-j-1); fi = fitness; void FindMax(ref double f, out int max)/寻找数组中最大值 int i; max = 0; for (i = 1; i fmax) max = i; void FindMin(ref double f, out int min)/寻找数组中最小值 int i; min = 0; for (i = 1; i popsize; i+) if (fi fmin) min = i; void WheelSelect() /轮盘选择popsize个染色体(可重复),并将序号放入selected中,作为交叉的染色体 int i,j ,r; double sum; wheel0 = 0; sum = 0; for (i = 0; i popsize; i+) sum += fi; wheeli + 1 = wheeli + fi; for (i = 0; i popsize; i+) r = rand.Next(int)sum); for (j = 0; j wheelj & r 将序号为selectedi和selectedi + 1(这里形参是p1,p2)的染色体进行交叉,产生的子代放在pregeneration中i和i+1(这里形参是c1,c2)的位置 double dr = rand.NextDouble(); if (dr CrossRate) int covering_code = new intChromosomeLength; for (int i = 0; i ChromosomeLength; i+) covering_codei = rand.Next(0, 2); for (int i = 0; i ChromosomeLength; i+) if (covering_codei = 0) nextgenerationc1, i = pregenerationp1, i; nextgenerationc2, i = pregenerationp2, i; else nextgenerationc1, i = pregenerationp2, i; nextgenerationc2, i = pregenerationp1, i; else for (int i = 0; i ChromosomeLength; i+) nextgenerationc1, i = pregenerationp1, i; nextgenerationc2, i = pregenerationp2, i; void Mutation(ref int, curgeneration)/变异 int is_not_mutation; double dr; for (int i = 0; i popsize; i+) dr = rand.NextDouble(); if (dr MutateRate) for (int j = 0; j ChromosomeLength; j+) is_not_mutation = rand.Next(0, 2); if (is_not_mutation = 1) curgenerationi, j = rand.Next(1, 11); void PrintResult()/计算每次迭代后种群中最优解及其适应度值,平均适应值 int i,j; int min; double average; average = 0; for (i = 0; i popsize; i+) average += fi; average = (double) average / popsize; Console.Write(Average profit is 0n, average); FindMin(ref f, out min); /计算稳定的次数 for (j = 0; j ChromosomeLength; j+) if (pregenerationmin, j != Bestj) convergence = 1; goto G2; convergence+; G2: for (j = 0; j ChromosomeLength; j+) Bestj = pregenerationmin, j; /打印相关的数据 Console.Write(染色体 ); for (j = 0; j 父代和子代中popsize个最优的解进入下一代 int, temgeneration=new int 2*popsize,ChromosomeLength;/定义临时种群,用来将父代和子代放在一起,进行选优 /将父代放入临时种群 for (int i = 0; i = popsize - 1; i+) for (int j = 0; j = ChromosomeLength - 1; j+) temgenerationi, j = pregenerationi, j; /将子代放入临时种群 for (int i = 0; i = popsize - 1; i+) for (int j = 0; j = ChromosomeLength - 1; j+) temgenerationi + popsize, j = nextgenerationi, j; CalFitness(ref temgeneration, popsize * 2);/计算临时种群(父代和子代)的各染色体适应值 int tem=new int ChromosomeLength;/定义临时染色体,用来染色体排序时的交换. /根据临时种群(父代和子代)的各染色体适应值,进行排序 for (int i = 0; i 2*popsize - 1; i+) for (int j = i + 1; j fj) double tem_f = fi; fi = fj; fj = tem_f; for (int k = 0; k ChromosomeLength; k+) temk = temgenerationi, k; temgenerationi, k = temgenerationj, k; temgenerationj, k = temk; /取临时种群中前popsize个好的染色体作为下一代种群,并将子代变为父代 for (int i = 0; i = popsize - 1; i+) for (int j = 0; j = ChromosomeLength - 1; j+) pregenerationi, j = temgenerationi, j; class Program static vo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025下半年贵州遵义市市直事业单位选调56人考试笔试备考题库及答案解析
- 2025恒丰银行武汉分行社会招聘14人备考考试试题及答案解析
- 2025年陕西华森盛邦科技有限公司招聘参考考试试题及答案解析
- 环卫作业实施方案
- 深度解析(2026)《GBT 26093-2010齿轮双面啮合综合测量仪》(2026年)深度解析
- 深度解析(2026)《GBT 25785-2010 2-氨基-4,6-二硝基酚钠(苦氨酸钠)》(2026年)深度解析
- 深度解析(2026)《GBT 25643-2010道路施工与养护机械设备 路面铣刨机》(2026年)深度解析
- 2025广西桂林电子科技大学第二批教职人员控制数工作人员公开招聘32人参考考试试题及答案解析
- 2025怀化市教育局直属学校公开招聘教职工65人参考笔试题库附答案解析
- 2025海南儋州市教育局赴高校(考核)招聘中学教师40人(一)考试笔试备考题库及答案解析
- 2025年海北朵拉农牧投资开发有限公司招聘3人备考题库及一套完整答案详解
- 美国史智慧树知到期末考试答案章节答案2024年东北师范大学
- 2024年载货汽车项目营销策划方案
- 同等学力全国统考要点识记口诀大全(临床医学)
- 人工智能赋能制造业
- 出版社投稿邮箱汇总
- 道家思想英文简介课件
- 建设工程监理规划新旧对比解读
- 来料检验流程与注意事项
- 当代科学技术概论知到章节答案智慧树2023年哈尔滨工业大学
- 工贸企业电脑绣花机安全操作规程
评论
0/150
提交评论