示例#1
0
        /** Initialise the simplex and evaluate it. Returns null on failure. */
        private List <double[]> makeSimplex(double[] initialParams, double[] initialParamVariations, Random random)
        {
            var simp = Java.NewDoubleArray2(numVertices, numParams + 1 + numExtraArrayElements);

            /* simpTable.put(Thread.currentThread(), simp); */

            if (initialParams != null)
            {
                for (int i = 0; i < numParams; i++)
                {
                    if (double.IsNaN(initialParams[i]))
                    {
                        Array.Copy(initialParams, 0, simp[0], 0, Math.Min(initialParams.Length, numParams));
                    }
                }
            }
            evaluate(simp[0]);
            if (double.IsNaN(value(simp[0])))
            {
                findValidInitalParams(simp[0], initialParamVariations, random);
            }
            if (double.IsNaN(value(simp[0])))
            {
                return(null);
            }
            if (initializeSimplex(simp, initialParamVariations, random))
            {
                return(simp);
            }
            else
            {
                return(null);
            }
        }