資源簡介
在Windows平臺下,用C++編寫的郵局選址問題,可以選擇出任意多個地址,內嵌聚類算法,可以運行。

代碼片段和文件信息
#include?“MailAddress.h“
#include?
#include?
#include?
using?namespace?std;
MailAddress::MailAddress()
{
getData();
}
MailAddress::~MailAddress()
{
addresses.clear();
}
void?MailAddress::getData()
{
char?fname[256];
cout?<“請輸入存放數據的文件名:“< cin?>>?fname;
cout?< ifstream?in(fname?ios_base::in);
if?(!in)
{
cout?<“can?not?open?this?file!“?< exit(0);
}
while?(in.get()!=EOF)
{
CData?data;
in?>>?data.x;
in?>>?data.y;
addresses.push_back(data);
}?
in.close();
}
void?MailAddress::showVector(vector?v)
{
for?(int?i?=?0;?i? {
cout?<“(“?< }
}
void?MailAddress::showAddress()
{
for?(int?i?=?0;?i? {
cout?<“(“?< }
}
void?MailAddress::showDestination()
{
cout?<“(“?<}
void?MailAddress::execute(int?m_k)
{
k?=?m_k;
vector?*clusters?=?new?vector[k];
CData?*means?=?new?CData[k];
int?i?=?0;
//默認一開始將前K個元組的值作為k個簇的質心(均值)
for?(?i?=?0;?i? {
means[i].x?=?addresses[i].x;
means[i].y?=?addresses[i].y;
}
int?lable?=?0;
//根據默認的質心給簇賦值??
for?(i?=?0;?i? {
lable?=?clusterOfTuple(means?addresses[i]);
clusters[lable].push_back(addresses[i]);
}
//輸出剛開始的簇?
for?(lable?=?0;?lable? {
cout?<“第“?< vector?t?=?clusters[lable];
showVector(t);
cout?< }
double?oldVar?=?-1;
double?newVar?=?getVar(clusters?means);
while?(abs(newVar?-?oldVar)?>=?1)?//當新舊函數值相差不到1即準則函數值不發生明顯變化時,算法終止
{
for?(i?=?0;?i? {
means[i]?=?getMeans(clusters[i]);
cout?<“means[“?< }
oldVar?=?newVar;
newVar?=?getVar(clusters?means);??//計算新的準則函數值
for?(?i?=?0;?i? {
clusters[i].clear();???//清空每個簇
}
//根據新的質心獲得新的簇?
for?(?i?=?0;?i? {
lable?=?clusterOfTuple(means?addresses[i]);
clusters[lable].push_back(addresses[i]);
}
//輸出當前的簇?
for?(?lable?=?0;?lable? {
cout?<“第“?< vector?t?=?clusters[lable];
showVector(t);
cout?< }
}
}
//根據質心,決定當前元組屬于哪個簇?
int?MailAddress::clusterOfTuple(CData?means[]?CData?tuple)
{
double?dist?=?getDist(means[0]?tuple);
double?tmp;
int?lable?=?0;?//標示屬于哪一個簇??
for?(int?i?=?1;?i? {
tmp?=?getDist(means[i]?tuple);
if?(tmp? {
dist?=?tmp;
lable?=?i;
}
}
return?lable;
}
//獲得給定簇集的平方誤差
double?MailAddress::getVar(vector?clusters[]?CData?means[])
{
double?var?=?0;
for?(int?i?=?0;?i? {
vector?t?=?clusters[i];
for?(int?j?=?0;?j? {
var?+=?getDist(t[j]?means[i]
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????126976??2015-03-28?21:48??MailAddress\Debug\MailAddress.exe
?????文件?????928880??2015-03-28?21:48??MailAddress\Debug\MailAddress.ilk
?????文件????1477632??2015-03-28?21:48??MailAddress\Debug\MailAddress.pdb
?????文件?????????24??2015-03-24?14:31??MailAddress\input_assign01_01.dat
?????文件?????????59??2015-03-24?21:44??MailAddress\input_assign01_03.dat
?????文件????????290??2015-03-24?21:44??MailAddress\input_assign01_05.dat
?????文件????????393??2015-03-24?21:45??MailAddress\input_assign01_06.dat
?????文件?????????26??2015-03-28?21:35??MailAddress\input_assign_01_02.dat
?????文件????????149??2015-03-24?21:44??MailAddress\input_assign_01_04.dat
?????文件???????2383??2015-03-28?21:48??MailAddress\MailAddress\Debug\MailAddress.log
?????文件?????404163??2015-03-28?21:48??MailAddress\MailAddress\Debug\MailAddress.obj
?????文件???????1714??2015-03-28?21:48??MailAddress\MailAddress\Debug\MailAddress.tlog\cl.command.1.tlog
?????文件??????37122??2015-03-28?21:48??MailAddress\MailAddress\Debug\MailAddress.tlog\CL.read.1.tlog
?????文件???????3920??2015-03-28?21:48??MailAddress\MailAddress\Debug\MailAddress.tlog\CL.write.1.tlog
?????文件???????1332??2015-03-28?21:48??MailAddress\MailAddress\Debug\MailAddress.tlog\li
?????文件???????2870??2015-03-28?21:48??MailAddress\MailAddress\Debug\MailAddress.tlog\li
?????文件????????636??2015-03-28?21:48??MailAddress\MailAddress\Debug\MailAddress.tlog\li
?????文件????????178??2015-03-28?21:48??MailAddress\MailAddress\Debug\MailAddress.tlog\MailAddress.lastbuildstate
?????文件?????153286??2015-03-28?21:48??MailAddress\MailAddress\Debug\test.obj
?????文件?????286685??2015-03-24?14:53??MailAddress\MailAddress\Debug\test2.obj
?????文件?????379904??2015-03-28?21:48??MailAddress\MailAddress\Debug\vc120.idb
?????文件?????446464??2015-03-28?21:48??MailAddress\MailAddress\Debug\vc120.pdb
?????文件?????????24??2015-03-24?14:31??MailAddress\MailAddress\input_assign01_01.dat
?????文件?????????59??2015-03-24?21:44??MailAddress\MailAddress\input_assign01_03.dat
?????文件????????290??2015-03-24?21:44??MailAddress\MailAddress\input_assign01_05.dat
?????文件????????393??2015-03-24?21:45??MailAddress\MailAddress\input_assign01_06.dat
?????文件?????????26??2015-03-28?21:35??MailAddress\MailAddress\input_assign_01_02.dat
?????文件????????149??2015-03-24?21:44??MailAddress\MailAddress\input_assign_01_04.dat
?????文件???????5346??2015-03-28?21:48??MailAddress\MailAddress\MailAddress.cpp
?????文件????????991??2015-03-24?21:46??MailAddress\MailAddress\MailAddress.h
............此處省略16個文件信息
- 上一篇:停車場管理系統C語言報告
- 下一篇:C++培訓課程資料1
評論
共有 條評論