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