diff --git a/code/.classpath b/code/.classpath new file mode 100644 index 0000000000000000000000000000000000000000..5cd0018ecb102f119f893361bd56e93417b8c2e7 --- /dev/null +++ b/code/.classpath @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="src" path="src"/> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"> + <attributes> + <attribute name="module" value="true"/> + </attributes> + </classpathentry> + <classpathentry kind="lib" path="C:/working_dir/metzger/09-eclipse-ws/icsoc20/opencsv-3.8.jar"/> + <classpathentry kind="lib" path="C:/working_dir/metzger/09-eclipse-ws/icsoc20/antlr-3.4.jar"/> + <classpathentry kind="lib" path="C:/working_dir/metzger/09-eclipse-ws/icsoc20/commons-io-2.6.jar"/> + <classpathentry kind="lib" path="C:/working_dir/metzger/09-eclipse-ws/icsoc20/de.ovgu.featureide.lib.fm.core.jar"/> + <classpathentry kind="lib" path="C:/working_dir/metzger/09-eclipse-ws/icsoc20/org.sat4j.core.jar"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/code/antlr-3.4.jar b/code/antlr-3.4.jar new file mode 100644 index 0000000000000000000000000000000000000000..bf0ad012800d3e26aa2a953d264746cf4f376591 Binary files /dev/null and b/code/antlr-3.4.jar differ diff --git a/code/commons-io-2.6.jar b/code/commons-io-2.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..00556b119d45dd85a3c3073b1826916c3c60b9c4 Binary files /dev/null and b/code/commons-io-2.6.jar differ diff --git a/code/de.ovgu.featureide.lib.fm.core.jar b/code/de.ovgu.featureide.lib.fm.core.jar new file mode 100644 index 0000000000000000000000000000000000000000..d7381710ca8314676597d984dc941c576b69227e Binary files /dev/null and b/code/de.ovgu.featureide.lib.fm.core.jar differ diff --git a/code/opencsv-3.8.jar b/code/opencsv-3.8.jar new file mode 100644 index 0000000000000000000000000000000000000000..7a594a956523d03a847333b2394af896d865224b Binary files /dev/null and b/code/opencsv-3.8.jar differ diff --git a/code/org.sat4j.core.jar b/code/org.sat4j.core.jar new file mode 100644 index 0000000000000000000000000000000000000000..fb9383e691df5de61fe075c2e48db3415f0e3a74 Binary files /dev/null and b/code/org.sat4j.core.jar differ diff --git a/code/resources/cloudrm.csv b/code/resources/cloudrm.csv new file mode 100644 index 0000000000000000000000000000000000000000..4dacdf019e1d4f0fe4ca311f6dfb0701dbf96e39 --- /dev/null +++ b/code/resources/cloudrm.csv @@ -0,0 +1,345 @@ +reward_norm;tot_energy/hr;nr_vm_ops/hr;c +-0,743043137;11,2291523;15,93965517;cloudrm,simple +-1,685842441;9,259827586;65;cloudrm,multiple,taskgroupsizek,taskgroupsizek5 +-1,667826417;10,03515805;61,19109195;cloudrm,multiple,taskgroupsizek,taskgroupsizek4 +-1,606810068;8,723333333;62,31752874;cloudrm,multiple,taskgroupsizek,taskgroupsizek6 +-1,522474651;8,28908046;58,96264368;cloudrm,multiple,taskgroupsizek,taskgroupsizek7 +-1,469948816;7,980991379;57,00718391;cloudrm,multiple,taskgroupsizek,taskgroupsizek8 +-1,394971976;7,6825;53,71264368;cloudrm,multiple,taskgroupsizek,taskgroupsizek9 +-1,346345456;7,442068966;51,74281609;cloudrm,multiple,taskgroupsizek,taskgroupsizek10 +-1,284156229;7,257442529;48,78591954;cloudrm,multiple,taskgroupsizek,taskgroupsizek11 +-1,229263509;7,107974138;46,12787356;cloudrm,multiple,taskgroupsizek,taskgroupsizek12 +-1,175071139;6,984454023;43,41810345;cloudrm,multiple,taskgroupsizek,taskgroupsizek13 +-1,15672546;6,86783046;42,76724138;cloudrm,multiple,taskgroupsizek,taskgroupsizek14 +-1,12153873;6,737385057;41,18678161;cloudrm,multiple,taskgroupsizek,taskgroupsizek15 +-1,082184687;6,630100575;39,2816092;cloudrm,multiple,taskgroupsizek,taskgroupsizek16 +-1,064484205;6,563936782;38,48850575;cloudrm,multiple,taskgroupsizek,taskgroupsizek17 +-1,041037569;6,484281609;37,40948276;cloudrm,multiple,taskgroupsizek,taskgroupsizek18 +-1,021398075;6,436091954;36,43965517;cloudrm,multiple,taskgroupsizek,taskgroupsizek19 +-0,987911029;6,353951149;34,78591954;cloudrm,multiple,taskgroupsizek,taskgroupsizek20 +-0,975658559;12,6791092;11,54310345;cloudrm,multiple,taskgroupsizek,taskgroupsizek2 +-0,841958778;11,15824713;9,189655172;cloudrm,multiple,taskgroupsizek,taskgroupsizek3 +-0,867102068;11,2062931;10,47988506;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicyff +-0,867387794;11,21377874;10,46982759;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicyff +-0,866776264;11,20097701;10,47988506;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicyff +-0,866711246;11,21;10,44396552;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicyff +-0,866709588;11,21481322;10,42672414;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicyff +-0,866258021;11,22841954;10,35201149;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicyff +-0,866360502;11,21153736;10,41810345;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicyff +-0,867166931;11,23114943;10,39511494;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicyff +-0,866486459;11,21883621;10,39942529;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicyff +-0,867146458;11,23767241;10,37068966;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicyff +-0,86650183;11,22755747;10,36925287;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicyff +-0,86417382;11,22143678;10,25574713;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicyff +-0,7975538;11,13916667;6,676724138;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicyff +-0,797133207;11,14682471;6,625;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicyff +-0,795247986;11,12130747;6,606321839;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicyff +-0,796773347;11,16112069;6,55316092;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicyff +-0,794535076;11,11854885;6,574712644;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicyff +-0,793648594;11,10811782;6,560344828;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicyff +-0,925431943;12,98936782;7,518678161;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicyff +-0,925510674;12,99387931;7,507183908;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicyff +-0,925419602;13,00570402;7,459770115;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicyff +-0,927564055;13,05521552;7,408045977;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicyff +-0,92140263;12,97242816;7,344827586;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicyff +-0,923507588;13,02048851;7,295977011;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicyff +-0,747353618;10,93961207;4,469827586;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicyff +-0,747839151;10,96729885;4,399425287;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicyff +-0,746790375;10,94494253;4,418103448;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicyff +-0,746177278;10,95833333;4,334770115;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicyff +-0,745686319;10,9479023;4,343390805;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicyff +-0,746291219;10,9799569;4,264367816;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicyff +-0,69221379;10,4549569;2,99137931;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicyff +-0,692587648;10,47436782;2,943965517;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicyff +-0,692409712;10,47186782;2,942528736;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicyff +-0,691996216;10,4683477;2,931034483;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicyff +-0,691972674;10,47199713;2,916666667;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicyff +-0,690712359;10,46393678;2,872126437;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicyff +-0,868055718;11,23274425;10,44109195;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicywf +-0,867201066;11,22202586;10,4295977;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicywf +-0,865123508;11,20668103;10,36350575;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicywf +-0,865488587;11,22030172;10,3362069;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicywf +-0,865332536;11,21896552;10,33189655;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicywf +-0,865942537;11,23577586;10,30747126;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicywf +-0,869491872;11,23439655;10,51867816;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicywf +-0,868342247;11,22975575;10,4683908;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicywf +-0,867504921;11,22658046;10,43103448;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicywf +-0,866799444;11,22152299;10,40804598;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicywf +-0,866918059;11,22507184;10,40229885;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicywf +-0,86645138;11,2283477;10,36350575;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicywf +-0,802522946;11,1916092;6,778735632;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicywf +-0,801274622;11,17487069;6,765804598;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicywf +-0,799378614;11,15603448;6,722701149;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicywf +-0,801101218;11,19906609;6,66954023;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicywf +-0,797216536;11,12277299;6,715517241;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicywf +-0,796996968;11,1320977;6,66954023;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicywf +-0,922397523;13,01689655;7,244252874;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicywf +-0,91976461;12,97433908;7,242816092;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicywf +-0,921118976;13,00692529;7,20545977;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicywf +-0,918893797;12,97626437;7,185344828;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicywf +-0,917240005;12,96097701;7,143678161;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicywf +-0,916467528;12,94433908;7,158045977;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicywf +-0,761497149;11,13126437;4,609195402;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicywf +-0,760346372;11,11732759;4,591954023;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicywf +-0,758816764;11,09841954;4,570402299;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicywf +-0,757364877;11,08481322;4,534482759;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicywf +-0,754608337;11,0479023;4,505747126;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicywf +-0,755334015;11,06458333;4,488505747;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicywf +-0,712306598;10,69810345;3,293103448;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicywf +-0,712436337;10,70385057;3,280172414;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicywf +-0,707894777;10,65515805;3,189655172;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicywf +-0,708368203;10,67579023;3,143678161;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicywf +-0,707102695;10,66159483;3,120689655;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicywf +-0,703592533;10,5841523;3,192528736;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicywf +-0,870035081;11,22188218;10,59482759;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicybf +-0,86998871;11,22475575;10,58189655;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicybf +-0,868625733;11,21824713;10,52586207;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicybf +-0,86777692;11,2096408;10,50718391;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicybf +-0,868365854;11,22570402;10,4841954;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicybf +-0,867320056;11,23969828;10,37356322;cloudrm,maxsize,relativesizemu,relativesizemu025,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicybf +-0,869678393;11,24389368;10,49568966;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicybf +-0,867876824;11,21974138;10,47701149;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicybf +-0,868154962;11,23597701;10,43534483;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicybf +-0,868346184;11,24918103;10,39942529;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicybf +-0,867791009;11,23729885;10,40948276;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicybf +-0,867558414;11,23431034;10,4066092;cloudrm,maxsize,relativesizemu,relativesizemu03,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicybf +-0,800233072;11,19538793;6,632183908;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicybf +-0,799214533;11,17715517;6,637931034;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicybf +-0,796134313;11,13818966;6,597701149;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicybf +-0,79528001;11,11981322;6,613505747;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicybf +-0,795247183;11,13178161;6,568965517;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicybf +-0,794660192;11,13107759;6,537356322;cloudrm,maxsize,relativesizemu,relativesizemu05,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicybf +-0,932369107;13,09045977;7,561781609;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicybf +-0,930529364;13,05116379;7,594827586;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicybf +-0,93183021;13,08166667;7,561781609;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicybf +-0,929483476;13,04377874;7,560344828;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicybf +-0,929880876;13,05954023;7,527298851;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicybf +-0,927785824;13,03221264;7,502873563;cloudrm,maxsize,relativesizemu,relativesizemu06,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicybf +-0,745793151;10,94238506;4,369252874;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicybf +-0,746041894;10,94926724;4,359195402;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicybf +-0,745290032;10,93619253;4,362068966;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicybf +-0,745583334;10,95146552;4,324712644;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicybf +-0,74525841;10,94616379;4,324712644;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicybf +-0,743958237;10,93341954;4,29454023;cloudrm,maxsize,relativesizemu,relativesizemu09,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicybf +-0,69065884;10,40699713;3,07183908;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetriclength,selectionpolicy,selectionpolicybf +-0,690187667;10,41625;3,011494253;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricimbalance,selectionpolicy,selectionpolicybf +-0,690059236;10,4133477;3,014367816;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricsum,selectionpolicy,selectionpolicybf +-0,689309861;10,40676724;2,994252874;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricmaximum,selectionpolicy,selectionpolicybf +-0,690579771;10,44846264;2,91954023;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricminimum,selectionpolicy,selectionpolicybf +-0,690107083;10,44518678;2,903735632;cloudrm,maxsize,relativesizemu,relativesizemu1,selectionmetric,selectionmetricproduct,selectionpolicy,selectionpolicybf +-0,688983215;10,4341092;2,877873563;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,689708504;10,45320402;2,852011494;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,690351346;10,46893678;2,833333333;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,689100704;10,45014368;2,827586207;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,690151862;10,4741523;2,80316092;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,689957454;10,46977011;2,807471264;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,689354536;10,45831897;2,813218391;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,690139146;10,47636494;2,79454023;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,690476008;10,48428161;2,78591954;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,689027916;10,45258621;2,814655172;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,689293389;10,45974138;2,804597701;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,688002915;10,43061782;2,833333333;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,689471817;10,46466954;2,797413793;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,689526282;10,46636494;2,79454023;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,689224512;10,45982759;2,800287356;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,68814247;10,43571839;2,823275862;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,688575183;10,44600575;2,811781609;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,688840786;10,45235632;2,804597701;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,688820533;10,45202586;2,804597701;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,689186324;10,46122126;2,793103448;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,689643693;10,47191092;2,781609195;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,68972539;10,47445402;2,777298851;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,688125286;10,43826149;2,813218391;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,689597581;10,47317529;2,774425287;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,689268578;10,46579023;2,781609195;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,690486847;10,49373563;2,752873563;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,688547174;10,44998563;2,795977011;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,688767803;10,45600575;2,787356322;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,687241536;10,42182471;2,820402299;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,689809146;10,48066092;2,760057471;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,690092295;10,48770115;2,751436782;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,688857166;10,46028736;2,777298851;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,689325853;10,47196839;2,762931034;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,688866464;10,4628592;2,768678161;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,689234146;10,47127874;2,760057471;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,688081725;10,44561782;2,784482759;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,688337641;10,45181034;2,777298851;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,688489782;10,45550287;2,772988506;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,689500435;10,47885057;2,748563218;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,688502861;10,45652299;2,770114943;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,688626009;10,45933908;2,767241379;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,687433963;10,43303161;2,791666667;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,688871294;10,46576149;2,75862069;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,688108633;10,44847701;2,775862069;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,688572981;10,45968391;2,762931034;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,688240457;10,45224138;2,770114943;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,689035633;10,47045977;2,751436782;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,689845715;10,48932471;2,731321839;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,68686457;10,42172414;2,798850575;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,688841096;10,46688218;2,752873563;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,688713546;10,46399425;2,755747126;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,68972596;10,48737069;2,731321839;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,687487093;10,43752874;2,778735632;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,688784417;10,46797414;2,745689655;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,68726601;10,43432471;2,777298851;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,68680499;10,42438218;2,78591954;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,688743653;10,46892241;2,739942529;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,68897586;10,47432471;2,734195402;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,687505002;10,44145115;2,765804598;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,68907856;10,47801724;2,727011494;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,68688995;10,42859195;2,775862069;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,687708021;10,44718391;2,757183908;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,686173699;10,41367816;2,787356322;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,688642001;10,46968391;2,731321839;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,687558198;10,44554598;2,754310345;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,686405841;10,41948276;2,780172414;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,687337374;10,44073276;2,75862069;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,686822769;10,4291092;2,770114943;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,68768738;10,44926724;2,748563218;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,6883779;10,46497126;2,732758621;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,687552785;10,44626437;2,751436782;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,686277216;10,41778736;2,778735632;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,686754837;10,42880747;2,767241379;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,686574454;10,42505747;2,770114943;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,68700371;10,43488506;2,760057471;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,688766521;10,47494253;2,719827586;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,68672565;10,42913793;2,764367816;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,686180226;10,41701149;2,775862069;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,687956181;10,45768678;2,734195402;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,688205053;10,46376437;2,727011494;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,686389344;10,42324713;2,765804598;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,686048014;10,41566092;2,772988506;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,687021748;10,43800287;2,75;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,686986526;10,43742816;2,75;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,688050012;10,46163793;2,725574713;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,686780671;10,4328592;2,754310345;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,686074301;10,41689655;2,770114943;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,686863313;10,43501437;2,751436782;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,68742012;10,44772989;2,738505747;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,687676917;10,45393678;2,731321839;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,687038219;10,43988506;2,744252874;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,687717293;10,4554023;2,728448276;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,686625629;10,43073276;2,752873563;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,687351307;10,44741379;2,735632184;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,686132093;10,41985632;2,762931034;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,687455898;10,45033046;2,731321839;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,687122493;10,44287356;2,738505747;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,686723992;10,43395115;2,747126437;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,687894776;10,46071839;2,719827586;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,685590943;10,40860632;2,771551724;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,686097622;10,42010057;2,760057471;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,685874156;10,41524425;2,764367816;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,687647535;10,45547414;2,724137931;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,686862795;10,43823276;2,739942529;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,685972584;10,41806034;2,760057471;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,687154556;10,44662356;2,727011494;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,686138555;10,42359195;2,75;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,685757665;10,4149569;2,75862069;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,686325038;10,42784483;2,745689655;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,686969705;10,44320402;2,728448276;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,688391186;10,47567529;2,695402299;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,686957312;10,44340517;2,727011494;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,685877976;10,41893678;2,751436782;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,686023073;10,42251437;2,747126437;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,686048544;10,42333333;2,745689655;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,686210372;10,42718391;2,74137931;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,686820827;10,44117816;2,727011494;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,686272761;10,42900862;2,738505747;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,686031684;10,42386494;2,742816092;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,686955292;10,44498563;2,721264368;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,685876837;10,42053161;2,745689655;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,687724933;10,46278736;2,702586207;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,687294732;10,4533477;2,711206897;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,685727959;10,41850575;2,744252874;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,686412316;10,4341092;2,728448276;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,685529964;10,41446839;2,747126437;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,68641137;10,43449713;2,727011494;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,686691062;10,44107759;2,719827586;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,686213376;10,43045977;2,729885057;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,686813951;10,44550287;2,711206897;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,686619543;10,44112069;2,715517241;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,687378682;10,4583477;2,698275862;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,686111102;10,4295977;2,727011494;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,686333623;10,43484195;2,721264368;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,685870026;10,42445402;2,731321839;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,685323721;10,41231322;2,742816092;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,68621041;10,43242816;2,722701149;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,686441672;10,43821839;2,715517241;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,685914739;10,42639368;2,727011494;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,686093297;10,43051724;2,722701149;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,687782207;10,46896552;2,683908046;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,685749325;10,42288793;2,729885057;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,684905718;10,40387931;2,748563218;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,686010525;10,42916667;2,722701149;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,686241851;10,4345546;2,716954023;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,685862593;10,42675287;2,722701149;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,684900241;10,405;2,744252874;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,686987652;10,45237069;2,69683908;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,685654847;10,42295977;2,724137931;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,687364891;10,46175287;2,685344828;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,686530089;10,44288793;2,704022989;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,686013724;10,43123563;2,715517241;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,684746144;10,40248563;2,744252874;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,686727954;10,44772989;2,698275862;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,688100125;10,47939655;2,665229885;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,685784845;10,4270977;2,716954023;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,685922017;10,43054598;2,712643678;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,686346805;10,44070402;2,701149425;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,686082899;10,43478448;2,706896552;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,686314225;10,44017241;2,701149425;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicymaximize +-0,685794337;10,42846264;2,712643678;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,686416239;10,44264368;2,698275862;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,686629954;10,44774425;2,692528736;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,685346525;10,41873563;2,721264368;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,685801252;10,42938218;2,709770115;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,685476587;10,42247126;2,715517241;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,687736393;10,47386494;2,663793103;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,6851862;10,41652299;2,719827586;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,68578873;10,43038793;2,70545977;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,685463055;10,42426724;2,708333333;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,686406721;10,44692529;2,682471264;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,686360052;10,44616379;2,682471264;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,685814628;10,43403736;2,693965517;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,685842741;10,43489943;2,692528736;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,686687164;10,45432471;2,672413793;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,685827707;10,43505747;2,691091954;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,686738793;10,45718391;2,665229885;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,684931953;10,41640805;2,70545977;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,68634463;10,44873563;2,672413793;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,686332302;10,44853448;2,672413793;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,686229342;10,44645115;2,673850575;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,685705932;10,43468391;2,685344828;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,685125351;10,42158046;2,698275862;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,686267892;10,44829023;2,66954023;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,685313401;10,42706897;2,689655172;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,686237008;10,44818966;2,668103448;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,685459378;10,43066092;2,685344828;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,684926282;10,41873563;2,69683908;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicymaximize +-0,686720729;10,45971264;2,655172414;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,686300214;10,45043103;2,663793103;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,685636925;10,43557471;2,67816092;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,684140467;10,40268678;2,708333333;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,68581705;10,44093391;2,66954023;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,685926925;10,44393678;2,665229885;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,685555656;10,43586207;2,672413793;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,685421877;10,43327586;2,673850575;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,685259985;10,42982759;2,676724138;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,686243405;10,45232759;2,653735632;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,685651247;10,43984195;2,663793103;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,686040878;10,44902299;2,653735632;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,686781461;10,46635057;2,635057471;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicymaximize +-0,685928983;10,44760057;2,652298851;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricminimum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,68545482;10,43704023;2,662356322;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricminimum,vmselectionpolicy,vmselectionpolicyminimize +-0,685832188;10,44561782;2,653735632;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicywf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicymaximize +-0,68554268;10,43968391;2,658045977;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,684579383;10,41831897;2,67816092;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,686233952;10,4562069;2,639367816;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,685191535;10,43274425;2,662356322;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicymaximize +-0,685806263;10,44761494;2,645114943;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize +-0,684512202;10,41883621;2,672413793;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricproduct,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricsum,vmselectionpolicy,vmselectionpolicyminimize +-0,685934111;10,45413793;2,629310345;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricmaximum,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,684666635;10,43022989;2,640804598;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetriclength,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicymaximize +-0,684599649;10,42954023;2,639367816;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricsum,pmselectionpolicy,pmselectionpolicybf,vmselectionmetric,vmselectionmetricimbalance,vmselectionpolicy,vmselectionpolicyminimize +-0,685543185;10,45300287;2,610632184;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricmaximum,vmselectionpolicy,vmselectionpolicyminimize +-0,684471645;10,42946839;2,632183908;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetricproduct,vmselectionpolicy,vmselectionpolicyminimize +-0,684969623;10,44566092;2,603448276;cloudrm,consolidationfriendly,pmselectionmetric,pmselectionmetricimbalance,pmselectionpolicy,pmselectionpolicyff,vmselectionmetric,vmselectionmetriclength,vmselectionpolicy,vmselectionpolicyminimize diff --git a/code/resources/measures/CloudRM.xml b/code/resources/measures/CloudRM.xml new file mode 100644 index 0000000000000000000000000000000000000000..112e9c652a329308ec54ece59d77b14127a16e57 --- /dev/null +++ b/code/resources/measures/CloudRM.xml @@ -0,0 +1,1378 @@ +<results> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7262.8</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7261.19</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7254.33</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7259.74</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7250.78</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7254.64</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7276.21</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7266.16</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7260.97</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7264.18</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7270.73</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7262.41</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7254.07</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7258.59</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7254.82</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7251.44</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7266.99</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7270.85</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7265.01</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7270.15</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7278.2</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7266.75</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7258.66</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7279.96</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7258.7</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7255.29</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7251.15</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7262.69</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7255.84</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7259.55</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7268.61</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7276.08</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7271.62</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7265</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7257.26</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7271.54</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7249.82</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7252.39</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7254.04</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7257.24</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7264.52</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7240.27</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7271.53</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7272.14</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7271.63</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7273.5</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7259.64</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7257.02</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7277.01</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7257.78</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7261.39</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7262.29</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7267.25</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7284.58</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7270.53</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7258.91</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7275.29</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7270.07</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7271.06</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7270.18</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7268.25</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7263.36</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7259.44</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7262.09</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7281.38</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7258.68</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7279.01</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7271.62</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7274.85</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7254.38</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7269.71</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_FF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7272.01</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7259.16</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7258.3</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7258.85</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7248.81</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7241.1</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7249.9</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7277.52</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7266.02</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7268.98</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7266.13</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7258.96</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7262.14</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7250.24</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7259</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7256.77</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7253.42</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7264.85</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7255.01</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7251.51</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7272.32</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7272.52</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7262.54</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7266.89</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7267.06</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7251.28</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7259.79</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7250.97</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7250.16</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7249.3</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7253.52</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7264.45</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7255.42</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7261.27</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7247.92</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7272.18</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7262.03</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7262.61</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7259.66</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7246.97</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7258.45</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7266.36</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7261.56</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7268.47</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7260.14</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7267.02</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7263.16</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7271.94</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7262.45</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7244.39</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7251.96</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7241.88</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7257.32</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7255.37</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7254.58</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7252.69</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7253.59</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7262.65</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7240.13</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7248.47</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7251.44</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7249.01</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7268.24</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7259.6</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7258.21</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7251.58</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7252.22</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7271.4</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7262.77</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7266.73</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7268.08</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7262.68</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_BF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7274.82</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7274.84</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7290.22</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7284.19</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7291.55</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7273.19</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7275.43</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7276.96</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7282.15</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7283.62</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7278.55</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7283.41</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_sum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7279.94</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7270.15</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7263.26</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7274.46</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7275</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7273.3</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7280.04</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7279.7</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7274.76</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7278.99</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7279.98</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7281.3</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_product,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7284.17</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7286.38</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7286.96</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7288.49</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7292.7</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7289.33</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7299.21</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7288.45</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7299.44</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7294.54</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7293.28</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7297.06</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_maximum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7303.64</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7274.61</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7270.42</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7265.03</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7280.36</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7259.71</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7262.14</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7273.43</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7270.6</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7275.53</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7275.94</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7270.1</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_minimum,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7271.24</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7280.66</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7286.9</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7293.66</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7282.94</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7277.74</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7288.01</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7300.57</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7289.81</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7282.1</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7291.07</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7287.44</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_imbalance,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7290.56</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7281.01</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7285.71</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7286.37</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7290.13</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7290.01</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_maximize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7277.38</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_sum,</data> + <data columname="Measured Value">7284.59</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_product,</data> + <data columname="Measured Value">7284.95</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_maximum,</data> + <data columname="Measured Value">7282.78</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_minimum,</data> + <data columname="Measured Value">7277.03</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_imbalance,</data> + <data columname="Measured Value">7286.4</data> + </row> + <row> + <data columname="Configuration">consolidation_friendly,PM_selection_policy,PM_selection_policy_WF,PM_selection_metric,PM_selection_metric_length,VM_selection_policy,VM_selection_policy_minimize,VM_selection_metric,VM_selection_metric_length,</data> + <data columname="Measured Value">7272.69</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_FF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7805.51</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_FF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7799.58</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_FF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7795.88</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_FF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7814.98</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_FF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7804.79</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_FF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7802.16</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_BF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7812.43</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_BF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7807.9</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_BF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7813.09</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_BF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7801.91</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_BF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7822.83</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_BF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7810.43</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_WF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7820.1</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_WF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7810.53</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_WF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7809.33</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_WF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7817.99</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_WF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7799.85</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_025,selection_policy,selection_policy_WF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7808.4</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_FF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7808.31</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_FF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7814.38</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_FF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7821.42</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_FF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7810.12</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_FF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7803.23</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_FF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7816.88</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_BF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7820.24</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_BF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7821.16</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_BF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7819.08</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_BF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7808.94</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_BF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7829.43</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_BF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7825.75</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_WF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7813.7</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_WF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7815.91</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_WF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7814.93</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_WF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7819.14</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_WF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7812.65</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_03,selection_policy,selection_policy_WF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7810.18</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_FF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7758.19</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_FF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7740.43</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_FF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7768.14</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_FF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7752.86</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_FF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7738.51</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_FF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7731.25</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_BF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7747.72</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_BF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7739.39</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_BF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7779.3</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_BF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7747.23</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_BF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7791.99</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_BF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7752.18</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_WF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7789.36</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_WF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7794.55</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_WF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7747.94</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_WF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7764.6</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_WF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7741.45</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_05,selection_policy,selection_policy_WF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7777.71</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_FF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">9028.81</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_FF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">9040.6</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_FF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">9086.43</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_FF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">9043.74</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_FF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">9062.26</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_FF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">9051.97</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_BF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">9104.84</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_BF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">9110.96</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_BF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">9089.44</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_BF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">9070.42</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_BF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">9078.47</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_BF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">9083.61</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_WF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">9009.26</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_WF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">9031.48</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_WF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">9052.82</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_WF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">9059.76</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_WF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">9030.14</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_06,selection_policy,selection_policy_WF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">9020.84</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_FF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7633.24</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_FF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7619.74</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_FF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7613.97</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_FF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7627</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_FF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7617.68</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_FF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7642.05</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_BF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7609.66</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_BF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7620.69</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_BF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7611.59</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_BF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7618.53</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_BF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7615.9</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_BF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7622.22</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_WF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7724.5</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_WF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7700.95</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_WF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7747.36</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_WF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7689.34</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_WF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7737.66</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_09,selection_policy,selection_policy_WF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7715.03</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_FF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7276.65</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_FF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7285.97</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_FF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7288.51</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_FF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7282.9</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_FF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7290.16</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_FF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7288.42</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_BF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7247.69</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_BF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7269.85</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_BF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7243.11</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_BF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7272.13</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_BF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7249.71</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_BF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7243.27</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_WF,selection_metric,selection_metric_sum,</data> + <data columname="Measured Value">7430.35</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_WF,selection_metric,selection_metric_product,</data> + <data columname="Measured Value">7415.99</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_WF,selection_metric,selection_metric_maximum,</data> + <data columname="Measured Value">7449.88</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_WF,selection_metric,selection_metric_minimum,</data> + <data columname="Measured Value">7366.57</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_WF,selection_metric,selection_metric_imbalance,</data> + <data columname="Measured Value">7420.47</data> + </row> + <row> + <data columname="Configuration">maxsize,relative_size_mu,relative_size_mu_1,selection_policy,selection_policy_WF,selection_metric,selection_metric_length,</data> + <data columname="Measured Value">7445.88</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_2,</data> + <data columname="Measured Value">8824.66</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_3,</data> + <data columname="Measured Value">7766.14</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_4,</data> + <data columname="Measured Value">6984.47</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_5,</data> + <data columname="Measured Value">6444.84</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_6,</data> + <data columname="Measured Value">6071.44</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_7,</data> + <data columname="Measured Value">5769.2</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_8,</data> + <data columname="Measured Value">5554.77</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_9,</data> + <data columname="Measured Value">5347.02</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_10,</data> + <data columname="Measured Value">5179.68</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_11,</data> + <data columname="Measured Value">5051.18</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_12,</data> + <data columname="Measured Value">4947.15</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_13,</data> + <data columname="Measured Value">4861.18</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_14,</data> + <data columname="Measured Value">4780.01</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_15,</data> + <data columname="Measured Value">4689.22</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_16,</data> + <data columname="Measured Value">4614.55</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_17,</data> + <data columname="Measured Value">4568.5</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_18,</data> + <data columname="Measured Value">4513.06</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_19,</data> + <data columname="Measured Value">4479.52</data> + </row> + <row> + <data columname="Configuration">multiple,task_group_size_k,task_group_size_k_20,</data> + <data columname="Measured Value">4422.35</data> + </row> + <row> + <data columname="Configuration">simple,</data> + <data columname="Measured Value">7815.49</data> + </row> +</results> diff --git a/code/resources/models/CloudRM.xml b/code/resources/models/CloudRM.xml new file mode 100644 index 0000000000000000000000000000000000000000..d5965ab1c58a2731c68bea95a15d49cd8ba692ec --- /dev/null +++ b/code/resources/models/CloudRM.xml @@ -0,0 +1,86 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<featureModel> + <properties/> + <struct> + <alt abstract="true" mandatory="true" name="CloudRM"> + <and name="Multiple"> + <alt mandatory="true" name="Task_Group_SizeK"> + <feature name="Task_Group_SizeK2"/> + <feature name="Task_Group_SizeK3"/> + <feature name="Task_Group_SizeK4"/> + <feature name="Task_Group_SizeK5"/> + <feature name="Task_Group_SizeK6"/> + <feature name="Task_Group_SizeK7"/> + <feature name="Task_Group_SizeK8"/> + <feature name="Task_Group_SizeK9"/> + <feature name="Task_Group_SizeK10"/> + <feature name="Task_Group_SizeK11"/> + <feature name="Task_Group_SizeK12"/> + <feature name="Task_Group_SizeK13"/> + <feature name="Task_Group_SizeK14"/> + <feature name="Task_Group_SizeK15"/> + <feature name="Task_Group_SizeK16"/> + <feature name="Task_Group_SizeK17"/> + <feature name="Task_Group_SizeK18"/> + <feature name="Task_Group_SizeK19"/> + <feature name="Task_Group_SizeK20"/> + </alt> + </and> + <feature name="Simple"/> + <and name="Maxsize"> + <alt mandatory="true" name="Relative_Size_mu"> + <feature name="Relative_Size_mu_025"/> + <feature name="Relative_Size_mu_03"/> + <feature name="Relative_Size_mu_05"/> + <feature name="Relative_Size_mu_06"/> + <feature name="Relative_Size_mu_09"/> + <feature name="Relative_Size_mu_1"/> + </alt> + <alt mandatory="true" name="Selection_Policy"> + <feature name="Selection_Policy_FF"/> + <feature name="Selection_Policy_BF"/> + <feature name="Selection_Policy_WF"/> + </alt> + <alt mandatory="true" name="Selection_Metric"> + <feature name="Selection_Metric_Sum"/> + <feature name="Selection_Metric_Product"/> + <feature name="Selection_Metric_Maximum"/> + <feature name="Selection_Metric_Minimum"/> + <feature name="Selection_Metric_Imbalance"/> + <feature name="Selection_Metric_Length"/> + </alt> + </and> + <and name="Consolidation_Friendly"> + <alt mandatory="true" name="PM_Selection_Policy"> + <feature name="PM_Selection_Policy_FF"/> + <feature name="PM_Selection_Policy_BF"/> + <feature name="PM_Selection_Policy_WF"/> + </alt> + <alt mandatory="true" name="PM_Selection_Metric"> + <feature name="PM_Selection_Metric_Sum"/> + <feature name="PM_Selection_Metric_Product"/> + <feature name="PM_Selection_Metric_Maximum"/> + <feature name="PM_Selection_Metric_Minimum"/> + <feature name="PM_Selection_Metric_Imbalance"/> + <feature name="PM_Selection_Metric_Length"/> + </alt> + <alt mandatory="true" name="VM_Selection_Policy"> + <feature name="VM_Selection_Policy_Maximize"/> + <feature name="VM_Selection_Policy_Minimize"/> + </alt> + <alt mandatory="true" name="VM_Selection_Metric"> + <feature name="VM_Selection_Metric_Sum"/> + <feature name="VM_Selection_Metric_Product"/> + <feature name="VM_Selection_Metric_Maximum"/> + <feature name="VM_Selection_Metric_Minimum"/> + <feature name="VM_Selection_Metric_Imbalance"/> + <feature name="VM_Selection_Metric_Length"/> + </alt> + </and> + </alt> + </struct> + <constraints/> + <calculations Auto="true" Constraints="true" Features="true" Redundant="true" Tautology="true"/> + <comments/> + <featureOrder userDefined="false"/> +</featureModel> diff --git a/code/src/fr/univ/lille/Main.java b/code/src/fr/univ/lille/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..38ba100e6061b141c134f26faf7acf4f5444ae94 --- /dev/null +++ b/code/src/fr/univ/lille/Main.java @@ -0,0 +1,76 @@ +package fr.univ.lille; + +import org.apache.commons.io.FilenameUtils; + +import fr.univ.lille.results.ResultsWriter; + +public class Main { + + private static int nbRun = 0; + + /** + * Retrieve all arguments, setup the result file and run the exploration + * @param args + */ + public static void main(String[] args) { + try { + int stratType = Integer.parseInt(args[0]); + String modelFileName = args[1]; + ResultsWriter.setFilePath(FilenameUtils.getBaseName(modelFileName)+"_"+getStrategyName(stratType)); + + String measuresFilePath = args[2]; + if (args.length > 3) { + nbRun = Integer.parseInt(args[3]); + // To be optimized to avoid reloading all configurations for each run... + for (int i = 0; i < nbRun; i++) { + runExploration(stratType, modelFileName, measuresFilePath); + } + } else { + runExploration(stratType, modelFileName, measuresFilePath); + } + ResultsWriter.writeAverage(nbRun); + } catch (ArrayIndexOutOfBoundsException e) { + System.out.println("Requires (at least) 3 arguments:"); + System.out.println("- An int for the strategy (1 for random, 2 for incremental or 3 for degree)"); + System.out.println("- The feature model file path"); + System.out.println("- The measurements file path"); + System.out.println("- (opt) the number of runs"); + System.out.println(); + System.out.println("Examples:"); + System.out.println("java -jar explore.jar 1 resources/models/CloudRM.xml resources/measures/CloudRM.xml"); + System.out.println("java -jar explore.jar 2 resources/models/CloudRM.xml resources/measures/CloudRM.xml 100"); + } + + } + + /** + * Used to get the name of the file for the results + * @param stratType the int argument given when running the application + * @return the strategy name + */ + private static String getStrategyName(int stratType) { + switch (stratType) { + case 1: + return "Random"; + case 2: + return "Incremental"; + case 3: + return "IncrementalDegree"; + default: return "?"; + } + } + + /** + * Create a MeasureFinder instance that "link" the exploration part with the measurement parsing one + * @param stratType + * @param modelFileName + * @param measuresFilePath + */ + private static void runExploration(int stratType, String modelFileName, String measuresFilePath) { + MeasureFinder finder = new MeasureFinder(stratType, modelFileName, measuresFilePath); + finder.loadMeasures(); + finder.explore(); + + ResultsWriter.writeResult(finder.getResult()); + } +} diff --git a/code/src/fr/univ/lille/MeasureFinder.java b/code/src/fr/univ/lille/MeasureFinder.java new file mode 100644 index 0000000000000000000000000000000000000000..a142b64f5831da40b9f1a8b93327f0c7817b9f9c --- /dev/null +++ b/code/src/fr/univ/lille/MeasureFinder.java @@ -0,0 +1,179 @@ +package fr.univ.lille; + +import java.io.IOException; +import java.util.Iterator; +import java.util.List; + +import javax.xml.parsers.ParserConfigurationException; + +import org.apache.commons.io.FilenameUtils; +import org.xml.sax.SAXException; + +import fr.univ.lille.exploration.FMExplorer; +import fr.univ.lille.measurements.ConfigurationValidator; +import fr.univ.lille.measurements.Measure; +import fr.univ.lille.measurements.MeasuresLoader; +import fr.univ.lille.strategies.AbstractStrategy; +import fr.univ.lille.strategies.IncrementalDegreeStrategy; +import fr.univ.lille.strategies.IncrementalStrategy; + +/** + * This class is responsible for running the strategy and check + * if the returned configuration is the good one, i.e. the one related to the + * randomly picked @see measureValue; + * @author cquinton + * + */ +public class MeasureFinder { + + private List<Measure> measures; + private String modelFileName; + private String modelFileBaseName; + private String measuresFilePath; + private int strategieType; + private String measureValue; + private int nbConfigurationsExploredForThisRun; + + public MeasureFinder(int strategieType, String modelFileName, String measuresFilePath) { + this.modelFileName = modelFileName; + this.measuresFilePath = measuresFilePath; + this.strategieType = strategieType; + this.modelFileBaseName = FilenameUtils.getBaseName(modelFileName); + this.nbConfigurationsExploredForThisRun = 0; + } + + /** + * Serialize measures from the XML file into a Java object (list of measure) + * Pick one random measure value that will be the "target" of the exploration + */ + public void loadMeasures() { + try { + measures = MeasuresLoader.loadMeasurementsFile(measuresFilePath); + for (Measure measure : measures) { + String formattedMeasureConfig = measure.getConfiguration(); + formattedMeasureConfig = ConfigurationValidator.formatRoot(formattedMeasureConfig, modelFileBaseName); + formattedMeasureConfig = ConfigurationValidator.formatConfiguration(formattedMeasureConfig); + measure.setConfiguration(formattedMeasureConfig); + } + } catch (ParserConfigurationException | SAXException | IOException e1) { + System.out.println("Measures file could not be loaded"); + } + + // (1) Pick a random measure value +// Random randomGenerator = new Random(); +// int index = randomGenerator.nextInt(measures.size()); +// Measure measure = measures.get(index); +// measureValue = measure.getValue(); + + // (2) Explore all configurations + // Only needed once to compute all configurations (Strings) and match them with the rewards from the separate data set + measureValue = ""; + + } + + + public FMExplorer getExplorer() { + AbstractStrategy explorationStrategy = null; + switch (strategieType) { + case 2: + explorationStrategy = new IncrementalStrategy(); + break; + case 3: + explorationStrategy = new IncrementalDegreeStrategy(); + break; + default: + break; + } + + FMExplorer explorer = new FMExplorer(modelFileName); + explorer.setExplorationStrategy(explorationStrategy); + + return explorer; + + } + + /** + * Instantiate a concrete strategy and explore the model with this strategy + * The explorer returns a new configuration while the one matching the + * randomly picked measurement value (@see loadMeasures) has not be returned + */ + public void explore() { + AbstractStrategy explorationStrategy = null; + switch (strategieType) { + case 2: + explorationStrategy = new IncrementalStrategy(); + break; + case 3: + explorationStrategy = new IncrementalDegreeStrategy(); + break; + default: + break; + } + + FMExplorer explorer = new FMExplorer(modelFileName); + + int nbConfigurationsTotal = explorer.getListOfAllConfigurations().size(); + explorer.setExplorationStrategy(explorationStrategy); + +// System.out.println(explorationStrategy.getClass().getSimpleName() + " exploration has started"); + List<String> nextConfiguration = null; + int action = 0; + while (explorer.getExplorationStrategy().hasRemainingConfigurations() && !isMeasureFound(nextConfiguration)) { + nextConfiguration = explorer.getNextConfiguration(); + // Output config string and measure, so this can be mapped to rewards (in external data) + System.out.println(""+action+"\t"+getMeasure(nextConfiguration).replace(".",",")+ + "\t"+ConfigurationValidator.formatConfiguration(nextConfiguration)); + action++; + nbConfigurationsExploredForThisRun++; + } + +// System.out.println(explorationStrategy.getClass().getSimpleName() + " exploration is finished"); +// System.out.println(nbConfigurationsExploredForThisRun + " explored (out of " + nbConfigurationsTotal + ")\n"); + } + + /** + * Compare the returned configuration with the one related to the randomly picked measure + * @param config + * @return true is both configurations are the same + */ + private String getMeasure(List<String> config) { + if (config != null) { + String formattedConfig = ConfigurationValidator.formatConfiguration(config); + for (Measure measure : measures) { + String formattedMeasureConfig = measure.getConfiguration(); + + if (formattedConfig.equals(formattedMeasureConfig)) { + return measure.getValue(); + } + } + return ""; + } + return ""; + } + + /** + * Compare the returned configuration with the one related to the randomly picked measure + * @param config + * @return true is both configurations are the same + */ + private boolean isMeasureFound(List<String> config) { + if (config != null) { + String formattedConfig = ConfigurationValidator.formatConfiguration(config); + for (Measure measure : measures) { + String formattedMeasureConfig = measure.getConfiguration(); + + if (formattedConfig.equals(formattedMeasureConfig)) { + if (measure.getValue().equals(measureValue)) { + return true; + } + } + } + return false; + } + return false; + } + + public int getResult() { + return nbConfigurationsExploredForThisRun; + } +} diff --git a/code/src/fr/univ/lille/exploration/FMExplorer.java b/code/src/fr/univ/lille/exploration/FMExplorer.java new file mode 100644 index 0000000000000000000000000000000000000000..9f9511810e32f9d6f229d5c98c26f998d8c7e3de --- /dev/null +++ b/code/src/fr/univ/lille/exploration/FMExplorer.java @@ -0,0 +1,207 @@ +package fr.univ.lille.exploration; + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +import org.sat4j.specs.TimeoutException; + +import de.ovgu.featureide.fm.core.FeatureModelAnalyzer; +import de.ovgu.featureide.fm.core.analysis.cnf.formula.FeatureModelFormula; +import de.ovgu.featureide.fm.core.base.IFeature; +import de.ovgu.featureide.fm.core.base.IFeatureModel; +import de.ovgu.featureide.fm.core.base.IFeatureStructure; +import de.ovgu.featureide.fm.core.configuration.Configuration; +import de.ovgu.featureide.fm.core.configuration.ConfigurationAnalyzer; +import de.ovgu.featureide.fm.core.configuration.SelectableFeature; +import de.ovgu.featureide.fm.core.configuration.Selection; +import de.ovgu.featureide.fm.core.init.FMCoreLibrary; +import de.ovgu.featureide.fm.core.init.LibraryManager; +import de.ovgu.featureide.fm.core.io.manager.FeatureModelManager; +import fr.univ.lille.strategies.AbstractStrategy; + +public class FMExplorer { + + private IFeatureModel featureModel; + private FeatureModelAnalyzer fmAnalyzer; + private ConfigurationAnalyzer configurationAnalyzer; + private FeatureModelFormula formula; + private Configuration configuration; + private AbstractStrategy explorationStrategy; + private static final int TIMEOUT = 100000; // milliseconds + private static final int NB_MAX_SOLUTIONS = 100000; + private List<List<String>> listOfAllConfigurations; + + public FMExplorer(String fmPath) { + // Load the feature model stored at fmPath in the FeatureIDE xml format + LibraryManager.registerLibrary(FMCoreLibrary.getInstance()); + final Path path = Paths.get(fmPath); + featureModel = FeatureModelManager.load(path); + if (featureModel != null) { + setup(); + } else { + System.out.println("Feature model could not be read!"); + } + } + + /** + * Retrieve and load all necessary elements for parsing/using the feature model with FeatureIDE + */ + private void setup() { + formula = new FeatureModelFormula(featureModel); + configuration = new Configuration(formula); + configurationAnalyzer = new ConfigurationAnalyzer(formula, configuration); + fmAnalyzer = formula.getAnalyzer(); + fmAnalyzer.analyzeFeatureModel(null); + + try { +// System.out.print("Retrieve all configurations. Please wait... "); + listOfAllConfigurations = configurationAnalyzer.getSolutions(NB_MAX_SOLUTIONS); +// System.out.println("Done (" + listOfAllConfigurations.size() + ")."); + } catch (TimeoutException e) { + System.out.println(" **** TIMEOUT **** when enumerating configurations"); + this.explorationStrategy.setAllConfigurations(new ArrayList<List<String>>()); + } + } + + /** + * Get the @see explorationStrategy ready to be used (Incremental and IncrementalDegree) + */ + private void initStrategy() { + this.explorationStrategy.setExplorer(this); + this.explorationStrategy.init(); + } + + /** + * Select the feature given as parameter in the current configuration + * @param featureName the name of the feature to be selected + **/ + public void selectFeature(IFeature feature) { + String featureName = feature.getName(); + SelectableFeature selectedFeature = configuration.getSelectableFeature(featureName); + selectedFeature.setManual(Selection.SELECTED); + } + + /** + * Unselect all features selected in the current configuration + **/ + public void unselectFeatures() { + Collection<SelectableFeature> features = configuration.getFeatures(); + for (SelectableFeature selectableFeature : features) { + selectableFeature.setManual(Selection.UNDEFINED); + } + } + + /** + * Count the number of valid configurations which includes the selected feature(s) + * @return the number of configurations + */ + public int countConfigurations() { + int nbConfigurations = 0; + + if (!fmAnalyzer.isValid(null)) { + System.out.println("Feature model is void: 0 configuration"); + } else { + nbConfigurations = (int) configurationAnalyzer.number(TIMEOUT); + } + return nbConfigurations; + } + + /** + * Print all valid configurations + * @return + */ + public List<List<String>> listConfigurations() throws TimeoutException { + List<List<String>> listConfigurations = configurationAnalyzer.getSolutions(NB_MAX_SOLUTIONS); + return listConfigurations; + } + + /** + * Print all valid configurations which includes the selected feature + * @return + */ + public List<List<String>> listConfigurationsContainingFeature(IFeature feature) throws TimeoutException { + this.unselectFeatures(); + configuration.getSelectableFeature(feature).setManual(Selection.SELECTED); + List<List<String>> listConfigurations = configurationAnalyzer.getSolutions(NB_MAX_SOLUTIONS); + return listConfigurations; + } + + /** + * Return the children features of the feature given as parameter + * @param feature + * @return the children feature of @param feature + */ + private List<IFeature> getChildrenFeatures(IFeature feature) { + List<IFeature> childrenFeatures = new ArrayList<IFeature>(); + IFeature iFeature = featureModel.getFeature(feature.getName()); + List<IFeatureStructure> childrenStructures = iFeature.getStructure().getChildren(); + for (IFeatureStructure iFeatureStructure : childrenStructures) { + childrenFeatures.add(iFeatureStructure.getFeature()); + } + return childrenFeatures; + } + + /** + * Return the parent feature of the feature given as parameter + * @param feature + * @return the parent feature of @param feature + */ + public IFeature getParentFeature(IFeature feature) { + return featureModel.getFeature(feature.getName()).getStructure().getParent().getFeature(); + } + + /** + * Return the sibling features of the feature given as parameter + * @param feature + * @return the siblings feature (same parent feature as @param feature) + */ + public List<IFeature> getSiblingFeatures(IFeature feature) { + List<IFeature> siblingFeatures = new ArrayList<IFeature>(); + IFeature iFeature = featureModel.getFeature(feature.getName()); + IFeature parentFeature = getParentFeature(iFeature); + siblingFeatures.addAll(getChildrenFeatures(parentFeature)); + siblingFeatures.remove(feature); + return siblingFeatures; + } + + /** + * Return the leaf features of the feature model + * @return the leaves + */ + public List<IFeature> getLeafFeatures() { + List<IFeature> leafFeatures = new ArrayList<IFeature>(); + Collection<IFeature> features = featureModel.getFeatures(); + for (IFeature iFeature : features) { + if (!iFeature.getStructure().hasChildren()) { + leafFeatures.add(iFeature); + } + } + return leafFeatures; + } + + public List<String> getNextConfiguration() { + return this.explorationStrategy.getNextConfiguration(); + } + + public AbstractStrategy getExplorationStrategy() { + return explorationStrategy; + } + + public void setExplorationStrategy(AbstractStrategy explorationStrategy) { + this.explorationStrategy = explorationStrategy; + this.explorationStrategy.setAllConfigurations(listOfAllConfigurations); + this.explorationStrategy.setRemainingConfigurations(listOfAllConfigurations); + this.initStrategy(); + } + + public List<List<String>> getListOfAllConfigurations() { + return listOfAllConfigurations; + } + + public IFeatureModel getFeatureModel() { + return featureModel; + } +} diff --git a/code/src/fr/univ/lille/measurements/ConfigurationValidator.java b/code/src/fr/univ/lille/measurements/ConfigurationValidator.java new file mode 100644 index 0000000000000000000000000000000000000000..0a4635cb9da091510a565b33e7ef372a71c8c7c5 --- /dev/null +++ b/code/src/fr/univ/lille/measurements/ConfigurationValidator.java @@ -0,0 +1,63 @@ +package fr.univ.lille.measurements; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +public class ConfigurationValidator { + + public static String formatConfiguration(String configuration){ + List<String> configAsList = Arrays.asList(configuration.split(",")); + List<String> configAsListTrimed = new ArrayList<String>(); + for (String string : configAsList) { + configAsListTrimed.add(string.toLowerCase().trim().replaceAll("[^a-zA-Z0-9]", "")); + } + + Object[] arrayTrimedAndCleaned = (Object[]) configAsListTrimed.toArray(); + Arrays.sort(arrayTrimedAndCleaned); + + String formattedConfiguration = (String) arrayTrimedAndCleaned[0]; + int arrayLength = arrayTrimedAndCleaned.length; + if (arrayLength > 1) { + for (int i = 1; i < arrayLength; i++) { + formattedConfiguration += ","; + formattedConfiguration += arrayTrimedAndCleaned[i]; + } + } + return formattedConfiguration.toLowerCase(); + } + + public static String formatConfiguration(List<String> configuration){ + List<String> configAsListTrimed = new ArrayList<String>(); + for (String string : configuration) { + configAsListTrimed.add(string.toLowerCase().trim().replaceAll("[^a-zA-Z0-9]", "")); + } + + Object[] arrayTrimedAndCleaned = (Object[]) configAsListTrimed.toArray(); + Arrays.sort(arrayTrimedAndCleaned); + + String formattedConfiguration = (String) arrayTrimedAndCleaned[0]; + int arrayLength = arrayTrimedAndCleaned.length; + if (arrayLength > 1) { + for (int i = 1; i < arrayLength; i++) { + formattedConfiguration += ","; + formattedConfiguration += arrayTrimedAndCleaned[i]; + } + } + return formattedConfiguration.toLowerCase(); + } + + public static String formatRoot(String formattedConfig, String useCase) { + String name = useCase.toLowerCase(); + if (!formattedConfig.toLowerCase().contains(name)) { + formattedConfig = name + "," + formattedConfig; + } + return formattedConfig; + } + + + public static List<String> getConfigAsList(String configuration){ + return Arrays.asList(configuration.split(",")); + } +} + diff --git a/code/src/fr/univ/lille/measurements/Measure.java b/code/src/fr/univ/lille/measurements/Measure.java new file mode 100644 index 0000000000000000000000000000000000000000..771ef3e3014495e9d2c0b66c4bd8f32cf95c6efe --- /dev/null +++ b/code/src/fr/univ/lille/measurements/Measure.java @@ -0,0 +1,23 @@ +package fr.univ.lille.measurements; + +public class Measure { + + private String value; + private String configuration; + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + public String getConfiguration() { + return configuration; + } + + public void setConfiguration(String configuration) { + this.configuration = configuration; + } +} diff --git a/code/src/fr/univ/lille/measurements/MeasurementsParser.java b/code/src/fr/univ/lille/measurements/MeasurementsParser.java new file mode 100644 index 0000000000000000000000000000000000000000..4ca4e58f71213a9af4a108d7aa6470988c235d24 --- /dev/null +++ b/code/src/fr/univ/lille/measurements/MeasurementsParser.java @@ -0,0 +1,57 @@ +package fr.univ.lille.measurements; + +import java.util.ArrayList; +import java.util.List; + +import org.xml.sax.Attributes; +import org.xml.sax.SAXException; +import org.xml.sax.helpers.DefaultHandler; + +public class MeasurementsParser extends DefaultHandler { + + List<Measure> measureList = null; + Measure measure = null; + + boolean bValue = false; + boolean bConfig = false; + + @Override + public void startElement(String uri, String localName, String qName, + Attributes attributes) throws SAXException { + if (qName.equalsIgnoreCase("row")) { + measure = new Measure(); + //initialize list + if (measureList == null) + measureList = new ArrayList<>(); + } else if (qName.equalsIgnoreCase("data") && attributes.getValue("columname").equalsIgnoreCase("Configuration")) { + bConfig = true; + } else if (qName.equalsIgnoreCase("data") && attributes.getValue("columname").equalsIgnoreCase("Measured Value")) { + bValue = true; + } + } + + @Override + public void endElement(String uri, String localName, String qName) + throws SAXException { + if (qName.equalsIgnoreCase("row")) { + measureList.add(measure); + } + } + + @Override + public void characters(char[] ch, int start, int length) + throws SAXException { + if (bValue) { + measure.setValue(new String(ch, start, length)); + bValue = false; + } else if (bConfig) { + measure.setConfiguration(new String(ch, start, length)); + bConfig = false; + } + } + + public List<Measure> getMeasureList() { + return measureList; + } + +} diff --git a/code/src/fr/univ/lille/measurements/MeasuresLoader.java b/code/src/fr/univ/lille/measurements/MeasuresLoader.java new file mode 100644 index 0000000000000000000000000000000000000000..b20d94612a1062fd8e5da5649aa4dc397cc36fc6 --- /dev/null +++ b/code/src/fr/univ/lille/measurements/MeasuresLoader.java @@ -0,0 +1,25 @@ +package fr.univ.lille.measurements; + +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; + +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.xml.sax.SAXException; + +public class MeasuresLoader { + + public static List<Measure> loadMeasurementsFile(String fileInput) throws ParserConfigurationException, SAXException, IOException { + SAXParserFactory parserFactory = SAXParserFactory.newInstance(); + InputStream inputStream = new FileInputStream(fileInput); + SAXParser parser = parserFactory.newSAXParser(); + MeasurementsParser handler = new MeasurementsParser(); + parser.parse(inputStream, handler); + + return handler.getMeasureList(); + } +} diff --git a/code/src/fr/univ/lille/results/ResultsWriter.java b/code/src/fr/univ/lille/results/ResultsWriter.java new file mode 100644 index 0000000000000000000000000000000000000000..a203093d6e108ecb23d499b582db7dd3a23cc52e --- /dev/null +++ b/code/src/fr/univ/lille/results/ResultsWriter.java @@ -0,0 +1,50 @@ +package fr.univ.lille.results; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.ArrayList; +import java.util.List; + +public class ResultsWriter { + + private static List<Integer> results = new ArrayList<Integer>(); + private static final String RESULTS_PATH = "./"; + public static String filePath; + + private static void write(String thingToWrite) { + File yourFile = new File(filePath); + try { + yourFile.createNewFile(); + FileWriter fw = new FileWriter(filePath, true); + BufferedWriter bw = new BufferedWriter(fw); + PrintWriter out = new PrintWriter(bw); + out.println(thingToWrite); + out.close(); + out.flush(); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } + + } + + public static void setFilePath(String fileName) { + ResultsWriter.filePath = RESULTS_PATH + fileName; + } + + public static void writeResult(int nbConfigurationsExploredForThisRun) { + write(String.valueOf(nbConfigurationsExploredForThisRun)); + results.add(nbConfigurationsExploredForThisRun); + } + + public static void writeAverage(int nbRun) { + int sumExplorations = 0; + for (Integer nbConfigurationsExplored : results) { + sumExplorations = sumExplorations + nbConfigurationsExplored; + } + write("Average = " + String.valueOf(sumExplorations/results.size())); + } +} diff --git a/code/src/fr/univ/lille/strategies/AbstractStrategy.java b/code/src/fr/univ/lille/strategies/AbstractStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..29181beeb393ada77b434e7e807c613ea2ecc075 --- /dev/null +++ b/code/src/fr/univ/lille/strategies/AbstractStrategy.java @@ -0,0 +1,37 @@ +package fr.univ.lille.strategies; + +import java.util.List; + +import fr.univ.lille.exploration.FMExplorer; + +public abstract class AbstractStrategy implements Strategy { + + protected List<List<String>> remainingConfigurations; + protected List<List<String>> allConfigurations; + + public abstract List<String> getNextConfiguration(); + + public abstract void setExplorer(FMExplorer fmExplorer); + public abstract void init(); + + public abstract boolean hasRemainingConfigurations(); +// { +// boolean empty = remainingConfigurations.isEmpty(); +// if (empty) { +// System.out.println("No more remaining configurations to explore"); +// } +// return !empty; +// } + + public void setAllConfigurations(List<List<String>> listOfAllConfigurations) { + this.allConfigurations = listOfAllConfigurations; + } + + public void setRemainingConfigurations(List<List<String>> listOfAllConfigurations) { + this.remainingConfigurations = listOfAllConfigurations; + } + + public List<List<String>> getAllConfigurations() { + return this.allConfigurations; + } +} diff --git a/code/src/fr/univ/lille/strategies/AdvancedStrategy.java b/code/src/fr/univ/lille/strategies/AdvancedStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..1a9e8bb39f4f74b03280ed115d3aa05f4e4c6262 --- /dev/null +++ b/code/src/fr/univ/lille/strategies/AdvancedStrategy.java @@ -0,0 +1,16 @@ +package fr.univ.lille.strategies; + +import java.util.List; + +import de.ovgu.featureide.fm.core.base.IFeature; + +public abstract class AdvancedStrategy extends AbstractStrategy { + + // The list of configurations "currently" considered by the strategy + // For instance, the list of considerations containing a given feature + protected List<List<String>> sortedConfigurations; + +// public abstract IFeature getNextSelectedFeature(); + protected abstract IFeature getFirstSelectedFeature(); + +} diff --git a/code/src/fr/univ/lille/strategies/IncrementalDegreeStrategy.java b/code/src/fr/univ/lille/strategies/IncrementalDegreeStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..2707f0a8be19d6357935a30afd43c00df027affa --- /dev/null +++ b/code/src/fr/univ/lille/strategies/IncrementalDegreeStrategy.java @@ -0,0 +1,130 @@ +package fr.univ.lille.strategies; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.sat4j.specs.TimeoutException; + +import de.ovgu.featureide.fm.core.base.IFeature; +import fr.univ.lille.exploration.FMExplorer; + +/** + * This strategy returns the first configuration randomly, then return the + * following ones in an incremental way (i.e. returns configurations including + * sibling features), considering the feature degree + * + * @author cquinton + */ +public class IncrementalDegreeStrategy extends IncrementalStrategy { + + private static Map<IFeature, Integer> degrees; + private static boolean once = false; + + public IncrementalDegreeStrategy() { + if(!once) + this.degrees = new HashMap<IFeature, Integer>(); + } + + @Override + public void setExplorer(FMExplorer explorer) { + super.setExplorer(explorer); + } + + /** + * Load the configurationDegree map + */ + @Override + public void init() { + + if(!once) + { +// System.out.print("Map each feature to its configuration degree. This can be long, please wait... "); + System.out.print("M"); + for (IFeature feature : this.fmExplorer.getFeatureModel().getFeatures()) { + try { + List<List<String>> listConfigurationsContainingFeature = this.fmExplorer.listConfigurationsContainingFeature(feature); + degrees.put(feature, listConfigurationsContainingFeature.size()); + } catch (TimeoutException e) { + System.out.println("Timeout when loading the map <feature, degree>"); + } + } + once = true; + } +// System.out.println("Done."); + super.init(); + } + + /** + * Selected the first feature to be selected + * + * @param fmExplorer + * @return a randomly selected leaf feature + */ + @Override + protected IFeature getFirstSelectedFeature() { + List<IFeature> leaves = fmExplorer.getLeafFeatures(); + IFeature leafWithHigherDegree = getFeatureWithHigherDegree(leaves); + + List<IFeature> siblingFeatures = fmExplorer.getSiblingFeatures(leafWithHigherDegree); + if (!siblingFeatures.isEmpty()) { + siblings = siblingFeatures; + } + + return leafWithHigherDegree; + } + + private IFeature getFeatureWithHigherDegree(List<IFeature> features) { + IFeature featureWithHigherDegree = features.get(0); + int degree = degrees.get(featureWithHigherDegree); + + for (IFeature iFeature : features) { + if (degrees.get(iFeature) > degree) { + featureWithHigherDegree = iFeature; + } + } + + return featureWithHigherDegree; + } + + /** + * When all sorted configurations have been explored and @see remainingConfigurations is not empty + * Fill the @see sortedConfigurations (i) either with configurations containing a sibling of @see selectedFeature + * (ii) or with configurations containing the parent of @see selectedFeature. + * In both cases, configurations must also be present in @see remainingConfigurations + */ + @Override + protected void reloadSortedConfigurations() { + if (remainingConfigurations.isEmpty()) { +// System.out.println("No more remaining configurations to sort and explore"); + } else { + // If a leaf is mandatory and selected first, then selecting its sibling + // returns an empty sortedConfigurations. One need to select the parent + if (!siblings.isEmpty() && !selectedFeature.getStructure().isMandatory()) { + // There are sibling features, so the one with higher degree is picked + // Then configurations containing this sibling + // and still present in remainingConfigurations are loaded into sortedConfigurations + IFeature siblingFeature = getFeatureWithHigherDegree(siblings); + siblings.remove(siblingFeature); + fillSortedConfigurationsWithConfigurationsContainingFeature(siblingFeature); + } else { + // No (more) sibling feature, so the parent feature is picked + // Then configurations containing this sibling + // and still present in remainingConfigurations are loaded into sortedConfigurations + IFeature parentFeature = fmExplorer.getParentFeature(selectedFeature); + if (!parentFeature.getStructure().isRoot()) { + siblings.clear(); + siblings.addAll(fmExplorer.getSiblingFeatures(parentFeature)); + } + fillSortedConfigurationsWithConfigurationsContainingFeature(parentFeature); + + // For instance, if 2 siblings of a Xor relationships, sortedConfigurations also contains parentFeature + // Then one need to load configurations containing siblings of parentFeature + if (sortedConfigurations.isEmpty()) { + reloadSortedConfigurations(); + } + } + } + } + +} diff --git a/code/src/fr/univ/lille/strategies/IncrementalStrategy.java b/code/src/fr/univ/lille/strategies/IncrementalStrategy.java new file mode 100644 index 0000000000000000000000000000000000000000..a43f74e7100cd13af0734ac735a3f1a7d82ec429 --- /dev/null +++ b/code/src/fr/univ/lille/strategies/IncrementalStrategy.java @@ -0,0 +1,151 @@ +package fr.univ.lille.strategies; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import org.sat4j.specs.TimeoutException; + +import de.ovgu.featureide.fm.core.base.IFeature; +import fr.univ.lille.exploration.FMExplorer; + +/** + * This strategy returns the first configuration randomly, then return the + * following ones in an incremental way (i.e. returns configurations including + * sibling features + * + * @author cquinton + */ +public class IncrementalStrategy extends AdvancedStrategy { + + private Random random; + protected IFeature selectedFeature; + protected FMExplorer fmExplorer; + protected List<IFeature> siblings; + + public IncrementalStrategy() { + this.random = new Random(); + } + + @Override + public void setExplorer(FMExplorer explorer) { + fmExplorer = explorer; + } + + @Override + public void init() { + selectedFeature = getFirstSelectedFeature(); + fmExplorer.selectFeature(selectedFeature); + try { + this.sortedConfigurations = fmExplorer.listConfigurations(); + remainingConfigurations.removeAll(sortedConfigurations); + } catch (TimeoutException e) { + System.out.println(" **** TIMEOUT **** when enumerating configurations containing feature " + + selectedFeature.getName()); + } + } + + /** + * Selected the first feature to be selected + * + * @param fmExplorer + * @return a randomly selected leaf feature + */ + @Override + protected IFeature getFirstSelectedFeature() { + List<IFeature> leaves = fmExplorer.getLeafFeatures(); + int index = random.nextInt(leaves.size()); + + IFeature feature = leaves.get(index); + + List<IFeature> siblingFeatures = fmExplorer.getSiblingFeatures(feature); + if (!siblingFeatures.isEmpty()) { + siblings = siblingFeatures; + } + + return feature; + } + + /** + * Return a random configuration which is both + * in the remaining ones and in the sorted ones + */ + @Override + public List<String> getNextConfiguration() { + int index = random.nextInt(sortedConfigurations.size()); + List<String> product = sortedConfigurations.get(index); + sortedConfigurations.remove(product); + + if (sortedConfigurations.isEmpty()) { + reloadSortedConfigurations(); + } + return product; + } + + /** + * When all sorted configurations have been explored and @see remainingConfigurations is not empty + * Fill the @see sortedConfigurations (i) either with configurations containing a sibling of @see selectedFeature + * (ii) or with configurations containing the parent of @see selectedFeature. + * In both cases, configurations must also be present in @see remainingConfigurations + */ + protected void reloadSortedConfigurations() { + if (remainingConfigurations.isEmpty()) { +// System.out.println("No more remaining configurations to sort and explore"); + } else { + // If a leaf is mandatory and selected first, then selecting its sibling + // returns an empty sortedConfigurations. One need to select the parent + if (!siblings.isEmpty() && !selectedFeature.getStructure().isMandatory()) { + // There are sibling features, so one is picked randomly + // Then configurations containing this sibling + // and still present in remainingConfigurations are loaded into sortedConfigurations + random = new Random(); + int index = random.nextInt(siblings.size()); + IFeature siblingFeature = siblings.get(index); + siblings.remove(siblingFeature); + fillSortedConfigurationsWithConfigurationsContainingFeature(siblingFeature); + } else { + // No (more) sibling feature, so the parent feature is picked + // Then configurations containing this sibling + // and still present in remainingConfigurations are loaded into sortedConfigurations + IFeature parentFeature = fmExplorer.getParentFeature(selectedFeature); + if (!parentFeature.getStructure().isRoot()) { + siblings.clear(); + siblings.addAll(fmExplorer.getSiblingFeatures(parentFeature)); + } + fillSortedConfigurationsWithConfigurationsContainingFeature(parentFeature); + + // For instance, if 2 siblings of a Xor relationships, sortedConfigurations also contains parentFeature + // Then one need to load configurations containing siblings of parentFeature + if (sortedConfigurations.isEmpty()) { + reloadSortedConfigurations(); + } + } + } + } + + protected void fillSortedConfigurationsWithConfigurationsContainingFeature(IFeature feature) { + fmExplorer.unselectFeatures(); + selectedFeature = feature; + fmExplorer.selectFeature(feature); + try { + List<List<String>> configurationsWithSibling = new ArrayList<List<String>>(fmExplorer.listConfigurations()); + + for (List<String> configSibling : configurationsWithSibling) { + if (remainingConfigurations.contains(configSibling)) { + this.sortedConfigurations.add(configSibling); + } + } + remainingConfigurations.removeAll(sortedConfigurations); + } catch (TimeoutException e) { + System.out.println(" **** TIMEOUT **** when enumerating configurations containing sibling feature " + + feature.getName()); + } + } + + @Override + public boolean hasRemainingConfigurations() { + boolean empty = (sortedConfigurations.isEmpty() && remainingConfigurations.isEmpty()); + return !empty; + } + +} diff --git a/code/src/fr/univ/lille/strategies/Strategy.java b/code/src/fr/univ/lille/strategies/Strategy.java new file mode 100644 index 0000000000000000000000000000000000000000..adbebfceac598934ee958da2c74f2cfc579c22f1 --- /dev/null +++ b/code/src/fr/univ/lille/strategies/Strategy.java @@ -0,0 +1,9 @@ +package fr.univ.lille.strategies; + +import java.util.List; + +public interface Strategy { + + public List<String> getNextConfiguration(); + +} diff --git a/code/src/icsoc20/EpsilonGreedyExploration.java b/code/src/icsoc20/EpsilonGreedyExploration.java new file mode 100644 index 0000000000000000000000000000000000000000..160828fe63df4f3b758ba69f36a2644b5f023f22 --- /dev/null +++ b/code/src/icsoc20/EpsilonGreedyExploration.java @@ -0,0 +1,134 @@ +// credits: based on +// +// Catalano Machine Learning Library +// The Catalano Framework +// +// Copyright © Diego Catalano, 2013 +// diego.catalano at live.com +// +// Copyright © Andrew Kirillov, 2007-2008 +// andrew.kirillov@gmail.com +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// + +package icsoc20; + +import java.util.Random; + +/** + * <para>The class implements epsilon greedy exploration policy. Acording to the policy, + * the best action is chosen with probability <b>1-epsilon</b>. Otherwise, + * with probability <b>epsilon</b>, any other action, except the best one, is + * chosen randomly.</para> + * + * <para> According to the policy, the epsilon value is known also as exploration rate. </para> + * @author Diego Catalano + */ +public class EpsilonGreedyExploration implements IExplorationPolicy{ + private double epsilon; + + private int maxAction; + private int previousMaxAction; + + private boolean evolAware; + + private Random r = new Random(); + + /** + * Initializes a new instance of the EpsilonGreedyExploration class. + * @param epsilon Epsilon value (exploration rate). + */ + public EpsilonGreedyExploration(double epsilon, int maxAction, boolean evolAware) { + this.epsilon = epsilon; + this.maxAction = maxAction; + + this.evolAware = evolAware; + } + + /** + * Get Episilon value. + * @return Return Epsilon value. + */ + public double getEpsilon() { + return epsilon; + } + + /** + * The value determines the amount of exploration driven by the policy. + * If the value is high, then the policy drives more to exploration - choosing random + * action, which excludes the best one. If the value is low, then the policy is more + * greedy - choosing the best so far action. + * + * @param epsilon Epsilon value (exploration rate), [0, 1]. + */ + public void setEpsilon(double epsilon) { + this.epsilon = Math.max( 0.0, Math.min( 1.0, epsilon ) ); + } + + public void setDelta(double delta) { + // do nothing; + } + + + public void setMaxAction(int maxAction) { + this.maxAction = maxAction; + } + + public void setPreviousMaxAction(int maxAction) { + this.previousMaxAction = maxAction; + } + + /** + * The method chooses an action depending on the provided estimates. The + * estimates can be any sort of estimate, which values usefulness of the action + * (expected summary reward, discounted reward, etc). + * + * @param actionEstimates Action Estimates. + * @return Return Selected actions. + */ + @Override + public int ChooseAction(double[] actionEstimates){ + int actionsCount = maxAction; + + // find the best action (greedy) + double maxReward = actionEstimates[0]; + int greedyAction = 0; + + for ( int i = 0; i < actionsCount; i++ ) + { + if ( actionEstimates[i] > maxReward ) + { + maxReward = actionEstimates[i]; + greedyAction = i; + } + } + + // try to do exploration + if ( r.nextDouble( ) < epsilon ) + { + int randomAction = r.nextInt( actionsCount - 1 ); + // If evolution aware, explore the set of newly added actions + if(evolAware) { + randomAction = previousMaxAction + r.nextInt( (maxAction - previousMaxAction) - 1); + } + + return randomAction; + } + + return greedyAction; + } + +} \ No newline at end of file diff --git a/code/src/icsoc20/FMExploration.java b/code/src/icsoc20/FMExploration.java new file mode 100644 index 0000000000000000000000000000000000000000..f04d955845488d333b7f4a6ea16e1daa305636c2 --- /dev/null +++ b/code/src/icsoc20/FMExploration.java @@ -0,0 +1,220 @@ +// credits: based on +// +// Catalano Machine Learning Library +// The Catalano Framework +// +// Copyright © Diego Catalano, 2013 +// diego.catalano at live.com +// +// Copyright © Andrew Kirillov, 2007-2008 +// andrew.kirillov@gmail.com +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// + +package icsoc20; + +import java.util.List; +import java.util.Map; +import java.util.Random; + +import org.sat4j.specs.TimeoutException; + +import de.ovgu.featureide.fm.core.base.IFeature; +import fr.univ.lille.MeasureFinder; +import fr.univ.lille.exploration.FMExplorer; +import fr.univ.lille.measurements.ConfigurationValidator; + +/** + * Implements the FM-guided exploration strategies. Follows similar flow as e-greedy, but replaces + * random selection of next action with FM-guided (IncrementalStrategy or IncrementalDegreeStrategy) + * selection of next action. + * + * @author Andreas Metzger + */ +public class FMExploration implements IExplorationPolicy{ + private double epsilon; // exploration rate + private double delta; // to introduce a little randomization to bootstrap FM-guided exploration + + private Random r = new Random(); + private Random q = new Random(); + + private FMExplorer explorer = null; + private MeasureFinder finder = null; + + private int maxAction; + private int previousMaxAction = 0; + + private boolean evolAware = true; + + private Map<String,Integer> confAction; + private Map<Integer,String> actionConf; + + /** + * Initializes a new instance of the FMExploration class. + * @param epsilon Epsilon value (exploration rate). + * @param confAction A map that maps configurations to action numbers (connecting FM-guided and Q-Learning). + * @param actionConf A map that maps action numbers to configurations (connecting FM-guided and Q-Learning). + * @param strategy The FM-guided strategy to be used (2 = Incremental, 3 = IncrementalDegree) + * @param maxAction Highest permissible action in action space (to scope action space during evolution) + * @param evolAware If true, consider new part of action space first + */ + public FMExploration(double epsilon, Map<String,Integer> confAction, + Map<Integer,String> actionConf, int strategy, int maxAction, boolean evolAware) { + this.epsilon = epsilon; + + this.maxAction = maxAction; + this.evolAware = evolAware; + + + this.confAction = confAction; + this.actionConf = actionConf; + + this.finder = new MeasureFinder(strategy, "resources/models/CloudRM.xml", "resources/measures/CloudRM.xml"); + finder.loadMeasures(); + + } + + public double getEpsilon() { + return epsilon; + } + + /** + * Set epsilon. + * + * @param epsilon Epsilon value (exploration rate), [0, 1]. + */ + public void setEpsilon(double epsilon) { + this.epsilon = Math.max( 0.0, Math.min( 1.0, epsilon ) ); + } + + + /** + * Set delta, to introduce a little randomization to bootstrap FM-guided exploration. + * + * @param delta Delta value, [0, 1]. + */ + + public void setDelta(double delta) { + this.delta = Math.max( 0.0, Math.min( 1.0, delta ) ); + } + + public void setMaxAction(int maxAction) { + this.maxAction = maxAction; + } + + public void setPreviousMaxAction(int maxAction) { + this.previousMaxAction = maxAction; + } + + /** + * Action selection by either exploiting knowledge or exploring the action space (using + * FM-guided strategies) + * + * @param actionEstimates Action Estimates (Q-Table). + * @return Return Selected actions. + */ + @Override + public int ChooseAction(double[] actionEstimates){ + int actionsCount = maxAction; + + // Exploitation: find the best action (greedy) + double maxReward = actionEstimates[0]; + int greedyAction = 0; + + for ( int i = 0; i < actionsCount; i++ ) + { + if ( actionEstimates[i] > maxReward ) + { + maxReward = actionEstimates[i]; + greedyAction = i; + } + } + + // Exploration: find the action using FM-guided exploration + if ( r.nextDouble( ) < epsilon ) + { + int fmAction = 0; + String fmConfigOld; + + // use a certain amount of randomness at the start to ensure + // configuration space is "explored" and not stuck in local minima + if(q.nextDouble() < delta) { + fmAction = r.nextInt( actionsCount - 1 ); + } else { + // Find the next configuration starting from greedy action (exploitation) + + // (re-init) Strategy (to start search the whole space of configurations) + // NOTE: Current workaround for not having a setConfig method + this.explorer = finder.getExplorer(); + + // Get config string from greedy action + String currentConfig = actionConf.get(greedyAction); + String nextConfig = ""; + List<String> nextConfiguration; + + while(explorer.getExplorationStrategy().hasRemainingConfigurations()) { + nextConfiguration = explorer.getNextConfiguration(); + String config = ConfigurationValidator.formatConfiguration(nextConfiguration); + + // remember this action, which may be used if new part of adaptation space is exhausted + // "our strategies first explore the feature combinations that were added to the + // adaptation space by an evolution step, and then explore the remaining feature combinations + // if needed" + fmConfigOld = config; + + if(config.equals(currentConfig)) { + if(explorer.getExplorationStrategy().hasRemainingConfigurations()) { + do { + if(explorer.getExplorationStrategy().hasRemainingConfigurations()) { + nextConfiguration = explorer.getNextConfiguration(); + nextConfig = ConfigurationValidator.formatConfiguration(nextConfiguration); + fmAction = confAction.get(nextConfig); + } else { + nextConfig = fmConfigOld; + break; + } + // actions should be smaller than the maximum space + if(fmAction >= actionsCount) continue; + } while((evolAware && fmAction < previousMaxAction)); + + } else { + nextConfig = "-1"; + } + + } + } + + if(nextConfig.equals("")) { + System.out.println("\nERROR: Could not match starting config"); + fmAction = greedyAction; + } else if(nextConfig.equals("-1")) { + // WARNING: Configuration space exhausted + System.out.print("W"); + fmAction = greedyAction; + } else { + fmAction = confAction.get(nextConfig); + } + + } + return fmAction; + } + + + + return greedyAction; + } + +} \ No newline at end of file diff --git a/code/src/icsoc20/IExplorationPolicy.java b/code/src/icsoc20/IExplorationPolicy.java new file mode 100644 index 0000000000000000000000000000000000000000..a1fbc4a6f1415febe546e15599b9840fc187c8fc --- /dev/null +++ b/code/src/icsoc20/IExplorationPolicy.java @@ -0,0 +1,51 @@ +// credits: based on +// +// Catalano Machine Learning Library +// The Catalano Framework +// +// Copyright © Diego Catalano, 2013 +// diego.catalano at live.com +// +// Copyright © Andrew Kirillov, 2007-2008 +// andrew.kirillov@gmail.com +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// + +package icsoc20; + +/** + * The interface describes exploration policies, which are used in Reinforcement + * Learning to explore state space. + * + * @author Diego Catalano + * @author Andreas Metzger (slight extension to include more methods for FM-guided exploration) + */ +public interface IExplorationPolicy { + /** + * The method chooses an action depending on the provided estimates. the + * estimates can be any sort of estimate, which values usefulness of the action + * (expected summary reward, discounted reward, etc). + * + * @param actionEstimates Action estimates. + * @return Returns selected action. + */ + public int ChooseAction(double[] actionEstimates); + public void setEpsilon(double epsilon); + public void setDelta(double delta); + public void setMaxAction(int maxAction); + public void setPreviousMaxAction(int maxAction); + +} \ No newline at end of file diff --git a/code/src/icsoc20/Main.java b/code/src/icsoc20/Main.java new file mode 100644 index 0000000000000000000000000000000000000000..1e27c5330350f804eab8bd871d0850a073b960c1 --- /dev/null +++ b/code/src/icsoc20/Main.java @@ -0,0 +1,381 @@ +package icsoc20; + +import java.awt.Toolkit; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.PrintWriter; +import java.io.Reader; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Locale; +import java.util.Map; + +import com.opencsv.CSVReader; + +/** + * The main class and method for executing the ICSOC 2020 experiments + * + * @author Andreas Metzger + */ +public class Main { + + + // Environment data (will be read from file) + public static double rewards[] = new double[344]; + public static String config[] = new String[344]; + // Specifics for the CloudRM exemplar: QoS values + public static double energy[] = new double[344]; + public static double migrations[] = new double[344]; + + // Mapping configurations to int = action (for Q-Learning) and vice versa + public static Map<String,Integer> confAction = new HashMap<String,Integer>(); + public static Map<Integer,String> actionConf= new HashMap<Integer,String>(); + + + // --- Hyper-Parameters + static double learningRate = .85; // Std. Q-Learning Hyperparam. + static double discountFactor = .2; // Std. Q-Learning Hyperparam. + + static double epsilonDecayRate = 0.97; // Std. E-Decay Hyperparam. + static double deltaDecayRate = 0.90; // Decay Hyperparam. for FM-guided strategies + + // -- Experiment parameters + static int nbrRuns = 100; // repetitions of experiment + static int maxEpisodes = 250; // number of episodes (i.e., time steps) + static int avg = 10; // number of rewards to be averaged (to smooth the curves a little) + + static boolean evolution = true; // True for running evolution experiments + static int nbrEvolSteps = 4; // Max number of evolution steps + + static String resDir = "x-qlearning"; // Results directory + + // specifies which results to compute + static int qln = 1; + static int inc = 1; + static int deg = 1; + + static int eqln = 1; + static int einc = 1; + static int edeg = 1; + + // --- + + public static void main(String[] args) { + + try{ + + // read rewards per config from file + readRewards("./resources/cloudrm.csv"); + + // output to CSV + PrintWriter wr = new PrintWriter(new FileWriter("./dat/"+resDir+"/"+"res.csv")); + wr.println("e;q;qe;ie;ine;de;dne;Eq;Eqe;Eie;Eine;Ede;Edne;Mq;Mqe;Mie;Mine;Mde;Mdne;"); + + // Epsilon Greedy - NON EVOL-AWARE + System.out.println("\n========= e-Greedy - NO EVOL"); + EpsilonGreedyExploration ep = new EpsilonGreedyExploration(0.0, 344, false); + double resultsQ[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double EresultsQ[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double MresultsQ[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + + for(int k = 0; k < nbrRuns; k++) { + System.out.print("\n### "+k+" "); + if(qln == 1) learn(ep, resultsQ[k], EresultsQ[k], MresultsQ[k], evolution); + } + + // Epsilon Greedy - EVOL-AWARE + System.out.println("\n========= e-Greedy - EVOL"); + EpsilonGreedyExploration eep = new EpsilonGreedyExploration(0.0, 344, true); + double resultsQE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double EresultsQE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double MresultsQE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + + for(int k = 0; k < nbrRuns; k++) { + System.out.print("\n### "+k+" "); + if(eqln == 1) learn(eep, resultsQE[k], EresultsQE[k], MresultsQE[k], evolution); + } + + + // FM-Learning: Inc strategy - NON EVOL-AWARE + System.out.println("\n\n========= FM-Learning: Incremental - NO EVOL"); + FMExploration epINE = new FMExploration(0.0, confAction, actionConf, 2, 344, false); + double resultsINE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double EresultsINE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double MresultsINE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + + for(int k = 0; k < nbrRuns; k++) { + System.out.print("\n### "+k+" "); + if(inc == 1) learn(epINE, resultsINE[k], EresultsINE[k], MresultsINE[k], evolution); + } + + // FM-Learning: Inc strategy - EVOL-AWARE + System.out.println("\n\n========= FM-Learning: Incremental - EVOL"); + FMExploration epIE = new FMExploration(0.0, confAction, actionConf, 2, 344, true); + double resultsIE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double EresultsIE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double MresultsIE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + + for(int k = 0; k < nbrRuns; k++) { + System.out.print("\n### "+k+" "); + if(einc == 1 ) learn(epIE, resultsIE[k], EresultsIE[k], MresultsIE[k], evolution); + } + + + // FM-Learning: Deg strategy - NON EVOL-AWARE + System.out.println("\n\n========= FM-Learning: Feature Degree - NO EVOL"); + FMExploration epDNE = new FMExploration(0.0, confAction, actionConf, 3, 344, false); + double resultsDNE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double EresultsDNE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double MresultsDNE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + + for(int k = 0; k < nbrRuns; k++) { + System.out.print("\n### "+k+" "); + if(deg == 1) learn(epDNE, resultsDNE[k], EresultsDNE[k], MresultsDNE[k], evolution); + } + + // FM-Learning: Deg strategy - EVOL-AWARE + System.out.println("\n\n========= FM-Learning: Feature Degree - EVOL"); + FMExploration epDE = new FMExploration(0.0, confAction, actionConf, 3, 344, true); + double resultsDE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double EresultsDE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + double MresultsDE[][] = new double[nbrRuns][maxEpisodes*nbrEvolSteps]; + + for(int k = 0; k < nbrRuns; k++) { + System.out.print("\n### "+k+" "); + if(edeg == 1) learn(epDE, resultsDE[k], EresultsDE[k], MresultsDE[k], evolution); + } + + + // Generate results CSV (averaging the different runs) + double rewQ = 0; double rewQE = 0; double rewIE = 0; double rewINE = 0; double rewDE = 0; double rewDNE = 0; + double ErewQ = 0; double ErewQE = 0; double ErewIE = 0; double ErewINE = 0; double ErewDE = 0; double ErewDNE = 0; + double MrewQ = 0; double MrewQE = 0; double MrewIE = 0; double MrewINE = 0; double MrewDE = 0; double MrewDNE = 0; + + // start CSV output after first complete avg reward was computed + for(int i = avg; i < maxEpisodes*nbrEvolSteps; i++) { + rewQ = 0; rewQE = 0; rewIE = 0; rewINE = 0; rewDE = 0; rewDNE = 0; + ErewQ = 0; ErewQE = 0; ErewIE = 0; ErewINE = 0; ErewDE = 0; ErewDNE = 0; + MrewQ = 0; MrewQE = 0; MrewIE = 0; MrewINE = 0; MrewDE = 0; MrewDNE = 0; + + for(int k = 0; k < nbrRuns; k++) { + rewQ += resultsQ[k][i]; + rewQE += resultsQE[k][i]; + rewIE += resultsIE[k][i]; + rewINE += resultsINE[k][i]; + rewDE += resultsDE[k][i]; + rewDNE += resultsDNE[k][i]; + + ErewQ += EresultsQ[k][i]; + ErewQE += EresultsQE[k][i]; + ErewIE += EresultsIE[k][i]; + ErewINE += EresultsINE[k][i]; + ErewDE += EresultsDE[k][i]; + ErewDNE += EresultsDNE[k][i]; + + MrewQ += MresultsQ[k][i]; + MrewQE += MresultsQE[k][i]; + MrewIE += MresultsIE[k][i]; + MrewINE += MresultsINE[k][i]; + MrewDE += MresultsDE[k][i]; + MrewDNE += MresultsDNE[k][i]; + + } + + wr.println(""+i + +";"+String.format(Locale.GERMANY, "%.10g", rewQ/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", rewQE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", rewIE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", rewINE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", rewDE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", rewDNE/(double)nbrRuns) + + +";"+String.format(Locale.GERMANY, "%.10g", ErewQ/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", ErewQE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", ErewIE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", ErewINE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", ErewDE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", ErewDNE/(double)nbrRuns) + + +";"+String.format(Locale.GERMANY, "%.10g", MrewQ/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", MrewQE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", MrewIE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", MrewINE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", MrewDE/(double)nbrRuns) + +";"+String.format(Locale.GERMANY, "%.10g", MrewDNE/(double)nbrRuns) + ); + + } + wr.close(); + + } catch(Exception e) { + e.printStackTrace(); + } + + System.out.println("\n\n Done"); + Toolkit.getDefaultToolkit().beep(); + + } + + /** + * Implementation of the main learning loop, including the initialization of the Q-Table and + * iterations of get next state and update Q-Table + * + * @param ep the exploration policy to use + * @param results an array of the rewards achieved + * @param evolution consider evolution steps (or not) + */ + public static void learn(IExplorationPolicy ep, double results[], double Eresults[], double Mresults[], boolean evolution) throws Exception { + + // Init Rewards with -1.7, i.e., lowest reward possible (for CloudRM data set here) + // If higher values, this means one implicitly defines exploration via optimistic initial values and + // thus may overlay with the effect of e-greedy or FM-guided learning + QLearning ql = new QLearning(1, 344, ep, false, -1.7); + + // Hyper-parameters for Q-Learning + ql.setDiscountFactor(discountFactor); + ql.setLearningRate(learningRate); + + int action = 0; + double reward = 0; + + // For smoothing the curves a little + double avgreward[] = new double[avg]; + for(int k = 0; k < avg; k++) avgreward[k] = -1; + double totalreward = 0; + double avgE[] = new double[avg]; + for(int k = 0; k < avg; k++) avgE[k] = 0; + double totalE = 0; + double avgM[] = new double[avg]; + for(int k = 0; k < avg; k++) avgM[k] = -1; + double totalM = 0; + + if(!evolution) + nbrEvolSteps = 1; + + // Different evolution steps (if any) + // The action numbers are manually determined from the CloudRM feature model + for(int e = 0; e < nbrEvolSteps; e++) { + switch(e) { + case 0: + if(!evolution) { + ql.setActions(344); + ep.setMaxAction(344); + ep.setPreviousMaxAction(0); + } else { + ql.setActions(26); + ep.setMaxAction(26); + ep.setPreviousMaxAction(0); + } + break; + case 1: + ql.setActions(56); + ep.setMaxAction(56); + ep.setPreviousMaxAction(26); + break; + case 2: + ql.setActions(128); + ep.setMaxAction(128); + ep.setPreviousMaxAction(56); + break; + case 3: + ql.setActions(344); + ep.setMaxAction(344); + ep.setPreviousMaxAction(128); + break; + } + + + double epsilon = 1.0; + double delta = 1.0; + + for(int i = 0; i < maxEpisodes; i++) { + + if(i%50 == 0) + System.out.print("."); + + // Implement epsilon decay + ep.setEpsilon(epsilon); + epsilon = epsilon * epsilonDecayRate; + + // Implement delta decay + // (certain amount of randomness also for FM strategies at beginning) + ep.setDelta(delta); + delta = delta * deltaDecayRate; + + // Select action and get reward for that action + action = ql.GetAction(0); + reward = rewards[action]; + + // compute rewards (smoothed via avg) + avgreward[i % avg] = reward; + totalreward = 0; + for(int k = 0; k < avg; k++) totalreward += avgreward[k]; + results[maxEpisodes*e + i] = totalreward/(double)avg; + + // compute QoS values + avgE[i % avg] = energy[action]; + totalE = 0; + for(int k = 0; k < avg; k++) totalE += avgE[k]; + Eresults[maxEpisodes*e + i] = totalE/(double)avg; + + avgM[i % avg] = migrations[action]; + totalM = 0; + for(int k = 0; k < avg; k++) totalM += avgM[k]; + Mresults[maxEpisodes*e + i] = totalM/(double)avg; + + // Q-Learning + ql.UpdateState(0, action, reward, 0); + } + + } + } + + /** + * Read the rewards per feature combination (configuration) from CSV file. + * NOTE: Configurations for the evolution aware experiments need to be sorted in such a way + * as to allow discerning the FM deltas according to the position in the file + * + * @param filename the filename of the CSV + */ + public static void readRewards(String filename) throws Exception { + + + Reader myReader = new BufferedReader(new FileReader(new File(filename))); + CSVReader myCSV = new CSVReader(myReader, ';'); + + Iterator<String[]> entries = myCSV.iterator(); + String[] entry = null; + entries.next(); // skip the header + + int k=0; + Double tmp = 0.0; + + while(entries.hasNext()){ + entry = entries.next(); + tmp = Double.parseDouble(entry[0].replace(',','.')); + rewards[k] = tmp; + + tmp = Double.parseDouble(entry[1].replace(',','.')); + energy[k] = tmp; + + tmp = Double.parseDouble(entry[2].replace(',','.')); + migrations[k] = tmp; + + config[k] = entry[3]; + + confAction.put(config[k], k); + actionConf.put(k, config[k]); + + k++; + } + + myCSV.close(); + + + } + + + +} diff --git a/code/src/icsoc20/QLearning.java b/code/src/icsoc20/QLearning.java new file mode 100644 index 0000000000000000000000000000000000000000..706dc7b05dc1baf6c507843b806f8a6b371d3199 --- /dev/null +++ b/code/src/icsoc20/QLearning.java @@ -0,0 +1,218 @@ +// credits: based on +// +// Catalano Machine Learning Library +// The Catalano Framework +// +// Copyright © Diego Catalano, 2013 +// diego.catalano at live.com +// +// Copyright © Andrew Kirillov, 2007-2008 +// andrew.kirillov@gmail.com +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// + +package icsoc20; + +import java.util.Locale; +import java.util.Random; + +/** + * The class provides implementation of Q-Learning algorithm, known as + * off-policy Temporal Difference control. + * + * @author Diego Catalano + * @author Andreas Metzger (slight streamlining to be consistent with Sutton & Barto 2018) + */ +public class QLearning{ + // amount of possible states + private int states; + // amount of possible actions + private int actions; + // q-values + private double[][] qvalues; + // exploration policy + private IExplorationPolicy explorationPolicy; + + // discount factor + private double discountFactor = 0.95; + // learning rate + private double learningRate = 0.25; + + /** + * Amount of possible states. + * @return States + */ + public int getStates() { + return states; + } + + /** + * Amount of possible actions. + * @return Actions + */ + public int getActions() { + return actions; + } + + public void setActions(int maxAction) { + actions = maxAction; + } + + + /** + * Exploration policy. + * @return Exploration Policy + */ + public IExplorationPolicy getExplorationPolicy() { + return explorationPolicy; + } + + /** + * Policy, which is used to select actions. + * @param explorationPolicy Exploration Policy + */ + public void setExplorationPolicy(IExplorationPolicy explorationPolicy) { + this.explorationPolicy = explorationPolicy; + } + + /** + * Get Learning Rate + * @return Learning Rate + */ + public double getLearningRate() { + return learningRate; + } + + /** + * Learning rate, [0, 1]. + * The value determines the amount of updates Q-function receives + * during learning. The greater the value, the more updates the function receives. + * The lower the value, the less updates it receives. + * + * @param learningRate + */ + public void setLearningRate(double learningRate) { + this.learningRate = Math.max(0.0, Math.min(1.0, learningRate)); + } + + /** + * Get Discount factor for the expected summary reward. + * + * @return Discount Factor + */ + public double getDiscountFactor() { + return discountFactor; + } + + /** + * Discount factor for the expected summary reward. The value serves as + * multiplier for the expected reward. So if the value is set to 1, + * then the expected summary reward is not discounted. If the value is getting + * smaller, then smaller amount of the expected reward is used for actions' + * estimates update. + * + * @param discountFactor + */ + public void setDiscountFactor(double discountFactor) { + this.discountFactor = Math.max(0.0, Math.min(1.0, discountFactor )); + } + + + + /** + * Initializes a new instance of the QLearning class. + * @param states Amount of possible states. + * @param actions Amount of possible actions. + * @param explorationPolicy Exploration policy. + * @param randomize Randomize action estimates or not. + */ + public QLearning( int states, int actions, IExplorationPolicy explorationPolicy, boolean randomize, double initQValue){ + this.states = states; + this.actions = actions; + this.explorationPolicy = explorationPolicy; + + // create Q-array + qvalues = new double[states][]; + for ( int i = 0; i < states; i++ ){ + qvalues[i] = new double[actions]; + } + + // initialize + for ( int i = 0; i < states; i++ ){ + for ( int j = 0; j < actions; j++ ){ + if (randomize) { + Random r = new Random(); + qvalues[i][j] = r.nextDouble() / 10; + } else { + qvalues[i][j] = initQValue; + } + } + } + } + + + public void printQTable() { + for ( int i = 0; i < states; i++ ){ + for ( int j = 0; j < actions; j++ ){ + System.out.print(String.format(Locale.GERMANY, "%.10g", qvalues[i][j])+"\t"); + } + System.out.println(); + } + } + + + + /** + * Get next action from the specified state. + * @param state Current state to get an action for. + * @return Returns the action for the state. + */ + public int GetAction( int state ){ + return explorationPolicy.ChooseAction( qvalues[state] ); + } + + /** + * Update Q-function's value for the previous state-action pair. + * @param previousState Previous state. + * @param action Action, which leads from previous to the next state. + * @param reward Reward value, received by taking specified action from previous state. + * @param nextState Next state. + */ + public void UpdateState( int previousState, int action, double reward, int nextState ){ + // next state's action estimations + double[] nextActionEstimations = qvalues[nextState]; + + // find maximum expected summary reward from the next state + double maxNextExpectedReward = nextActionEstimations[0]; + + for ( int i = 1; i < actions; i++ ){ + if ( nextActionEstimations[i] > maxNextExpectedReward ) + maxNextExpectedReward = nextActionEstimations[i]; + } + + // previous state's action estimations + double[] previousActionEstimations = qvalues[previousState]; + + // update expected summary reward of the previous state [Sutton & Barto] + previousActionEstimations[action] = previousActionEstimations[action] + + learningRate * (reward + discountFactor * maxNextExpectedReward - previousActionEstimations[action]); + + + } + + + +} \ No newline at end of file diff --git a/data/CloudRM_Rewards_QoS.xlsx b/data/CloudRM_Rewards_QoS.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c4e43a868f2f0ff7881438652269d5b0152c5c58 Binary files /dev/null and b/data/CloudRM_Rewards_QoS.xlsx differ diff --git a/results/CloudRM_Learning_Characteristics.xlsx b/results/CloudRM_Learning_Characteristics.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8fc0ab8faca1395359066e92b3a87723ba92ef7a Binary files /dev/null and b/results/CloudRM_Learning_Characteristics.xlsx differ