📄 ga.cpp
字号:
//Pick another parent
xN = deblank(xOverFNs(i_,c_p));
//Get the name of crossover function
/*[c1,c2] = */feval(xN,(CL(endPop(a,c_p)),endPop(b,c_p),bounds,(BR(gen),xOverOps(i_,c_p))),i_o,c1,c2) \
;
if (istrue(c1(colon(1.0,1.0,numVar))==endPop(a,(colon(1.0,1.0,numVar))))) {
//Make sure we created a new
c1(xZomeLength) = endPop(a,xZomeLength);
//solution before evaluating
} else
if (istrue(c1(colon(1.0,1.0,numVar))==endPop(b,(colon(1.0,1.0,numVar))))) {
c1(xZomeLength) = endPop(b,xZomeLength);
} else {
//[c1(xZomeLength) c1] = feval(evalFN,c1,[gen evalOps]);
eval(e1str);
}
if (istrue(c2(colon(1.0,1.0,numVar))==endPop(a,(colon(1.0,1.0,numVar))))) {
c2(xZomeLength) = endPop(a,xZomeLength);
} else
if (istrue(c2(colon(1.0,1.0,numVar))==endPop(b,(colon(1.0,1.0,numVar))))) {
c2(xZomeLength) = endPop(b,xZomeLength);
} else {
//[c2(xZomeLength) c2] = feval(evalFN,c2,[gen evalOps]);
eval(e2str);
}
endPop(a,c_p) = c1;
endPop(b,c_p) = c2;
}
}
i_ga_v2 = colon(1.0,1.0,numMuts); int i_ga_i2;
for (i_ga_i2=0;i_ga_i2<i_ga_v2.cols();i_ga_i2++) {
forelem(i_,i_ga_v2,i_ga_i2);
j_ga_v3 = colon(1.0,1.0,mutOps(i_,1.0)); int j_ga_i3;
for (j_ga_i3=0;j_ga_i3<j_ga_v3.cols();j_ga_i3++) {
forelem(j_,j_ga_v3,j_ga_i3);
a = round(rand()*(popSize-1.0)+1.0);
c1 = feval(deblank(mutFNs(i_,c_p)),(CL(endPop(a,c_p)),bounds,(BR(gen),mutOps(i_,c_p))));
if (istrue(c1(colon(1.0,1.0,numVar))==endPop(a,(colon(1.0,1.0,numVar))))) {
c1(xZomeLength) = endPop(a,xZomeLength);
} else {
//[c1(xZomeLength) c1] = feval(evalFN,c1,[gen evalOps]);
eval(e1str);
}
endPop(a,c_p) = c1;
}
}
} else {
//We are running a probabilistic model of genetic operators
i_ga_v4 = colon(1.0,1.0,numXOvers); int i_ga_i4;
for (i_ga_i4=0;i_ga_i4<i_ga_v4.cols();i_ga_i4++) {
forelem(i_,i_ga_v4,i_ga_i4);
xN = deblank(xOverFNs(i_,c_p));
//Get the name of crossover function
cp = find(rand(popSize,1.0)<xOverOps(i_,1.0)==1.0);
if (istrue(rem(size(cp,1.0),2.0))) {
cp = cp(colon(1.0,1.0,(size(cp,1.0)-1.0)));
}
cp = reshape(cp,size(cp,1.0)/2.0,2.0);
j_ga_v5 = colon(1.0,1.0,size(cp,1.0)); int j_ga_i5;
for (j_ga_i5=0;j_ga_i5<j_ga_v5.cols();j_ga_i5++) {
forelem(j_,j_ga_v5,j_ga_i5);
a = cp(j_,1.0);
b = cp(j_,2.0);
/*[endPop(a,c_p),endPop(b,c_p)] = */feval(xN,(CL(endPop(a,c_p)),endPop(b,c_p),bounds,(BR(gen),xOverOps( \
i_,c_p))),i_o,lhs_0,lhs_1); endPop(a,c_p) = lhs_0; endPop(b,c_p) = lhs_1;
}
}
i_ga_v6 = colon(1.0,1.0,numMuts); int i_ga_i6;
for (i_ga_i6=0;i_ga_i6<i_ga_v6.cols();i_ga_i6++) {
forelem(i_,i_ga_v6,i_ga_i6);
mN = deblank(mutFNs(i_,c_p));
j_ga_v7 = colon(1.0,1.0,popSize); int j_ga_i7;
for (j_ga_i7=0;j_ga_i7<j_ga_v7.cols();j_ga_i7++) {
forelem(j_,j_ga_v7,j_ga_i7);
endPop(j_,c_p) = feval(mN,(CL(endPop(j_,c_p)),bounds,(BR(gen),mutOps(i_,c_p))));
eval(e1str);
}
}
}
gen = gen+1.0;
done = feval(termFN,(CL((BR(gen),termOps)),bPop,endPop));
//See if the ga is done
startPop = endPop;
//Swap the populations
/*[bval,bindx] = */min(startPop(c_p,xZomeLength),i_o,bval,bindx);
//Keep the best solution
startPop(bindx,c_p) = best;
//replace it with the worst
}
/*[bval,bindx] = */max(startPop(c_p,xZomeLength),i_o,bval,bindx);
if (istrue(display_)) {
fprintf(1.0,TM("\\n%d %f\\n"),(CL(gen),bval));
}
x = startPop(bindx,c_p);
if (istrue(opts(2.0)==0.0)) {
//binary
x = b2f(x,bounds,bits);
bPop(bFoundIn,c_p) = (BR(gen),b2f(startPop(bindx,colon(1.0,1.0,numVar)),bounds,bits),startPop(bindx,xZomeLength) \
);
} else {
bPop(bFoundIn,c_p) = (BR(gen),startPop(bindx,c_p));
}
if (istrue(collectTrace)) {
traceInfo(gen,1.0) = gen;
//current generation
traceInfo(gen,2.0) = startPop(bindx,xZomeLength);
//Best fittness
traceInfo(gen,3.0) = mean(startPop(c_p,xZomeLength));
//Avg fittness
}
call_stack_end;
// nargin, nargout exit code
nargin_val=old_nargin; nargout_val=old_nargout;
// function exit code
bounds.setname(NULL); evalFN.setname(NULL); evalOps.setname(NULL); startPop.setname(NULL); opts.setname(NULL) \
; termFN.setname(NULL); termOps.setname(NULL); selectFN.setname(NULL); selectOps.setname(NULL); xOverFNs.setname( \
NULL); xOverOps.setname(NULL); mutFNs.setname(NULL); mutOps.setname(NULL);
x__o=x; endPop__o=endPop; bPop__o=bPop; traceInfo__o=traceInfo;
return x_M;
end_scope
}
Mm ga() {
begin_scope
double old_nargin=nargin_val; nargin_val=0.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(bounds); dMm(evalFN); dMm(evalOps); dMm(startPop); dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm( \
selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); \
dMm(traceInfo__o);
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds) {
begin_scope
double old_nargin=nargin_val; nargin_val=1.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(evalFN); dMm(evalOps); dMm(startPop); dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps) \
; dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o) \
;
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN) {
begin_scope
double old_nargin=nargin_val; nargin_val=2.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(evalOps); dMm(startPop); dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs) \
; dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o);
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN, Mm evalOps) {
begin_scope
double old_nargin=nargin_val; nargin_val=3.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(startPop); dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps) \
; dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o);
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop) {
begin_scope
double old_nargin=nargin_val; nargin_val=4.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(opts); dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs) \
; dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o);
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts) {
begin_scope
double old_nargin=nargin_val; nargin_val=5.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(termFN); dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps) \
; dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o);
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN) {
begin_scope
double old_nargin=nargin_val; nargin_val=6.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(termOps); dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o) \
; dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o);
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps) {
begin_scope
double old_nargin=nargin_val; nargin_val=7.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(selectFN); dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o) \
; dMm(bPop__o); dMm(traceInfo__o);
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps, Mm selectFN) {
begin_scope
double old_nargin=nargin_val; nargin_val=8.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(selectOps); dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o) \
; dMm(traceInfo__o);
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps, Mm selectFN, Mm selectOps) \
{
begin_scope
double old_nargin=nargin_val; nargin_val=9.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(xOverFNs); dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o) \
;
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps, Mm selectFN, Mm selectOps, \
Mm xOverFNs) {
begin_scope
double old_nargin=nargin_val; nargin_val=10.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
dMm(xOverOps); dMm(mutFNs); dMm(mutOps); dMm(x__o); dMm(endPop__o); dMm(bPop__o); dMm(traceInfo__o);
ga(bounds, evalFN, evalOps, startPop, opts, termFN, termOps, selectFN, selectOps, xOverFNs, xOverOps, mutFNs, \
mutOps, i_o, x__o, endPop__o, bPop__o, traceInfo__o);
nargout_val=old_nargout;
nargin_val=old_nargin;
return(x__o);
end_scope
}
Mm ga(Mm bounds, Mm evalFN, Mm evalOps, Mm startPop, Mm opts, Mm termFN, Mm termOps, Mm selectFN, Mm selectOps, \
Mm xOverFNs, Mm xOverOps) {
begin_scope
double old_nargin=nargin_val; nargin_val=11.0; nargin_set=1;
double old_nargout=nargout_val; nargout_val=1.0; nargout_set=1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -