mirror of
https://github.com/fazo96/AIrium.git
synced 2025-03-29 21:18:39 +01:00
Optimization and bug fixing
This commit is contained in:
parent
5c44b30cc6
commit
b0251e1626
@ -8,7 +8,6 @@ import com.badlogic.gdx.graphics.OrthographicCamera;
|
|||||||
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
import com.badlogic.gdx.graphics.glutils.ShapeRenderer;
|
||||||
import com.badlogic.gdx.math.Vector3;
|
import com.badlogic.gdx.math.Vector3;
|
||||||
import java.util.ConcurrentModificationException;
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.Map;
|
|
||||||
import logic.creatures.Creature;
|
import logic.creatures.Creature;
|
||||||
import logic.Element;
|
import logic.Element;
|
||||||
import logic.World;
|
import logic.World;
|
||||||
|
@ -176,14 +176,14 @@ public class Serializer {
|
|||||||
+ "draw_view_cones = 0.0\n"
|
+ "draw_view_cones = 0.0\n"
|
||||||
+ "world_width = 2000.0\n"
|
+ "world_width = 2000.0\n"
|
||||||
+ "world_height = 2000.0\n"
|
+ "world_height = 2000.0\n"
|
||||||
+ "number_of_plants = 700.0\n"
|
+ "number_of_plants = 200.0\n"
|
||||||
+ "nMutatedNeurons = 0.2\n"
|
+ "nMutatedNeurons = 0.2\n"
|
||||||
+ "enable_corpses = 0.0\n"
|
+ "enable_corpses = 0.0\n"
|
||||||
+ "nMutatedBrains = 0.5\n"
|
+ "nMutatedBrains = 0.5\n"
|
||||||
+ "nMutatedConnections = 0.5\n"
|
+ "nMutatedConnections = 0.5\n"
|
||||||
+ "number_of_creatures = 25.0\n"
|
+ "number_of_creatures = 15.0\n"
|
||||||
+ "draw_sight_lines = 0.0\n"
|
+ "draw_sight_lines = 0.0\n"
|
||||||
+ "vegetable_size = 5\n"
|
+ "vegetable_size = 20\n"
|
||||||
+ "creature_max_hp = 100\n"
|
+ "creature_max_hp = 100\n"
|
||||||
+ "creature_fov = 1.5\n"
|
+ "creature_fov = 1.5\n"
|
||||||
+ "creature_hp_decay = 0.5\n"
|
+ "creature_hp_decay = 0.5\n"
|
||||||
@ -194,8 +194,8 @@ public class Serializer {
|
|||||||
+ "creature_points_for_attacking = 2.0\n"
|
+ "creature_points_for_attacking = 2.0\n"
|
||||||
+ "creature_sight_range = 100.0\n"
|
+ "creature_sight_range = 100.0\n"
|
||||||
+ "creature_radius = 20.0\n"
|
+ "creature_radius = 20.0\n"
|
||||||
+ "brain_hidden_neurons = 10.0\n"
|
+ "brain_hidden_neurons = 20.0\n"
|
||||||
+ "brain_hidden_layers = 2.0\n"
|
+ "brain_hidden_layers = 3.0\n"
|
||||||
+ "brain_bias = 0.5\n";
|
+ "brain_bias = 0.5\n";
|
||||||
defaults = Serializer.readSettings(s);
|
defaults = Serializer.readSettings(s);
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@ public class Creature extends Element implements Runnable {
|
|||||||
|
|
||||||
private final Brain brain;
|
private final Brain brain;
|
||||||
private final Torso torso;
|
private final Torso torso;
|
||||||
private final Beak beak;
|
|
||||||
private final ArrayList<BodyPart> bodyParts;
|
private final ArrayList<BodyPart> bodyParts;
|
||||||
private float dir, fitness = 0;
|
private float dir, fitness = 0;
|
||||||
private boolean workerDone = false, killWorker = false;
|
private boolean workerDone = false, killWorker = false;
|
||||||
@ -40,7 +39,7 @@ public class Creature extends Element implements Runnable {
|
|||||||
dir = (float) (Math.random() * 2 * Math.PI);
|
dir = (float) (Math.random() * 2 * Math.PI);
|
||||||
bodyParts = new ArrayList<BodyPart>();
|
bodyParts = new ArrayList<BodyPart>();
|
||||||
bodyParts.add(torso = new Torso(this));
|
bodyParts.add(torso = new Torso(this));
|
||||||
bodyParts.add(beak = new Beak(0, this));
|
bodyParts.add(new Beak(0, this));
|
||||||
bodyParts.add(new Eye(5, 0, this));
|
bodyParts.add(new Eye(5, 0, this));
|
||||||
bodyParts.add(new Movement(this));
|
bodyParts.add(new Movement(this));
|
||||||
brain = new Brain(howManyInputNeurons(), howManyOutputNeurons(), brain_hidden_layers, brain_hidden_neurons);
|
brain = new Brain(howManyInputNeurons(), howManyOutputNeurons(), brain_hidden_layers, brain_hidden_neurons);
|
||||||
@ -191,6 +190,19 @@ public class Creature extends Element implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public float getDangerLevel() {
|
||||||
|
int beaks = 0;
|
||||||
|
float danger = 0;
|
||||||
|
for (BodyPart b : bodyParts) {
|
||||||
|
if (b instanceof Beak) {
|
||||||
|
beaks++;
|
||||||
|
danger += (((Beak)b).getLength() - Beak.min_length) / Beak.max_length;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(beaks == 0) return 0;
|
||||||
|
return danger / beaks;
|
||||||
|
}
|
||||||
|
|
||||||
public Brain getBrain() {
|
public Brain getBrain() {
|
||||||
return brain;
|
return brain;
|
||||||
}
|
}
|
||||||
@ -207,10 +219,6 @@ public class Creature extends Element implements Runnable {
|
|||||||
return fitness;
|
return fitness;
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getBeak() {
|
|
||||||
return beak.getLength();
|
|
||||||
}
|
|
||||||
|
|
||||||
public Torso getTorso() {
|
public Torso getTorso() {
|
||||||
return torso;
|
return torso;
|
||||||
}
|
}
|
||||||
|
@ -40,8 +40,8 @@ public class Eye extends BodyPart {
|
|||||||
ret[j + 2] = sights[i].getDistance() / sightRange;
|
ret[j + 2] = sights[i].getDistance() / sightRange;
|
||||||
ret[j + 3] = sights[i].getAngle();
|
ret[j + 3] = sights[i].getAngle();
|
||||||
if (sights[i].getElement() instanceof Creature) {
|
if (sights[i].getElement() instanceof Creature) {
|
||||||
ret[i + 4] = ((Creature) sights[i].getElement()).getBeak() / Beak.max_length;
|
ret[i + 4] = ((Creature) sights[i].getElement()).getTorso().getHp() / Torso.max_hp;
|
||||||
ret[i + 5] = ((Creature) sights[i].getElement()).getTorso().getHp() / Torso.max_hp;
|
ret[i + 5] = ((Creature) sights[i].getElement()).getDangerLevel();
|
||||||
} else {
|
} else {
|
||||||
ret[i + 4] = ((Vegetable) sights[i].getElement()).getSize() / Vegetable.default_radius;
|
ret[i + 4] = ((Vegetable) sights[i].getElement()).getSize() / Vegetable.default_radius;
|
||||||
ret[i + 5] = 0;
|
ret[i + 5] = 0;
|
||||||
|
@ -19,6 +19,7 @@ import java.net.URISyntaxException;
|
|||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
import java.util.ConcurrentModificationException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@ -71,20 +72,20 @@ public class GUI extends javax.swing.JFrame implements LogListener, Listener {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
/*
|
/*
|
||||||
ArrayList<SortKey> sk = new ArrayList<SortKey>();
|
ArrayList<SortKey> sk = new ArrayList<SortKey>();
|
||||||
sk.add(new SortKey(0, SortOrder.ASCENDING));
|
sk.add(new SortKey(0, SortOrder.ASCENDING));
|
||||||
DefaultRowSorter rs = new DefaultRowSorter() {};
|
DefaultRowSorter rs = new DefaultRowSorter() {};
|
||||||
settingsTable.setRowSorter(rs);
|
settingsTable.setRowSorter(rs);
|
||||||
rs.setSortKeys(sk);
|
rs.setSortKeys(sk);
|
||||||
rs.setComparator(0, new Comparator() {
|
rs.setComparator(0, new Comparator() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int compare(Object o1, Object o2) {
|
public int compare(Object o1, Object o2) {
|
||||||
return ((String)o1).compareToIgnoreCase((String)o2);
|
return ((String)o1).compareToIgnoreCase((String)o2);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
rs.sort();
|
rs.sort();
|
||||||
*/
|
*/
|
||||||
guiUpdater = new Thread() {
|
guiUpdater = new Thread() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
@ -934,16 +935,20 @@ public class GUI extends javax.swing.JFrame implements LogListener, Listener {
|
|||||||
private void setCreatureList() {
|
private void setCreatureList() {
|
||||||
String list[] = new String[world.getCreatures().size()];
|
String list[] = new String[world.getCreatures().size()];
|
||||||
int selected = -1;
|
int selected = -1;
|
||||||
for (int i = 0; i < list.length; i++) {
|
try {
|
||||||
if (i >= world.getCreatures().size()) {
|
for (int i = 0; i < list.length; i++) {
|
||||||
return;
|
if (i >= world.getCreatures().size()) {
|
||||||
}
|
return;
|
||||||
list[i] = world.getCreatures().get(i).getBrain().getName()
|
}
|
||||||
+ " - Fitness: "
|
list[i] = world.getCreatures().get(i).getBrain().getName()
|
||||||
+ world.getCreatures().get(i).getFitness();
|
+ " - Fitness: "
|
||||||
if (world.getCreatures().get(i) == world.getSelectedCreature()) {
|
+ world.getCreatures().get(i).getFitness();
|
||||||
selected = i;
|
if (world.getCreatures().get(i) == world.getSelectedCreature()) {
|
||||||
|
selected = i;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (IndexOutOfBoundsException ex) {
|
||||||
|
} catch (ConcurrentModificationException ex) {
|
||||||
}
|
}
|
||||||
creatureList.setListData(list);
|
creatureList.setListData(list);
|
||||||
if (selected >= 0) {
|
if (selected >= 0) {
|
||||||
|
Loading…
Reference in New Issue
Block a user