private Edge getMostProbEdge(Ant ant) { Edge[] possibEdges = getFromTownEdges(ant.getLastVisitedTown()). Where(edge => !ant.isTownVisited(edge.endV)).ToArray(); if (possibEdges.Length == 0) { return(null); } double comDiv = possibEdges. Select(edge => edgePossibility(edge)).Sum(); possibEdges = possibEdges.OrderByDescending(edge => edgePossibility(edge) / comDiv).ToArray(); return(possibEdges.Length == 0 ? null : possibEdges[0]); }
private bool tryCycleTour(Ant ant, int startV, int endV) { Edge[] eds = edges.Where(edge => edge.startV == startV && edge.endV == endV).ToArray(); Edge cEdge; if (eds.Length == 0) { return(false); } else { cEdge = eds[0]; } if (cEdge == null) { return(false); } else { ant.visitCycleTown(cEdge.length); return(true); } }