Bläddra i källkod

Parameter Stepping Order changed. Objective Function changed.

Tom Troppmann 4 år sedan
förälder
incheckning
5a0f087ff8

+ 2 - 0
src/api/AlgorithmFrameworkFlex.java

@@ -13,6 +13,7 @@ import java.io.OutputStreamWriter;
 import java.math.RoundingMode;
 import java.text.NumberFormat;
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Locale;
@@ -521,6 +522,7 @@ public abstract class AlgorithmFrameworkFlex implements AddOn{
 	@SuppressWarnings("rawtypes")
 	private boolean updateOneParameter() {
 		List<ParameterStepping> parameterInUseList = this.parameterSteppingList.stream().filter(param -> param.useThisParameter).collect(Collectors.toList());
+		Collections.reverse(parameterInUseList);
 		int lastParameter = parameterInUseList.size() - 1 ;
 		int actualParameter = 0;
 		for(ParameterStepping param : parameterInUseList) {

+ 14 - 3
src/exampleAlgorithms/ObjectiveFunctionByCarlos.java

@@ -30,6 +30,7 @@ public class ObjectiveFunctionByCarlos {
 	static double lambda_f_cool = 10;
 	static double lambda_f_dur = 10;
 	
+	static double lambda_f_change = 1000;
 	
 	
 	
@@ -128,9 +129,19 @@ public class ObjectiveFunctionByCarlos {
 			double flexcapCon = net.getFlexibilityConsumptionCapacity();
 			double f_change_positive = (con > 0.0)?  flexcapProd / con : 1.0;
 			double f_change_negativ = (prod > 0.0)? flexcapCon / prod: 1.0;
-			double sum = f_elements_diviation_production + f_elements_diviation_consumption 
-					+ f_flexibility_diviation_consumption + f_flexibility_diviation_production + f_change_positive +f_change_negativ;
-			f_holon += sum;
+			
+			
+			
+
+			
+			double f_element = f_elements_diviation_production +f_elements_diviation_consumption;
+			double f_flexibility = f_flexibility_diviation_consumption +f_flexibility_diviation_production;
+			double f_change = lambda_f_change  - 0.5 * lambda_f_change * ( Math.min(1, f_change_positive) + Math.min(1, f_change_negativ));
+			
+			f_holon += f_element + f_flexibility + f_change;
+			System.out.print( "f_element=" + doubleToString(f_element));
+			System.out.print( " f_flexibility=" + doubleToString(f_flexibility));
+			System.out.println( " f_change=" + doubleToString(f_change));
 //			System.out.print( "f+elements=" + doubleToString(f_elements_diviation_production));
 //			System.out.print( " f-elements=" + doubleToString(f_elements_diviation_consumption));
 //			System.out.print( " f+flexibility" + doubleToString(f_flexibility_diviation_consumption));