Esempio n. 1
0
 private void init(int number, bool previewMode, EntropySettings entropySettings)
 {
     dimensions              = ChaosSettings_implant.getDimensions();
     sampleCount             = number;
     pMode                   = previewMode;
     entropySettings_implant = entropySettings;
 }
Esempio n. 2
0
    private static double pGetCustomMappedRandomNumber(string equation, EntropySettings settings)
    {
        double value = 1E-15;

        double xvalue = pGetRandomDouble(settings);

        while (xvalue < value)
        {
            xvalue = pGetRandomDouble(settings);
        }

        double yvalue = pGetRandomDouble(settings);

        while (yvalue < value)
        {
            yvalue = pGetRandomDouble(settings);
        }

        double zvalue = pGetRandomDouble(settings);

        while (zvalue < value)
        {
            zvalue = pGetRandomDouble(settings);
        }

        try
        {
            ExpressionParser parser = new();
            parser.Values.Add("x", xvalue);
            parser.Values.Add("y", yvalue);
            parser.Values.Add("z", zvalue);
            // Substitute any Box-Muller queries with the full form.
            equation = equation.Replace("_gxy", "(sqrt(-2 * ln(y)) * cos(2 * PI * x))");
            equation = equation.Replace("_gyz", "(sqrt(-2 * ln(z)) * cos(2 * PI * y))");
            equation = equation.Replace("_gxz", "(sqrt(-2 * ln(z)) * cos(2 * PI * x))");
            value    = parser.Parse(equation);
        }
        catch (Exception e)
        {
            ErrorReporter.showMessage_OK(e.ToString(), "RNG mapper error");
        }

        return(value);
    }
Esempio n. 3
0
    private static double pGetGaussianRandomNumber(EntropySettings settings)
    {
        double value;

        switch (settings.getValue(EntropySettings.properties_i.rngType))
        {
        case (int)commonRNG.rngIndex.crypto:
            value = Crypto_RNG.random_gauss()[0];
            break;

        case (int)commonRNG.rngIndex.mtwister:
            value = MersenneTwister_RNG.random_gauss()[0];
            break;

        default:
            value = RNG.random_gauss()[0];
            break;
        }
        return(value);
    }
Esempio n. 4
0
    private static int pGetRandomInt(EntropySettings settings)
    {
        int value;

        switch (settings.getValue(EntropySettings.properties_i.rngType))
        {
        case (int)commonRNG.rngIndex.crypto:
            value = Crypto_RNG.nextint();
            break;

        case (int)commonRNG.rngIndex.mtwister:
            value = MersenneTwister_RNG.nextint();
            break;

        default:
            value = RNG.nextint();
            break;
        }
        return(value);
    }
Esempio n. 5
0
    private void pChaosSettings_implant(bool previewMode_, EntropySettings entropySettings)
    {
        previewMode = previewMode_;
        if (previewMode)
        {
            implant_resistCDVar     = 0;
            implant_resistHeightVar = 0;
            implant_resistTopCRRVar = 0;
            implant_tiltVar         = 0;
            implant_twistVar        = 0;
        }
        else
        {
            switch (entropySettings.getValue(EntropySettings.properties_i.rngType))
            {
            case (int)commonRNG.rngIndex.mtwister:
                implant_resistCDVar     = MersenneTwister_RNG.random_gauss3()[0];
                implant_resistHeightVar = MersenneTwister_RNG.random_gauss3()[0];
                implant_resistTopCRRVar = MersenneTwister_RNG.random_gauss3()[0];
                implant_tiltVar         = MersenneTwister_RNG.random_gauss3()[0];
                implant_twistVar        = MersenneTwister_RNG.random_gauss3()[0];
                break;

            case (int)commonRNG.rngIndex.crypto:
                implant_resistCDVar     = Crypto_RNG.random_gauss3()[0];
                implant_resistHeightVar = Crypto_RNG.random_gauss3()[0];
                implant_resistTopCRRVar = Crypto_RNG.random_gauss3()[0];
                implant_tiltVar         = Crypto_RNG.random_gauss3()[0];
                implant_twistVar        = Crypto_RNG.random_gauss3()[0];
                break;

            default:
                implant_resistCDVar     = RNG.random_gauss3()[0];
                implant_resistHeightVar = RNG.random_gauss3()[0];
                implant_resistTopCRRVar = RNG.random_gauss3()[0];
                implant_tiltVar         = RNG.random_gauss3()[0];
                implant_twistVar        = RNG.random_gauss3()[0];
                break;
            }
        }
    }
Esempio n. 6
0
 public Sampler_Implant(int number, bool previewMode, EntropySettings entropySettings)
 {
     init(number, previewMode, entropySettings);
 }
Esempio n. 7
0
 public ChaosSettings_implant(bool previewMode_, EntropySettings entropySettings)
 {
     pChaosSettings_implant(previewMode_, entropySettings);
 }
Esempio n. 8
0
    private void pChaosSettings(bool previewMode_, List<EntropyLayerSettings> listOfSettings, EntropySettings simSettings) // set to true for preview; else we run with random inputs
    {
        customRNGMapping = false;
        previewMode = previewMode_;
        int count = listOfSettings.Count;
        overlayX = new double[count];
        overlayY = new double[count];
        hTipBiasType = new double[count];
        vTipBiasType = new double[count];
        horTipBiasVar = new double[count];
        verTipBiasVar = new double[count];
        iCVar = new double[count];
        iC_PAsearch = new bool[count];
        oCVar = new double[count];
        oC_PAsearch = new bool[count];
        LWRVar = new double[count];
        LWR2Var = new double[count];
        CDUSVar = new double[count];
        CDUTVar = new double[count];
        wobbleVar = new double[count];
        LWRSeed = new int[count];
        LWR2Seed = new int[count];
#if !CHAOSSINGLETHREADED
        Parallel.For(0, count, i =>
#else
            for (int i = 0; i < count; i++)
#endif
            {
                iC_PAsearch[i] = false;
                oC_PAsearch[i] = false;
                LWRSeed[i] = 1;
                LWR2Seed[i] = 1;
                if (previewMode)
                {
                    overlayX[i] = 0;
                    overlayY[i] = 0;
                    hTipBiasType[i] = 0;
                    vTipBiasType[i] = 0;
                    horTipBiasVar[i] = 0;
                    verTipBiasVar[i] = 0;
                    iCVar[i] = 0;
                    oCVar[i] = 0;
                    LWRVar[i] = 0;
                    LWR2Var[i] = 0;
                    CDUSVar[i] = 0;
                    CDUTVar[i] = 0;
                    wobbleVar[i] = 0;
                }
                else
                {
                    if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.xOL_RNG)))
                    {
                        customRNGMapping = true;
                        overlayX[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.xOL_RNG), simSettings);
                    }
                    else
                    {
                        overlayX[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    }
                    if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.yOL_RNG)))
                    {
                        customRNGMapping = true;
                        overlayY[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.yOL_RNG), simSettings);
                    }
                    else
                    {
                        overlayY[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    }
                    hTipBiasType[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    vTipBiasType[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);

                    horTipBiasVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    // Need to pay attention to sign here, to pull the right custom equation.
                    if (hTipBiasType[i] < 0.5 && rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.hTipNVar_RNG)))
                    {
                        customRNGMapping = true;
                        horTipBiasVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.hTipNVar_RNG), simSettings);
                    }
                    if (hTipBiasType[i] >= 0.5 && rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.hTipPVar_RNG)))
                    {
                        customRNGMapping = true;
                        horTipBiasVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.hTipPVar_RNG), simSettings);
                    }

                    verTipBiasVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    // Need to pay attention to sign here, to pull the right custom equation.
                    if (vTipBiasType[i] < 0.5 && rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipNVar_RNG)))
                    {
                        customRNGMapping = true;
                        verTipBiasVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipNVar_RNG), simSettings);
                    }
                    if (vTipBiasType[i] >= 0.5 && listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipPVar_RNG) != "" && listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipPVar_RNG) != CommonVars.boxMuller)
                    {
                        verTipBiasVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.vTipPVar_RNG), simSettings);
                    }

                    if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.iCV_RNG)))
                    {
                        customRNGMapping = true;
                        iCVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.iCV_RNG), simSettings);
                    }
                    else
                    {
                        iCVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    }

                    if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.oCV_RNG)))
                    {
                        customRNGMapping = true;
                        oCVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.oCV_RNG), simSettings);
                    }
                    else
                    {
                        oCVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    }

                    if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.lwr_RNG)))
                    {
                        customRNGMapping = true;
                        LWRVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.lwr_RNG), simSettings);
                    }
                    else
                    {
                        LWRVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    }

                    if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.lwr2_RNG)))
                    {
                        customRNGMapping = true;
                        LWR2Var[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.lwr2_RNG), simSettings);
                    }
                    else
                    {
                        LWR2Var[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    }

                    if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.sCDU_RNG)))
                    {
                        customRNGMapping = true;
                        CDUSVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.sCDU_RNG), simSettings);
                    }
                    else
                    {
                        CDUSVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    }

                    // Note that the TVar will be matched to SVar if the simulation settings call for these to be linked.
                    if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.tCDU_RNG)))
                    {
                        customRNGMapping = true;
                        CDUTVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.tCDU_RNG), simSettings);
                    }
                    else
                    {
                        CDUTVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    }

                    if (rngCheck(listOfSettings[i].getString(EntropyLayerSettings.properties_s.wobble_RNG)))
                    {
                        customRNGMapping = true;
                        wobbleVar[i] = UtilityFuncs.getCustomMappedRandomNumber(listOfSettings[i].getString(EntropyLayerSettings.properties_s.wobble_RNG), simSettings);
                    }
                    else
                    {
                        wobbleVar[i] = UtilityFuncs.getGaussianRandomNumber3(simSettings);
                    }

                    LWRSeed[i] = UtilityFuncs.getRandomInt(simSettings);
                    LWR2Seed[i] = UtilityFuncs.getRandomInt(simSettings);
                }
            }
Esempio n. 9
0
 public ChaosSettings(bool previewMode_, List<EntropyLayerSettings> listOfSettings, EntropySettings simSettings) // set to true for preview; else we run with random inputs
 {
     pChaosSettings(previewMode_, listOfSettings, simSettings);
 }
Esempio n. 10
0
 public static double getGaussianRandomNumber(EntropySettings settings)
 {
     return(pGetGaussianRandomNumber(settings));
 }
Esempio n. 11
0
 public static double getRandomDouble(EntropySettings settings)
 {
     return(pGetRandomDouble(settings));
 }
Esempio n. 12
0
 public static double getCustomMappedRandomNumber(string equation, EntropySettings settings)
 {
     return(pGetCustomMappedRandomNumber(equation, settings));
 }
Esempio n. 13
0
 public static int getRandomInt(EntropySettings settings)
 {
     return(pGetRandomInt(settings));
 }