ycfun1.m:
%适应度函数
function y=ycfun1(x);%x为行向量
c1=[2 3 1];
c2=[3 1 0];
y=c1*x\'+c2*x\'.^2;
y=-y; %因为非线性约束中求的是min,所以加“—”号
ycfun2.m:
%非线性约束
function [f,g]=ycfun2(x);%x为行向量
f=[x(1)+2*x(1)^2+x(2)+2*x(2)^2+x(3)-10
x(1)+x(1)^2+x(2)+x(2)^2-x(3)-50
2*x(1)+x(1)^2+2*x(2)+x(3)-40];
g=x(1)^2+x(3)-2
main.m:
clc,clear;
a=[-1 -2 0;-1 0 0];%线性约束
b=[-1;0];%线性约束
[x,y]=ga(@ycfun1,3,a,b,[],[],[],[],@ycfun2);
x,y=-y %令y=-y,输出x,y
请发表评论