Advertisement
juxtapositions

Untitled

Mar 11th, 2023
638
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.35 KB | None | 0 0
  1. def qZ(x,y):
  2.     return (x+3*y-3)/(3*x**2+y**2+1)
  3. def qSumZ(Z):
  4.     return sum(Z)
  5.  
  6. def exchangeScheme(oldX,oldY, sortedId):
  7.     X=[0 for i in range(4)]
  8.     Y=[0 for i in range(4)]
  9.    
  10.     X[2] = oldX[sortedId[2]]
  11.     X[3] = oldX[sortedId[2]]
  12.    
  13.     X[0] = oldX[sortedId[0]]
  14.    
  15.     X[1] = oldX[sortedId[1]]
  16.    
  17.     Y[0] = oldY[sortedId[2]]
  18.     Y[1] = oldY[sortedId[2]]
  19.    
  20.     Y[2] = oldY[sortedId[0]]
  21.     Y[3] = oldY[sortedId[1]]
  22.    
  23.     return X,Y
  24.  
  25. def sorting(Z):
  26.     sortedId=sorted(range(len(Z)), key=lambda k:Z[k])
  27.    
  28.     return sortedId
  29.  
  30. def evostep(X,Y,Z):
  31.     _, minId = min((value,id) for (id,value) in enumerate(Z))
  32.    
  33.     X=X[:]
  34.     Y=Y[:]
  35.     Z=Z[:]
  36.    
  37.     X.pop(minId)
  38.     Y.pop(minId)
  39.     Z.pop(minId)
  40.    
  41.     return X,Y,Z
  42.  
  43. def evosteps(X,Y, stepsnum=4):
  44.     results=[]
  45.    
  46.     for i in range(4):
  47.         arrZ=[qZ(x,Y[i]) for i, x in enumerate(X)]
  48.         X,Y,Z=evostep(X,Y,arrZ)
  49.         X,Y=exchangeScheme(X,Y,sorting(Z))
  50.        
  51.         results.append([X,Y,qSumZ(arrZ),arrZ])
  52.        
  53.     return X,Y,results
  54.  
  55. X=[-5,-3,-2,0]
  56. Y=[-1,-2,0,1]
  57.  
  58. results=evosteps(X,Y)
  59.  
  60. for i in range(len(results[2])):
  61.     print(f'max_{i+1}_step: {results[2][i][2]}')
  62.    
  63. qualityArrZ = []
  64. for i in range(len(results[2])):
  65.     qualityArrZ+=results[2][i][3]
  66.    
  67. print(f'max Z:       {max(qualityArrZ)}')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement