⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 antclustingview.cpp

📁 Clusting using aco with Visual C
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		 pDC->TextOut(0,line*linewide,ShowStr);
         pnewFont=pDC->SelectObject(oldFont);
         line+=2;
		 
		 /////画框
		 pDC->Rectangle(excursion,line*linewide,alogrithm.m_nXSize*100+excursion,line*linewide+alogrithm.m_nYSize*100);
		 
		 for(i=1;i<m_nViewDataNum;i++)
		 {   //绘点,每个簇内点取一种颜色
			 CBrush Brushx(RGB(255-(dataObj[i].clusterNo)*150%255,(dataObj[i].clusterNo)*50%255,255-(dataObj[i].clusterNo)*5%255));
			 pDC->SelectObject(&Brushx);
			 pDC->Ellipse((int)(dataObj+i)->x*100-r+excursion,(int)(dataObj+i)->y*100+line*linewide-r,
				 (int)(dataObj+i)->x*100+r+excursion,(int)(dataObj+i)->y*100+line*linewide+r);
			 Brushx.DeleteObject();
		 }
		 pDC->SelectObject(oldFont);
}
}
/////////////////////////////////////////////////////////////////////////////
// CAntClustingView printing

BOOL CAntClustingView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CAntClustingView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CAntClustingView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CAntClustingView diagnostics

#ifdef _DEBUG
void CAntClustingView::AssertValid() const
{
	CScrollView::AssertValid();
}

void CAntClustingView::Dump(CDumpContext& dc) const
{
	CScrollView::Dump(dc);
}

CAntClustingDoc* CAntClustingView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CAntClustingDoc)));
	return (CAntClustingDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CAntClustingView message handlers

void CAntClustingView::OnParameter() 
{
	// TODO: Add your command handler code here
	CParaDlg  paraDlg;
	
    if(paraDlg.DoModal()==IDOK)
	{
		double alpha;
		int antnum;
		double pickk;
		double dropk;
		double r;
		UINT maxcycnum;
		float dist;
        int SimilarityFun;

		paraDlg.putpara(alpha,antnum,pickk,dropk,r,maxcycnum,dist,SimilarityFun);	/////////////////将参数对话框传来的参数赋给主算法的相应参数
	    alogrithm.getpara(alpha,antnum,pickk,dropk,r,maxcycnum,dist,SimilarityFun); 
     	alogrithm.InitDataObject();
     	m_nViewDataNum=m_pAd->GetDataNum();
    	m_nViewPropNum=m_pAd->GetPropNum();

        m_bStartDraw=false;
        m_pOriDataObj=new DataObject[m_nViewDataNum];
		/////把初始值赋到数组中
		for(int i=0;i<m_nViewDataNum;i++)
		{
			(m_pOriDataObj+i)->m_pfa=new double[m_nViewPropNum];
			for(int j=0;j<m_nViewPropNum;j++ )
				(double)*((m_pOriDataObj+i)->m_pfa+j)=(double)*((dataObj+i)->m_pfa+j) ;
			(m_pOriDataObj+i)->x=(dataObj+i)->x;
			(m_pOriDataObj+i)->y=(dataObj+i)->y;
		}


   			
	posChangeDataNum=alogrithm.AntThreadProc(dataObj);
			
/*	//////////多线程实现

    	 CWinThread* antThread[30];     //蚂蚁线程数组

		for(int j=0;j<alogrithm._antNumber;j++)
		{
		
		
		antThread[j] = AfxBeginThread(alogrithm.AntThreadProc, dataObj);
			antThread[j]->m_bAutoDelete = false;
		}

		DWORD   dwStatus[30];
		bool isCheck = true;
		while(isCheck)
		{
			int nCount = 0;
			for(j=0;j<alogrithm._antNumber;j++)
			{
				VERIFY(::GetExitCodeThread(antThread[j]->m_hThread, &dwStatus[j]));
				nCount += dwStatus[j]; 
			}
			if(nCount == 0)
				isCheck = false;			
		}
		//如果所有蚂蚁线程都已经结束,删除线程对象,对数据分类
		for(j=0;j<alogrithm._antNumber;j++)
		{
			delete antThread[j];
		}
	*/
    /////////////////////////////
		CString Origin_Str="", Change_Str="";
		CString Origin_temp="",Change_temp="";
/*		for( i=0;i<DATANUMBER;i++)
		{   Origin_Str.Empty();
		    Origin_Str="\n";
			Origin_temp.Format("%f",m_pOriDataObj[i].property1);
			Origin_Str+=Origin_temp;
            Origin_Str+="    ";
			Origin_temp.Format("%f",m_pOriDataObj[i].property2);
			Origin_Str+=Origin_temp;
			Origin_Str+="    ";
			Origin_temp.Format("%f",m_pOriDataObj[i].property3);
			Origin_Str+=Origin_temp;
			Origin_Str+="    ";
			Origin_temp.Format("%f",m_pOriDataObj[i].property4);
			Origin_Str+=Origin_temp;
			Origin_Str+="    ";
				Origin_temp.Format("%f",m_pOriDataObj[i].x);
			Origin_Str+=Origin_temp;
			Origin_Str+="    ";
				Origin_temp.Format("%f",m_pOriDataObj[i].y);
			Origin_Str+=Origin_temp;
			Origin_Str+="    ";
	  //  WriteLog(Origin_Str);
			

			Change_Str.Empty();
			Change_Str="\n";
			Change_temp.Format("%f",dataObj[i].property1);
			Change_Str+=Change_temp;
            Change_Str+="    ";
				Change_temp.Format("%f",dataObj[i].property2);
			Change_Str+=Change_temp;
			Change_Str+="    ";
				Change_temp.Format("%f",dataObj[i].property3);
			Change_Str+=Change_temp;
			Change_Str+="    ";
				Change_temp.Format("%f",dataObj[i].property4);
			Change_Str+=Change_temp;
			Change_Str+="    ";
				Change_temp.Format("%f",dataObj[i].x);
			Change_Str+=Change_temp;
			Change_Str+="    ";
				Change_temp.Format("%f",dataObj[i].y);
			Change_Str+=Change_temp;
			Change_Str+="    ";
        // WriteLog(Change_Str)	;
		} 

*/     
      classNo=alogrithm.ClassifyData();

	  m_bStartDraw=true;

	 
    Invalidate();
}
	 
	
}




/*void CAntClustingView::OnClose() 
{
	// TODO: Add your command handler code here
	}
*/	

void CAntClustingView::OnInitialUpdate()   ////设置屏幕大小
{
	CSize sizeTotal;
	// TODO: calculate the total size of this view
	sizeTotal.cx =600;
	sizeTotal.cy =18000;
	SetScrollSizes(MM_TEXT, sizeTotal);
	CScrollView::OnInitialUpdate();
}

void CAntClustingView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	/*	  CClientDC dc(this);
		  OnPrepareDC(&dc);
		  dc.DPtoLP(&point);*/
	CScrollView::OnLButtonDown(nFlags, point);
}

void CAntClustingView::OnRButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CClientDC dc(this);
		  OnPrepareDC(&dc);
/*		  dc.DPtoLP(&point);*/
	CScrollView::OnRButtonDown(nFlags, point);
}

void CAntClustingView::OnMouseMove(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	CClientDC dc(this);
	OnPrepareDC(&dc);
/*	dc.DPtoLP(&point);*/
	
	CScrollView::OnMouseMove(nFlags, point);
}




void CAntClustingView::OnMenuReaddata() 
{
		// TODO: Add your command handler code here

    CRDDlg myReadDlg;
	myReadDlg.DoModal(); 
	
}

void CAntClustingView::OnOriKmeans() 
{
	int k;                            //k为预定义的类的数目
    CKmeansAlg kmeans;
//	DataObject *AVG;
	DataObject *AVG;
	HGLOBAL hData;
	CInputCu Inc;

	if(Inc.DoModal()==IDOK)
	{
		k=Inc.m_CuNumber;                             
   	  m_nViewDataNum=m_pAd->GetDataNum();
	  if(m_nViewDataNum>0){
		  
			hData=GlobalAlloc(GMEM_MOVEABLE,k*sizeof(DataObject));
			AVG=(DataObject*)GlobalLock(hData);                           ////AVG[]用于存放k个初始聚类中心
			dataObj=kmeans.WarSelect(dataObj,AVG,k,m_nViewDataNum,Inc.m_algorithm);
		//	AVG=GetAVG(AVG);}
	  }
    m_bStartDraw=true;
	}

     Invalidate();
}



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -