def main_diode():
    """
    Главная функция, осуществляющая эксперимент
    :return:
    """
    bstart = [6.15200000e-08, 1.16000000e00, 3.37600000e-02]  # 20%
    bend = [9.22800000e-08, 1.74000000e00, 5.06400000e-02]  # 20%

    #    bstart = [  4.61400000e-08,   8.70000000e-01,   2.53200000e-02]  # 40%
    #   bend = [  1.07660000e-07,   2.03000000e+00,   5.90800000e-02]  # 40%

    iia = IterationInfoAcceptor("resfiles/M1_Diode.txt", verbose=1)

    msa = DiodeMainScriptMantissaEx1()

    for i in range(50):

        btrue1 = f_sf.rangomNormalvariateVector(bstart, bend)

        # msa.ec.btrue = btrue1
        msa.ec.bstart = bstart
        msa.ec.bend = bend

        try:
            rs = msa.proceed()
            iia.accept(numiter=rs["numiter"], Sk=rs["Sk"], AvDif=rs["AvDif"])

        except:
            print("uno problemo")
            pass

    plt.hist([x["numiter"] for x in iia], 20)
    plt.show()
    plt.savefig("resfiles/MantissaResDiode.png")
Beispiel #2
0
    def __init__(self):

        AbstractMainScript.__init__(self)

        _btrue = [
            7.69e-8, 1.45, .0422
        ]  #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя
        Ve = np.array([[1.9e-5]])
        bstart = np.array(_btrue) - np.array(_btrue) * 0.2
        bend = np.array(_btrue) + np.array(_btrue) * 0.2

        binit = _btrue

        btrue = f_sf.rangomNormalvariateVector(bstart, bend)
        print(btrue)
        #btrue = _btrue

        xstart = [0.001]
        xend = [1]
        N = 100
        self.ec = f_sf.EstimationContext(bstart, bend, btrue, binit, xstart,
                                         xend, Ve, N)

        self.model = f_m.SimpleDiodeModel('Diode_1N')  # сделали модель
        self.ec.model = self.model

        self.measurer = f_me.ModelMeasurer(self.ec.Ve, self.model,
                                           self.ec.btrue)  # сделали измерителя
        self.plan_measurer = f_me.PlanMeasurer(
            self.measurer)  # сделали измеритель по плану
        #self.planner = f_p.DOptimalPlanner(self.ec)
        self.planner = f_p.UniformPlanner(self.ec)
        #self, ec, plancachefoldername='cache', verbose = False)

        self.measdata = None

        #формирование цепочки
        estimator = f_e.NGEstimator()
        estimator.init_parameters(self.ec, self.model)

        self.estimator = f_e.ConsoleEstimatorDecorator(estimator)
Beispiel #3
0
def main_diode():
    """
    Главная функция, осуществляющая эксперимент
    :return:
    """
    bstart = [  6.15200000e-08  , 1.16000000e+00,   3.37600000e-02] # 20%
    bend =   [  9.22800000e-08 ,  1.74000000e+00 ,  5.06400000e-02] # 20%


#    bstart = [  4.61400000e-08,   8.70000000e-01,   2.53200000e-02]  # 40%
 #   bend = [  1.07660000e-07,   2.03000000e+00,   5.90800000e-02]  # 40%


    iia = IterationInfoAcceptor ('resfiles/M1_Diode.txt', verbose=1)

    msa = DiodeMainScriptMantissaEx1()

    for i in range (50):

        btrue1 = f_sf.rangomNormalvariateVector(bstart, bend)

        #msa.ec.btrue = btrue1
        msa.ec.bstart = bstart
        msa.ec.bend = bend

        try:
            rs = msa.proceed()
            iia.accept(numiter=rs['numiter'], Sk=rs['Sk'], AvDif=rs['AvDif'])

        except:
            print ('uno problemo')
            pass




    plt.hist ([x['numiter'] for x in iia],20)
    plt.show()
    plt.savefig('resfiles/MantissaResDiode.png')
    def __init__(self):

        AbstractMainScript.__init__(self)

        _btrue = [7.69e-8, 1.45 ,.0422] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя
        Ve=np.array([[1.9e-5]])
        bstart=np.array(_btrue)-np.array(_btrue)*0.2
        bend=np.array(_btrue)+np.array(_btrue)*0.2

        binit=_btrue

        btrue = f_sf.rangomNormalvariateVector(bstart, bend)
        print (btrue)
        #btrue = _btrue

        xstart=[0.001]
        xend=[1]
        N=100
        self.ec =f_sf.EstimationContext(bstart, bend, btrue, binit, xstart, xend, Ve, N)


        self.model = f_m.SimpleDiodeModel ('Diode_1N') # сделали модель
        self.ec.model = self.model

        self.measurer = f_me.ModelMeasurer(self.ec.Ve, self.model, self.ec.btrue) # сделали измерителя
        self.plan_measurer = f_me.PlanMeasurer(self.measurer) # сделали измеритель по плану
        #self.planner = f_p.DOptimalPlanner(self.ec)
        self.planner = f_p.UniformPlanner(self.ec)
        #self, ec, plancachefoldername='cache', verbose = False)

        self.measdata=None

        #формирование цепочки
        estimator = f_e.NGEstimator()
        estimator.init_parameters(self.ec, self.model)

        self.estimator  = f_e.ConsoleEstimatorDecorator(estimator)
def main_transistor():
    """
    Главная функция, осуществляющая эксперимент
    :return:
    """
    # bstart = [  6.15200000e-08  , 1.16000000e+00,   3.37600000e-02] # 20%
    # bend =   [  9.22800000e-08 ,  1.74000000e+00 ,  5.06400000e-02] # 20%

    #    bstart = [  4.61400000e-08,   8.70000000e-01,   2.53200000e-02]  # 40%
    #   bend = [  1.07660000e-07,   2.03000000e+00,   5.90800000e-02]  # 40%

    # transistor

    inf = 10e10
    # числовые значения изменены шоб было по 7 значимых

    IS = 11.23456e-15
    BF = 584.5171
    VAF = 112.3456
    VAR = inf
    IKF = 29.27141e-3  # ток перехода к высококу уровню инжекции inf
    ISE = 131.8031e-12  # генерационно-рекомбинационный ток насыщения  эмиттерного перех 0
    NE = 2.083371  # коэфф. неидеальности ген-рек тока эмиттерного перех   1
    NR = 1  # коэфф неидеальности для диффузного тока в инв режиме  1
    NF = 1  # коэфф неидеальности для диффузионного тока в нормальном режиме        1
    NC = 1  # коэфф неидеальности генерационно-рекомбинацоинного тока коллектора    1
    BR = 1.952141  # инверсный коэфф усиления тока в схеме с ОЭ 1
    IKR = 9.999961e-3  # ток перехода к высокому уровню инжекции в инверсном включении inf
    ISC = 100.3161e-12  # генерационно-рекомбинационный ток насыщения колекторного перех 0
    RE = 1  # сопротивления эмиттера, коллектора, базы 0 0 0
    RC = 5.48635
    RB = 0
    btrue = [IS, BF, NR, NF, BR]
    bstart = np.array(btrue) - np.array(btrue) * 0.3
    bend = np.array(btrue) + np.array(btrue) * 0.3

    from Cases.Mantissa2 import IterationInfoAcceptor

    iia = IterationInfoAcceptor("resfiles/M1.txt")

    msa = TransistorMainScriptMantissaEx1()

    for i in range(50):

        btrue1 = f_sf.rangomNormalvariateVector(bstart, bend)

        msa.ec.btrue = btrue1
        msa.ec.bstart = bstart
        msa.ec.bend = bend

        try:
            print("entering")
            rs = msa.proceed()
            iia.accept(numiter=rs["numiter"], Sk=rs["Sk"], AvDif=rs["AvDif"])

        except:
            print("uno problemo")
            pass

        try:
            plt.hist([x[0] for x in iia], 20)
            plt.show()
            plt.savefig("resfiles/MantissaResTransistor.png")
        except:
            pass
Beispiel #6
0
def main_transistor ():
    """
    Главная функция, осуществляющая эксперимент
    :return:
    """
     #bstart = [  6.15200000e-08  , 1.16000000e+00,   3.37600000e-02] # 20%
    #bend =   [  9.22800000e-08 ,  1.74000000e+00 ,  5.06400000e-02] # 20%


#    bstart = [  4.61400000e-08,   8.70000000e-01,   2.53200000e-02]  # 40%
 #   bend = [  1.07660000e-07,   2.03000000e+00,   5.90800000e-02]  # 40%

    # transistor

    inf=10e10
    #числовые значения изменены шоб было по 7 значимых

    IS = 11.23456e-15
    BF = 584.5171
    VAF = 112.3456
    VAR = inf
    IKF =  29.27141e-3     # ток перехода к высококу уровню инжекции inf
    ISE = 131.8031e-12      # генерационно-рекомбинационный ток насыщения  эмиттерного перех 0
    NE = 2.083371       # коэфф. неидеальности ген-рек тока эмиттерного перех   1
    NR = 1       # коэфф неидеальности для диффузного тока в инв режиме  1
    NF = 1       # коэфф неидеальности для диффузионного тока в нормальном режиме        1
    NC = 1       # коэфф неидеальности генерационно-рекомбинацоинного тока коллектора    1
    BR = 1.952141      # инверсный коэфф усиления тока в схеме с ОЭ 1
    IKR = 9.999961e-3     # ток перехода к высокому уровню инжекции в инверсном включении inf
    ISC = 100.3161e-12     # генерационно-рекомбинационный ток насыщения колекторного перех 0
    RE = 1      # сопротивления эмиттера, коллектора, базы 0 0 0
    RC = 5.48635
    RB = 0
    btrue = [IS, BF, NR, NF, BR]
    bstart = np.array(btrue)-np.array(btrue)*0.3
    bend = np.array(btrue)+np.array(btrue)*0.3

    from Cases.Mantissa2 import IterationInfoAcceptor

    iia = IterationInfoAcceptor ('resfiles/M1.txt')

    msa = TransistorMainScriptMantissaEx1()

    for i in range (50):

        btrue1 = f_sf.rangomNormalvariateVector(bstart, bend)

        msa.ec.btrue = btrue1
        msa.ec.bstart = bstart
        msa.ec.bend = bend

        try:
            print ('entering')
            rs = msa.proceed()
            iia.accept(numiter=rs['numiter'], Sk=rs['Sk'], AvDif=rs['AvDif'])


        except:
            print ('uno problemo')
            pass

        try:
            plt.hist ([x[0] for x in iia],20)
            plt.show()
            plt.savefig('resfiles/MantissaResTransistor.png')
        except:
            pass