Skip to content
Snippets Groups Projects
Commit 8d64e669 authored by Hugo Roussel's avatar Hugo Roussel
Browse files

Updated XmlConfigGenerator

parent a9504863
No related branches found
No related tags found
2 merge requests!3Merge masters,!2Merge dev into develop
package experiments;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
public class XmlConfigGenerator {
public XmlConfigGenerator() {
}
public static String makeLineXML(String sensorName, String source) {
return "\t\t<Sensor Name=\""+sensorName+"\" Source=\""+source+"\"></Sensor>\n";
}
public static void makeXML(String XMLFile, int dimension) {
String path = "Ressources";
try {
File file = new File(path+"/"+XMLFile);
FileWriter fw = new FileWriter(file);
//Make content
String str = "";
str += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<System>\n" +
"\n" +
"\t<!-- General config options -->\n" +
"\t<Configuration>\n" +
"\t\t<Learning allowed = \"true\" creationOfNewContext = \"true\" loadPresetContext = \"false\"></Learning> \n" +
"\t</Configuration>\n" +
"\n" +
"\t<StartingAgents>\n";
for(int j = 0; j < dimension; ++j) {
str += makeLineXML("px"+j,"x"+j);
}
str += "\t\t<Controller Name=\"Controller\" Oracle=\"test\"></Controller>\n\n";
str += "\t</StartingAgents>\n" +
"\n" +
"</System>";
//Write and close file
fw.write(str);
fw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String XMLConfigFile = "nDimensionLauncher.xml";
XmlConfigGenerator.makeXML(XMLConfigFile, 2);
}
}
......@@ -4,13 +4,8 @@ import java.io.File;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import agents.context.Context;
import experiments.FILE;
import experiments.F_XY_System;
import experiments.XmlConfigGenerator;
import fr.irit.smac.amak.Configuration;
import gui.AmoebaWindow;
import kernel.AMOEBA;
......
package utils;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
public class XmlConfigGenerator {
public static String header = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
public static String systemStart = "<System>\n";
public static String configurationStart = "<Configuration>\n";
public static String configuration = " <Learning allowed = \"%s\" creationOfNewContext = \"%s\" loadPresetContext = \"%s\" />\n";
public static String configurationEnd = "</Configuration>\n";
public static String agentsStart = "<StartingAgents>\n";
public static String sensor = " <Sensor Name=\"%s\" Enum=\"%s\" />\n";
public static String controller = " <Controller Name=\"Controller\">\n" +
" <ErrorMargin ErrorAllowed=\"%f\" AugmentationFactorError=\"%f\" DiminutionFactorError=\"%f\" MinErrorAllowed=\"%f\" NConflictBeforeAugmentation=\"%d\" NSuccessBeforeDiminution=\"%d\" />\n" +
" </Controller>\n";
public static String agentsEnd = "</StartingAgents>\n";
public static String systemEnd = "</System>\n";
private static String makeSensor(String sensorName, boolean isEnum) {
return String.format(sensor, sensorName, ""+isEnum);
}
private static String makeConfiguration(boolean isLearningAllowed, boolean isCreationOfNewContext, boolean isLoadContext) {
return String.format(configuration, ""+isLearningAllowed, ""+isCreationOfNewContext, ""+isLoadContext);
}
private static String makeController(double errorAllowed, double augmentationFactorError, double diminutionFactorError, double minErrorAllowed, int nConflictBeforeAugmentation, int nSuccessBeforeDiminution) {
return String.format(Locale.ENGLISH, controller, errorAllowed, augmentationFactorError, diminutionFactorError, minErrorAllowed, nConflictBeforeAugmentation, nSuccessBeforeDiminution);
}
public static void makeXML(File file, List<Pair<String, Boolean>> sensors) throws IOException {
try(FileWriter fw = new FileWriter(file)){
fw.write(header);
fw.write(systemStart);
fw.write(configurationStart);
fw.write(makeConfiguration(true, true, false));
fw.write(configurationEnd);
fw.write(agentsStart);
for(Pair<String, Boolean> s : sensors) {
fw.write(makeSensor(s.getA(), s.getB()));
}
fw.write(makeController(1.0, 0.5, 0.5, 0.01, 50, 50));
fw.write(agentsEnd);
fw.write(systemEnd);
}
}
public static void makeXML(File file, int dimension) throws IOException {
ArrayList<Pair<String, Boolean>> sensors = new ArrayList<>(dimension);
for(int i = 1; i <= dimension; i++) {
sensors.add(new Pair<String, Boolean>("p"+i, false));
}
makeXML(file, sensors);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment