Okonar

ТПР_лаб2

Oct 25th, 2023
17
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.15 KB | None | 0 0
  1. ''' Основний код '''
  2.  
  3. matrix = [
  4.     [1, 0.3, 0.8, 0.5, 1],
  5.     [0.6, 1, 0.7, 0.3, 0.7],
  6.     [0.6, 0.7, 1, 0.9, 0.1],
  7.     [0.3, 1, 0.6, 1, 0.4],
  8.     [0.2, 0.2, 0.1, 0.1, 1],
  9. ]
  10.  
  11. matrixx = [
  12.     [1, 0.4, 0.5, 0.7, 0.6],
  13.     [0.5, 1, 0.9, 0.4, 1],
  14.     [0, 0.7, 1, 0.3, 0.7],
  15.     [0.5, 0.3, 0.6, 1, 0.7],
  16.     [1, 0.9, 0.8, 0.3, 1],
  17. ]
  18.  
  19. print("Вихідна матриця R1: \n")
  20.  
  21. for row in matrix:        # Вивід матриці в консоль
  22.     print(row)
  23.  
  24. print()        # Перехід на новий рядок
  25.  
  26. print("Вихідна матриця R2: \n")
  27.  
  28. for row in matrixx:        # Вивід матриці в консоль
  29.     print(row)
  30.  
  31. print()        # Перехід на новий рядок
  32.  
  33. print('alpha1 * R1:')
  34.  
  35.  
  36. matrix1 = [[0 for _ in range(len(matrix))] for _ in range(len(matrix[0]))]
  37.  
  38. for i in range(len(matrix)):
  39.     for j in range(len(matrix[0])):
  40.         matrix1[i][j] = matrix[i][j] * 0.5
  41.  
  42. for row in matrix1:        # Вивід матриці в консоль
  43.     print(row)
  44.  
  45. print()
  46.  
  47.  
  48.  
  49. print('alpha2 * R2:')
  50.  
  51.  
  52. matrix2 = [[0 for _ in range(len(matrixx))] for _ in range(len(matrixx[0]))]
  53.  
  54. for i in range(len(matrixx)):
  55.     for j in range(len(matrixx[0])):
  56.         matrix2[i][j] = matrixx[i][j] * 0.5
  57.  
  58. for row in matrix2:        # Вивід матриці в консоль
  59.     print(row)
  60.  
  61. print()
  62.  
  63. print('Матриця Q1:')
  64.  
  65. q_matrix = [[0 for _ in range(len(matrixx))] for _ in range(len(matrixx[0]))]
  66.  
  67. for i in range(len(matrixx)):
  68.     for j in range(len(matrixx[0])):
  69.         q_matrix[i][j] = min(matrix1[i][j], matrix2[i][j])
  70.  
  71. for row in q_matrix:        # Вивід матриці в консоль
  72.     print(row)
  73.  
  74. print()
  75.  
  76.  
  77. transposed_matrix = [[0 for _ in range(len(matrix1))] for _ in range(len(matrix1[0]))]
  78.  
  79. # Транспонування матриці
  80. for i in range(len(q_matrix)):
  81.     for j in range(len(q_matrix[0])):
  82.         transposed_matrix[j][i] = q_matrix[i][j]
  83.  
  84. print('Обернена матриця Q1 \n')
  85.  
  86. for row in transposed_matrix:        # Вивід матриці в консоль
  87.     print(row)
  88.  
  89. print()
  90.  
  91. ''' Матриця строгого відношення '''
  92.  
  93. strong_matrix = [[0 for _ in range(len(matrix[0]))] for _ in range(len(matrix))]
  94.  
  95. # Віднімання елементів матриці matrix від елементів матриці transposed_matrix
  96. for i in range(len(matrix)):
  97.     for j in range(len(matrix[0])):
  98.         if q_matrix[i][j] - transposed_matrix[i][j] < 0:
  99.             strong_matrix[i][j] = 0
  100.         else:
  101.             strong_matrix[i][j] = round(q_matrix[i][j] - transposed_matrix[i][j], 2)
  102.  
  103. print("Матриця строгого відношення Q1: \n")
  104.  
  105. for row in strong_matrix:        # Вивід матриці в консоль
  106.     print(row)
  107.  
  108. print()
  109.  
  110. non_dominated1 = []
  111.  
  112. columns = [[strong_matrix[j][i] for j in range(len(strong_matrix))] for i in range(len(strong_matrix[0]))]
  113.  
  114. for column in columns:
  115.     max_value = max(column)
  116.     non_dominated1.append(1 - max_value)
  117.  
  118. print("Підмножина недомінованих значень myu(Q1): ", non_dominated1)
  119.  
  120. print()
  121.  
  122. print('Матриця Q2:')
  123.  
  124.  
  125. q_matrix2 = [[0 for _ in range(len(matrixx))] for _ in range(len(matrixx[0]))]
  126.  
  127. for i in range(len(matrixx)):
  128.     for j in range(len(matrixx[0])):
  129.         q_matrix2[i][j] = round(matrix1[i][j] + matrix2[i][j],2)
  130.  
  131. for row in q_matrix2:        # Вивід матриці в консоль
  132.     print(row)
  133.  
  134. print()
  135.  
  136. print('Обернена матриця Q2\n')
  137.  
  138. transposed_matrix2 = [[0 for _ in range(len(matrix1))] for _ in range(len(matrix1[0]))]
  139.  
  140. # Транспонування матриці
  141. for i in range(len(q_matrix2)):
  142.     for j in range(len(q_matrix2[0])):
  143.         transposed_matrix2[j][i] = q_matrix2[i][j]
  144.  
  145. for row in transposed_matrix2:        # Вивід матриці в консоль
  146.     print(row)
  147.  
  148. print()
  149.  
  150. strong_matrix2 = [[0 for _ in range(len(matrix[0]))] for _ in range(len(matrix))]
  151.  
  152. # Віднімання елементів матриці matrix від елементів матриці transposed_matrix
  153. for i in range(len(matrix)):
  154.     for j in range(len(matrix[0])):
  155.         if q_matrix2[i][j] - transposed_matrix2[i][j] < 0:
  156.             strong_matrix2[i][j] = 0
  157.         else:
  158.             strong_matrix2[i][j] = round(q_matrix2[i][j] - transposed_matrix2[i][j], 2)
  159.  
  160. print("Матриця строгого відношення Q2: \n")
  161.  
  162. for row in strong_matrix2:        # Вивід матриці в консоль
  163.     print(row)
  164.  
  165. print()
  166.  
  167. non_dominated2 = []
  168.  
  169. columns = [[strong_matrix2[j][i] for j in range(len(strong_matrix2))] for i in range(len(strong_matrix2[0]))]
  170.  
  171. for column in columns:
  172.     max_value = max(column)
  173.     non_dominated2.append(1 - max_value)
  174.  
  175. print("Підмножина недомінованих значень myu(Q2): ", non_dominated2)
  176.  
  177. print()
  178.  
  179. result_non_dominated = []
  180.  
  181. for i in range(len(non_dominated1)):
  182.     result_non_dominated.append(min(non_dominated1[i], non_dominated2[i]))
  183.  
  184. print('Переріз підмножин myu(Q1) та myu(Q2): ', result_non_dominated)
Advertisement
Add Comment
Please, Sign In to add comment