@@ -73,14 +73,26 @@ object BestBinnedDoubleLambda {
7373 })
7474
7575 val bins = RunGivenLambdas .defaultBins(n)
76- val lambdaTable = data.drop( 1 ).map(line => line.split( ',' )( 1 ).toDouble).reverse
76+ println( s " Bins: ${bins.mkString( " , " )} " )
7777 val rawLambdaValues = new Array [Double ](2 * (bins.length - 1 ))
78- for (i <- 0 until bins.length - 1 ) {
79- val sum = lambdaTable.indices.filter(j => bins(i) <= j && j < bins(i + 1 )).map(lambdaTable).sum
80- val lambda = if (i == 0 ) 1 else sum / (bins(i + 1 ) - bins(i))
81- lambdaToParts(lambda, rawLambdaValues, i, n)
78+
79+ cmd.getStringOption(" initial-value" ) match {
80+ case Some (initialValueStr) =>
81+ val tokenizer = new ju.StringTokenizer (initialValueStr, " ," )
82+ if (tokenizer.countTokens() != bins.length - 1 )
83+ throw new IllegalArgumentException (s " Number of tokens in initial-value should equal ${bins.length - 1 }" )
84+ for (i <- 0 until bins.length - 1 ) {
85+ val lambda = tokenizer.nextToken().toDouble
86+ lambdaToParts(lambda, rawLambdaValues, i, n)
87+ }
88+ case None =>
89+ val lambdaTable = data.drop(1 ).map(line => line.split(',' )(1 ).toDouble).reverse
90+ for (i <- 0 until bins.length - 1 ) {
91+ val sum = lambdaTable.indices.filter(j => bins(i) <= j && j < bins(i + 1 )).map(lambdaTable).sum
92+ val lambda = if (i == 0 ) 1 else sum / (bins(i + 1 ) - bins(i))
93+ lambdaToParts(lambda, rawLambdaValues, i, n)
94+ }
8295 }
83- println(s " Bins: ${bins.mkString(" , " )}" )
8496
8597 val pool = new ScheduledThreadPoolExecutor (Runtime .getRuntime.availableProcessors())
8698 val (result, fitness) = NumericMinimization .optimizeDistributionBySeparableCMAES(
0 commit comments