public class MemberCoalitions { public int Id; // player public ArrayList> Coalitions = new ArrayList>(); } public class CombinationResult { public int Id; // player public List Strategy; // player's strategy choosen } public class Model { public static ArrayList<MemberCoalitions> PlayerCoalitions = new ArrayList<MemberCoalitions>(); public static List> Combination= new ArrayList>(); public void CalculStrategiesCombination (Stack <CombinationResult> stack, int index, ArrayList<MemberCoalitions> PlayerCoalitions, int excluded) { index = index +1; if(index != excluded){ if(index < PlayerCoalitions.size()){ for(int j =0; j< PlayerCoalitions.get(index).Coalitions.size(); j++){ CombinationResult ComRest = new CombinationResult(); ComRest.Id = index+1; ComRest.Strategy = PlayerCoalitions.get(index).Coalitions.get(j); Collections.sort(ComRest.Strategy); stack.push(ComRest); CalculStrategiesCombination (stack, index, PlayerCoalitions, excluded); stack.pop(); } } else { this.Combination.add(new ArrayList<CombinationResult>(stack)); } } else {CalculStrategiesCombination (stack, index, PlayerCoalitions, excluded);} } public static void main(String[] args) throws Exception { Model Mod = new Model (); // inserer les joueurs for(int i =0; i < 392; i++){ MemberCoalitions Mc= new MemberCoalitions(); Mc.Id = i+1; // insert player Mod.PlayerCoalitions.add(Mc); } // les stratégies ici, sont les membres d'equipe dont il Appaertient le joueur conerné //(c'est une simulation, j'ai pas encore implémenté la procédure, mon prof m'a demandé de faire comme ça pour l'instant) // 2 équipes for(int i =0; i < 392; i++){ if(i < 392 /2){ ArrayList Coalition = new ArrayList(); for(int j =0; j < 392/2; j++){ Coalition.add(j+1); } Mod.PlayerCoalitions.get(i).Coalitions.add(Coalition); } else { ArrayList Coalition = new ArrayList(); for(int j =392/2; j < 392; j++){ Coalition.add(j+1); } Mod.PlayerCoalitions.get(i).Coalitions.add(Coalition); } } // 3 équipes for(int i =0; i < 392; i++){ if(i <= 130){ // 392/3 ArrayList Coalition = new ArrayList(); for(int j =0; j < 392/2; j++){ Coalition.add(j+1); } Mod.PlayerCoalitions.get(i).Coalitions.add(Coalition); } else if(i < 260 && i > 130){ ArrayList Coalition = new ArrayList(); for(int j =130; j < 260; j++){ Coalition.add(j+1); } Mod.PlayerCoalitions.get(i).Coalitions.add(Coalition); } else { ArrayList Coalition = new ArrayList(); for(int j = 260; j < 392; j++){ Coalition.add(j+1); } Mod.PlayerCoalitions.get(i).Coalitions.add(Coalition); } } for(int i =0; i < Mod.PlayerCoalitions.size(); i++){ Stack <CombinationResult> stack = new Stack <CombinationResult>(); Mod.Combination= new ArrayList>(); Mod.CalculStrategiesCombination(stack, -1, Mod.PlayerCoalitions, i); } Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Unknown Source) at java.util.Arrays.copyOf(Unknown Source) at java.util.Vector.toArray(Unknown Source) at java.util.ArrayList.(Unknown Source) at this line : this.Combination.add(new ArrayList<CombinationResult (stack)); and this line : CalculStrategiesCombination (stack, index, PlayerCoalitions, excluded);
public class MemberCoalitions { public int Id; // player public ArrayList> Coalitions = new ArrayList>(); public class TEST { public void CalculStrategiesCombination ( Document doc, Node Combinations, Stack <Element> stack, int index, ArrayList<MemberCoalitions> PlayerCoalitions, int excluded) { index = index +1; if(index != excluded){ if(index < PlayerCoalitions.size()){ for(int j =0; j< PlayerCoalitions.get(index).Coalitions.size(); j++){ Element Strategy = doc.createElement("Strategy"); Strategy.appendChild(doc.createTextNode(String.valueOf(PlayerCoalitions.get(index).Coalitions.get(j)))); Attr attr = doc.createAttribute("id"); attr.setValue(String.valueOf(index+1)); Strategy.setAttributeNode(attr); stack.push(Strategy); CalculStrategiesCombination (doc,Combinations, stack, index, PlayerCoalitions, excluded); stack.pop(); } } else { Element Combination = doc.createElement("Combination"); for(int i =0; i< stack.size(); i++){ Combination.appendChild(stack.get(i)); } Combinations.appendChild(Combination); } } else {CalculStrategiesCombination (doc, Combinations, stack, index, PlayerCoalitions, excluded);} } public static void main(String argv[]) throws Exception, IOException { public static void main(String argv[]) throws Exception, IOException { ArrayList<MemberCoalitions> PlayerCoalitions = new ArrayList<MemberCoalitions>(); MemberCoalitions m = new MemberCoalitions(); m.Id = 1; ArrayList li= new ArrayList(); li.add(1); m.Coalitions.add(li); ArrayList lz= new ArrayList(); lz.add(1); lz.add(2); m.Coalitions.add(lz); lz= new ArrayList(); lz.add(1); lz.add(2); lz.add(3); m.Coalitions.add(lz); PlayerCoalitions.add(m); m = new MemberCoalitions(); m.Id = 2; li= new ArrayList(); li.add(2); m.Coalitions.add(li); lz= new ArrayList(); lz.add(1); lz.add(2); lz.add(3); m.Coalitions.add(lz); lz= new ArrayList(); lz.add(2); lz.add(3); m.Coalitions.add(lz); PlayerCoalitions.add(m); m = new MemberCoalitions(); m.Id = 3; li= new ArrayList(); li.add(3); m.Coalitions.add(li); lz= new ArrayList(); lz.add(1); lz.add(2); lz.add(3); m.Coalitions.add(lz); lz= new ArrayList(); lz.add(2); lz.add(3); m.Coalitions.add(lz); PlayerCoalitions.add(m); TEST t = new TEST(); try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); // root elements Document doc = docBuilder.newDocument(); Element rootElement = doc.createElement("Matrices"); doc.appendChild(rootElement); Element Player = doc.createElement("Matrix"); rootElement.appendChild(Player); Attr attr = doc.createAttribute("id"); attr.setValue("1"); Player.setAttributeNode(attr); Element Combinationss = doc.createElement("Combinations"); Player.appendChild(Combinationss); // write the content into xml file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("D:\\file1.xml")); transformer.transform(source, result); // modification String filepath = "D:\\file1.xml"; DocumentBuilderFactory docFactory1 = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder1 = docFactory1.newDocumentBuilder(); Document doc1 = docBuilder1.parse(filepath); // Get the root element Node Combinations = doc1.getElementsByTagName("Combinations").item(0); Stack <Element> stack = new Stack <Element>(); t.CalculStrategiesCombination(doc1,Combinations, stack, -1, PlayerCoalitions, 0); //write the content into xml file TransformerFactory transformerFactory1 = TransformerFactory.newInstance(); Transformer transformer1 = transformerFactory1.newTransformer(); DOMSource source1 = new DOMSource(doc1); StreamResult result1 = new StreamResult(new File(filepath)); transformer1.transform(source1, result1); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } } }
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <Matrices> <Matrix> <Combinations> <Combination> <Strategy id="2">[2]</Strategy> <Strategy id="3">[3]</Strategy> </Combination> <Combination> <Strategy id="2">[2]</Strategy> <Strategy id="3">[1,2,3]</Strategy> </Combination> <Combination> <Strategy id="2">[2]</Strategy> <Strategy id="3">[2,3]</Strategy> </Combination> <Combination> <Strategy id="2">[1,2,3]</Strategy> <Strategy id="3">[3]</Strategy> </Combination> <Combination> <Strategy id="2">[1,2,3]</Strategy> <Strategy id="3">[1,2,3]</Strategy> </Combination> <Combination> <Strategy id="2">[1,2,3]</Strategy> <Strategy id="3">[2,3]</Strategy> </Combination> <Combination> <Strategy id="2">[2,3]</Strategy> <Strategy id="3">[3]</Strategy> </Combination> <Combination> <Strategy id="2">[2,3]</Strategy> <Strategy id="3">[1,2,3]</Strategy> </Combination> <Combination> <Strategy id="2">[2,3]</Strategy> <Strategy id="3">[2,3]</Strategy> </Combination> </Combinations> </Matrix> </Matrices>
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> - <Matrices> - <Matrix> - <Combinations> - <Combination> <Strategy id="3">[3]</Strategy> </Combination> - <Combination> <Strategy id="3">[1, 2, 3]</Strategy> </Combination> - <Combination> <Strategy id="2">[2]</Strategy> <Strategy id="3">[2, 3]</Strategy> </Combination> - <Combination> <Strategy id="3">[3]</Strategy> </Combination> - <Combination> <Strategy id="3">[1, 2, 3]</Strategy> </Combination> - <Combination> <Strategy id="2">[1, 2, 3]</Strategy> <Strategy id="3">[2, 3]</Strategy> </Combination> - <Combination> <Strategy id="3">[3]</Strategy> </Combination> - <Combination> <Strategy id="3">[1, 2, 3]</Strategy> </Combination> - <Combination> <Strategy id="2">[2, 3]</Strategy> <Strategy id="3">[2, 3]</Strategy> </Combination> </Combinations> </Matrix> </Matrices>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question