Skip to content

Commit

Permalink
Wersja odpalana na serwerze
Browse files Browse the repository at this point in the history
- poprawiony błąd similarity przy plusevo
- wklejone target values dla magic number=1.6
- czytelniejsze nazwy tworzonych folderów/plików
- poprawione skrypty przygotowawcze i dodany skrypt uruchamiania
- COMMA separated value files zmienione na comma
  • Loading branch information
acatai committed Nov 7, 2017
1 parent 2519c53 commit fa4e79b
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 41 deletions.
14 changes: 7 additions & 7 deletions resources/configuration/chess.csv
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Name;widthRatio;heightRatio;areaRatio;topRatio;middleRatio;symmetryRatio;innerhalfXRatio;baseTriangleAreaRatio;piecelikeTriangleAreaRatio;perimeterRatio;straightLineRatio;sharpAnglesRatio;gentleAnglesRatio
P;0.45;0.525;0.119;0.293;0.286;1;0.846;1;0.732;0.409;0;0.222;0.333
R;0.539;0.625;0.19;0.461;0.178;1;0.732;0.92;0.496;0.449;0.287;0;0.294
N;0.598;0.8;0.293;0.312;0.309;0.776;0.732;0.922;0.58;0.436;0.037;0;0.667
B;0.523;0.825;0.186;0.261;0.296;1;0.877;1;0.792;0.436;0;0.154;0.385
Q;0.523;0.9;0.204;0.238;0.287;1;0.852;0.981;0.809;0.493;0;0.267;0.333
K;0.523;0.975;0.255;0.349;0.25;1;0.826;0.875;0.691;0.47;0;0.4;0.333
Name,widthRatio,heightRatio,areaRatio,topRatio,middleRatio,symmetryRatio,innerhalfXRatio,baseTriangleAreaRatio,piecelikeTriangleAreaRatio,perimeterRatio,straightLineRatio,sharpAnglesRatio,gentleAnglesRatio
P,0.45,0.525,0.119,0.293,0.286,1,0.846,1,0.732,0.409,0,0.222,0.333
R,0.539,0.625,0.19,0.461,0.178,1,0.732,0.92,0.496,0.449,0.287,0,0.294
N,0.598,0.8,0.293,0.312,0.309,0.776,0.732,0.922,0.58,0.436,0.037,0,0.667
B,0.523,0.825,0.186,0.261,0.296,1,0.877,1,0.792,0.436,0,0.154,0.385
Q,0.523,0.9,0.204,0.238,0.287,1,0.852,0.981,0.809,0.493,0,0.267,0.333
K,0.523,0.975,0.255,0.349,0.25,1,0.826,0.875,0.691,0.47,0,0.4,0.333
12 changes: 6 additions & 6 deletions resources/configuration/ibis.csv
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
Name;widthRatio;heightRatio;areaRatio;topRatio;middleRatio;symmetryRatio;innerhalfXRatio;baseTriangleAreaRatio;piecelikeTriangleAreaRatio;perimeterRatio;straightLineRatio;sharpAnglesRatio;gentleAnglesRatio
A;0.539;0.625;0.19;0.461;0.178;1;0.732;0.92;0.496;0.449;0.287;0;0.294
B;0.523;0.975;0.255;0.349;0.25;1;0.826;0.875;0.691;0.47;0;0.4;0.333
C;0.530749402764061;0.766807139992694;0.197219272581446;0.346007301024106;0.234207193669831;1;0.793879479269539;0.951455401962016;0.657402308428048;0.471689142398831;0.139004912080352;0.137681841374725;0.3141108307626
K;0.554486212827431;0.808698513579772;0.249246961683358;0.369064253234875;0.249654581947213;0.920149485785055;0.764581823253824;0.90511526967486;0.59353389532524;0.451644736332415;0.098402577061499;0.138646056399253;0.440483355687206
P;0.523;0.825;0.186;0.261;0.296;1;0.877;1;0.792;0.436;0;0.154;0.385
Name,widthRatio,heightRatio,areaRatio,topRatio,middleRatio,symmetryRatio,innerhalfXRatio,baseTriangleAreaRatio,piecelikeTriangleAreaRatio,perimeterRatio,straightLineRatio,sharpAnglesRatio,gentleAnglesRatio
A,0.539,0.625,0.19,0.461,0.178,1,0.732,0.92,0.496,0.449,0.287,0,0.294
B,0.5297295854,0.8277903195,0.2276610593,0.3961070978,0.2197168657,1,0.7864636858,0.8939269589,0.608983178,0.4611674192,0.120711938,0.2317603651,0.3165966356
C,0.5306302047,0.7688558568,0.1973235709,0.344345978,0.2350192305,1,0.7947734648,0.9519098446,0.6597341206,0.4720169371,0.1368667968,0.1396709591,0.314401376
K,0.5484426741,0.8273649592,0.2407060618,0.3429556521,0.2573423412,0.9352595175,0.7817919713,0.9199120226,0.6361017027,0.4597294773,0.07824947232,0.1642202054,0.4203526366
P,0.5545358614,0.8144880462,0.2309911622,0.2824443857,0.301466216,0.905812894,0.816030668,0.9672027042,0.7028586318,0.436,0.01555769162,0.08924636462,0.5035748388
14 changes: 7 additions & 7 deletions resources/configuration/weather.csv
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Name;widthRatio;heightRatio;areaRatio;topRatio;middleRatio;symmetryRatio;innerhalfXRatio;baseTriangleAreaRatio;piecelikeTriangleAreaRatio;perimeterRatio;straightLineRatio;sharpAnglesRatio;gentleAnglesRatio
B;0.523;0.905372085939671;0.222971159532249;0.308151623751274;0.271352560311834;1;0.849673490780512;0.933023261716941;0.737882795467288;0.454217672812992;0;0.28581022094106;0.357137676874247
C;0.486684980296383;0.751140289498251;0.187344620826138;0.321141902693116;0.26790877684014;1;0.835949320466744;0.937183252917152;0.711396106956826;0.43965457257643;0;0.311451047845975;0.333
D;0.598;0.8;0.293;0.312;0.309;0.776;0.732;0.922;0.58;0.436;0.037;0;0.667
E;0.523;0.825;0.186;0.261;0.296;1;0.877;1;0.792;0.436;0;0.154;0.385
K;0.523;0.975;0.255;0.349;0.25;1;0.826;0.875;0.691;0.47;0;0.4;0.333
P;0.523;0.934613848616964;0.227537417059535;0.289228495953106;0.269923834682298;1;0.840000532479453;0.932079093954691;0.754540878175977;0.482385086424131;0;0.328381891547415;0.333
Name,widthRatio,heightRatio,areaRatio,topRatio,middleRatio,symmetryRatio,innerhalfXRatio,baseTriangleAreaRatio,piecelikeTriangleAreaRatio,perimeterRatio,straightLineRatio,sharpAnglesRatio,gentleAnglesRatio
B,0.529213676,0.7473290502,0.187553419,0.3386709498,0.2501741396,1,0.8206885614,0.9689316201,0.6770469943,0.4410486117,0.111457813,0.09419336864,0.3496597178
C,0.529768871,0.7836600292,0.1980772379,0.3323411399,0.2408870661,1,0.8012334673,0.9551936792,0.6765839605,0.4743856047,0.121416624,0.1540444647,0.3165008769
D,0.5313821654,0.7559315323,0.1966656053,0.3548264302,0.2298964982,1,0.7891337595,0.9490429944,0.6450238894,0.4699490452,0.1503550918,0.127122615,0.3125684718
E,0.523,0.975,0.255,0.349,0.25,1,0.826,0.875,0.691,0.47,0,0.4,0.333
K,0.45,0.525,0.119,0.293,0.286,1,0.846,1,0.732,0.409,0,0.222,0.333
P,0.539,0.625,0.19,0.461,0.178,1,0.732,0.92,0.496,0.449,0.287,0,0.294
12 changes: 8 additions & 4 deletions src/com/lukzar/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,18 @@ public static void main(String[] args) throws IOException {
final Set<String> targets = new HashSet<>(Configuration.targetFeatureValues.keySet());
targets.remove("AVG");

//PieceSetEvolver.EvolverPlusEvolver("AVG", 5, 100, 100, targets, 2, 100, 20, "A");
//PieceSetEvolver.EvolverPlusEvolver(game, "AVG", 5, 100, 100, targets, 2, 100, 20, "A");

Random rnd = new Random();

String testname = args.length>0?args[0]:"A";
Configuration.INIT_POP_SHAPE= Configuration.InitShape.triangle;
for (int test=1; test <= 100; test++)
int maxtests=100;
for (int test=1; test <= maxtests; test++)
{
int generations = 50+50*rnd.nextInt(16); // 50-700
System.out.println(game+testname+test+"/"+maxtests);

int generations = 50+50*rnd.nextInt(11); // 50-550
int populationSize = 200+100*rnd.nextInt(9); // 200-1000
int initPopulationSize = 100+100*rnd.nextInt(5); // 100-500
int secondaryGenerations = 1 + 1*rnd.nextInt(10); // 1-10
Expand All @@ -57,7 +61,7 @@ public static void main(String[] args) throws IOException {
Configuration.Evolution.Mutation.CHANCE_TO_SPLIT_LINE = 0.5+0.1*rnd.nextInt(6); // 0.5-1.0
Configuration.Evolution.Mutation.OFFSET = 20 + 10*rnd.nextInt(4); // 20-50;

PieceSetEvolver.EvolverPlusEvolver("AVG", generations, populationSize, initPopulationSize, targets, secondaryGenerations, secondaryPopulationSize, secondaryInitPopulationSize, game+"A"+test);
PieceSetEvolver.EvolverPlusEvolver(game, "AVG", generations, populationSize, initPopulationSize, targets, secondaryGenerations, secondaryPopulationSize, secondaryInitPopulationSize, testname+test);
}


Expand Down
2 changes: 1 addition & 1 deletion src/com/lukzar/config/ConfigLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
*/
public class ConfigLoader {

private static final String separator = ";";
private static final String separator = ",";

public static Map<String, Map<Feature, Double>> getConfig(String path) throws IOException {
final Map<String, Map<Feature, Double>> result = new HashMap<>();
Expand Down
35 changes: 22 additions & 13 deletions src/com/lukzar/services/PieceSetEvolver.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
*/
public class PieceSetEvolver {

public static List<Piece> SimpleGeneration(String target,
public static List<Piece> SimpleGeneration(String game,
String target,
int generations,
int populationSize,
int initialPopulationSize,
Expand All @@ -29,16 +30,18 @@ public static List<Piece> SimpleGeneration(String target,
System.out.println("Initial population size: " + initialize.size());

Main.writeToFile(initialize,
String.format("out%s/%s-%s_%s",
String.format("out%s/%s-%s-%s_%s",
subdir == null ? "" : "/" + subdir,
game,
target,
Configuration.InitPopShapeStr(),
0));

return SimpleGeneration(target, generations, populationSize, initialize, subdir);
return SimpleGeneration(game, target, generations, populationSize, initialize, subdir);
}

public static List<Piece> SimpleGeneration(final String target,
public static List<Piece> SimpleGeneration(final String game,
final String target,
final int generations,
final int populationSize,
final Collection<Piece> startPopulation,
Expand All @@ -57,8 +60,9 @@ public static List<Piece> SimpleGeneration(final String target,

System.out.println(new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime()) + " >> " + "Population " + i+"/"+Configuration.NUMBER_OF_GENERATIONS + " size: " + population.size());
Main.writeToFile(population,
String.format("out%s/%s-%s_%s",
String.format("out%s/%s-%s-%s_%s",
subdir == null ? "" : "/" + subdir,
game,
target,
Configuration.InitPopShapeStr(),
i));
Expand All @@ -68,7 +72,8 @@ public static List<Piece> SimpleGeneration(final String target,
}

@Deprecated
public static Collection<Piece> EvolverPlusPicker(String target,
public static Collection<Piece> EvolverPlusPicker(String game,
String target,
int generations,
int populationSize,
int initPopulationSize,
Expand All @@ -90,7 +95,7 @@ public static Collection<Piece> EvolverPlusPicker(String target,
final Collection<Piece> chosen = new ArrayList<>();
final HashMap<Piece, String> chosenNames = new HashMap<>();

final List<Piece> finalPopulation = SimpleGeneration(target, generations, populationSize, initPopulationSize, subdir);
final List<Piece> finalPopulation = SimpleGeneration(game, target, generations, populationSize, initPopulationSize, subdir);

final Piece best = finalPopulation.get(0);
chosen.add(best);
Expand Down Expand Up @@ -203,7 +208,8 @@ public static void JustPicker(String target,
Main.writeToFile(chosen, String.format("out/Picker%s", evolver_subdir.substring(evolver_subdir.indexOf("-")+1)), chosenNames);
}

public static ArrayList<Piece> EvolverPlusEvolver(String target,
public static ArrayList<Piece> EvolverPlusEvolver(String game,
String target,
int generations,
int populationSize,
int initPopulationSize,
Expand All @@ -212,14 +218,18 @@ public static ArrayList<Piece> EvolverPlusEvolver(String target,
int secondaryPopulationSize,
int secondaryInitPopulationSize,
String testname) throws IOException {
String subdir = String.format("Evolver-%s_%s-%s_%d-%d_%d-%d%S",
/*String subdir = String.format("Evolver-%s_%s-%s_%d-%d_%d-%d%S",
Configuration.InitPopShapeStr(),
target,
pickerPieces,
generations,
populationSize,
secondaryGenerations,
secondaryPopulationSize,
testname == null ? "" : ("_" + testname));*/
String subdir = String.format("Evolver-%s-%s%s",
game,
Configuration.InitPopShapeStr(),
testname == null ? "" : ("_" + testname));

File directory = new File("out/" + subdir);
Expand All @@ -230,7 +240,7 @@ public static ArrayList<Piece> EvolverPlusEvolver(String target,
final ArrayList<Piece> chosen = new ArrayList<>();
final HashMap<Piece, String> chosenNames = new HashMap<>();

final List<Piece> finalPopulation = SimpleGeneration(target, generations, populationSize, initPopulationSize, subdir);
final List<Piece> finalPopulation = SimpleGeneration(game, target, generations, populationSize, initPopulationSize, subdir);

final Piece best = finalPopulation.get(0);
chosen.add(best);
Expand All @@ -239,6 +249,7 @@ public static ArrayList<Piece> EvolverPlusEvolver(String target,

JustPicker(target, finalPopulation, pickerPieces, subdir);

final HashSet<Piece> picked = new HashSet<>();

for (String subtarget : pickerPieces) {
Configuration.TARGET_PIECE = subtarget;
Expand All @@ -251,10 +262,8 @@ public static ArrayList<Piece> EvolverPlusEvolver(String target,
secInitPop.add(p);
}

List<Piece> secResult = SimpleGeneration(subtarget, secondaryGenerations, secondaryPopulationSize, secInitPop, subdir);

List<Piece> secResult = SimpleGeneration(game, subtarget, secondaryGenerations, secondaryPopulationSize, secInitPop, subdir);

final HashSet<Piece> picked = new HashSet<>();
Piece subBest = null;
int skipped = 0;
for (Piece candidate : secResult)
Expand Down
9 changes: 6 additions & 3 deletions src/prepare.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
import shutil
import subprocess


# 0. clear 'out' and 'resources'
shutil.rmtree('out')
shutil.rmtree('resources')
# 1. add 'out' directory to /src
if not os.path.exists("out"): os.mkdir("out"); print('INFO: "out" directory created')
# 2. copy 'resources to \src
Expand All @@ -23,5 +25,6 @@
#What to do:

#1. run this script on my machine
#2. copy everything to remote
#3. nohup java com.lukzar.Main B > B.out &
#2. copy 'src' to remote
#3a. ./run.sh A
#3b. nohup java com.lukzar.Main A > A.out &
9 changes: 9 additions & 0 deletions src/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/bin/bash

if [ -z $1 ]
then
echo "ERROR. Testname unset. Expected parameter"
exit 1
fi

nohup java com.lukzar.Main $1 > ${1}.out &

0 comments on commit fa4e79b

Please sign in to comment.