1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > MATLAB 遗传算法求解约束优化问题

MATLAB 遗传算法求解约束优化问题

时间:2021-12-03 06:02:25

相关推荐

MATLAB 遗传算法求解约束优化问题

文章目录

1. 问题2. 程序2.1 目标函数2.2 约束条件2.3 主函数3. 附录

摘要

本文以一个双变量的目标函数优化问题为例,借助MATLAB内置的遗传算法进行优化分析。

1. 问题

最小化如下包含两个变量的目标函数

min⁡xf(x)=100(x12−x2)2+(1−x1)2(1)\min_x f(x) = 100(x_1^2-x_2)^2 + (1-x_1)^2 \tag{1} xmin​f(x)=100(x12​−x2​)2+(1−x1​)2(1)

满足的非线性约束条件和边界条件为:

{x1x2+x1−x2+1.5≤010−x1x2≤00≤x1≤1and0≤x2≤13(2)\left\{ \begin{aligned} &x_1x_2 + x_1 - x_2 + 1.5 \le 0 \\ &10 - x_1x_2 \le 0 \\ &0 \le x_1 \le 1 \ \text{and} \ 0 \le x_2 \le 13 \end{aligned} \tag{2} \right. ⎩⎪⎨⎪⎧​​x1​x2​+x1​−x2​+1.5≤010−x1​x2​≤00≤x1​≤1and0≤x2​≤13​(2)

2. 程序

依托MATLAB,定义目标函数和约束函数

2.1 目标函数

在MATLAB中编写目标函数

function y = myFitness(x)% 目标函数% 输入:%x-对应优化的变量,x(1)-x1, x(2)-x2% 输出:%y-对应优化值y = 100 * (x(1)^2 - x(2))^2 + (1 - x(1))^2;end

可在命令行键入myFitness([1,2]), 检查函数是否正确,正确的输出结果为100.

2.2 约束条件

在MATLAB中编写约束条件

function [c,c_eq] = myConstraints(x)% 约束函数% 输入:%x-对应优化的变量,x(1)-x1, x(2)-x2% 输出:%c—不等式约束%c_eq—等式约束c = [1.5 + x(1)*x(2) + x(1) + x(2);-x(1)*x(2) + 10];c_eq = []; end

可在命令行键入[c, c_eq] = myConstraints([1,2]), 检查函数是否正确,正确的输出结果为c = [2.5000 8.0000]',c_eq = [].

2.3 主函数

在MATLAB中编写主函数,调用内置的GA算法

%% 主函数% 利用GA(Genetic Algorithm)最小化目标函数ObjFcn = @myFitness; % 利用@传输目标函数句柄nvars = 2; % 变量数目LB = [0,0]; % 变量下限UB = [1,13]; % 变量上限ConsFcn = @myConstraints; % 利用@传输约束函数句柄[x,fval] = ga(ObjFcn,nvars,[],[],[],[],LB,UB,ConsFcn); % 调用遗传算法,x为最优值对应的变量取值,fval为最优值

本例的正确结果为x=[0.8122 12.3166],fval=1.3588e+04

3. 附录

Constrained Optimization with Genetic Algorithm - A MATLAB Tutorial for Beginners

在matlab中使用遗传算法执行最优化

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。