Commit e146ab4e6bd169fdbbabf00005479e799bdc66f0

Authored by Eduardo Eloy
1 parent 67b613e8

selecttable criteria

MODFIRE-Prototype/allSolutionPairs.csv 0 โ†’ 100644
MODFIRE-Prototype/nonPareto.csv 0 โ†’ 100644
MODFIRE-Prototype/out/production/MODFIRE-Prototype/CustomPropagator2.class
No preview for this file type
MODFIRE-Prototype/out/production/MODFIRE-Prototype/GetInput.class
No preview for this file type
MODFIRE-Prototype/out/production/MODFIRE-Prototype/Main5Criteria.class
No preview for this file type
MODFIRE-Prototype/out/production/MODFIRE-Prototype/MainDistance.class
No preview for this file type
MODFIRE-Prototype/out/production/MODFIRE-Prototype/MainLimit.class
No preview for this file type
MODFIRE-Prototype/out/production/MODFIRE-Prototype/MainRegion.class
No preview for this file type
MODFIRE-Prototype/out/production/MODFIRE-Prototype/MainWithSpecific.class
No preview for this file type
MODFIRE-Prototype/out/production/MODFIRE-Prototype/MultiOutput.class
No preview for this file type
MODFIRE-Prototype/outputPairs.csv 0 โ†’ 100644
... ... @@ -0,0 +1,193 @@
  1 +3,20
  2 +4,500
  3 +5,500
  4 +7,1
  5 +19,2
  6 +20,1
  7 +21,1
  8 +22,1
  9 +23,1
  10 +24,1
  11 +29,1
  12 +34,1
  13 +39,1
  14 +40,1
  15 +41,3
  16 +46,1
  17 +59,500
  18 +63,500
  19 +64,1
  20 +66,500
  21 +90,500
  22 +91,20
  23 +92,3
  24 +93,500
  25 +95,1
  26 +97,1
  27 +98,2
  28 +99,2
  29 +100,2
  30 +101,501
  31 +102,500
  32 +103,501
  33 +104,500
  34 +105,3
  35 +106,3
  36 +108,2
  37 +109,500
  38 +110,1
  39 +135,308
  40 +136,2
  41 +138,1
  42 +144,1
  43 +153,304
  44 +163,500
  45 +164,1
  46 +172,500
  47 +173,500
  48 +174,1
  49 +177,1
  50 +178,3
  51 +180,1
  52 +181,3
  53 +184,1
  54 +187,1
  55 +194,500
  56 +195,1
  57 +196,2
  58 +210,500
  59 +218,1
  60 +219,500
  61 +225,500
  62 +226,3
  63 +227,3
  64 +229,2
  65 +230,1
  66 +231,3
  67 +235,1
  68 +236,3
  69 +237,3
  70 +246,2
  71 +247,1
  72 +248,3
  73 +250,1
  74 +251,2
  75 +255,3
  76 +256,19
  77 +257,19
  78 +258,2
  79 +259,500
  80 +260,1
  81 +266,1
  82 +267,1
  83 +268,1
  84 +269,3
  85 +270,501
  86 +271,312
  87 +272,1
  88 +274,500
  89 +275,1
  90 +276,1
  91 +277,500
  92 +278,2
  93 +297,1
  94 +307,316
  95 +348,1
  96 +363,3
  97 +364,1
  98 +368,1
  99 +369,3
  100 +370,1
  101 +371,500
  102 +372,2
  103 +373,3
  104 +374,500
  105 +375,3
  106 +376,1
  107 +377,1
  108 +378,1
  109 +379,500
  110 +380,1
  111 +381,1
  112 +384,500
  113 +385,500
  114 +386,1
  115 +387,1
  116 +391,3
  117 +408,1
  118 +409,1
  119 +410,3
  120 +414,1
  121 +427,500
  122 +428,500
  123 +429,500
  124 +433,1
  125 +458,500
  126 +459,1
  127 +460,3
  128 +461,3
  129 +464,3
  130 +465,2
  131 +470,502
  132 +474,802
  133 +483,500
  134 +484,1
  135 +501,2
  136 +502,2
  137 +503,1
  138 +504,1
  139 +505,2
  140 +512,500
  141 +533,500
  142 +555,19
  143 +556,3
  144 +557,2
  145 +558,2
  146 +559,3
  147 +560,1
  148 +586,1
  149 +587,1
  150 +588,3
  151 +589,15
  152 +590,500
  153 +591,19
  154 +592,3
  155 +605,3
  156 +606,2
  157 +611,500
  158 +612,3
  159 +614,1
  160 +615,1
  161 +616,1
  162 +618,2
  163 +619,2
  164 +642,3
  165 +655,800
  166 +675,1
  167 +678,3
  168 +679,1
  169 +682,2
  170 +712,29
  171 +713,2
  172 +730,34
  173 +731,1
  174 +736,500
  175 +737,308
  176 +742,2
  177 +743,2
  178 +746,801
  179 +748,801
  180 +749,500
  181 +755,1
  182 +756,1
  183 +757,1
  184 +762,3
  185 +763,1
  186 +764,1
  187 +767,1
  188 +773,500
  189 +774,3600
  190 +775,304
  191 +776,801
  192 +777,801
  193 +782,1
... ...
MODFIRE-Prototype/src/CustomPropagator2.java
... ... @@ -16,7 +16,7 @@ public class CustomPropagator2 extends org.chocosolver.solver.constraints.Propag
16 16  
17 17  
18 18  
19   - public CustomPropagator2(int ugIndex, UG[] nodes, IntVar[] ugs, int sum, IntVar[] woodYield) {
  19 + public CustomPropagator2(int ugIndex, UG[] nodes, IntVar[] ugs, int sum ) {
20 20 super(ugs, PropagatorPriority.LINEAR, false);
21 21 this.ugIndex = ugIndex;
22 22 this.nodes = nodes;
... ...
MODFIRE-Prototype/src/GetInput.java
... ... @@ -170,7 +170,7 @@ public class GetInput {
170 170 //the propagator takes as parameters the index of the UG we are starting out from
171 171 //the nodes with all the info, the constraint variable array and the area limit
172 172 if(nodes[ugIndex].valid) {
173   - new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit, woodYield)).post();
  173 + new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit)).post();
174 174 }
175 175 }
176 176  
... ...
MODFIRE-Prototype/src/Main5Criteria.java
... ... @@ -311,7 +311,7 @@ public class Main5Criteria {
311 311 //the propagator takes as parameters the index of the UG we are starting out from
312 312 //the nodes with all the info, the constraint variable array and the area limit
313 313 if(nodes[ugIndex].valid) {
314   - new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit, woodYield)).post();
  314 + new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit)).post();
315 315 }
316 316 }
317 317  
... ...
MODFIRE-Prototype/src/MainDistance.java
... ... @@ -295,7 +295,7 @@ public class MainDistance {
295 295 //the propagator takes as parameters the index of the UG we are starting out from
296 296 //the nodes with all the info, the constraint variable array and the area limit
297 297 if(nodes[ugIndex].valid) {
298   - new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit, woodYield)).post();
  298 + new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit)).post();
299 299 }
300 300 }
301 301  
... ...
MODFIRE-Prototype/src/MainLimit.java
... ... @@ -278,7 +278,7 @@ public class MainLimit {
278 278 //the propagator takes as parameters the index of the UG we are starting out from
279 279 //the nodes with all the info, the constraint variable array and the area limit
280 280 if(nodes[ugIndex].valid) {
281   - new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit, woodYield)).post();
  281 + new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit)).post();
282 282 }
283 283 }
284 284  
... ...
MODFIRE-Prototype/src/MainRegion.java
... ... @@ -281,7 +281,7 @@ public class MainRegion {
281 281 //the propagator takes as parameters the index of the UG we are starting out from
282 282 //the nodes with all the info, the constraint variable array and the area limit
283 283 if(nodes[ugIndex].valid) {
284   - new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit, woodYield)).post();
  284 + new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit)).post();
285 285 }
286 286 }
287 287  
... ...
MODFIRE-Prototype/src/MainWithSpecific.java
... ... @@ -228,21 +228,8 @@ public class MainWithSpecific {
228 228 String fileDirectory = args[1];
229 229  
230 230 ArrayList<Integer> islandUGs = new ArrayList<>();
231   - /*File island = new File("i_east");
232   - Scanner islandReader = new Scanner(island);
233   - while (islandReader.hasNextLine()) {
234   - islandUGs.add(Integer.parseInt(islandReader.nextLine()));
235   -
236   - }
237   -
238   - island = new File("i_eastop");
239   - islandReader = new Scanner(island);
240   - while (islandReader.hasNextLine()) {
241   - islandUGs.add(Integer.parseInt(islandReader.nextLine()));
242 231  
243   - }*/
244   -
245   - File island = new File("subregions/ip_continent");
  232 + File island = new File("subregions/i_top");
246 233 Scanner islandReader = new Scanner(island);
247 234 while (islandReader.hasNextLine()) {
248 235 islandUGs.add(Integer.parseInt(islandReader.nextLine()));
... ... @@ -265,6 +252,31 @@ public class MainWithSpecific {
265 252 default:
266 253 R = 0;}
267 254  
  255 +
  256 +
  257 + /*Set Flags
  258 + 0-woodYield
  259 + 1-Soil Loss
  260 + 2-Perc_r
  261 + 3-Biodiversity
  262 + 4-Cashflow
  263 + 5-Carbon Stock
  264 + 6-NPV
  265 + 7-Perc_rait
  266 + 8-R
  267 + 9-Rait
  268 + 10-Sbiom
  269 + */
  270 + String[] varNames = new String[]{"WoodYield","SoilLoss","Perc_r","Biodiversity","Cashflow","CarbonStock","NPV","Perc_rait","R","Rait","Sbiom"};
  271 + ArrayList<Boolean> flags = new ArrayList<Boolean>();
  272 + for(int i = 0; i < 11; i++) {
  273 + flags.add(false);
  274 + }
  275 + for(int i = 4; i < args.length; i++) {
  276 + flags.set(Integer.parseInt(args[i]), true);
  277 + }
  278 +
  279 +
268 280 Model m = new Model("Forest Management");
269 281  
270 282 BufferedReader reader = new BufferedReader(new FileReader(fileDirectory + "/ugs_init.txt"));
... ... @@ -283,6 +295,7 @@ public class MainWithSpecific {
283 295  
284 296 IntVar[] ugs = new IntVar[nUgs]; // same for the constraint variable array
285 297  
  298 +
286 299 IntVar[] woodYield = new IntVar[nUgs];
287 300  
288 301 IntVar[] soillossTotal = new IntVar[nUgs];
... ... @@ -298,7 +311,6 @@ public class MainWithSpecific {
298 311 IntVar[] rait_total = new IntVar[nUgs];
299 312 IntVar[] sbiom_total = new IntVar[nUgs];
300 313  
301   -
302 314 giveDomains(m, ugs, fileDirectory, woodYield, soillossTotal, perc_r_Total, biodiversity_total, cashflow_total, cstock_total,
303 315 npv_total, perc_rait_total, r_total, rait_total, sbiom_total, nodes, R_option); // reads the ugs_init file and initializes each variable with its possible prescription values as domain
304 316  
... ... @@ -310,7 +322,7 @@ public class MainWithSpecific {
310 322 //the propagator takes as parameters the index of the UG we are starting out from
311 323 //the nodes with all the info, the constraint variable array and the area limit
312 324 if(nodes[ugIndex].valid) {
313   - new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit, woodYield)).post();
  325 + new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit)).post();
314 326 }
315 327 }
316 328  
... ... @@ -401,23 +413,41 @@ public class MainWithSpecific {
401 413 IntVar raitSum = m.intVar("RaitR"+R,0, 99999999);
402 414 IntVar sbiomSum = m.intVar("SbiomR"+R,0, 99999999);
403 415  
404   -
405   - m.sum(woodYield,"=", woodSum).post();
406   - m.sum(soillossTotal,"=", soilSum).post();
407   - m.sum(perc_r_Total,"=", percRSum).post();
408   -
409   - m.sum(biodiversity_total, "=", bioSum).post();
410   - m.sum(cashflow_total, "=", cashSum).post();
411   - //m.sum(cstock_total, "=", cstockSum).post();
412   - //m.sum(npv_total, "=", npvSum).post();
413   - //m.sum(perc_rait_total, "=", percRaitSum).post();
414   - //m.sum(r_total, "=", rSum).post();
415   - //m.sum(rait_total, "=", raitSum).post();
416   - // m.sum(sbiom_total, "=", sbiomSum).post();
  416 + System.out.println(flags.get(0));
  417 + System.out.println(flags.get(1));
  418 + System.out.println(flags.get(2));
  419 +
  420 + if(flags.get(0))
  421 + m.sum(woodYield,"=", woodSum).post();
  422 + if(flags.get(1))
  423 + m.sum(soillossTotal,"=", soilSum).post();
  424 + if(flags.get(2))
  425 + m.sum(perc_r_Total,"=", percRSum).post();
  426 + if(flags.get(3))
  427 + m.sum(biodiversity_total, "=", bioSum).post();
  428 + if(flags.get(4))
  429 + m.sum(cashflow_total, "=", cashSum).post();
  430 + if(flags.get(5))
  431 + m.sum(cstock_total, "=", cstockSum).post();
  432 + if(flags.get(6))
  433 + m.sum(npv_total, "=", npvSum).post();
  434 + if(flags.get(7))
  435 + m.sum(perc_rait_total, "=", percRaitSum).post();
  436 + if(flags.get(8))
  437 + m.sum(r_total, "=", rSum).post();
  438 + if(flags.get(9))
  439 + m.sum(rait_total, "=", raitSum).post();
  440 + if(flags.get(10))
  441 + m.sum(sbiom_total, "=", sbiomSum).post();
  442 +
  443 +
  444 + IntVar[] toOptimize = new IntVar[10];
  445 + IntVar[] allSums = new IntVar[]{woodSum, soilSum, percRSum, bioSum,cashSum,cstockSum,npvSum,percRaitSum,rSum,raitSum,sbiomSum};
  446 + IntVar[][] allTotals = new IntVar[][]{woodYield, soillossTotal,perc_r_Total,biodiversity_total,cashflow_total,cstock_total,npv_total,perc_rait_total,r_total,rait_total,sbiom_total};
417 447  
418 448 // Single Criterion Optimization
419 449 if(criterion.equalsIgnoreCase("single")) {
420   - m.setObjective(Model.MAXIMIZE, woodSum);
  450 + //m.setObjective(Model.MAXIMIZE, woodSum);
421 451 //m.setObjective(Model.MAXIMIZE, soilSum);
422 452 //m.setObjective(Model.MAXIMIZE, percRSum);
423 453  
... ... @@ -428,7 +458,14 @@ public class MainWithSpecific {
428 458 FileWriter outputPairs = new FileWriter("outputPairs.csv");
429 459 for (int i = 0; i < ugs.length; i++) {
430 460 if (nodes[i].valid) {
431   - System.out.println(ugs[i] + ", wy:" + woodYield[i] + ", sl:" + soillossTotal[i] + ", R" + R + ":" + perc_r_Total[i]);
  461 + System.out.print(ugs[i] + ", ");
  462 +
  463 + for (int j = 0; j < flags.size(); j++) {
  464 + if (flags.get(j))
  465 + System.out.print(varNames[j]+":"+ allTotals[j][i] +",");
  466 + }
  467 + System.out.println("end");
  468 +
432 469 outputPairs.write(nodes[i].externalId + "," + ugs[i].getValue() + "\n");
433 470 }
434 471 }
... ... @@ -442,17 +479,29 @@ public class MainWithSpecific {
442 479 else {
443 480 //Multi Criterion with Pareto
444 481  
  482 + int index = 0;
  483 + for(int i = 1; i<flags.toArray().length; i++){
  484 + if(flags.get(i)){
  485 + toOptimize[index] = allSums[i];
  486 + }
  487 + }
  488 +
  489 +
445 490 //ParetoOptimizer po = new ParetoOptimizer(Model.MAXIMIZE, new IntVar[]{woodSum, soilToMaximize, percToMaximize});
446   - ParetoOptimizer po = new ParetoOptimizer(Model.MAXIMIZE, new IntVar[]{woodSum,soilSum,percRSum});
  491 + ParetoOptimizer po = new ParetoOptimizer(Model.MAXIMIZE, toOptimize);
447 492  
448 493 Solver solver = m.getSolver();
449 494 solver.plugMonitor(po);
450 495  
451 496  
452   - FileWriter nonParetoWS = new FileWriter("nonParetoWS.csv");
453   - FileWriter nonParetoWR = new FileWriter("nonParetoWR.csv");
454   - FileWriter nonParetoSR = new FileWriter("nonParetoSR.csv");
455   - FileWriter nonParetoWSR = new FileWriter("nonParetoWSR.csv");
  497 + FileWriter nonPareto = new FileWriter("nonPareto.csv");
  498 + for (int i = 0; i < flags.size(); i++) {
  499 + if (flags.get(i)) {
  500 + nonPareto.write(varNames[i]+",");
  501 + }
  502 + }
  503 + nonPareto.write("end\n");
  504 +
456 505 FileWriter allSolutionPairs = new FileWriter("allSolutionPairs.csv");
457 506  
458 507 // optimization
... ... @@ -463,18 +512,33 @@ public class MainWithSpecific {
463 512 while(solver.solve() & (System.currentTimeMillis()-startTime)<32400000)
464 513 {
465 514 //System.out.println(l);
466   - nonParetoWSR.write(woodSum.getValue()+","+soilSum.getValue()+","+percRSum.getValue()+"\n");
467   - allSolutionPairs.write(l+", Wood: "+ woodSum.getValue()+", Soil:"+soilSum.getValue()+
468   - ", Perc_R"+R+":"+percRSum.getValue()+"\n");
  515 + for (int i = 0; i < flags.size(); i++) {
  516 + if(flags.get(i))
  517 + nonPareto.write(allSums[i].getValue()+",");
  518 + }
  519 + nonPareto.write("end\n");
  520 +
  521 + allSolutionPairs.write(l+", ");
  522 + for (int i = 0; i < flags.size(); i++) {
  523 + if(flags.get(i))
  524 + allSolutionPairs.write(varNames[i] +":"+ allSums[i].getValue()+",");
  525 + }
  526 + allSolutionPairs.write("end\n");
  527 +
  528 +
469 529 for(int i = 0; i < nodes.length; i++){
470 530 if(nodes[i].valid){
471   - allSolutionPairs.write(nodes[i].externalId+","+ugs[i].getValue()+"\n");
472   - //System.out.println(ugs[i] + ", wy:" + woodYield[i] + ", sl:" + soillossTotal[i] + ", R" + R + ":" + perc_r_Total[i]);
  531 +
  532 + System.out.print(ugs[i] + ", ");
  533 +
  534 + for (int j = 0; j < flags.size(); j++) {
  535 + if(flags.get(j))
  536 + System.out.print(varNames[j] +":"+ allTotals[j][i].getValue()+",");
  537 + }
  538 + System.out.println("end");
473 539 }
474 540 }
475   - nonParetoWS.write(woodSum.getValue()+","+soilSum.getValue()+"\n");
476   - nonParetoWR.write(woodSum.getValue()+","+percRSum.getValue()+"\n");
477   - nonParetoSR.write(soilSum.getValue()+","+percRSum.getValue()+"\n");
  541 +
478 542 l++;
479 543 }
480 544 }
... ... @@ -482,53 +546,56 @@ public class MainWithSpecific {
482 546 System.out.println("Reached Exception");
483 547 }
484 548  
485   - nonParetoWS.close();
486   - nonParetoWR.close();
487   - nonParetoSR.close();
488   - nonParetoWSR.close();
489   - allSolutionPairs.close();
  549 + nonPareto.close();
  550 + //allSolutionPairs.close();
490 551  
491 552 List<Solution> paretoFront = po.getParetoFront();
492 553  
493 554 System.out.println("The pareto front has " + paretoFront.size() + " solutions : ");
494   - FileWriter outputPairs = new FileWriter("outputPairsTopIslandWSR0.csv");
  555 + FileWriter outputPairs = new FileWriter("outputPairsSpecif.csv");
495 556  
496   - FileWriter paretoWS = new FileWriter("paretoWS.csv");
497   - FileWriter paretoWR = new FileWriter("paretoWR.csv");
498   - FileWriter paretoSR = new FileWriter("paretoSR.csv");
499   - FileWriter paretoWSR = new FileWriter("paretoWSR.csv");
  557 + FileWriter pareto = new FileWriter("pareto.csv");
500 558  
501 559  
502 560 int l2 = 0;
503 561 for (Solution so : paretoFront) {
504   - System.out.println("Wood = " + so.getIntVal(woodSum) + ", Soil = " + so.getIntVal(soilSum)+
505   - ", Perc_R"+R+":"+so.getIntVal(percRSum));
506   - outputPairs.write("Pareto Solution: " + l2 + ", Wood: "+so.getIntVal(woodSum)+", Soil:"+so.getIntVal(soilSum)+
507   - ", Perc_R"+R+":"+so.getIntVal(percRSum)+"\n");
  562 +
  563 + for (int i = 0; i < flags.size(); i++) {
  564 + if (flags.get(i))
  565 + System.out.print(varNames[i]+"="+so.getIntVal(allSums[i])+",");
  566 + }
  567 + System.out.println("end");
  568 +
  569 + outputPairs.write("Pareto Solution: " + l2+",");
  570 + for (int i = 0; i < flags.size(); i++) {
  571 + if (flags.get(i))
  572 + outputPairs.write(varNames[i]+":"+so.getIntVal(allSums[i])+",");
  573 + }
  574 +
  575 + outputPairs.write("end+\n");
  576 +
508 577 for (int i = 0; i < ugs.length; i++) {
509 578 if (nodes[i].valid) {
510   - System.out.println(i+"_"+so.getIntVal(ugs[i]) + ", wy:" + so.getIntVal(woodYield[i]) + ", sl:" +
511   - so.getIntVal(soillossTotal[i]) + ", R" + R + ":" + so.getIntVal(perc_r_Total[i]));
512   - outputPairs.write(nodes[i].externalId + "," +so.getIntVal(ugs[i]) + "\n");
513   - }
514 579  
515   - }
  580 + System.out.print(i+"_"+so.getIntVal(ugs[i])+", ");
516 581  
517   - //PARETO POINTS
518   - paretoWS.write(so.getIntVal(woodSum)+","+so.getIntVal(soilSum)+"\n");
519   - paretoWR.write(so.getIntVal(woodSum)+","+so.getIntVal(percRSum)+"\n");
520   - paretoSR.write(so.getIntVal(soilSum)+","+so.getIntVal(percRSum)+"\n");
521   - paretoWSR.write(so.getIntVal(woodSum)+","+so.getIntVal(soilSum)+","+so.getIntVal(percRSum)+"\n");
  582 + for (int j = 0; j < flags.size(); j++) {
  583 + if (flags.get(j))
  584 + System.out.print(varNames[j]+":"+so.getIntVal(allTotals[j][i])+",");
  585 + }
  586 + System.out.println("end");
522 587  
  588 + outputPairs.write(nodes[i].externalId + "," +so.getIntVal(ugs[i]) + "\n");
  589 + }
  590 + }
523 591  
  592 + pareto.write(so.getIntVal(woodSum)+","+so.getIntVal(soilSum)+","+so.getIntVal(percRSum)+"\n");
524 593  
525 594 l2++;
526 595 }
527 596 outputPairs.close();
528   - paretoWS.close();
529   - paretoWR.close();
530   - paretoSR.close();
531   - paretoWSR.close();
  597 +
  598 + pareto.close();
532 599 System.out.println(l + " solutions");
533 600 }
534 601 }
... ...
MODFIRE-Prototype/src/MultiOutput.java
... ... @@ -163,7 +163,7 @@ public class MultiOutput {
163 163 //the propagator takes as parameters the index of the UG we are starting out from
164 164 //the nodes with all the info, the constraint variable array and the area limit
165 165 if(nodes[ugIndex].valid) {
166   - new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit, woodYield)).post();
  166 + new Constraint("Area Limit Constraint", new CustomPropagator2(ugIndex, nodes, ugs, areaLimit)).post();
167 167 }
168 168 }
169 169  
... ...