📄 objfunction.cpp
字号:
#include "stdafx.h"
#include "objfunction.h"
#include "chromosome.h"
template <class T>
T my_exp(T e,int index){//求e的index次方
T result;
result =1;
if(index > 0){
for(int i=0;i<index;i++)
result = result * e;
return result;
}
else
return result;
}
double chro_decode(Chromosome & c,int offset,int index){
int len = c.get_length ();
long exp2 = 0;
long sum = my_exp<long>( 2 , offset ) - 1;
if((index+offset)<= len)
{
for(int i=0;i<offset;i++)
exp2 = exp2 + c.myGenes[index + i].get_allele() * my_exp<long>(2,i) ;
return (double)exp2/(double)sum ;
}
else
return 0.0;
}
double decode_to_X(double min,double max,double chro){
return min + (max-min)*chro;
}
double obj_function(Chromosome & c){
double x1,x2;
int len = c.get_length () ;
int offset = len /2 ;
x1 = x2 = 0.0;
x1 = decode_to_X(-2.048,2.048,chro_decode(c,offset,0));
x2 = decode_to_X(-2.048,2.048,chro_decode(c,offset,offset));
double x12,x22,x12_22,x1_1;
x12 = x22 = x12_22 = x1_1 = 0.0 ;
x12 = my_exp<double>(x1,2);
x22 = my_exp<double>(x2,2);
x1_1 = my_exp<double>(x1-1,2);
x12_22 = my_exp<double>(x12-x22,2);
return 100*x12_22 + x1_1 ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -