def extraction_func_DiodeV3Approach1_part_In(): """ [Реестровая] :return: """ funcf=solver_func_DiodeV3Approach1_part_In jacf=Jac_func_DiodeV3Approach1_part_In c={} Ve=np.array([ [0.001] ] ) btrue=[1.238e-14, 1.3] bstart=np.array(btrue)-np.array(btrue)*0.1 bend=np.array(btrue)+np.array(btrue)*0.1 binit=np.array(btrue)+np.array(btrue)*0.05 xstart=[0.01] #xend=[20,60] xend=[3] N=300 #число точек в плане (для планов, кроме априорного) NArprior=20 #число точек в априорном плане #Получаем априорный план print("performing aprior plan:") #блок кеширования априорного плана в файл filename = os.path.basename(__file__).replace('.py','_plan') try: oplan=o_p.readPlanFromFile(filename) #переключение на чтение априорного плана из файла print ("Read file successful") except BaseException as e: oplan=o_ap.grandApriornPlanning (xstart, xend, NArprior, bstart, bend, c, Ve, jacf, funcf, Ntries=6, verbosePlan=True, verbose=True)[1] o_p.writePlanToFile(oplan, filename) #} unifplan = o_p.makeUniformExpPlan(xstart, xend, N) #получаем измерения с планов measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c,Ve ) measdataUnif = o_p.makeMeasAccToPlan_lognorm(funcf, unifplan, btrue, c,Ve ) filename = os.path.basename(__file__).replace('.py','_results') #выполняем оценку print ("performing aprior plan") gknu=o_e.grandCountGN_UltraX_Qualitat (funcf, jacf, measdata, binit, c, Ve, NSIG=100, implicit=True) o_q.analyseDifList(gknu, imagename='Aprior_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf) print ("performing uniform plan") gknu=o_e.grandCountGN_UltraX_Qualitat (funcf, jacf, measdataUnif, binit, c, Ve, NSIG=100, implicit=True) o_q.analyseDifList(gknu, imagename='Uniform_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf) print ("performing ExtraStart™ method") resarr=list() #Список результатов t=PrettyTable (['Среднее логарифма правдоподобия','Сигма логарифма правдоподобия' , 'b','Среднее остатков по модулю']) for i in range(30): measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c,Ve) gknu=o_e.grandCountGN_UltraX_ExtraStart (funcf, jacf, measdata, bstart, bend, c, Ve, NSIG=100, implicit=True, verbose=False, Ntries=10, name='aprior plan plus several measurements') if (gknu): resarr.append(gknu) if resarr: for gknu in resarr: if (gknu): t.add_row([gknu['AvLogTruth'],gknu['SigmaLT'], gknu['b'], gknu['AvDif'] ]) gknu=o_e.selectBestEstim (resarr) t.add_row(['*', '*', '*', '*' ]) t.add_row([gknu['AvLogTruth'], gknu['SigmaLT'], gknu['b'], gknu['AvDif'] ]) print(t) o_q.analyseDifList(gknu, imagename='ExtraStart_et_Aprior_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf)
def extractionRD(): """ пробуем экстрагировать коэффициенты из модели диода коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R входные параметры: напряжение, приложенное источником к системе резистор-диод +-----------|||||---------->|--------- - Резистор подключен до диода :return: """ global FT global foldername #возвращает значение y funcf = solver_Diode_In_Limited jacf = jac_Diode_In_Limited #теперь попробуем сделать эксперимент. c = {} Ve = np.array([[1.34e-7] ]) #согласно погрешности на мультиметре CHROMA 12061 #btrue=[5.31656e-8,2 ,.0392384] #номинальные значения диода D1N4001 btrue = [ 7.69e-8, 1.45, .0422 ] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя # V=x[0] #напряжение на диоде # Is=b[0] # N=b[1] # R=b[2] bstart = np.array(btrue) - np.array(btrue) * 0.2 bend = np.array(btrue) + np.array(btrue) * 0.2 #binit=np.array(btrue)-np.array(btrue)*0.1 print('conditions:') print(bstart) print(bend) binit = [ 7.69e-8, 1.45, .0422 ] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя xstart = [0.001] xend = [1.1] N = 20 folderData = '/home/reiner/RDReports/DiodeProof' realout = sys.stdout listOfMeasdatas = ord.grfiles(folderData) for measdata in listOfMeasdatas: print(measdata[1]) print(measdata[0]) sys.stdout = open(folderData + '/' + 'resGr.res', 'a') # Перенаправить вывод в файл print(measdata[1]) print(measdata[0]) gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper( funcf, jacf, measdata[0], binit, bstart, bend, c, implicit=True, verbose=False, verbose_wrapper=False) gknuxlim2 = o_q.convertToQualitatStandart(gknuxlim, funcf, jacf, measdata[0], c, Ve, name='Limited Count Aprior') o_q.printQualitatStandart(gknuxlim2) title = measdata[1] twographsfigname = ''.join([folderData, '/', 'twgr_', title, '.png']) Rgraphsfigname = ''.join([folderData, '/', 'R_', title, '.png']) plotMeasAndModelled( measdata[0], funcf, gknuxlim2['b'], twographsfigname, title ) #начертить два графика - реальный (синий) и моделированный (красный) #o_pl.plotSkGraph(gknuxlim, title='', filename=None) #чертит дроп ск по итерациям - бред, на последнем прогоне лимитед их всего пара штук)) #o_q.analyseDifList(gknuxlim, True, ) try: o_q.analyseDifList(gknuxlim2, True, title, filename=Rgraphsfigname ) #числовой режим, вектора не поддерживаются except: pass sys.stdout.close() sys.stdout = realout
def extraction_DiodeV4_partIn_Decimal(plot=True): """ пробуем экстрагировать коэффициенты из модели диода коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R входные параметры: напряжение, приложенное источником к системе резистор-диод +-----------|||||---------->|--------- - Резистор подключен до диода :return: """ #возвращает значение y funcf=solver_DiodeV4_partIn_Decimal jacf = jac_DiodeV4_partIn_Decimal #теперь попробуем сделать эксперимент. c={} Ve=np.array([ [0.00000001] ] ) btrue=[1.238e-14, 1.8, 100] #btrue=[1.5e-14, 1.75, 150] bstart=np.array(btrue)-np.array(btrue)*0.3 bend=np.array(btrue)+np.array(btrue)*0.3 binit=[1.0e-14, 1.7, 70] #binit=[1.238e-14, 1.8, 100] xstart=[0.001] #xend=[20,60] xend=[1.5] N=100 #для неаприорных планов NAprior=20 #для априорных планов #Получаем априорный план print("performing aprior plan:") #блок кеширования априорного плана в файл filename ='cachedPlans/'+os.path.basename(__file__).replace('.py','_plan') try: oplan=o_p.readPlanFromFile(filename) #переключение на чтение априорного плана из файла print ("Read file successful") except BaseException as e: oplan=o_ap.grandApriornPlanning (xstart, xend, NAprior, bstart, bend, c, Ve, jacf, funcf, Ntries=6, verbosePlan=True, verbose=True)[1] o_p.writePlanToFile(oplan, filename) #} unifplan = o_p.makeUniformExpPlan(xstart, xend, N) #получаем измерения с планов measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c,Ve ) measdataUnif = o_p.makeMeasAccToPlan_lognorm(funcf, unifplan, btrue, c,Ve ) filename = os.path.basename(__file__).replace('.py','_results') #выполняем оценку print ("performing aprior plan") gknu=o_e.grandCountGN_UltraX_Qualitat (funcf, jacf, measdata, binit, c, Ve, NSIG=100, implicit=True) o_q.analyseDifList(gknu, imagename='Aprior_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf) print ("performing uniform plan") gknu=o_e.grandCountGN_UltraX_Qualitat (funcf, jacf, measdataUnif, binit, c, Ve, NSIG=100, implicit=True) o_q.analyseDifList(gknu, imagename='Uniform_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf)
def extraction_DiodeV4_partIn_Decimal(plot=True): """ пробуем экстрагировать коэффициенты из модели диода коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R входные параметры: напряжение, приложенное источником к системе резистор-диод +-----------|||||---------->|--------- - Резистор подключен до диода :return: """ #возвращает значение y funcf = solver_DiodeV4_partIn_Decimal jacf = jac_DiodeV4_partIn_Decimal #теперь попробуем сделать эксперимент. c = {} Ve = np.array([[0.00000001]]) btrue = [1.238e-14, 1.8, 100] #btrue=[1.5e-14, 1.75, 150] bstart = np.array(btrue) - np.array(btrue) * 0.3 bend = np.array(btrue) + np.array(btrue) * 0.3 binit = [1.0e-14, 1.7, 70] #binit=[1.238e-14, 1.8, 100] xstart = [0.001] #xend=[20,60] xend = [1.5] N = 100 #для неаприорных планов NAprior = 20 #для априорных планов #Получаем априорный план print("performing aprior plan:") #блок кеширования априорного плана в файл filename = 'cachedPlans/' + os.path.basename(__file__).replace( '.py', '_plan') try: oplan = o_p.readPlanFromFile( filename) #переключение на чтение априорного плана из файла print("Read file successful") except BaseException as e: oplan = o_ap.grandApriornPlanning(xstart, xend, NAprior, bstart, bend, c, Ve, jacf, funcf, Ntries=6, verbosePlan=True, verbose=True)[1] o_p.writePlanToFile(oplan, filename) #} unifplan = o_p.makeUniformExpPlan(xstart, xend, N) #получаем измерения с планов measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c, Ve) measdataUnif = o_p.makeMeasAccToPlan_lognorm(funcf, unifplan, btrue, c, Ve) filename = os.path.basename(__file__).replace('.py', '_results') #выполняем оценку print("performing aprior plan") gknu = o_e.grandCountGN_UltraX_Qualitat(funcf, jacf, measdata, binit, c, Ve, NSIG=100, implicit=True) o_q.analyseDifList(gknu, imagename='Aprior_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf) print("performing uniform plan") gknu = o_e.grandCountGN_UltraX_Qualitat(funcf, jacf, measdataUnif, binit, c, Ve, NSIG=100, implicit=True) o_q.analyseDifList(gknu, imagename='Uniform_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf)
def extractionRD(): """ пробуем экстрагировать коэффициенты из модели диода коэффициенты модели: Ток утечки Is, коэффициент неидеальности N, омическое сопротивление, параллельное диоду R входные параметры: напряжение, приложенное источником к системе резистор-диод +-----------|||||---------->|--------- - Резистор подключен до диода :return: """ global FT global foldername #возвращает значение y funcf=solver_Diode_In_Limited jacf = jac_Diode_In_Limited #теперь попробуем сделать эксперимент. c={} Ve=np.array([ [1.34e-7] ] ) #согласно погрешности на мультиметре CHROMA 12061 #btrue=[5.31656e-8,2 ,.0392384] #номинальные значения диода D1N4001 btrue=[7.69e-8, 1.45 ,.0422] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя # V=x[0] #напряжение на диоде # Is=b[0] # N=b[1] # R=b[2] bstart=np.array(btrue)-np.array(btrue)*0.2 bend=np.array(btrue)+np.array(btrue)*0.2 #binit=np.array(btrue)-np.array(btrue)*0.1 print('conditions:') print(bstart) print(bend) binit=[7.69e-8, 1.45 ,.0422] #номинальные значения диода D1N4001 с сайта, вроде официальной модели производителя xstart=[0.001] xend=[1.1] N=20 folderData = '/home/reiner/RDReports/DiodeProof' realout= sys.stdout listOfMeasdatas=ord.grfiles (folderData) for measdata in listOfMeasdatas: print (measdata[1]) print (measdata[0]) sys.stdout = open(folderData+'/'+'resGr.res', 'a') # Перенаправить вывод в файл print (measdata[1]) print (measdata[0]) gknuxlim = o_el.grandCountGN_UltraX1_Limited_wrapper(funcf,jacf,measdata[0],binit,bstart,bend, c, implicit=True, verbose=False, verbose_wrapper=False ) gknuxlim2=o_q.convertToQualitatStandart (gknuxlim, funcf, jacf, measdata[0], c, Ve, name='Limited Count Aprior') o_q.printQualitatStandart (gknuxlim2) title = measdata[1] twographsfigname = ''.join([folderData,'/','twgr_',title,'.png']) Rgraphsfigname = ''.join([folderData,'/','R_',title,'.png']) plotMeasAndModelled(measdata[0],funcf,gknuxlim2['b'], twographsfigname, title) #начертить два графика - реальный (синий) и моделированный (красный) #o_pl.plotSkGraph(gknuxlim, title='', filename=None) #чертит дроп ск по итерациям - бред, на последнем прогоне лимитед их всего пара штук)) #o_q.analyseDifList(gknuxlim, True, ) try: o_q.analyseDifList(gknuxlim2, True, title, filename=Rgraphsfigname ) #числовой режим, вектора не поддерживаются except: pass sys.stdout.close() sys.stdout = realout
def extraction_func_DiodeV3Approach1_part_In(): """ [Реестровая] :return: """ funcf = solver_func_DiodeV3Approach1_part_In jacf = Jac_func_DiodeV3Approach1_part_In c = {} Ve = np.array([[0.001]]) btrue = [1.238e-14, 1.3] bstart = np.array(btrue) - np.array(btrue) * 0.1 bend = np.array(btrue) + np.array(btrue) * 0.1 binit = np.array(btrue) + np.array(btrue) * 0.05 xstart = [0.01] #xend=[20,60] xend = [3] N = 300 #число точек в плане (для планов, кроме априорного) NArprior = 20 #число точек в априорном плане #Получаем априорный план print("performing aprior plan:") #блок кеширования априорного плана в файл filename = os.path.basename(__file__).replace('.py', '_plan') try: oplan = o_p.readPlanFromFile( filename) #переключение на чтение априорного плана из файла print("Read file successful") except BaseException as e: oplan = o_ap.grandApriornPlanning(xstart, xend, NArprior, bstart, bend, c, Ve, jacf, funcf, Ntries=6, verbosePlan=True, verbose=True)[1] o_p.writePlanToFile(oplan, filename) #} unifplan = o_p.makeUniformExpPlan(xstart, xend, N) #получаем измерения с планов measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c, Ve) measdataUnif = o_p.makeMeasAccToPlan_lognorm(funcf, unifplan, btrue, c, Ve) filename = os.path.basename(__file__).replace('.py', '_results') #выполняем оценку print("performing aprior plan") gknu = o_e.grandCountGN_UltraX_Qualitat(funcf, jacf, measdata, binit, c, Ve, NSIG=100, implicit=True) o_q.analyseDifList(gknu, imagename='Aprior_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf) print("performing uniform plan") gknu = o_e.grandCountGN_UltraX_Qualitat(funcf, jacf, measdataUnif, binit, c, Ve, NSIG=100, implicit=True) o_q.analyseDifList(gknu, imagename='Uniform_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf) print("performing ExtraStart™ method") resarr = list() #Список результатов t = PrettyTable([ 'Среднее логарифма правдоподобия', 'Сигма логарифма правдоподобия', 'b', 'Среднее остатков по модулю' ]) for i in range(30): measdata = o_p.makeMeasAccToPlan_lognorm(funcf, oplan, btrue, c, Ve) gknu = o_e.grandCountGN_UltraX_ExtraStart( funcf, jacf, measdata, bstart, bend, c, Ve, NSIG=100, implicit=True, verbose=False, Ntries=10, name='aprior plan plus several measurements') if (gknu): resarr.append(gknu) if resarr: for gknu in resarr: if (gknu): t.add_row([ gknu['AvLogTruth'], gknu['SigmaLT'], gknu['b'], gknu['AvDif'] ]) gknu = o_e.selectBestEstim(resarr) t.add_row(['*', '*', '*', '*']) t.add_row([gknu['AvLogTruth'], gknu['SigmaLT'], gknu['b'], gknu['AvDif']]) print(t) o_q.analyseDifList(gknu, imagename='ExtraStart_et_Aprior_Plan') o_q.printGKNUNeat(gknu) o_q.printQualitatNeat(measdata, gknu['b'], Ve, funcf, c, jacf)