📄 controller.java
字号:
LinkedList list2 = p2.getListInformation("Gradient");
//System.out.println("list2");
if (list2 != null)
{
while(list2.size() > skip)
{
//System.out.println(list2.size());
Gradient gradient = (Gradient)list2.get(skip);
if (dgc2 == gradient.getBackPointer() || GraphEventManager.getReference().getConnectingEdge(dgc2, gradient.getBackPointer()) != null)
{
skip++;
}
else if (dgc2 != gradient.getBackPointer() && GraphEventManager.getReference().getConnectingEdge(dgc2, gradient.getBackPointer()) == null )
{
removeGradientField(gradient.getSource(), dgc2, false);
}
}
}
/*
Iterator iterator1 = p1.getInformation("Gradient");
if (iterator1 != null)
{
while(iterator1.hasNext())
{
Gradient gradient = (Gradient)iterator1.next();
if (dgc1 != gradient.getBackPointer() && GraphEventManager.getReference().getConnectingEdge(dgc1, gradient.getBackPointer()) == null )
{
// Het gradient-veld is ongeldig, want de knoop waarlangs de sterkte werd doorgegeven, is niet
// meer bereikbaar.
gradient.setDistance(0);
removeGradientField(gradient.getSource(), dgc1);
}
}
li = GraphEventManager.getReference().getProperties(dgc1).getListInformation("Gradient");
for (int i=li.size()-1; i>-1; i--)
{
if (((Gradient)li.get(i)).getDistance() == 0)
{
GraphEventManager.getReference().getProperties(dgc1).removeInformation("Gradient", li.get(i));
}
}
}
Iterator iterator2 = p2.getInformation("Gradient");
if (iterator2 != null)
{
while(iterator2.hasNext())
{
Gradient gradient = (Gradient)iterator2.next();
if (dgc2 != gradient.getBackPointer() && GraphEventManager.getReference().getConnectingEdge(dgc2, gradient.getBackPointer()) == null )
{
// Het gradient-veld is ongeldig, want de knoop waarlangs de sterkte werd doorgegeven, is niet
// meer bereikbaar.
gradient.setDistance(0);
removeGradientField(gradient.getSource(), dgc2);
}
}
li = GraphEventManager.getReference().getProperties(dgc2).getListInformation("Gradient");
for (int i=li.size()-1; i>-1; i--)
{
if (((Gradient)li.get(i)).getDistance() == 0)
{
GraphEventManager.getReference().getProperties(dgc2).removeInformation("Gradient", li.get(i));
}
}
}
*/
LinkedList li = null;
Iterator iterator1 = p1.getInformation("Pheromones");
if (iterator1 != null)
{
while(iterator1.hasNext())
{
Pheromone pheromone = (Pheromone)iterator1.next();
if (dgc1 != pheromone.getDirection() && GraphEventManager.getReference().getConnectingEdge(dgc1, pheromone.getDirection()) == null )
{
// Het gradient-veld is ongeldig, want de knoop waarlangs de sterkte werd doorgegeven, is niet
// meer bereikbaar.
pheromone.setStrength(0);
}
}
li = GraphEventManager.getReference().getProperties(dgc1).getListInformation("Pheromones");
for (int i=li.size()-1; i>-1; i--)
{
if (((Pheromone)li.get(i)).getStrength() == 0)
{
GraphEventManager.getReference().getProperties(dgc1).removeInformation("Pheromones", li.get(i));
}
}
}
Iterator iterator2 = p2.getInformation("Pheromones");
if (iterator2 != null)
{
while(iterator2.hasNext())
{
Pheromone pheromone = (Pheromone)iterator2.next();
if (dgc2 != pheromone.getDirection() && GraphEventManager.getReference().getConnectingEdge(dgc2, pheromone.getDirection()) == null )
{
// Het gradient-veld is ongeldig, want de knoop waarlangs de sterkte werd doorgegeven, is niet
// meer bereikbaar.
pheromone.setStrength(0);
}
}
li = GraphEventManager.getReference().getProperties(dgc2).getListInformation("Pheromones");
for (int i=li.size()-1; i>-1; i--)
{
if (((Pheromone)li.get(i)).getStrength() == 0)
{
GraphEventManager.getReference().getProperties(dgc2).removeInformation("Pheromones", li.get(i));
}
}
}
}
public void removeGradientField(DefaultGraphCell source, DefaultGraphCell previousNode, boolean alsoOrigin)
{
boolean removeThis = false;
Gradient gradient = null;
Iterator gradientIterator = GraphEventManager.getReference().getProperties(previousNode).getInformation("Gradient");
while(gradientIterator != null && !removeThis && gradientIterator.hasNext())
{
gradient = (Gradient)gradientIterator.next();
if (alsoOrigin)
{
if (gradient.getSource() == source)
{
removeThis = true;
}
}
else
{
if (gradient.getSource() == source && source != previousNode)
{
removeThis = true;
}
}
}
if (removeThis)
{
GraphEventManager.getReference().getProperties(previousNode).removeInformation("Gradient", gradient);
}
//System.out.println("removing gradient-fields");
Iterator iterator = GraphEventManager.getReference().getConnectedNodes(previousNode).iterator();
while(iterator.hasNext())
{
removeThis = false;
DefaultGraphCell dgc = (DefaultGraphCell)iterator.next();
gradientIterator = GraphEventManager.getReference().getProperties(dgc).getInformation("Gradient");
while(gradientIterator != null && !removeThis && gradientIterator.hasNext())
{
gradient = (Gradient)gradientIterator.next();
if (gradient.getSource() == source && gradient.getBackPointer() == previousNode)
{
removeThis = true;
}
}
if (removeThis)
{
GraphEventManager.getReference().getProperties(dgc).removeInformation("Gradient", gradient);
removeGradientField(source, dgc, alsoOrigin);
}
}
removeThis = false;
}
public void removeAllGradientFields()
{
for (int i = 0; i < model.getRootCount(); i++)
{
if ((DefaultGraphCell)model.getRootAt(i) == null)
{
System.out.println("Null op positie: " + i);
}
Properties properties = GraphEventManager.getReference().getProperties((DefaultGraphCell)model.getRootAt(i));
if (!(model.getRootAt(i) instanceof DefaultEdge))
{
removeGradientField((DefaultGraphCell)model.getRootAt(i), (DefaultGraphCell)model.getRootAt(i), true);
}
}
}
public void constructAllGradientFields(int strength)
{
for (int i = 0; i < model.getRootCount(); i++)
{
if ((DefaultGraphCell)model.getRootAt(i) == null)
{
System.out.println("Null op positie: " + i);
}
else if (!(model.getRootAt(i) instanceof DefaultEdge))
{
constructGradientField((DefaultGraphCell)model.getRootAt(i),(DefaultGraphCell)model.getRootAt(i),strength);
}
}
}
public void constructGradientField(DefaultGraphCell source, DefaultGraphCell currentPosition, int strength)
{
if (strength > 0)
{
Properties properties;
EdgeProperties edgeProperties;
Edge edge;
DefaultGraphCell nextPosition;
DefaultEdge nextEdge;
if (source == currentPosition)
{
// properties = (Properties)GraphConstants.getValue(currentPosition.getAttributes());
// properties.addInformation("Gradient", new Gradient(strength, source, currentPosition) );
boolean add = true;
if (GraphEventManager.getReference().getProperties(currentPosition).getInformation("Gradient") != null)
{
ListIterator li = GraphEventManager.getReference().getProperties(currentPosition).getInformation("Gradient");
while (li.hasNext())
{
Gradient gradient = (Gradient)li.next();
if (gradient.getSource() == currentPosition)
{
add = false;
gradient.setDistance(Math.max(gradient.getDistance(), strength));
}
}
}
if (add)
{
GraphEventManager.getReference().getProperties(currentPosition).addInformation("Gradient", new Gradient(strength, source, currentPosition) );
}
}
if (source == null)
{
source = (DefaultGraphCell)model.getRootAt(0);
currentPosition = source;
}
int newStrength = 0;
boolean addGradient;
Gradient tempGradient;
Iterator gradientIterator;
//GraphCell cells[] = new GraphCell[1];
//cells[0] = currentPosition;
if (GraphEventManager.getReference().getConnectedNodes(currentPosition) != null)
{
Iterator iterator2 = GraphEventManager.getReference().getConnectedNodes(currentPosition).iterator();
Iterator iteratorEdges = GraphEventManager.getReference().getConnectingEdges(currentPosition);
while (iterator2.hasNext())
{
nextPosition = (DefaultGraphCell)iterator2.next();
nextEdge = (DefaultEdge)iteratorEdges.next();
if(! nextPosition.equals(source))
{
properties = (Properties)GraphConstants.getValue(nextPosition.getAttributes());
edgeProperties = (EdgeProperties)GraphConstants.getValue(nextEdge.getAttributes());
newStrength = strength - (11 - edgeProperties.getCapacity());
if (newStrength > 0)
{
gradientIterator = properties.getInformation("Gradient");
addGradient = true;
if (gradientIterator != null)
{
while (gradientIterator.hasNext())
{
tempGradient = (Gradient)gradientIterator.next();
if (tempGradient.getSource().equals(source))
{
if (tempGradient.getDistance() <= newStrength)
{
// Update bestaande gradient
addGradient=false;
tempGradient.setDistance(newStrength);
tempGradient.setBackPointer(currentPosition);
constructGradientField(source, nextPosition, newStrength);
}
else
{
// Er is al een betere gradient
addGradient=false;
}
}
}
}
if (addGradient)
{
// Er is nog geen gradient vanuit source
//System.out.println("newGradient");
properties.addInformation("Gradient", new Gradient(newStrength, source, currentPosition) );
constructGradientField(source, nextPosition, newStrength);
}
}
}
}
}
else
{
}
}
else
{
System.out.println("NOOOOIT !");
}
}
public void addResource(DefaultGraphCell dgc, Resource resource)
{
//((Properties)(GraphConstants.getValue(dgc.getAttributes()))).addInformation("Resources", resource);
GraphEventManager.getReference().getProperties(dgc).addInformation("Resources", resource);
}
public void searchForResource(DefaultGraphCell origin, String searchFor)
{
ResourceQuery query = new ResourceQuery(searchFor, internalTime);
GraphEventManager.getReference().getProperties(origin).addInformation("Query", query);
query.start(origin);
}
public void addRandomResources(int min, int max)
{
for (int i = 0; i < model.getRootCount(); i++)
{
if ((DefaultGraphCell)model.getRootAt(i) instanceof DefaultEdge)
{
// edge kan geen resources bevatten
}
else
{
int aantal = min + (int)(Math.random()*(max-min+0.9));
Iterator newResources = GraphEventManager.getReference().eventGetRandomResources(aantal);
if (newResources != null)
{
while(newResources.hasNext())
{
this.addResource((DefaultGraphCell)(model.getRootAt(i)),(Resource)newResources.next());
}
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -