In[]:=
numnodes=12;nodecost=0.5;nodebenefit=1;famgraph=Graph[{1},{},VertexLabels{11}];edges={};For[iter=1,iter<=2,iter++,(*If[iter==2,famgraph=EdgeDelete[famgraph,EdgeList[famgraph]]];*)fnode=1;vnode=1;For[i=1,i<=numnodes,i++,benefits[i]=0;costs[i]=0;family[i]={}];family[1]={1};SeedRandom[17];Monitor[For[nodei=1,nodei<=numnodes,nodei++,If[iter==1,famgraph=VertexAdd[famgraph,nodei]];For[nodej=nodei+1,nodej<=numnodes,nodej++,If[!MemberQ[family[fnode],nodej],benefits[fnode]+=RandomReal[{0,nodebenefit}];If[iter==1,famgraph=VertexAdd[famgraph,nodej]];i=0;While[i<Length[family[fnode]]/2,i++;costs[fnode]+=RandomReal[{0,nodecost}]];If[costs[fnode]<=benefits[fnode],family[fnode]=Append[family[fnode],nodej];i=0;While[i<Length[family[fnode]]/2,i++If[nodej>family[fnode][[i]],If[family[fnode][[i]]<nodej,edge=family[fnode][[i]]nodej;If[iter==1,edges=Append[edges,edge->White],edges=Append[edges,edge->Blue]];If[iter==2,Pause[0.1]];famgraph=EdgeAdd[famgraph,edge,EdgeStyleedges]]]],(*else*)If[iter==1,famgraph=VertexDelete[famgraph,nodej]];nodei=nodej-1;nodej=nodei;fnode++]]]],If[iter==2,famgraph]];famgraph]
In[]:=
famgraph
Out[]=
In[]:=
EdgeList[famgraph]
Out[]=
{12,13,23,14,24,15,25,35,16,26,36,17,27,37,47,89,810,910,811,911,812,912,1012,12,13,23,14,24,15,25,35,16,26,36,17,27,37,47,89,810,910,811,911,812,912,1012}