📄 gareal.cpp
字号:
// gareal.cpp: implementation of the gareal class.
//
//////////////////////////////////////////////////////////////////////
#include "gareal.h"
#include "stdio.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
gareal::gareal()
{
/* double t=0.;
nreal=1;
vecreal=&t;*/
nreal=1;
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=0.;
objv=0.;
fitness=0.;
ne=0;nle=0;nf=0;valid=1;state=-1;
}
gareal::gareal(int nr)
{
if(nr>0&&nr<=150) nreal=nr;
else nreal=1;
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=0.;
objv=0.;
fitness=0.;
ne=0;nle=0;nf=0;valid=1;state=-1;
}
gareal::gareal(int nr,double* r1)
{
if(nr>0&&nr<=150) nreal=nr;
else nreal=1;
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=r1[i];
objv=0.;
fitness=0.;
ne=0;nle=0;nf=0;valid=1;state=-1;
}
gareal::gareal(int nr,double r)
{
if(nr>0&&nr<=150) nreal=nr;
else nreal=1;
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=r;
objv=0.;
fitness=0.;
ne=0;nle=0;nf=0;valid=1;state=-1;
}
gareal::~gareal()
{
if(nreal>0) delete []vecreal;
if(ne>0) delete []pe;
if(nle>0) delete []ple;
if(nf>0) delete []pf;
}
int gareal::nReal()
{
return nreal;
}
int gareal::nE()
{
return ne;
}
int gareal::nF()
{
return nf;
}
int gareal::nLe()
{
return nle;
}
void gareal::nReal(int nr)
{
if(nreal>0) delete []vecreal;
if(nr>0&&nr<=150)
nreal=nr;
else nreal=1;
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=0.;
}
void gareal::nF(int nf1)
{
if(nf>0) delete []pf;
if(nf1>0&&nf1<=150)
nf=nf1;
else nf=0;
if(nf>0)
{
pf=new double[nf];
for(int i=0;i<nf;i++) pf[i]=0.;
}
}
void gareal::nE(int ne1)
{
if(ne>0) delete []pe;
if(ne1>0&&ne1<=150) ne=ne1;
else ne=0;
if(ne>0)
{
pe=new double[ne];
for(int i=0;i<ne;i++) pe[i]=0.;
}
}
void gareal::nLe(int nle1)
{
if(nle>0) delete []ple;
if(nle1>0&&nle1<=150) nle=nle1;
else nle=0;
if(nle>0)
{
ple=new double[nle];
for(int i=0;i<nle;i++) ple[i]=0.;
}
}
void gareal::vecReal(int n, double r1)
{
if(n>=0&&n<nreal) vecreal[n]=r1;
// else *vecreal=r1;
}
void gareal::vecReal(double* r1)
{
for(int i=0;i<nreal;i++) vecreal[i]=r1[i];
}
void gareal::vecpe(int n, double e1)
{
if(n>=0&&n<ne) pe[n]=e1;
// else *vecreal=r1;
}
void gareal::vecpe(double* e1)
{
for(int i=0;i<ne;i++) pe[i]=e1[i];
}
void gareal::vecpf(int n, double f1)
{
if(n>=0&&n<nf) pf[n]=f1;
// else *vecreal=r1;
}
void gareal::vecpf(double* f1)
{
for(int i=0;i<nf;i++) pf[i]=f1[i];
}
void gareal::vecple(int n, double le1)
{
if(n>=0&&n<nle) ple[n]=le1;
// else *vecreal=r1;
}
void gareal::vecple(double* le1)
{
for(int i=0;i<nle;i++) ple[i]=le1[i];
}
double gareal::vecReal(int n)
{
/*if(n>=0&&n<nreal&&nreal>1) return vecreal[n];
else if(nreal==1) return *vecreal;
else return 0.;*/
if(n>=0&&n<nreal) return vecreal[n];
else return 0.;
}
double gareal::vecpe(int n)
{
if(n>=0&&n<ne) return pe[n];
else return 0.;
}
double gareal::vecpf(int n)
{
if(n>=0&&n<nf) return pf[n];
else return 0.;
}
double gareal::vecple(int n)
{
if(n>=0&&n<nle) return ple[n];
else return 0.;
}
double gareal::Fitness()
{
return fitness;
}
void gareal::Fitness(double fs)
{
// if(fs>=0) fitness=fs;
// else fitness=0.;
fitness=fs;
}
double gareal::Objv()
{
return objv;
}
void gareal::Objv(double ob)
{
objv=ob;
}
/*
void gareal::init()
{
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=0.;
objv=0.;
fitness=0.;
}*/
void gareal::init(int nr,double* r1)
{
if(nr>0&&nr<=150) nreal=nr;
else nreal=1;
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=r1[i];
objv=0.;
fitness=0.;
}
void gareal::init(int nr,double r)
{
if(nr>0&&nr<=150) nreal=nr;
else nreal=1;
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=r;
objv=0.;
fitness=0.;
}
gareal& gareal::operator =(gareal& gr1)
{
if(nreal>0) delete [] vecreal;
//vecreal=new double[nreal];
nreal=gr1.nReal();
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=gr1.vecReal(i);
objv=gr1.Objv();
fitness=gr1.Fitness();
valid=gr1.Valid();
state=gr1.State();
if(gr1.nE()>0)
{
nE(gr1.nE());
for(i=0;i<gr1.nE();i++) pe[i]=gr1.vecpe(i);
}
if(gr1.nLe()>0)
{
nLe(gr1.nLe());
for(i=0;i<gr1.nLe();i++) ple[i]=gr1.vecple(i);
}
if(gr1.nF()>0)
{
nF(gr1.nF());
for(i=0;i<gr1.nF();i++) pf[i]=gr1.vecpf(i);
}
return *this;
}
gareal& gareal::operator =(gareal* gr1)
{
if(nreal>0) delete [] vecreal;
//vecreal=new double[nreal];
nreal=gr1->nReal();
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=gr1->vecReal(i);
objv=gr1->Objv();
fitness=gr1->Fitness();
valid=gr1->Valid();
state=gr1->State();
if(gr1->nE()>0)
{
nE(gr1->nE());
for(i=0;i<gr1->nE();i++) pe[i]=gr1->vecpe(i);
}
if(gr1->nLe()>0)
{
nLe(gr1->nLe());
for(i=0;i<gr1->nLe();i++) ple[i]=gr1->vecple(i);
}
if(gr1->nF()>0)
{
nF(gr1->nF());
for(i=0;i<gr1->nF();i++) pf[i]=gr1->vecpf(i);
}
return *this;
}
gareal::gareal(gareal &gr1)
{
/*if(nreal>0) delete [] vecreal;
nreal=gr1.nReal();
vecreal=new double[nreal];
for(int i=0;i<nreal;i++) vecreal[i]=gr1.vecReal(i);
objv=gr1.Objv();
fitness=gr1.Fitness();*/
*this=gr1;
}
ostream& operator<<(ostream &os,gareal & ga1)
{
//os.width(8);
//os.precision(6);
for(int i=0;i<ga1.nReal();i++)
{
//os.width(8);
//os.precision(6);
os<<ga1.vecReal(i)<<"\t";
}
// os.width(10);
// os.precision(6);
if(ga1.State()>-1)
{
os<<ga1.Fitness()<<"\t"<<ga1.Objv()<<"\t";
if(ga1.nF()>0)
{
for(int i=0;i<ga1.nF();i++)
os<<ga1.vecpf(i)<<"\t";
}
if(ga1.nE()>0)
{
for(int i=0;i<ga1.nE();i++)
os<<ga1.vecpe(i)<<"\t";
}
if(ga1.nLe()>0)
{
for(int i=0;i<ga1.nLe();i++)
os<<ga1.vecple(i)<<"\t";
}
// os.width(2);
// os.precision(0);
if(ga1.nE()>0||ga1.nLe()>0)
{
os<<ga1.Valid()<<"\t";
}
//os<<ga1.State();
}
/*else
{
os.width(2);
os.precision(0);
os<<ga1.State()<<"\t";
}*/
os<<endl;
return os;
}
istream& operator>>(istream &is,gareal & ga1)
{
//os.width(8);
//os.precision(6);
double t;
for(int i=0;i<ga1.nReal();i++)
{
// os.width(8);
// os.precision(6);
is>>t;
ga1.vecReal(i,t);
}
// os.width(10);
// os.precision(6);
if(ga1.State()>-1)
{
is>>t;
ga1.Fitness(t);
is>>t;
ga1.Objv(t);
if(ga1.nF()>0)
{
for(int i=0;i<ga1.nF();i++)
{is>>t;ga1.vecpf(i,t);}
}
if(ga1.nE()>0)
{
for(int i=0;i<ga1.nE();i++)
{ is>>t;ga1.vecpe(i,t);}
}
if(ga1.nLe()>0)
{
for(int i=0;i<ga1.nLe();i++)
{is>>t;ga1.vecple(i,t);}
}
}
// os.width(2);
// os.precision(0);
/*if(ga1.nE()>0||ga1.nLe()>0)
{
os>>
ga1.Valid();
}*/
/*else
{
os.width(2);
os.precision(0);
os>>ga1.State()>>"\t";
}*/
// os>>endl;
return is;
}
void myfwrite(FILE* fo,gareal & ga1)
{
for(int i=0;i<ga1.nReal();i++)
fprintf(fo,"%f8.1\t",ga1.vecReal(i));
if(ga1.State()>-1)
{
//os<<<<"\t"<<<<"\t";
fprintf(fo,"%f12.1\t%f12.1\t",ga1.Fitness(),ga1.Objv());
if(ga1.nF()>0)
{
for(int i=0;i<ga1.nF();i++)
fprintf(fo,"%f12.3\t",ga1.vecpf(i));//os<<ga1.vecpf(i)<<"\t";
}
if(ga1.nE()>0)
{
for(int i=0;i<ga1.nE();i++)
fprintf(fo,"%f12.3\t",ga1.vecpe(i));//os<<ga1.vecpe(i)<<"\t";
}
if(ga1.nLe()>0)
{
for(int i=0;i<ga1.nLe();i++)
fprintf(fo,"%f12.3\t",ga1.vecple(i));//os<<ga1.vecple(i)<<"\t";
}
if(ga1.nE()>0||ga1.nLe()>0)
{
fprintf(fo,"%d\t",ga1.Valid());//os<<ga1.Valid()<<"\t";
}
}
else
{
fprintf(fo,"%d\t",ga1.State());
//os<<ga1.State()<<"\t";
}
fprintf(fo,"\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -