Matlab Optimization Toolbox中的遗传算法工具包(GA)

news2024/11/13 15:16:10
  • matlab optimization 中使用了GA求解器 默认的是小于等于

找到GA 工具包

  • 找到 APP
  • 选择 Optimization Tool

  • 选择Solver 
    • ga - Genetic Algorithm

应用GA solver

定义适应度函数(Fitness function)与问题约束(Constraints)

example one 

  • 优化函数 sin(x) + 2 * cos(x)
  • 极其重要的 inline 方法

 

  • result 

example two

  • 优化函数 sin(x) + 2 * cos(x) + sin(y) + 3 * cos(y) 
    • min = - 5.39834563766817(无约束)
  • 不等约束
    • A【x;y】>= [-0.7;0.2]
    • A = [-1,-1;1,-1]
    • 注意:
      • 我们得到的结果显然是一个周期性的结果,也就是说我们肯定能找出一个满足这个不等约束的解
      • 为了将解约束到我们想要的值,我们得动点脑筋,不过我就不动了
        • x = -arctan 2 + 2n\pi -\pi/2
        • y = -arctan 3 + 2n\pi -\pi/2
>> f2 = @(x) sin(x(1)) + 2 * cos(x(1)) + sin(x(2)) + 3 * cos(x(2));


  • 等式约束
    • B [x;y] = [1,1;0,0][x;y]=[1;0]
    • 也就是变成了 sin(x) + 2 * cos(x) + sin(1-x) + 3 * cos(1-x)


 

设置遗传算法参数(Options)

  • 其实这个我也不懂就是了。。。。。。

实战案例

  • 我们不可能永远只使用GUI界面

MAIN.m 

fun = @(x) (x(1)-1)^2 + (x(2)-1)^2;

% 定义变量的上下界
lb = [-10, -10];
ub = [10, 10];

% 定义非线性约束
nonlcon = @nonlinearConstraint;

% 使用GA求解器进行优化
options = optimoptions('ga', 'Display', 'iter');
[x, fval] = ga(fun, 2, [], [], [], [], lb, ub, nonlcon, options);
disp(x)
disp(fval)

nonlinearConstraint.m

function [c, ceq] = nonlinearConstraint(x)
    % 非线性约束函数
    f1 = @(m, a)  m.^2 + m
    b = 100;
    c = [x(1)^2 + x(2)^2 - 1;   % x1^2 + x2^2 >= 1
         x(1) + x(2) - 2;       % x1 + x2 <= 2
         integral(@(n) f1(n, x(2)), x(1), b)];      
    ceq = [0;0;0];                  
end

优化问题

  • 这个优化问题绝对足够解决你所会预见的全部问题了。

\begin{matrix} min=(x_1-1)^2+(x_2-1)^2,b=10\\ -10<=x_1<=10\\ -10<=x_2<=10\\ x_1+x_2-2<=0\\ x_1^2+x_2^2-1<=0\\ \int_{x_1}^b (x_2*m^2-m)dm >=300\\ \end{matrix}

几次解

 

 

  • 显然
    • 这个问题的解不太稳定,需要多跑几次 
    • 好吧 跑了也没有 毕竟no feasible point found.......

options 设置

  • MAIN.m

fun = @(x) (x(1)-1)^2 + (x(2)-1)^2;

% 定义变量的上下界
lb = [-10, -10];
ub = [10, 10];

% 定义非线性约束
nonlcon = @nonlinearConstraint;

% 使用GA求解器进行优化
% options = optimoptions('ga', 'Display', 'iter');
% for i = 1:10
%     [x, fval] = ga(fun, 2, [], [], [], [], lb, ub, nonlcon, options);
% end
 

  • nonlinearConstraint.m

function [c, ceq] = nonlinearConstraint(x)
    % 非线性约束函数
    f1 = @(m, a)  a * m.^2 - m
    b = 10;
    c = [x(1)^2 + x(2)^2 - 1;   % x1^2 + x2^2 <= 1
         x(1) + x(2) - 2;       % x1 + x2 <= 2
         ];      
    ceq = [0;0;0];                  
end


 

  • Population
  • Fitness scaling
  • Selection
  • Reproduction
  • Mutation
  • Crossover
  • Migration
  • Constraint parameters
  • Hybrid function
  • Stopping criteria 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【原创】IPTVC2实现方案(文末有demo)

前言: 名词解释: IPTVC2, 全称: 央视国际节目定价发布接口规范,标准版本当前最新为2.7.12 附赠资源链接&#xff0c;侵删:规范 规范中提供的样例&#xff0c;实现基于axis1.4(2006的时代宠物) 基于axis1版本的实现参考: Spring boot 集成Axis1.4 &#xff0c;使用wsdd文件发…

C语言每日一题:12《数据结构》相交链表。

题目&#xff1a; 题目链接 思路一&#xff1a; 1.如果最后一个节点相同说明一定有交点。 2.使用两个循环获取一下长度&#xff0c;同时可以获取到尾节点。 3。注意初始化lenA和lenB为1&#xff0c;判断下一个节点是空是可以保留尾节点的。长度会少一个&#xff0c;尾节点没有…

【C++修炼之路】多态

&#x1f451;作者主页&#xff1a;安 度 因 &#x1f3e0;学习社区&#xff1a;StackFrame &#x1f4d6;专栏链接&#xff1a;C修炼之路 文章目录 一、概念二、定义和实现1、虚函数2、虚函数的重写3、多态的构成条件4、重写的例外5、C11 override 和 final6、不能被继承的类7…

RxJava异步编程初探

RxJava 其实就是提供一套异步编程的 API&#xff0c;这套 API 是基于观察者模式的&#xff0c;而且是链式调用的&#xff0c;所以使用 RxJava 编写的代码的逻辑会非常简洁。 RxJava 有以下三个基本的元素&#xff1a; 被观察者&#xff08;Observable&#xff09;观察者&…

prometheus+grafana进行服务器资源监控

在性能测试中&#xff0c;服务器资源是值得关注一项内容&#xff0c;目前&#xff0c;市面上已经有很多的服务器资 源监控方法和各种不同的监控工具&#xff0c;方便在各个项目中使用。 但是&#xff0c;在性能测试中&#xff0c;究竟哪些指标值得被关注呢&#xff1f; 监控有…

SqlSugar、Freesql、Dos.ORM、EF、四种ORM框架的对比

SqlSugar、Freesql、Dos.ORM、EF、四种ORM框架的对比 一、默认情况下,导航属性是延迟查询; 答:ORM(Object-relational mapping)即对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。也就是说,ORM是通过使用描述对象和数据库之间映射的元数据…

线程状态

从卖包子的案例学习进程间的通信 public class Test {public static void main(String[] args) {Object objnew Object();Thread th1new Thread(){Overridepublic void run() {synchronized (obj){System.out.println("来三个包子&#xff01;");try {obj.wait(); /…

IDEA删除本地git仓库、创建本地git仓库、关联其他仓库并上传

IDEA删除本地git仓库、创建本地git仓库、关联其他仓库并上传 删除本地Git仓库 创建本地Git仓库 关联其他仓库并上传 要在IntelliJ IDEA中删除本地Git仓库并创建新的本地Git仓库&#xff0c;以及关联其他仓库并上传&#xff0c;请按照以下步骤进行操作&#xff1a; 删除本地G…

【笔记】数据结构与算法 python-03-列表查找

列表查找 在一个数据结构中&#xff0c;通过一定的方法找出与给定关键字相同的数据元素的过程。 列表查找&#xff08;线性表查找&#xff09;&#xff1a;从列表&#xff08;一种线性数据结构&#xff0c;元素按照一定的顺序存储&#xff0c;每个元素都有一个唯一的位置索引…

网络出口技术中的单一出口网络结构,你会用吗?

我们在设计一个园区网络的时候&#xff0c;园区网络的出口需要和运营商的网络进行对接&#xff0c;从而提供internet服务。 在和运营商网络对接的时候&#xff0c;一般采用如下3终方式&#xff1a; 单一出口网络结构 1、网络拓扑 终端用户接入到交换机&#xff0c;交换机直…

干货 ,ChatGPT 4.0插件Review Reader,秒杀一切选品神器

Hi! 大家好&#xff0c;我是专注于AI项目实战的赤辰&#xff0c;今天继续跟大家介绍另外一款GPT4.0插件Review Reader&#xff08;评论阅读器&#xff09;。 做电商领域的小伙伴们&#xff0c;都知道选品分析至关重要&#xff0c;可以说选品决定成败&#xff0c;它直接关系到产…

MySQL用通配符过滤数据

简单的不使用通配符过滤数据的方式使用的值都是已知的&#xff0c;但是当搜索产品名中包含ashui的所有产品时&#xff0c;用简单的比较操作符肯定不行&#xff0c;必须使用通配符。利用通配符可以创建比较特定数据的搜索模式。 通配符&#xff1a;用来匹配值的一部分的特殊字符…

【数据分享】1999—2021年地级市市政公用事业和邮政、电信业发展情况相关指标(Excel/Shp格式)

在之前的文章中&#xff0c;我们分享过基于2000-2022年《中国城市统计年鉴》整理的1999-2021年地级市的人口相关数据、各类用地面积数据、污染物排放和环境治理相关数据、房地产投资情况和商品房销售面积、社会消费品零售总额和年末金融机构存贷款余额、地方一般公共预算收支状…

减轻 PWM 的滤波要求

经典脉宽调制器 (PWM) 发出 H 个连续逻辑高电平&#xff08;1&#xff09;&#xff0c;后跟 L 个连续逻辑低电平&#xff08;0&#xff09;的重复序列。每个高电平和低电平持续一个时钟周期 T 1/F (Hz)。结果的占空比可定义为 H/N&#xff0c;其中 N HL 时钟周期。N 通常是 2…

keil固件库的安装 库函数的配置

文章目录&#xff1a; 第一步&#xff1a;下载固件库文件 第二步&#xff1a;创建一个新的文件夹&#xff0c;用来保存固件库文件。在该文件夹下新建文件夹&#xff1a;CMSIS、Lib、Startup、User 第三步&#xff1a;把库文件中文件放入我们建立对应的文件中 1.CMSIS模块 …

【MIPI协议 C-PHY详解】

MIPI协议 C-PHY详解 前言一、C-PHY介绍1.1 C-PHY 与 D-PHY wire的区别1.2 3 wire的状态&#xff08;states&#xff09;变化1.3 C-PHY Data Mapping Between 7 Symbols and a 16-Bit Data1.3 C-PHY Lane States and Line Levels ~ LP Mode 二、C-PHY LP Package Format2.1 C-PH…

SQLI_LABS攻击

目录 Less1 首先来爆字段 联合注入 判断注入点 爆数据库名 爆破表名 information_schema information_schmea.tables group_concat() 爆破列名 information_schema.columns 爆值 SQLMAP Less-2 -4 Less -5 布尔 数据库 表名 字段名 爆破值 SQLMAP Less-6 …

​LeetCode解法汇总142. 环形链表 II

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a; 力扣 描述&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如…

ssl单向证书和双向证书校验测试及搭建流程

零、前提准备 说明&#xff1a; 50.50.1.118作为服务端&#xff0c;系统是 linux&#xff0c;openssl版本是&#xff1a;OpenSSL 1.1.1f 31 Mar 2020。 50.50.1.116是客户端&#xff0c;系统是Windows&#xff0c;openssl版本是&#xff1a;OpenSSL 3.0.5 5 Jul 2022 (Library…

Day07-作业(MySQL查询设计)

作业1: 根据如下需求完成SQL语句的编写 【仔细阅读题目需求】 数据准备&#xff1a; 创建一个数据库 db02_homework 执行如下SQL语句&#xff0c;准备测试数据 -- 员工管理(带约束) create table tb_emp (id int unsigned primary key auto_increment comment ID,username …