本文整理汇总了C++中TNodeI::GetOutEDat方法的典型用法代码示例。如果您正苦于以下问题:C++ TNodeI::GetOutEDat方法的具体用法?C++ TNodeI::GetOutEDat怎么用?C++ TNodeI::GetOutEDat使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TNodeI
的用法示例。
在下文中一共展示了TNodeI::GetOutEDat方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ReinforceEdges
// IN-OUT edges are swapped (so that the prog runs faster)
// Send message via IN edge proportional to the OUT edge weight
void TWgtNet::ReinforceEdges(const int& NIters) {
THash<TInt, TFlt> OutWgtSumH;
for (TNodeI NI = BegNI(); NI < EndNI(); NI++) {
double wgt = 0;
for (int e = 0; e < NI.GetOutDeg(); e++) {
wgt += NI.GetOutEDat(e); }
OutWgtSumH.AddDat(NI.GetId(), wgt);
}
printf("Reinforcing edges for %d iterations\n", NIters);
// iterate
TExeTm ExeTm;
for (int iter = 0; iter < NIters; iter++) {
for (TNodeI NI = BegNI(); NI < EndNI(); NI++) {
const double X = TInt::Rnd.GetUniDev() * OutWgtSumH.GetDat(NI.GetId());
double x = 0; int e = 0;
for ( ; x + NI.GetOutEDat(e) < X; e++) {
x += NI.GetOutEDat(e); }
IAssert(IsEdge(NI.GetOutNId(e), NI.GetId()));
GetEDat(NI.GetOutNId(e), NI.GetId()) += 1; // reinforce the edge
OutWgtSumH.GetDat(NI.GetOutNId(e)) += 1;
}
if (iter % (NIters/100) == 0) {
printf("\r%d [%s]", iter, ExeTm.GetStr());
}
}
printf(" done.\n");
}
示例2: PermOutEdgeWgt
void TWgtNet::PermOutEdgeWgt() {
TFltV WgtV;
for (TNodeI NI = BegNI(); NI < EndNI(); NI++) {
WgtV.Clr(false);
for (int e = 0; e < NI.GetOutDeg(); e++) {
WgtV.Add(NI.GetOutEDat(e));
}
WgtV.Shuffle(TInt::Rnd);
for (int e = 0; e < NI.GetOutDeg(); e++) {
NI.GetOutEDat(e) = WgtV[e];
}
}
}
示例3: PermEdgeWgt
void TWgtNet::PermEdgeWgt() {
TFltV WgtV;
for (TNodeI NI = BegNI(); NI < EndNI(); NI++) {
for (int e = 0; e < NI.GetOutDeg(); e++) {
WgtV.Add(NI.GetOutEDat(e));
}
}
WgtV.Shuffle(TInt::Rnd);
int w = 0;
for (TNodeI NI = BegNI(); NI < EndNI(); NI++) {
for (int e = 0; e < NI.GetOutDeg(); e++) {
NI.GetOutEDat(e) = WgtV[w++];
}
}
}
示例4:
void TWgtNet::PutRnd01Wgts() {
for (TNodeI NI = BegNI(); NI < EndNI(); NI++) {
for (int e = 0; e < NI.GetOutDeg(); e++) {
NI.GetOutEDat(e) = TInt::Rnd.GetUniDev();
}
}
}
示例5: MulEdgeWgt
void TWgtNet::MulEdgeWgt(const double& MulBy) {
for (TNodeI NI = BegNI(); NI < EndNI(); NI++) {
for (int e = 0; e < NI.GetOutDeg(); e++) {
NI.GetOutEDat(e) *= MulBy;
}
}
}
示例6: GetEdgeWgt
/////////////////////////////////////////////////
// Weighted network
double TWgtNet::GetEdgeWgt() const {
double wgt = 0;
for (TNodeI NI = BegNI(); NI < EndNI(); NI++) {
for (int e = 0; e < NI.GetOutDeg(); e++) {
wgt += NI.GetOutEDat(e);
}
}
return wgt;
}
示例7: DelMinWgtNodes
void TWgtNet::DelMinWgtNodes(const double MinWgt) {
printf("Deleting Min Wgt %g nodes\n", MinWgt);
printf(" (%d,%d) -->", GetNodes(), GetEdges());
TIntV DelNIdV;
for (TNodeI NI = BegNI(); NI < EndNI(); NI++) {
double wgt = 0;
for (int e = 0; e < NI.GetOutDeg(); e++) {
wgt += NI.GetOutEDat(e);
}
if (wgt < MinWgt) { DelNIdV.Add(NI.GetId()); }
}
for (int d = 0; d < DelNIdV.Len(); d++) {
DelNode(DelNIdV[d]);
}
printf(" (%d,%d)\n", GetNodes(), GetEdges());
}