Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # coding: utf-8
- # In[22]:
- def SimpD(_f1,_f2,_g1,_g2,_m1,_m2):
- s=0
- for i in range(1,_m1+1):
- s+=binomial(_f1[i],2)+binomial(_f2[i]-_f1[i],2)+binomial(_m2-_f2[i],2)
- for j in range(1,_m2+1):
- s+=binomial(_g1[j],2)+binomial(_g2[j]-_g1[j],2)+binomial(_m1-_g2[j],2)
- return(binomial(_m1+_m2,3)-binomial(_m1,3)-binomial(_m2,3)-s)
- # In[23]:
- def g12(_f1,_f2,_m1,_m2):
- _g1=[0]+[max(i for i in range(_m1+1) if _f2[i]<j) for j in range(1,_m2+1)]
- _g2=[0]+[max(i for i in range(_m1+1) if _f1[i]<j) for j in range(1,_m2+1)]
- return [_g1,_g2]
- # In[2]:
- def int2base(x, base, length):
- digits = []
- k=0
- while k<length:
- digits.append(int(x % base))
- x = int(x / base)
- k+=1
- digits.reverse()
- return digits
- # In[1]:
- def allfunctions(m1,m2):
- return[[i for i in int2base(idx,m2+1,m1)] for idx in range((m2+1)^m1)]
- # In[39]:
- N=8
- OptSigma=0
- Optm1=0
- Optm2=N
- for m1 in range(N+1):
- m2=N-m1
- for tmp1 in allfunctions(m1,m2):
- for tmp2 in allfunctions(m1,m2):
- tmp1=[0]+sorted(tmp1)
- tmp2=[0]+sorted(tmp2)
- f1=[min(tmp1[i],tmp2[i]) for i in range(m1+1)]
- f2=[max(tmp1[i],tmp2[i]) for i in range(m1+1)]
- [g1,g2]=g12(f1,f2,m1,m2)
- sigma=SimpD(f1,f2,g1,g2,m1,m2)
- if sigma>OptSigma or (sigma>=OptSigma and m1-m2>Optm1-Optm2):
- Opt=[f1,f2,g1,g2]
- OptSigma=sigma
- Optm1=m1
- Optm2=m2
- # In[40]:
- print Opt
- print OptSigma
- # In[42]:
- save_session('2ptsCvx_v2')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement