def ex3test(): funcstrdict= {"u2":"u1* (r2+r3)/(r1+r2+r3)", "u3":"u1* r3/(r1+r2+r3)"} xvectorlistsdict = {"u1":[100], "r1":[20], "r2":[30], "r3":[400]} spreadvarslist = ["r1", "r2", "r3"] V=np.array ( [[4, 2, 3], [2, 9, 6], [3, 6, 16]]) resdict=sg.generate (funcstrdict, xvectorlistsdict, spreadvarslist, V, 10000, nvoly=1) ksu2=0.955 ksu3=0.888 diap=0.001 leftksu2=ksu2-diap rightksu2=ksu2+diap leftksu3=ksu3-diap rightksu3=ksu3+diap print (makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=1)) #first - y axiss, second - x axis #xvectorlistsdictc = {"u1":100, "r1":20, "r2":30, "r3":400} #print ("center of the ellise\n",eval(funcstrdict["u2"], xvectorlistsdictc), "\n", eval(funcstrdict["u3"], xvectorlistsdictc) )
def mntkrleq(): #в предположении,что имеет смысл держать центр эллипса совмещённым с центром прямоугольника global funcstrdict global spreadvarslist, V ksu2=0.955 ksu3=0.888 diap=0.001 leftksu2=ksu2-diap rightksu2=ksu2+diap leftksu3=ksu3-diap rightksu3=ksu3+diap bestpercent=0 vectr=[] for r2 in range(1,500, 1): r3=ksu3*r2/(ksu2-ksu3) r1=r2/(ksu2-ksu3)-r2-r3 xvectorlistsdict = {"u1":[100], "r1":[r1], "r2":[r2], "r3":[r3]} xvectorlistsdictc = {"u1":100, "r1":r1, "r2":r2, "r3":r3} #для проверки centerksu2=eval(funcstrdict["u2"], xvectorlistsdictc) centerksu3=eval(funcstrdict["u3"], xvectorlistsdictc) print (r1, r2, r3) resdict=sg.generate (funcstrdict, xvectorlistsdict, spreadvarslist, V, 1000, nvoly=1) mkprc=ex3.makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=0) print ("Percent of good products: ", mkprc[0]) if max(bestpercent, mkprc[0])!=bestpercent: bestpercent=max (bestpercent, mkprc[0]) vectr=r1,r2,r3 print (bestpercent, "\n", vectr) #отображаем лучший вариант xvectorlistsdict = {"u1":[100], "r1":[r1], "r2":[r2], "r3":[r3]} resdict=sg.generate (funcstrdict, xvectorlistsdict, spreadvarslist, V, 10000, nvoly=1) mkprc=ex3.makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=1)
def mntkrl(): #Monte-Karlo method V LOB: bestpercent=0 vectr=[] for r1 in range(10,500, 1): for r2 in range(10,500, 1): for r3 in range(10,500, 1): funcstrdict= {"u2":"u1* (r2+r3)/(r1+r2+r3)", "u3":"u1* r3/(r1+r2+r3)"} xvectorlistsdict = {"u1":[100], "r1":[r1], "r2":[r2], "r3":[r3]} xvectorlistsdictc = {"u1":100, "r1":r1, "r2":r2, "r3":r3} spreadvarslist = ["r1", "r2", "r3"] V=np.array ( [[4, 2, 3], [2, 9, 6], [3, 6, 16]]) leftksu2, rightksu2, leftksu3, rightksu3 = 0.88, 0.90, 0.95, 0.96 centerksu2=eval(funcstrdict["u2"], xvectorlistsdictc) centerksu3=eval(funcstrdict["u3"], xvectorlistsdictc) centerksu2req=leftksu2+(rightksu2-leftksu2) centerksu3req=leftksu3+(rightksu3-leftksu3) border=10 if centerksu2req-border<centerksu2<centerksu2req+border and centerksu3req-border<centerksu3<centerksu3req+border: pass else: continue print (centerksu2, centerksu3) resdict=sg.generate (funcstrdict, xvectorlistsdict, spreadvarslist, V, 1000, nvoly=1) mkprc=makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=0) print ("Percent of good products: ", mkprc[0]) if max(bestpercent, mkprc[0])!=bestpercent: bestpercent=max (bestpercent, mkprc[0]) vectr=r1,r2,r3 print ("bestpercent=",bestpercent) print ("vectr=",vectr)
""" #test area funcstrdict = {"ksu2": "(r2)/(r1+r2)"} xvectorlistsdict = {"r1": [20], "r2": [30]} spreadvarslist = ["r1", "r2"] V1 = np.array([[4, 2], [3, 6]]) V = np.array([[4, 0], [0, 6]]) resdict = sg.generate(funcstrdict, xvectorlistsdict, spreadvarslist, V, 10000) diaps = {"ksu2": [0.6, 0.61]} filteredresdict = filterseq(resdict, diaps)[0] seqr1 = showonlyoutputseq(resdict, "r1") seqr2 = showonlyoutputseq(resdict, "r2") seqr1f = showonlyoutputseq(filteredresdict, "r1") seqr2f = showonlyoutputseq(filteredresdict, "r2") getellipse2D(filteredresdict, "r1", "r2") exit(0) plt.figure(1) # Here's the part I need, but numbering starts at 1!
def mntkrleq(): #в предположении,что имеет смысл держать центр эллипса совмещённым с центром прямоугольника global funcstrdict global spreadvarslist, V ksu2 = 0.955 ksu3 = 0.888 diap = 0.001 leftksu2 = ksu2 - diap rightksu2 = ksu2 + diap leftksu3 = ksu3 - diap rightksu3 = ksu3 + diap bestpercent = 0 vectr = [] for r2 in range(1, 500, 1): r3 = ksu3 * r2 / (ksu2 - ksu3) r1 = r2 / (ksu2 - ksu3) - r2 - r3 xvectorlistsdict = {"u1": [100], "r1": [r1], "r2": [r2], "r3": [r3]} xvectorlistsdictc = {"u1": 100, "r1": r1, "r2": r2, "r3": r3} #для проверки centerksu2 = eval(funcstrdict["u2"], xvectorlistsdictc) centerksu3 = eval(funcstrdict["u3"], xvectorlistsdictc) print(r1, r2, r3) resdict = sg.generate(funcstrdict, xvectorlistsdict, spreadvarslist, V, 1000, nvoly=1) mkprc = ex3.makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=0) print("Percent of good products: ", mkprc[0]) if max(bestpercent, mkprc[0]) != bestpercent: bestpercent = max(bestpercent, mkprc[0]) vectr = r1, r2, r3 print(bestpercent, "\n", vectr) #отображаем лучший вариант xvectorlistsdict = {"u1": [100], "r1": [r1], "r2": [r2], "r3": [r3]} resdict = sg.generate(funcstrdict, xvectorlistsdict, spreadvarslist, V, 10000, nvoly=1) mkprc = ex3.makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=1)
def mntkrleq(): #в предположении,что имеет смысл держать центр эллипса совмещённым с центром прямоугольника global funcstrdict global spreadvarslist, V ksu2=0.955 ksu3=0.888 diap=0.001 leftksu2=ksu2-diap rightksu2=ksu2+diap leftksu3=ksu3-diap rightksu3=ksu3+diap bestpercent=0 vectr=[] fig = plt.figure() plt.xlabel('seqksu2') plt.ylabel('seqksu3') plt.ion() rlist=list() #список коэффициентов корреляции perclist=list() #список значений процента годности endrange=100 for r2 in range(1,endrange, 1): r3=ksu3*r2/(ksu2-ksu3) r1=r2/(ksu2-ksu3)-r2-r3 xvectorlistsdict = {"u1":[100], "r1":[r1], "r2":[r2], "r3":[r3]} xvectorlistsdictc = {"u1":100, "r1":r1, "r2":r2, "r3":r3} #для проверки centerksu2=eval(funcstrdict["u2"], xvectorlistsdictc) centerksu3=eval(funcstrdict["u3"], xvectorlistsdictc) print (r1, r2, r3) resdict=sg.generate (funcstrdict, xvectorlistsdict, spreadvarslist, V, 1000, nvoly=1) mkprc=makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=0) print ("Percent of good products: ", mkprc[0]) perclist.append(mkprc[0]) rlist.append(mkprc[1][1][0]) if max(bestpercent, mkprc[0])!=bestpercent: bestpercent=max (bestpercent, mkprc[0]) vectr=r1,r2,r3 plt.clf() # plt.axis([0.94, 0.97, 0.86, 0.92]) plt.plot(mkprc[2], mkprc[3], 'ro') # Returns a tuple of line objects, thus the comma lplots=[plt.plot ([leftksu2, leftksu2], [leftksu3, rightksu3]), plt.plot ([rightksu2, rightksu2], [leftksu3, rightksu3]), plt.plot ([leftksu2, rightksu2], [leftksu3, leftksu3]), plt.plot ([leftksu2, rightksu2], [rightksu3, rightksu3])] for p in lplots: plt.setp(p, color='b', linewidth=2.0) plt.draw() time.sleep(0.1) print (bestpercent, "\n", vectr) #fig1 = plt.figure(2) #лучший результат fig2 = plt.figure(2) #график r plt.subplot(211) plt.plot(range(1,endrange, 1), rlist) plt.ylabel("r") plt.subplot(212) plt.plot(range(1,endrange, 1), perclist) plt.ylabel("percent") plt.show(block=True)
plt.ion() fig = plt.figure() if 0: funcstrdict= {"u2":"u1* (r2+r3)/(r1+r2+r3)", "u3":"u1* r3/(r1+r2+r3)"} #xvectorlistsdict = {"u1":[100], "r1":[20], "r2":[r2], "r3":[400]} xvectorlistsdict = {"u1":[100], "r1":[1538], "r2":[920], "r3":[12193]} spreadvarslist = ["r1", "r2", "r3"] V=np.array ( [[4, 2, 3], [2, 9, 6], [3, 6, 16]]) resdict=sg.generate (funcstrdict, xvectorlistsdict, spreadvarslist, V, 10000, nvoly=1) leftksu2, rightksu2, leftksu3, rightksu3 = 0.88, 0.90, 0.95, 0.96 mkprc=makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=1) #print ("r2=",r2) print ("Percent of good products: ", mkprc[0]) print ("CorrCoef: ", mkprc[1][0][1]) # if mkprc[1][0][1]<0: # break plt.xlabel('seqksu2') plt.ylabel('seqksu3') #plt.axis([0.94, 0.97, 0.86, 0.92])
def mntkrleq(): #в предположении,что имеет смысл держать центр эллипса совмещённым с центром прямоугольника global funcstrdict global spreadvarslist, V ksu2 = 0.955 ksu3 = 0.888 diap = 0.001 leftksu2 = ksu2 - diap rightksu2 = ksu2 + diap leftksu3 = ksu3 - diap rightksu3 = ksu3 + diap bestpercent = 0 vectr = [] fig = plt.figure() plt.xlabel('seqksu2') plt.ylabel('seqksu3') plt.ion() rlist = list() #список коэффициентов корреляции perclist = list() #список значений процента годности endrange = 100 for r2 in range(1, endrange, 1): r3 = ksu3 * r2 / (ksu2 - ksu3) r1 = r2 / (ksu2 - ksu3) - r2 - r3 xvectorlistsdict = {"u1": [100], "r1": [r1], "r2": [r2], "r3": [r3]} xvectorlistsdictc = {"u1": 100, "r1": r1, "r2": r2, "r3": r3} #для проверки centerksu2 = eval(funcstrdict["u2"], xvectorlistsdictc) centerksu3 = eval(funcstrdict["u3"], xvectorlistsdictc) print(r1, r2, r3) resdict = sg.generate(funcstrdict, xvectorlistsdict, spreadvarslist, V, 1000, nvoly=1) mkprc = makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=0) print("Percent of good products: ", mkprc[0]) perclist.append(mkprc[0]) rlist.append(mkprc[1][1][0]) if max(bestpercent, mkprc[0]) != bestpercent: bestpercent = max(bestpercent, mkprc[0]) vectr = r1, r2, r3 plt.clf() # plt.axis([0.94, 0.97, 0.86, 0.92]) plt.plot(mkprc[2], mkprc[3], 'ro') # Returns a tuple of line objects, thus the comma lplots = [ plt.plot([leftksu2, leftksu2], [leftksu3, rightksu3]), plt.plot([rightksu2, rightksu2], [leftksu3, rightksu3]), plt.plot([leftksu2, rightksu2], [leftksu3, leftksu3]), plt.plot([leftksu2, rightksu2], [rightksu3, rightksu3]) ] for p in lplots: plt.setp(p, color='b', linewidth=2.0) plt.draw() time.sleep(0.1) print(bestpercent, "\n", vectr) #fig1 = plt.figure(2) #лучший результат fig2 = plt.figure(2) #график r plt.subplot(211) plt.plot(range(1, endrange, 1), rlist) plt.ylabel("r") plt.subplot(212) plt.plot(range(1, endrange, 1), perclist) plt.ylabel("percent") plt.show(block=True)
def mntkrl(): #Monte-Karlo method V LOB: bestpercent = 0 vectr = [] for r1 in range(10, 500, 1): for r2 in range(10, 500, 1): for r3 in range(10, 500, 1): funcstrdict = { "u2": "u1* (r2+r3)/(r1+r2+r3)", "u3": "u1* r3/(r1+r2+r3)" } xvectorlistsdict = { "u1": [100], "r1": [r1], "r2": [r2], "r3": [r3] } xvectorlistsdictc = {"u1": 100, "r1": r1, "r2": r2, "r3": r3} spreadvarslist = ["r1", "r2", "r3"] V = np.array([[4, 2, 3], [2, 9, 6], [3, 6, 16]]) leftksu2, rightksu2, leftksu3, rightksu3 = 0.88, 0.90, 0.95, 0.96 centerksu2 = eval(funcstrdict["u2"], xvectorlistsdictc) centerksu3 = eval(funcstrdict["u3"], xvectorlistsdictc) centerksu2req = leftksu2 + (rightksu2 - leftksu2) centerksu3req = leftksu3 + (rightksu3 - leftksu3) border = 10 if centerksu2req - border < centerksu2 < centerksu2req + border and centerksu3req - border < centerksu3 < centerksu3req + border: pass else: continue print(centerksu2, centerksu3) resdict = sg.generate(funcstrdict, xvectorlistsdict, spreadvarslist, V, 1000, nvoly=1) mkprc = makepercent(leftksu2, rightksu2, leftksu3, rightksu3, resdict, draw=0) print("Percent of good products: ", mkprc[0]) if max(bestpercent, mkprc[0]) != bestpercent: bestpercent = max(bestpercent, mkprc[0]) vectr = r1, r2, r3 print("bestpercent=", bestpercent) print("vectr=", vectr)
#test area import sequence_generation as sg #funcstrdict= {"y1":"u1* (r2+r3)/(r1+r2+r3)", "y2":"u1* r3/(r1+r2+r3)"} funcstrdict= {"y1":"u1* (r2+r3)", "y2":"u1* r3"} #xvectorlistsdict = {"u1":range(1,10), "r1":[20], "r2":[30], "r3":[400]} xvectorlistsdict = {"u1":range(1,10), "r2":[30], "r3":[400]} vrslst=sg.generate (funcstrdict, xvectorlistsdict, None, Vx=None, nvolx=None, yvectordispsdict=None, nvoly=1, outfilename="t.txt", listoutvars=["y1", "y2", "u1"] ) #import pickle #pickle.dump(vrslst, open("vrslt.f", "wb")) #vrslst=pickle.load(open("vrslt.f", "rb")) #сюда впилить чтение файла grandCountGN(funcstrdict,["u1"] , ["y1", "y2"],["r2", "r3"] , vrslst, NSIG=5, kinit=np.array( [ 1, 2])) #grandCountGN(funcstrdict,["u1"] , ["y1", "y2"],["r1", "r2", "r3"] , vrslst, NSIG=5, kinit=np.array( [21, 31, 401])) ##grandCountGN(funcstrdict,["u1"] , ["y1", "y2"],["r1", "r23"] , vrslst, NSIG=5)