質問 (解決済み)| [artisocモデル] 3種類のエージェントによるネットワークの構築 |  |
 |  質問者: kimさん  , 質問日時: 2019/02/08 17:54 |  
3種類のエージェントをそれぞれ任意の数を作成し、それぞれがリンクによって繋がるモデルを構築しようと考えておりますが、2種類目のエージェントの1体目を「作成→リンクを張る」を実行したときに、フリーズしてしまいます。モデルは、本webページのスケールフリーネットワークモデルを拡張する形で行っております。 以下がソースコードになります。 Univ_Init{でエージェント作成のループ、各エージェントのAgt_Init{でリンクを張るという流れです。 よろしくお願いいたします。
  Univ_Init{
  	// Initialize 	Universe.LongTailDivisionNumber = 21	
  	Dim myAgt As Agt 	Dim myMega As Agt 	Dim myMiddle As Agt 	Dim mySmall As Agt 	Dim myAgtSet As AgtSet 	 // Create Mega Dim i As Integer For i = 0 to 10-  1 	myAgt = CreateAgt(Universe.CallMarket.Mega)//megaを作成する 	Universe.PointID(Universe.PointNumber) = myAgt 	Universe.PointNumber = Universe.PointNumber + 1 next i print(myAgt)
  // Create Middle Dim m As Integer For m = 0 to 50 -  1//  myAgt = CreateAgt(Universe.CallMarket.Middle)//Middleを作成する  Universe.PointID(Universe.PointNumber) = myAgt  Universe.PointNumber = Universe.PointNumber + 1 next m
  // Create Small Dim f As Integer For f = 0 to 30 -  1//銀行の数 	myAgt= CreateAgt(Universe.CallMarket.Small)//Middleを作成する 	Universe.PointID(Universe.PointNumber) = myAgt 	Universe.PointNumber = Universe.PointNumber + 1 next f
 
 
  Agt_Init{ 	Dim nBranch As Integer 	Dim TargetPointAgt As Agt 	Dim ConnectPointsAgtSet As AgtSet 	Dim AllPointAgtSet As AgtSet//変更 	Dim pos As Integer 	Dim i As Integer	 	Dim n As Integer 	 	// Point Initialize(初期化)	 	My.X =(GetWidthSpace(Universe.CallMarket) - 1) * Rnd() 	My.Y =(GetHeightSpace(Universe.CallMarket) - 1) * Rnd() 	My.Color = COLOR_RED//色は赤
  	// Connect branch 	If Universe.PointNumber > 0 Then//PointNumberが0より大きい場合 		nBranch = 0//nBranchを初期化 	 MakeAgtsetSpace(AllPointAgtSet, Universe.CallMarket) 		For Each TargetPointAgt In AllPointAgtSet 		//TargetPointAgtに一つずつ取り出し、TargetPointAgtについて実行する 			nBranch = nBranch + CountAgtSet(TargetPointAgt.ConnectPoints) 			//nBranch(=0?)にConnectPointsを足す 		Next TargetPointAgt 		 		n = Universe.PointNumber//nはPointNumberの数 		
  		Do  While(1)//ループ内で判断する方法1 = true 永続に ? 			If CountAgtSet(ConnectPointsAgtSet) == Universe.BranchNumber Then 			//ConnectPointsAgtSet=BranchNumberとなった場合に、ループは中断される 				Break 			End If 			 			If nBranch > 0 Then//nBranch >0の場合 			 				// Decide branch position 				pos = CInt(nBranch * Rnd())//posにbranchの位置を格納 			 				// Get Point ID from branch position 				i = 0 				For Each TargetPointAgt In AllPointAgtSet 				//AllPointAgtSetからTargetPointAgtを一つずつ取り出す。 					pos = pos - CountAgtSet(TargetPointAgt.ConnectPoints) 					If pos < 0 Then 						TargetPointAgt = Universe.PointID(i) 						Break 					Else 						i = i + 1 					End If 				Next TargetPointAgt
  			Else			 				// Choice Point 				pos = CInt(n * Rnd()) 				TargetPointAgt = Universe.PointID(pos) 			End If 	 			If GetAgtEntry(ConnectPointsAgtSet, TargetPointAgt) == -1 Then
  				addAgt(ConnectPointsAgtSet, TargetPointAgt) 				 				n = n-1 				// Check Exit 				If n == 0 Then 					Break 				End If 			Else 				// Select same point 			End If
  		Loop//? 		 		For Each TargetPointAgt In ConnectPointsAgtSet		 			addAgt(My.ConnectPoints, TargetPointAgt) 				 			For i=0 To (Universe.PointNumber - 1) 				If Universe.PointID(i) == TargetPointAgt Then 					Break 				End If				 			Next i 			addAgt(TargetPointAgt.ConnectPoints, My) 		Next TargetPointAgt 		 	End If
  //agtステップ{はこの下からです! 	Dim AroundPointAgtSet As AgtSet 	Dim MegaAgtSet As AgtSet//変更 	Dim Congestion As Integer 	Dim MoveLength As Double //	Dim ConnectPointsAgtSet As AgtSet 	Dim Point As Agt
  	// When it is dowded, it aboids it 既に繋がっている 	MakeAgtSet(MegaAgtSet, Universe.CallMarket.Mega) 	MakeAgtSetAroundOwnCell(AroundPointAgtSet, 1, MegaAgtSet, False) 	Congestion = CountAgtSet(AroundPointAgtSet) 	 	If Congestion >= 1 Then 		MoveLength = 0.5 		Turn(360 * Rnd()) 		Forward(MoveLength) 	End If 	 	// ConnectPointsView 	ClearAgtSet(My.ConnectPointsView) 	If Universe.BranchViewMode == True Then 		DuplicateAgtSet(ConnectPointsAgtSet, My.ConnectPoints) 		For Each Point In ConnectPointsAgtSet 			AddAgt(My.ConnectPointsView, Point) 		Next Point 	End If
 
  |   					
					 					 | 
				 
				
					
					
 ▼解決した回答
 
 ▼ 全ての回答 						 
					 | 
				 
				
			 
		 |