Skip to content
Open

Team #13

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions assets/saves/oct26-24/best-calculator-91.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"isAddBias":true,"inputs":[{"id":0,"x":0.1,"incoming":[]},{"id":1,"x":0.1,"incoming":[]},{"id":2,"x":0.1,"incoming":[]},{"id":3,"x":0.1,"incoming":[]},{"id":4,"x":0.1,"incoming":[]},{"id":5,"x":0.1,"incoming":[]},{"id":6,"x":0.1,"incoming":[]},{"id":7,"x":0.1,"incoming":[]},{"id":8,"x":0.1,"incoming":[]},{"id":9,"x":0.1,"incoming":[]},{"id":10,"x":0.1,"incoming":[]},{"id":11,"x":0.1,"incoming":[]},{"id":12,"x":0.1,"incoming":[]}],"hidden":[{"id":138,"x":0.19999999,"incoming":[{"fromId":10,"weight":0.5807351,"enabled":true},{"fromId":0,"weight":0.22659247,"enabled":true}]},{"id":47,"x":0.29999998,"incoming":[{"fromId":10,"weight":0.13833706,"enabled":false},{"fromId":0,"weight":0.8638843,"enabled":true},{"fromId":11,"weight":0.114609145,"enabled":true},{"fromId":138,"weight":-0.39168766,"enabled":true},{"fromId":7,"weight":-0.88716316,"enabled":true}]},{"id":96,"x":0.29999998,"incoming":[{"fromId":8,"weight":1.0027258,"enabled":true},{"fromId":0,"weight":1.0218897,"enabled":true}]},{"id":107,"x":0.29999998,"incoming":[{"fromId":12,"weight":1.6018159,"enabled":true},{"fromId":0,"weight":0.8021799,"enabled":true}]},{"id":118,"x":0.29999998,"incoming":[{"fromId":9,"weight":1.422273,"enabled":true},{"fromId":0,"weight":1.4237465,"enabled":true}]},{"id":119,"x":0.29999998,"incoming":[{"fromId":6,"weight":1.0108635,"enabled":true},{"fromId":0,"weight":0.7187625,"enabled":true}]},{"id":120,"x":0.29999998,"incoming":[{"fromId":12,"weight":0.9531394,"enabled":true},{"fromId":0,"weight":-2.1661384,"enabled":true}]},{"id":125,"x":0.29999998,"incoming":[{"fromId":1,"weight":1.394831,"enabled":true},{"fromId":0,"weight":-0.003965676,"enabled":true}]},{"id":156,"x":0.29999998,"incoming":[{"fromId":3,"weight":0.2965174,"enabled":true},{"fromId":0,"weight":0.0014105588,"enabled":true}]},{"id":174,"x":0.29999998,"incoming":[{"fromId":8,"weight":0.5149684,"enabled":true},{"fromId":0,"weight":1.7600298,"enabled":true}]},{"id":142,"x":0.39999998,"incoming":[{"fromId":47,"weight":-0.85746104,"enabled":true},{"fromId":0,"weight":-0.8789022,"enabled":true}]},{"id":169,"x":0.39999998,"incoming":[{"fromId":156,"weight":-0.12980099,"enabled":true},{"fromId":0,"weight":0.25130045,"enabled":true}]},{"id":17,"x":0.49999997,"incoming":[{"fromId":4,"weight":-0.66960955,"enabled":true},{"fromId":0,"weight":-1.5877311,"enabled":true}]},{"id":18,"x":0.49999997,"incoming":[{"fromId":4,"weight":0.7819293,"enabled":true},{"fromId":0,"weight":-0.7592402,"enabled":true}]},{"id":22,"x":0.49999997,"incoming":[{"fromId":8,"weight":-0.46638352,"enabled":true},{"fromId":0,"weight":0.60404813,"enabled":true},{"fromId":7,"weight":-0.09308106,"enabled":true},{"fromId":9,"weight":0.31939274,"enabled":true},{"fromId":2,"weight":1.1114357,"enabled":true},{"fromId":1,"weight":0.7371818,"enabled":true},{"fromId":5,"weight":0.17170045,"enabled":true},{"fromId":96,"weight":0.25535092,"enabled":true},{"fromId":118,"weight":-1.3291246,"enabled":true},{"fromId":11,"weight":-0.5761671,"enabled":true}]},{"id":23,"x":0.49999997,"incoming":[{"fromId":11,"weight":0.23857765,"enabled":true},{"fromId":0,"weight":0.6205106,"enabled":true}]},{"id":24,"x":0.49999997,"incoming":[{"fromId":0,"weight":-0.41310495,"enabled":true}]},{"id":25,"x":0.49999997,"incoming":[{"fromId":12,"weight":-0.023898602,"enabled":true},{"fromId":0,"weight":-1.0644224,"enabled":true},{"fromId":6,"weight":-0.46032798,"enabled":true},{"fromId":11,"weight":1.5198973,"enabled":true},{"fromId":120,"weight":0.34432274,"enabled":true}]},{"id":26,"x":0.49999997,"incoming":[{"fromId":2,"weight":0.72625834,"enabled":true},{"fromId":0,"weight":-1.2335293,"enabled":true},{"fromId":12,"weight":1.2802169,"enabled":true},{"fromId":47,"weight":0.7016369,"enabled":true},{"fromId":3,"weight":-0.9299006,"enabled":true}]},{"id":28,"x":0.49999997,"incoming":[{"fromId":8,"weight":-0.45007634,"enabled":true},{"fromId":0,"weight":0.7933529,"enabled":true},{"fromId":9,"weight":0.6294149,"enabled":true},{"fromId":5,"weight":-0.30390713,"enabled":true},{"fromId":12,"weight":-0.32314524,"enabled":true},{"fromId":7,"weight":0.08348696,"enabled":true},{"fromId":10,"weight":0.6788537,"enabled":true},{"fromId":6,"weight":-0.21117067,"enabled":true},{"fromId":3,"weight":-0.16420892,"enabled":true},{"fromId":107,"weight":-0.734861,"enabled":true}]},{"id":29,"x":0.49999997,"incoming":[{"fromId":0,"weight":-0.33807686,"enabled":true},{"fromId":2,"weight":-0.6972983,"enabled":true},{"fromId":11,"weight":0.58172214,"enabled":true}]},{"id":32,"x":0.49999997,"incoming":[{"fromId":5,"weight":-1.2645385,"enabled":true},{"fromId":0,"weight":-1.6730626,"enabled":true}]},{"id":33,"x":0.49999997,"incoming":[{"fromId":4,"weight":0.12285073,"enabled":true},{"fromId":0,"weight":0.33647,"enabled":true},{"fromId":3,"weight":1.0953741,"enabled":true},{"fromId":1,"weight":-0.99417984,"enabled":true},{"fromId":8,"weight":-0.26607046,"enabled":true}]},{"id":34,"x":0.49999997,"incoming":[{"fromId":6,"weight":-0.45717594,"enabled":true},{"fromId":0,"weight":0.75535524,"enabled":true},{"fromId":5,"weight":-0.7277607,"enabled":true},{"fromId":9,"weight":-1.1032555,"enabled":true}]},{"id":35,"x":0.49999997,"incoming":[{"fromId":6,"weight":0.4234132,"enabled":true},{"fromId":0,"weight":0.0830487,"enabled":true},{"fromId":9,"weight":-0.07648743,"enabled":true},{"fromId":11,"weight":-0.36659092,"enabled":true},{"fromId":8,"weight":0.12926109,"enabled":true},{"fromId":119,"weight":0.93270504,"enabled":true},{"fromId":156,"weight":1.1376671,"enabled":true}]},{"id":36,"x":0.49999997,"incoming":[{"fromId":3,"weight":-0.88278866,"enabled":true},{"fromId":0,"weight":-0.34027028,"enabled":true},{"fromId":11,"weight":1.4066954,"enabled":true},{"fromId":1,"weight":0.8055922,"enabled":true},{"fromId":47,"weight":1.527518,"enabled":true}]},{"id":37,"x":0.49999997,"incoming":[{"fromId":10,"weight":-0.5801935,"enabled":true},{"fromId":0,"weight":0.02177757,"enabled":true},{"fromId":9,"weight":-1.332419,"enabled":true},{"fromId":47,"weight":-0.102652535,"enabled":true},{"fromId":1,"weight":-0.34144613,"enabled":true},{"fromId":11,"weight":-0.72796696,"enabled":true},{"fromId":12,"weight":-1.4006401,"enabled":true},{"fromId":125,"weight":0.21409732,"enabled":true}]},{"id":38,"x":0.49999997,"incoming":[{"fromId":3,"weight":1.2533152,"enabled":true},{"fromId":0,"weight":-0.45313838,"enabled":true}]},{"id":39,"x":0.49999997,"incoming":[{"fromId":0,"weight":-1.5184984,"enabled":true}]},{"id":41,"x":0.49999997,"incoming":[{"fromId":1,"weight":0.33920702,"enabled":true},{"fromId":0,"weight":-0.23522192,"enabled":true},{"fromId":4,"weight":0.22130756,"enabled":true},{"fromId":11,"weight":-1.2067285,"enabled":true},{"fromId":9,"weight":-0.40337855,"enabled":true},{"fromId":3,"weight":0.26519522,"enabled":true},{"fromId":156,"weight":0.4456704,"enabled":true},{"fromId":169,"weight":0.96954924,"enabled":true}]},{"id":42,"x":0.49999997,"incoming":[{"fromId":9,"weight":0.25949907,"enabled":true},{"fromId":0,"weight":0.98366356,"enabled":true},{"fromId":5,"weight":0.1588257,"enabled":true},{"fromId":11,"weight":1.5999814,"enabled":true}]},{"id":43,"x":0.49999997,"incoming":[{"fromId":2,"weight":0.7223487,"enabled":true},{"fromId":0,"weight":-0.07819393,"enabled":true},{"fromId":4,"weight":-0.8469484,"enabled":true}]},{"id":44,"x":0.49999997,"incoming":[{"fromId":11,"weight":-1.4815595,"enabled":true},{"fromId":0,"weight":1.1481223,"enabled":true}]},{"id":45,"x":0.49999997,"incoming":[{"fromId":8,"weight":-0.5083741,"enabled":true},{"fromId":0,"weight":0.78522456,"enabled":true}]},{"id":46,"x":0.49999997,"incoming":[{"fromId":9,"weight":0.43718413,"enabled":true},{"fromId":0,"weight":-0.038320426,"enabled":true},{"fromId":1,"weight":0.105907455,"enabled":true},{"fromId":2,"weight":-0.58617306,"enabled":true},{"fromId":5,"weight":0.047705293,"enabled":true},{"fromId":10,"weight":-0.28660116,"enabled":true},{"fromId":47,"weight":0.6828208,"enabled":true},{"fromId":6,"weight":-0.112256505,"enabled":true},{"fromId":11,"weight":-0.35031062,"enabled":true},{"fromId":142,"weight":0.15660088,"enabled":true}]},{"id":49,"x":0.49999997,"incoming":[{"fromId":5,"weight":1.0409725,"enabled":true},{"fromId":0,"weight":0.06528221,"enabled":true}]},{"id":51,"x":0.49999997,"incoming":[{"fromId":12,"weight":1.213491,"enabled":true},{"fromId":0,"weight":-0.78576064,"enabled":true},{"fromId":8,"weight":-1.1854901,"enabled":true},{"fromId":9,"weight":-2.7525127,"enabled":true},{"fromId":174,"weight":-2.7437499,"enabled":true}]},{"id":52,"x":0.49999997,"incoming":[{"fromId":5,"weight":0.5771716,"enabled":true},{"fromId":0,"weight":-0.81940556,"enabled":true}]},{"id":57,"x":0.49999997,"incoming":[{"fromId":2,"weight":0.11596434,"enabled":true},{"fromId":0,"weight":-0.7709476,"enabled":true}]},{"id":64,"x":0.49999997,"incoming":[{"fromId":9,"weight":0.36887053,"enabled":true},{"fromId":0,"weight":-0.8471908,"enabled":true},{"fromId":10,"weight":0.73166144,"enabled":true},{"fromId":11,"weight":-0.7821404,"enabled":true},{"fromId":1,"weight":1.5330994,"enabled":true}]},{"id":67,"x":0.49999997,"incoming":[{"fromId":7,"weight":0.5706729,"enabled":true},{"fromId":0,"weight":-0.048603125,"enabled":true},{"fromId":6,"weight":0.5699382,"enabled":true}]},{"id":82,"x":0.49999997,"incoming":[{"fromId":12,"weight":0.54029274,"enabled":true},{"fromId":0,"weight":0.18460958,"enabled":true},{"fromId":7,"weight":-1.2513688,"enabled":true}]},{"id":94,"x":0.49999997,"incoming":[{"fromId":10,"weight":-0.3028361,"enabled":true},{"fromId":0,"weight":0.44351012,"enabled":true}]},{"id":61,"x":0.7,"incoming":[{"fromId":22,"weight":-0.4289503,"enabled":true},{"fromId":0,"weight":-0.49135128,"enabled":true},{"fromId":29,"weight":-0.22232087,"enabled":true},{"fromId":36,"weight":1.2372675,"enabled":true},{"fromId":11,"weight":-0.2707971,"enabled":true},{"fromId":1,"weight":0.41976425,"enabled":true}]},{"id":80,"x":0.7,"incoming":[{"fromId":28,"weight":0.76458806,"enabled":true},{"fromId":0,"weight":1.3328228,"enabled":true}]},{"id":137,"x":0.7,"incoming":[{"fromId":36,"weight":0.18074742,"enabled":true},{"fromId":0,"weight":0.47848338,"enabled":true},{"fromId":47,"weight":-0.3503705,"enabled":true}]}],"outputs":[{"id":13,"x":0.9,"incoming":[{"fromId":0,"weight":0.8489344,"enabled":true},{"fromId":1,"weight":1.7435569,"enabled":true},{"fromId":2,"weight":0.09558889,"enabled":true},{"fromId":3,"weight":-0.3189107,"enabled":true},{"fromId":4,"weight":0.90253204,"enabled":true},{"fromId":5,"weight":0.40512154,"enabled":true},{"fromId":6,"weight":0.022068426,"enabled":true},{"fromId":7,"weight":0.5527247,"enabled":true},{"fromId":8,"weight":-0.24080929,"enabled":true},{"fromId":9,"weight":-0.63626856,"enabled":true},{"fromId":10,"weight":-0.11889595,"enabled":true},{"fromId":11,"weight":0.103898585,"enabled":true},{"fromId":12,"weight":-1.9707518,"enabled":true},{"fromId":24,"weight":1.0570796,"enabled":true},{"fromId":34,"weight":-0.6206633,"enabled":true},{"fromId":49,"weight":0.6805499,"enabled":true},{"fromId":37,"weight":0.008294433,"enabled":true},{"fromId":51,"weight":0.30816755,"enabled":true},{"fromId":82,"weight":0.6758362,"enabled":true},{"fromId":26,"weight":1.1180416,"enabled":true},{"fromId":67,"weight":-0.6929537,"enabled":true}]},{"id":14,"x":0.9,"incoming":[{"fromId":0,"weight":0.5834821,"enabled":true},{"fromId":1,"weight":-1.3229873,"enabled":true},{"fromId":2,"weight":1.2751708,"enabled":true},{"fromId":3,"weight":-1.4780912,"enabled":true},{"fromId":4,"weight":0.4440413,"enabled":true},{"fromId":5,"weight":-2.103299,"enabled":true},{"fromId":6,"weight":0.69142044,"enabled":true},{"fromId":7,"weight":0.21513775,"enabled":true},{"fromId":8,"weight":-0.16004284,"enabled":true},{"fromId":9,"weight":0.4217276,"enabled":true},{"fromId":10,"weight":0.54439163,"enabled":true},{"fromId":11,"weight":-0.15912816,"enabled":true},{"fromId":12,"weight":-0.27535063,"enabled":true},{"fromId":18,"weight":-0.21414359,"enabled":true},{"fromId":22,"weight":-0.12528804,"enabled":true},{"fromId":25,"weight":0.5284929,"enabled":true},{"fromId":32,"weight":-0.49929798,"enabled":true},{"fromId":36,"weight":0.14917468,"enabled":true},{"fromId":28,"weight":1.240942,"enabled":true},{"fromId":57,"weight":0.16037054,"enabled":true},{"fromId":61,"weight":-0.32510173,"enabled":true},{"fromId":64,"weight":0.47228408,"enabled":true},{"fromId":17,"weight":0.10126019,"enabled":true},{"fromId":37,"weight":-0.27108335,"enabled":true},{"fromId":137,"weight":0.42850506,"enabled":true}]},{"id":15,"x":0.9,"incoming":[{"fromId":0,"weight":-0.095100716,"enabled":true},{"fromId":1,"weight":0.49145037,"enabled":true},{"fromId":2,"weight":-0.117602795,"enabled":true},{"fromId":3,"weight":0.7718548,"enabled":true},{"fromId":4,"weight":0.6772822,"enabled":true},{"fromId":5,"weight":0.23492894,"enabled":true},{"fromId":6,"weight":1.3584967,"enabled":true},{"fromId":7,"weight":0.38494068,"enabled":true},{"fromId":8,"weight":0.6689533,"enabled":true},{"fromId":9,"weight":-0.82131505,"enabled":true},{"fromId":10,"weight":-1.2322628,"enabled":true},{"fromId":11,"weight":-0.2102966,"enabled":true},{"fromId":12,"weight":-0.038619325,"enabled":true},{"fromId":17,"weight":0.5491561,"enabled":true},{"fromId":23,"weight":0.22385696,"enabled":true},{"fromId":26,"weight":0.4961376,"enabled":true},{"fromId":28,"weight":-0.4993202,"enabled":true},{"fromId":29,"weight":-0.90252453,"enabled":true},{"fromId":35,"weight":0.259121,"enabled":true},{"fromId":37,"weight":0.34430844,"enabled":true},{"fromId":38,"weight":1.3568952,"enabled":true},{"fromId":42,"weight":-0.03744307,"enabled":true},{"fromId":51,"weight":0.6172887,"enabled":true},{"fromId":52,"weight":-0.830686,"enabled":true},{"fromId":80,"weight":-0.059826232,"enabled":true},{"fromId":47,"weight":0.022520773,"enabled":true}]},{"id":16,"x":0.9,"incoming":[{"fromId":0,"weight":0.05752715,"enabled":true},{"fromId":1,"weight":0.17750078,"enabled":true},{"fromId":2,"weight":-0.16059414,"enabled":true},{"fromId":3,"weight":-0.69479257,"enabled":true},{"fromId":4,"weight":1.2423437,"enabled":true},{"fromId":5,"weight":-0.7319915,"enabled":true},{"fromId":6,"weight":1.0490878,"enabled":true},{"fromId":7,"weight":-0.5577472,"enabled":true},{"fromId":8,"weight":0.6106347,"enabled":true},{"fromId":9,"weight":-0.4465298,"enabled":true},{"fromId":10,"weight":1.3088456,"enabled":true},{"fromId":11,"weight":0.7235506,"enabled":true},{"fromId":12,"weight":0.13476378,"enabled":true},{"fromId":33,"weight":-0.86628056,"enabled":true},{"fromId":39,"weight":2.253516,"enabled":true},{"fromId":41,"weight":0.5718906,"enabled":true},{"fromId":43,"weight":-0.8556352,"enabled":true},{"fromId":44,"weight":-0.78872555,"enabled":true},{"fromId":45,"weight":0.31282192,"enabled":true},{"fromId":46,"weight":-0.52201295,"enabled":true},{"fromId":67,"weight":-0.10036896,"enabled":true},{"fromId":22,"weight":-1.0645776,"enabled":true},{"fromId":64,"weight":-0.3860336,"enabled":true},{"fromId":94,"weight":0.4999118,"enabled":true},{"fromId":35,"weight":0.22714612,"enabled":true},{"fromId":49,"weight":-1.4732869,"enabled":true}]}]}
54 changes: 54 additions & 0 deletions core/src/main/java/com/buaisociety/pacman/Clusters.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package com.buaisociety.pacman;

import org.joml.Vector2i;

import java.util.ArrayList;
import java.util.List;

public class Clusters {

/**
* Identifies clusters of points (pellets) within a given distance threshold.
*
* @param points List of points (Vector2i) representing pellet positions.
* @param distanceThreshold The maximum distance to consider points as part of the same cluster.
* @return A list of clusters, where each cluster is a list of Vector2i points.
*/
public List<List<Vector2i>> identifyClusters(List<Vector2i> points, double distanceThreshold) {
List<List<Vector2i>> clusters = new ArrayList<>();
boolean[] visited = new boolean[points.size()];

for (int i = 0; i < points.size(); i++) {
if (!visited[i]) {
List<Vector2i> cluster = new ArrayList<>();
findCluster(points, i, visited, cluster, distanceThreshold);
clusters.add(cluster);
}
}
return clusters;
}

/**
* Recursively finds all points in the same cluster as the given point.
*
* @param points List of points (Vector2i) to check.
* @param index The index of the point to check.
* @param visited Array to track visited points.
* @param cluster List to accumulate points in the current cluster.
* @param distanceThreshold The maximum distance to consider points as part of the same cluster.
*/
private void findCluster(List<Vector2i> points, int index, boolean[] visited, List<Vector2i> cluster, double distanceThreshold) {
visited[index] = true;
cluster.add(points.get(index));

Vector2i currentPoint = points.get(index);
for (int i = 0; i < points.size(); i++) {
if (!visited[i]) {
Vector2i neighborPoint = points.get(i);
if (currentPoint.distance(neighborPoint) <= distanceThreshold) {
findCluster(points, i, visited, cluster, distanceThreshold);
}
}
}
}
}
11 changes: 6 additions & 5 deletions core/src/main/java/com/buaisociety/pacman/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,9 @@ public void create() {

public @NotNull Neat createNeat() {
// Change this to true/false as needed, if you want to load from file
if (false) {
// TODO: Change this to the exact file you want to load
File exactFile = new File("saves" + File.separator + "oct26-4" + File.separator + "generation-51.json");
if (true) {
// TODO: Change this to the exact file you wan q t to load
File exactFile = new File("saves" + File.separator + "oct26-24" + File.separator + "generation-91.json");
// load exactFile contents to string
String json;
try {
Expand All @@ -115,7 +115,7 @@ public void create() {
}
NeatImpl impl = NeatImpl.fromJson(json);
// modify this as needed
//impl.updateNodeCounts(8, 4); // Add 4 new inputs
impl.updateNodeCounts(12, 4); // Add 4 new inputs
//impl.updateClients(200); // have 200 pacman games at once
return impl;
} else {
Expand All @@ -125,7 +125,8 @@ public void create() {
neatParameters.setTargetClientsPerSpecies(12); // targeting ~12 clients per species
neatParameters.setStagnationLimit(10); // lower stagnation limit
neatParameters.setUseBiasNode(true); // use bias node
return new NeatImpl(4, 4, totalGames, neatParameters);
// CHANGE THE PARAMETER TO # OF INPUTS
return new NeatImpl(12,4, totalGames, neatParameters);
}
}

Expand Down
Loading