MATLAB ga函数的使用方法

一、ga句法结构

x = ga(fitnessfcn,nvars)
x = ga(fitnessfcn,nvars,A,b)
x = ga(fitnessfcn,nvars,A,b,Aeq,beq)
x = ga(fitnessfcn,nvars,A,b,Aeq,beg,IB,UB)
x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon)
x = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon,options)
x = ga(fitnessfcn,nvars,A,b,[],[],LB,UB,nonlcon,IntCon)
x = ga(fitnessfcn,nvars,A,b,[],[],LB,UB,nonlcon,IntCon,options)
x = ga(problem)
[x,fval] = ga(fitnessfcn,nvars,...)
[x,fval,exitflag] = ga (fitnessfcn,nvars,...)
[x,fval,exitflag,output] = ga(fitnessfcn,nvars,...)
[x,fval,exitflag,output,population] = gafitnessfcn,nvars,...)
[x,fval,exitflag,output,population,scores] = ga(fitnessfcn,nvars,...)

二、释义及解读

  • fitnessfcn 为适应度句柄函数(即:目标函数);
  • nvars 为目标函数自变量的个数;
  • options 为算法的属性设置,该属性是通过函数gaoptimset赋予的;
  • x 为经过遗传进化以后自变量最佳染色体返回值;
  • fval 为最佳染色体的适应度;
  • exitflag 为算法停止的原因;
  • output 为输出的算法结构;

  • population 为最终得到种群适应度的列向量(即当前群体,而群体里性能最好的个体,便是最优值点);

  • scores 为最终得到的种群(即:最优值点的目标函数取值);

  • A A A b b b:线性不等式约束 A ∗ x ≤ b A*x\leq b Axb 中的矩阵;
    (Note: If the problem has m linear inequality constraints and nvars variables. then A is a matrix of size m-by-nvars and b is a vector of length m. ga evaluates the matrix product A*x as if x is transposed (Ax’). )

  • A e q Aeq Aeq b e q beq beq:线性等式约束 A e q ∗ x = b e q Aeq*x=beq Aeqx=beq 中的矩阵;
    (Note: ga does not enforce linear constraints to be satisfied when the PopulationType option is ‘bitstring’ or ‘custom’.)

  • nonlcon:非线性约束约束,该函数返回两个输出,即:[c,ceq] = nonlcon(x) 。 需要注意:ga atempts to achieve c = 0 c = 0 c=0 and c e q = 0 ceq = 0 ceq=0. c c c and ceg are row vectors when there are multiple constraints. Set unused outputs to [ ].

  • IntCon:若变量 x 中存在整数变量,则在这里设置!具体地,IntCon 是由正数整数组成的向量,取值从 1 到 nvars,IntCon 中的每个值代表决策变量 x 中相应位置的索引变量是整数变量。
    (Note: When IntCon is nonempty, Aeq and beq must be empty ([ ]), and nonlcon must return empty for ceq. For more information on integer programming, see Mixed Integer Optimizaton.)

  • options:Create options using gaoptimset. 下一章节将详细介绍 options 中关于 gaoptimset 的设置规则。


三、gaoptimset 介绍

gaoptimset 常用来设置 options 中的各个选项,其句式结构如下:

options = gaoptimset('param1',value1,'param2',value2,...)

其中, ‘Param1’、 ‘Param2’等是需要设定的参数,比如:种群规模(PopulationSize)、交叉比例(CrossoverFraction)等,value1、value2等则是Param的具体值,常用的参数名如下表:

设定的参数名(Param名)说明默认值
CrossoverFraction交叉比例0.8
Generations算法中止的最大迭代次数100
PopulationSize种群规模20
MigrationFraction变异概率0.2
FitnessLimit当适应度函数达到设定的值时算法中止-
StallGenLimit当超过StallGenLimit代适应度函数为改善时,算法中止50

更多参数设定详见 MATLAB 官方文档,可在MATLAB命令窗口中输入 “doc gaoptimset” 查看:

四、实例运行

实例原始网址: MATLAB利用遗传算法函数求目标函数的最优解

  1. 目标函数如下:
function f = myfit( x )f = (339-0.01*x(1)-0.003*x(2))*x(1)...+ (399-0.004*x(1)-0.01*x(2))*x(2)...- (400000+195*x(1)+225*x(2));f = -f; %因为GA是寻找最小值,所以为了求这个函数的最大值,取f的相反数
end 
  1. 主函数如下:
options = gaoptimset();
options.Generations = 2000; %最大迭代数设为2000%再次调用GA函数
[X,FVAL,EXITFLAG,OUTPUT] =ga(@myfit, 2 ,[], [],[],[],[],[],[],options)

运行结果为:

EXITFLAG 返回值为1,说明所求结果无特殊情况。

需要注意的是:如果 options.Generations 不设为 2000,采用默认迭代100轮来运行上述代码,则运行结果如下图所示:

注意到此时,EXITFLAG 返回值为0,显示信息为:Optimization terminated: maximum number of generations exceeded.

即:达到最大迭代轮数,此时的结果与最优理想结果相差甚远。由此例可知,关于最大迭代次数的设定,一定要小心,务必满足迭代次数的要求!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292863.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu 常用命令之 grep 命令用法介绍

📑Linux/Ubuntu 常用命令归类整理 grep命令是一个强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。 grep命令的基本格式为 grep [options] pattern [file]。grep命令的主要参数有 -i:忽略大小写-v&…

Java整合APNS推送消息-IOS-APP(基于.p12推送证书)

推送整体流程 1.在开发者中心申请对应的证书(我用的是.p12文件) 2.苹果手机用户注册到APNS,APNS将注册的token返回给APP(服务端接收使用)。 3.后台服务连接APNS,获取连接对象 4.后台服务构建消息载体 5.后台…

SpringBoot的热部署

🙈作者简介:练习时长两年半的Java up主 🙉个人主页:程序员老茶 🙊 ps:点赞👍是免费的,却可以让写博客的作者开心好久好久😎 📚系列专栏:Java全栈,…

视频美颜SDK开发指南:实现高质量实时美颜效果

下文小编将于大家一同探讨美颜SDK的开发指南,希望开发者们能够获得一定的启发。 一、理解实时美颜的挑战 实时美颜涉及到对视频流进行实时处理,这对计算资源和算法效率提出了严峻的挑战。在开发视频美颜SDK之前,我们需要理解以下几个关键方…

【Linux系统编程二十二】:(信号1)--信号的产生与发送

【Linux系统编程二十二】:信号的产生与发送 一.理解特性二.信号的产生1.键盘组合键①.前台进程②.硬件中断 2.异常的本质①软件异常 3.异步的 三.信号的发送 一.理解特性 第一,我们能够识别这个信号。我们能知道这个信号是什么。 第二,我们能…

Security Boot secure Boot的介绍

什么是secure boot secure boot 是一种保证平台上软件完整性的过程或机制。secure boot会在硬件和软件之间建立一种信任关系。在启用secure boot之后,没有经过签名的固件和软件是无法运行在该设备上。通过这种方式可以保证操作系统免受恶意攻击。secure boot一般使…

AI中的强化学习是怎么做的呢?

1. 什么是强化学习 其他许多机器学习算法中学习器都是学得怎样做,而强化学习(Reinforcement Learning, RL)是在尝试的过程中学习到在特定的情境下选择哪种行动可以得到最大的回报。在很多场景中,当前的行动不仅会影响当前的rewar…

1270. 数列区间最大值(线段树求区间最大)

题目&#xff1a; 1270. 数列区间最大值 - AcWing题库 输入样例&#xff1a; 10 2 3 2 4 5 6 8 1 2 9 7 1 4 3 8输出样例&#xff1a; 5 8 代码&#xff1a; #include <cstdio> #include <iostream> #include <climits>//INT_MIN头文件using namespace s…

QC/PD快充电源产品应用介绍

• 原边650-700V SJ MOSFET采用低FOM值的ESM 技术&#xff0c;有利于提高系统效 率&#xff0c; 以及更佳的EAS和EMI等特性&#xff0c;对于一些不含PFC电路的系统更友好。 • 副边采用低FOM值的SGT同步整流电路&#xff0c;相比肖特基二极管整流能有更低的 损耗&#xff0c;有…

PSP - 结构生物学中的机器学习 (NIPS MLSB Workshop 2023.12)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/135120094 Machine Learning in Structural Biology (机器学习在结构生物学中) 网址&#xff1a;https://www.mlsb.io/ Workshop at the 37th Co…

[数据结构进阶 C++] 二叉搜索树(BinarySearchTree)的模拟实现

文章目录 1、二叉搜索树1.1 二叉搜索数的概念1.2 二叉搜索树的操作1.2.1 二叉搜索树的查找1.2.2 二叉搜索树的插入1.2.3 二叉搜索树的删除 2、二叉搜索树的应用2.1 K模型2.2 KV模型 3、二叉搜索树的性能分析4、K模型与KV模型完整代码4.1 二叉搜索树的模拟实现&#xff08;K模型…