In[]:=
numnodes=12;​​nodecost=0.5;​​nodebenefit=1;​​famgraph=Graph[{1},{},VertexLabels{11}];​​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,EdgeStyleedges]​​]​​]​​]​​,(*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[]=
{12,13,23,14,24,15,25,35,16,26,36,17,27,37,47,89,810,910,811,911,812,912,1012,12,13,23,14,24,15,25,35,16,26,36,17,27,37,47,89,810,910,811,911,812,912,1012}