Matlab遗传算法优化问题求解的演示样例代码
代码例如以下:
function m_main()
clear
clc
Max_gen = 100;% 执行代数
pop_size = 100;%种群大小
chromsome = 10;%染色体的长度
pc = 0.9;%交叉概率
pm = 0.25;%变异概率
gen = 0;%统计代数 %初始化
init = 40*rand(pop_size, chromsome)-20;
pop = init;
fit = obj_fitness(pop);
[max_fit, index_max] = max(fit);
maxfit = max_fit;
[min_fit, index_min] = min(fit);
best_indiv = pop(index_max, :);
%迭代操作
while gen<Max_gen
gen = gen+1;
bt(gen) = max_fit;
if maxfit<max_fit;
maxfit = max_fit;
pop(index_min, :) = pop(index_max, :);
best_indiv = pop(index_max, :);
end
best_indiv_tmp(gen) = pop(index_max);
newpop = ga(pop, pc, pm, chromsome, fit);
fit = obj_fitness(newpop);
[max_fit, index_max] = max(fit);
[min_fit, index_min] = min(fit);
pop = newpop;
trace(1, gen) = max_fit;
trace(2, gen) = sum(fit)./length(fit);
end %执行结果
[f_max gen_ct] = max(bt)%求的最大值以及代数
maxfit
best_indiv
%绘图
% bt
hold on
plot(trace(1, :), '.g:');
plot( trace(2, :), '.r-');
title('实验结果图')
xlabel('迭代次数/代'), ylabel('最佳适应度(最大值)');%坐标标注
plot(gen_ct-1, 0:0.1:f_max+1, 'c-');%画出最大值
text(gen_ct, f_max+1, '最大值')
hold off function [fitness] = obj_fitness(pop)
%适应度计算函数
[r c] = size(pop);
x = pop;
fitness = zeros(r, 1);
for i = 1:r
for j = 1:c
fitness(i, 1) = fitness(i, 1)+sin(sqrt(abs(40*x(i))))+1-abs(x(i))/20.0;
end
end
end function newpop = ga(pop, pc, pm, chromsome, fit)
pop_size = size(pop, 1);
%轮盘赌选择
ps = fit/sum(fit);
pscum = cumsum(ps);%size(pscum)
r = rand(1, pop_size);
qw = pscum*ones(1, pop_size);
selected = sum(pscum*ones(1, pop_size)<ones(pop_size, 1)*r)+1;
newpop = pop(selected, :);
%交叉
if pop_size/2 ~= 0
pop_size = pop_size-1;
end
for i = 1:2:pop_size-1
while pc>rand
c_pt = round(8*rand+1);
pop_tp1 = newpop(i, :);pop_tp2 = newpop(i+1, :);
newpop(i+1, 1:c_pt) = pop_tp1(1, 1:c_pt);
newpop(i, c_pt+1:chromsome) = pop_tp2(1, c_pt+1:chromsome);
end
end
% 变异
for i = 1:pop_size
if pm>rand
m_pt = 1+round(9*rand);
newpop(i, m_pt) = 40*rand-20;
end
end
end
end
Matlab遗传算法优化问题求解的演示样例代码的更多相关文章
- java 线程、线程池基本应用演示样例代码回想
java 线程.线程池基本应用演示样例代码回想 package org.rui.thread; /** * 定义任务 * * @author lenovo * */ public class Lift ...
- java文件夹相关操作 演示样例代码
java文件夹相关操作 演示样例代码 package org.rui.io; import java.io.File; import java.io.FilenameFilter; import ja ...
- 10分钟理解Android数据库的创建与使用(附具体解释和演示样例代码)
1.Android数据库简单介绍. Android系统的framework层集成了Sqlite3数据库.我们知道Sqlite3是一种轻量级的高效存储的数据库. Sqlite数据库具有以下长处: (1) ...
- java 又一次抛出异常 相关处理结果演示样例代码
java 又一次抛出异常 相关处理结果演示样例代码 package org.rui.ExceptionTest; /** * 又一次抛出异常 * 在某些情况下,我们想又一次掷出刚才产生过的违例,特别是 ...
- C编程规范, 演示样例代码。
/*************************************************************** *Copyright (c) 2014,TianYuan *All r ...
- java I/O进程控制,重定向 演示样例代码
java I/O进程控制,重定向 演示样例代码 package org.rui.io.util; import java.io.*; /** * 标准I/O重定向 */ public class Re ...
- [Python] SQLBuilder 演示样例代码
用Python写一个SQLBuilder.Java版能够从 http://www.java2s.com/Code/Java/Database-SQL-JDBC/SQLBuilder.htm 看到. 附 ...
- AppCan移动应用开发平台新增9个超有用插件(内含演示样例代码)
使用AppCan平台进行移动开发.你所须要具备的是Html5+CSS +JS前端语言基础.此外.Hybrid混合模式应用还需结合原生语言对功能模块进行封装,对于没有原生基础的开发人员,怎样实现App里 ...
- Linux下用OTL操作MySql(包含自己封装的类库及演示样例代码下载)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/ClamReason/article/details/23971805 首先重点推荐介绍otl介绍及使 ...
随机推荐
- JS中的setInterval 函数体带参数f方法
1.setInterval(function code,delaytime); 在设置自动调用执行function code时,我们可以采用下面三种方式来解决. 一.采用字符串形式:(参数不能被周期性 ...
- pymysql遇到中文编码
明明数据库里的编码方式和字符集都没有问题,用python插入数据时,数据库里的数据还是乱码的 在数据库中插入时,能够正常显示 那就是python导出的数据存在编码问题,代码如下: # coding: ...
- MySQL redo log 与 binlog 的区别
MySQL redo log 与 binlog 的区别 什么是redo log 什么是binlog redo log与binlog的区别 1. 什么是redo log? redo log又称重做日志文 ...
- 文本三剑客之sed
sed是一个流编辑器(sed是stream editor的缩写),它可以对从标准输入流中得到的数据进行处理,然后把处理以后得到的结果输出到标准输出,而标准输出通常会关联到终端屏幕,因此处理后的结果也会 ...
- pytest以函数形式的测试用例
from __future__ import print_function#pytest以函数形式形成测试用例def setup_module(module): print('\nsetup_modu ...
- pispice中pispice文件夹下模型的描述
VPULSE: 利用PSpice进行仿真时,用VPULSE产生方波,VPULSE在SOURSE库中,有七个参数: V1:低电平,如-5V: V2:高电平,如+5V: TD:第一个脉冲相对于0时刻的延迟 ...
- LINUX常见小问题汇总
1. crontab的备份与恢复 备份crontab文件: crontab -l > $HOME/mycron 恢复丢失的crontab文件: 如果不小心误删了crontab文件,假设你在自己的 ...
- .NET Core使用EPPlus简单操作Excel(简单实现导入导出)
1.前言 EPPlus是一个使用Open Office XML(xlsx)文件格式,能读写Excel 2007/2010 文件的开源组件,在导出Excel的时候不需要电脑上安装office,它的一个缺 ...
- 解决Can’t finish GitHub sharing process Successfully created project ‘GitHubDemo’ on GitHub
Can't finish GitHub sharing process Successfully created project 'KeyWordsFrameWork' on GitHu ...
- HDU-2647 Reward ,逆拓排。
Reward 发工资,以前看过这题,做没做忘了(应该是没做). 很明显的拓排.但数据范围这么大,吓得我当时就不敢动手.后来找题解发现还是相当于两层循环(are you kidding me?)当时卡在 ...