本文整理汇总了C++中Partition::cluster方法的典型用法代码示例。如果您正苦于以下问题:C++ Partition::cluster方法的具体用法?C++ Partition::cluster怎么用?C++ Partition::cluster使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Partition
的用法示例。
在下文中一共展示了Partition::cluster方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: run
Partition CAST::run( std::vector<CAST_Item>& unAssignedCluster ) {
Partition result;
while ( unAssignedCluster.size() ) {
std::vector<CAST_Item> openCluster;
resetAffinity( unAssignedCluster );
bool changesOccurred = true;
while (changesOccurred && unAssignedCluster.size()) {
changesOccurred = false;
AffinityCompute maxCompute;
AffinityCompute minCompute;
while ( unAssignedCluster.size() ) {
int maxAffIdx = maxCompute( unAssignedCluster, std::greater<double>() );
if ( unAssignedCluster.at(maxAffIdx).affinity >= thresCAST*openCluster.size() ) {
changesOccurred = true;
addGoodItem( unAssignedCluster, openCluster, *comp, maxAffIdx );
} else {
break;
}
}
while( unAssignedCluster.size() ) {
int minAffIdx = minCompute( openCluster, std::less<double>() );
if ( openCluster.at(minAffIdx).affinity < thresCAST*openCluster.size() ) {
changesOccurred = true;
removeBadItem( unAssignedCluster, openCluster, *comp, minAffIdx );
} else {
break;
}
}
}
int cluster_id = result.nbrClusters();
for ( auto& item: openCluster ) {
result.cluster( item.index, cluster_id );
}
}
return result;
}