matlab调用实现简单遗传算法例子

题目

最小化f(x),其满足g1,g2两个约束
对两个约束条件,设置不同的惩罚系数
在这里插入图片描述
在这里插入图片描述

采用matlab实现

1. 构造F(x)表达式

新建simple_fitness.m函数
在这里插入图片描述
matlab代码如下

function y = simple_fitness(x)
 f = (x(1)-2)*(x(1)-2) + (x(2)-1)*(x(2)-1);
 g1 = x(1) - 2*x(2) +1;
 g2 = -0.25*x(1)*x(1) - x(2)*x(2) + 1;
 %判断r1
 if g1 == 0
     r1 = 0;
 else if abs(g1) < 0.01
         r1 = 50;
     else if abs(g1) < 0.1
             r1 = 100;
         else r1 = 500;
         end
     end
 end
 %判断r2
 if g2 >= 0
     r2 = 0;
 else if g2 >= -0.01
         r2 = 150;
     else if g2 >= -0.1
             r2 = 190;
         else r2 = 500;
         end
     end
 end
 p = r1*g1*g1 + r2*g2*g2;
 y = f + p; 
end

2. 写main.m脚本
在这里插入图片描述

matlab代码

ObjectiveFunction = @simple_fitness;
nvars = 2;%变量个数
LB = [0]%定义域下限
UB = [1]%定义域上限
 
[x,fval] = ga(ObjectiveFunction,nvars,[],[],[],[],LB,UB)%调用ga函数

运行脚本
在这里插入图片描述
可得结果
在这里插入图片描述

3. 或者直接用工具箱
APP里选择Optimization
在这里插入图片描述
在solver那栏选择遗传算法(Gnetic Algorithm)
在这里插入图片描述
传入优化函数名,设置变量个数,上下界
在这里插入图片描述
点start即可得到结果
在这里插入图片描述

结果

x1取0.8344,x2取0.9122,优化函数取最小值1.3770
可以多次运行,每次结果会有些许偏差

本例是对matlab GA工具包的简单运用

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值