Exemplo n.º 1
0
void mMultiObj::record(Global * glob,int index,vector<double> &obj,vector<double> &point)
{
	int ID = glob->m_runId;
	for(int i=0;i<obj.size();i++)
		mvvv_obj[ID][index][i]=obj[i];
	for(int i=0;i<point.size();i++)
		mvvv_point[ID][index][i]=point[i];
	if (Global::g_arg[param_proName] == "FUN_FreePeak_M_OnePeak") {
		FFreePeak_M_OnePeak* mp = dynamic_cast<FFreePeak_M_OnePeak*>(glob->mp_problem.get());
		int type = mp->getType();
		for (int i = 0; i < m_psr.size(); ++i) {
			int tidx = mp->getTreeRoot(point);
			int gidx = mp->getTree(tidx)->get_regionIdx(point);
			int bidx = mp->boxIdx(tidx, gidx);

			if (bidx == m_psr[i]) {
				if (1 == type || 2 == type)	m_fpsr[ID][i] = true;
				else  if (3 == type) {//Countable case
					MyVector v = mp->getPeak(bidx, 0).m_obj;
					if (v.getDis(obj) < 1.0e-1) {
						m_fpsr[ID][i] = true;
					}
				}
			}
		}

	}
}