⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pheromoneagent.java

📁 P2P模拟器P2Psim的程序源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
				}
				else
				{
					GraphEventManager.getReference().getProperties(GraphEventManager.getReference().getConnectingEdge(previousNode, nextNode)).addInformation("Agents", this);
				}
			}
			
			if (status == RETURNING)
			{		
				improvePheromone(currentGraphCell);
						
				GraphEventManager.getReference().getProperties(currentGraphCell).removeInformation("Agents", this);
				
				if (currentGraphCell == origin)
				{
					// Agent has returned.
					status = DEAD;
					getOriginalQuery().finished();
					
				}
				else
				{
					int maxGradient = 0;
					Iterator gradientFieldIterator = GraphEventManager.getReference().getProperties(currentGraphCell).getInformation("Gradient");
					Gradient tempGradient;
					
					if (gradientFieldIterator != null)
					{
						while (gradientFieldIterator.hasNext())
						{
							tempGradient = (Gradient)gradientFieldIterator.next();
							if (tempGradient.getSource() == origin)
							{
								nextNode = tempGradient.getBackPointer();
								maxGradient = tempGradient.getDistance();	
							}
						}
					}
					
					if (maxGradient == 0) 
					{
						//Neem willekeurige node.
						nextNode = getRandomGraphCellFromExcept(currentGraphCell, previousNode);
						//System.out.println("properties edge van " + currentGraphCell + " to " + nextNode);
					}
					
					progress = 0;
					previousNode = currentGraphCell;
					GraphEventManager.getReference().getProperties(GraphEventManager.getReference().getConnectingEdge(previousNode, nextNode)).addInformation("Agents", this);
					
				}
			} // EIND STATUS RETURNING
		} // EIND VERTEX	
	}

public void improvePheromone(DefaultGraphCell currentGraphCell)
{
	Iterator pheromoneIterator = GraphEventManager.getReference().getProperties(currentGraphCell).getInformation("Pheromones");
	Pheromone foundPheromone = null;
	
	boolean certain = true;
	
	if (pheromoneIterator != null)
	{
		Pheromone tempPheromone;
		
		while (foundPheromone == null && pheromoneIterator.hasNext())
		{
			tempPheromone = (Pheromone)pheromoneIterator.next();
			//System.out.println(tempPheromone.getResource().getName() + " <> " + searchFor.getName());
			if (tempPheromone.getResource().equals(searchFor.getSearchFor()))
			{
				if (tempPheromone.getDirection() == previousNode)
				{
					//System.out.println(tempPheromone);
					foundPheromone = tempPheromone;
					//System.out.println(foundPheromone);
				}
				else
				{
					// Enkel verbeteren als we terugkeren gebaseerd op een gradientveld
					Iterator gradientFieldIterator = GraphEventManager.getReference().getProperties(currentGraphCell).getInformation("Gradient");
					Gradient tempGradient;
					int maxGradient = 0;
					
					if (gradientFieldIterator != null)
					{
						while (gradientFieldIterator.hasNext())
						{
							tempGradient = (Gradient)gradientFieldIterator.next();
							if (tempGradient.getSource() == origin)
							{
								maxGradient = tempGradient.getDistance();	
							}
						}
					}

					if (maxGradient != 0) 
					{
						// we zijn dus aan het terugkeren gebaseerd op een gradient, en
						// tempPheromone.getDirection() != previousNode
						// maak een nieuw feromoon aan.
						certain = true;
					}
					else
					{
						// we zijn aan het terugkeren at random, we weten dus niet zeker
						// of we beter zijn.
						// de filosofie:  iets is beter dan niets, en zekerheid is beter dan meer.
						certain = false;
					}
				}
			}
		}
		if (foundPheromone != null)
		{
			//System.out.println("PerhomoneAgent :: improvePheromone");
			foundPheromone.increase();
		}
		else if (certain)
		{
			GraphEventManager.getReference().getProperties(currentGraphCell).addInformation("Pheromones", new Pheromone(searchFor.getSearchFor(), previousNode));
		}
	}
	else
	{
		GraphEventManager.getReference().getProperties(currentGraphCell).addInformation("Pheromones", new Pheromone(searchFor.getSearchFor(), previousNode));
	}
}


/*{


	Iterator pheromoneIterator = GraphEventManager.getReference().getProperties(currentGraphCell).getInformation("Pheromones");
	//Pheromone foundPheromone = null;
	Pheromone improvePheromone = null;
	
	boolean certain = true;
	
	if (pheromoneIterator != null) {
		Pheromone tempPheromone;
		
		while (improvePheromone == null && pheromoneIterator.hasNext()) {
			tempPheromone = (Pheromone)pheromoneIterator.next();
			//System.out.println(tempPheromone.getResource().getName() + " <> " + searchFor.getName());
			if (tempPheromone.getResource().equals(searchFor.getSearchFor())) {
				if (tempPheromone.getDirection() == previousNode) {
					//System.out.println(tempPheromone);
					improvePheromone = tempPheromone;
					//System.out.println(foundPheromone);
				}
			}
		}
		
		if (improvePheromone != null)
		{
			improvePheromone.increase();
		}
		else
		{
			// We weten dat er feromonen zijn, want pheromoneIterator != null
			// Enkel nieuw feromoon invoegen als we terugkeren gebaseerd op een gradientveld
			Iterator gradientFieldIterator = GraphEventManager.getReference().getProperties(currentGraphCell).getInformation("Gradient");
			Gradient tempGradient;
			int maxGradient = 0;
			
			if (gradientFieldIterator != null) {
				while (gradientFieldIterator.hasNext()) {
					tempGradient = (Gradient)gradientFieldIterator.next();
					if (tempGradient.getSource() == origin) {
						maxGradient = tempGradient.getDistance();	
					}
				}
			}

			if (maxGradient != 0) {
				// we zijn dus aan het terugkeren gebaseerd op een gradient, en
				// tempPheromone.getDirection() != previousNode
				// maak een nieuw feromoon aan.
				certain = true;
			}
			else {
				// we zijn aan het terugkeren at random, we weten dus niet zeker
				// of we beter zijn.
				// de filosofie:  iets is beter dan niets, en zekerheid is beter dan meer.
				certain = false;
			}
			
		}
	}
	
	if (certain)
	{
		GraphEventManager.getReference().getProperties(currentGraphCell).addInformation("Pheromones", new Pheromone(searchFor.getSearchFor(), previousNode));	
	}
*/

/*
	Iterator pheromoneIterator = GraphEventManager.getReference().getProperties(currentGraphCell).getInformation("Pheromones");
	Pheromone foundPheromone = null;
	
	if (pheromoneIterator != null)
	{
		Pheromone tempPheromone;
		
		while (foundPheromone == null && pheromoneIterator.hasNext())
		{
			tempPheromone = (Pheromone)pheromoneIterator.next();
			//System.out.println(tempPheromone.getResource().getName() + " <> " + searchFor.getName());
			if (tempPheromone.getResource().equals(searchFor.getSearchFor()) && tempPheromone.getDirection() == previousNode)
			{
				//System.out.println(tempPheromone);
				foundPheromone = tempPheromone;
				//System.out.println(foundPheromone);
			}
		}
		if (foundPheromone != null)
		{
			//System.out.println("PerhomoneAgent :: improvePheromone");
			foundPheromone.increase();
		}
		else
		{
			GraphEventManager.getReference().getProperties(currentGraphCell).addInformation("Pheromones", new Pheromone(searchFor.getSearchFor(), previousNode));
		}
	}
	else
	{
		GraphEventManager.getReference().getProperties(currentGraphCell).addInformation("Pheromones", new Pheromone(searchFor.getSearchFor(), previousNode));
	}
*/
//}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -