Advertisement
B4rr

Untitled

May 9th, 2018
176
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.70 KB | None | 0 0
  1.  
  2. # coding: utf-8
  3.  
  4. # In[22]:
  5.  
  6. def SimpD(_f1,_f2,_g1,_g2,_m1,_m2):
  7.     s=0
  8.     for i in range(1,_m1+1):
  9.         s+=binomial(_f1[i],2)+binomial(_f2[i]-_f1[i],2)+binomial(_m2-_f2[i],2)
  10.     for j in range(1,_m2+1):
  11.         s+=binomial(_g1[j],2)+binomial(_g2[j]-_g1[j],2)+binomial(_m1-_g2[j],2)
  12.     return(binomial(_m1+_m2,3)-binomial(_m1,3)-binomial(_m2,3)-s)
  13.  
  14.  
  15. # In[23]:
  16.  
  17. def g12(_f1,_f2,_m1,_m2):
  18.     _g1=[0]+[max(i for i in range(_m1+1) if _f2[i]<j) for j in range(1,_m2+1)]
  19.     _g2=[0]+[max(i for i in range(_m1+1) if _f1[i]<j) for j in range(1,_m2+1)]
  20.     return [_g1,_g2]
  21.  
  22.  
  23. # In[2]:
  24.  
  25. def int2base(x, base, length):
  26.         digits = []
  27.  
  28.         k=0
  29.         while k<length:
  30.             digits.append(int(x % base))
  31.             x = int(x / base)
  32.             k+=1
  33.  
  34.         digits.reverse()
  35.  
  36.         return digits
  37.  
  38.  
  39. # In[1]:
  40.  
  41. def allfunctions(m1,m2):
  42.     return[[i for i in int2base(idx,m2+1,m1)] for idx in range((m2+1)^m1)]
  43.          
  44.  
  45.  
  46. # In[39]:
  47.  
  48. N=8
  49. OptSigma=0
  50. Optm1=0
  51. Optm2=N
  52. for m1 in range(N+1):
  53.     m2=N-m1
  54.    
  55.     for tmp1 in allfunctions(m1,m2):
  56.         for tmp2 in allfunctions(m1,m2):
  57.             tmp1=[0]+sorted(tmp1)
  58.             tmp2=[0]+sorted(tmp2)
  59.             f1=[min(tmp1[i],tmp2[i]) for i in range(m1+1)]
  60.             f2=[max(tmp1[i],tmp2[i]) for i in range(m1+1)]
  61.             [g1,g2]=g12(f1,f2,m1,m2)
  62.            
  63.             sigma=SimpD(f1,f2,g1,g2,m1,m2)
  64.            
  65.             if sigma>OptSigma or (sigma>=OptSigma and m1-m2>Optm1-Optm2):
  66.                 Opt=[f1,f2,g1,g2]
  67.                 OptSigma=sigma
  68.                 Optm1=m1
  69.                 Optm2=m2
  70.  
  71.  
  72. # In[40]:
  73.  
  74. print Opt
  75. print OptSigma
  76.  
  77.  
  78. # In[42]:
  79.  
  80. save_session('2ptsCvx_v2')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement