Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import random
- import numpy as np
- num_solutions = 14
- num_states = 10
- c = 0.6
- # Создание матрицы оценок eij для каждого i-го варианта решения по каждому j-му состоянию
- e = [[random.randint(1, 100) for j in range(num_states)] for i in range(num_solutions)]
- print(e)
- # Создание матрицы вероятностей pi для каждого i-го варианта решения по каждому j-му состоянию
- p = [[round(random.uniform(0, 1), 2) for j in range(num_states)] for i in range(num_solutions)]
- for i in range(num_solutions):
- # Нормализация вероятностей так, чтобы их сумма по каждому состоянию для конкретного варианта решения не превышала единицы
- sum_p = sum(p[i])
- if sum_p > 1:
- p[i] = [round(j / sum_p, 2) for j in p[i]]
- # Вычисление критерия Гурвица для каждого i-го варианта решения
- g_values = [max([(c * min(e[i])) + ((1 - c) * max(e[i])), ((1 - c) * max(e[i]))]) for i in range(num_solutions)]
- #Лучшее решение
- best_g = np.argmax(g_values)
- # Вычисление оптимистического критерия для каждого i-го варианта решения
- o_values = [max(e[i]) for i in range(num_solutions)]
- #Лучшее решение
- best_o = np.argmax(o_values)
- # Вывод результатов для каждого критерия выбора
- print("Результаты для критерия Гурвица:")
- print("Номер решения Оценка")
- for i in range(num_solutions):
- print("{:>6} {:.2f}".format(i+1, g_values[i]))
- print('\n Оптимальное решение по критерию Гурвица: решение ', best_g+1)
- print("\nРезультаты для оптимистического критерия:")
- print("Номер решения Оценка")
- for i in range(num_solutions):
- print("{:>6} {:.2f}".format(i+1, o_values[i]))
- print('\n Оптимальное решение по оптимистическому критерию: решение ', best_o+1)
Advertisement
Add Comment
Please, Sign In to add comment