Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.55 KB | None | 0 0
  1.  
  2. def da_no_prob(util_mtrx,method,alpha=-1):
  3. try:
  4. method_input = ["maximax","maximin","hurwicz","laplace","savage_niehans"]
  5. #Definiton Maximax - Regel
  6.  
  7. it = iter(util_mtrx)
  8. the_len = len(next(it))
  9.  
  10. if not all(len(l) == the_len for l in it):
  11. raise TypeError
  12.  
  13. if method not in method_input:
  14. raise NameError
  15.  
  16. if method == "maximax":
  17. #Bildung einer Maximum Liste -> Alle max Werte in einer Liste.
  18.  
  19. max_lst = [max(i) for i in util_mtrx]
  20. max_lst_lst= []
  21. max_max_lst = max(max_lst)
  22. #max_lst_lst = [ max_lst.index(i)+1 for i in max_lst if i == max_max_lst ]
  23. print(max_lst_lst)
  24. #Bildung eines leeren Dictionaries:
  25. dict_res_val = dict()
  26.  
  27. dict_res_val["result"] = max_lst.index(max(max_lst))+1# index aus der Maxliste
  28. dict_res_val["value"] = max(max_lst)# Result ist dsa maximum aus der MaxListe
  29.  
  30. return(dict_res_val)
  31.  
  32. #Definition Maximin-Regel
  33. elif method =="maximin":
  34. min_lst =[min(i)for i in util_mtrx]
  35.  
  36. #Dictionary Implementation
  37. #Bildung von einem leeren Dictionary
  38. dict_res_val = dict()
  39. dict_res_val["result"] = min_lst.index(max(min_lst))+1
  40. dict_res_val["value"] = max(min_lst)
  41.  
  42. return(dict_res_val)
  43.  
  44.  
  45. #Definition Hurwiczs-Regel
  46. elif method =="hurwicz":
  47. if (0<=alpha<=1):
  48. #Bildung einer Liste aus allen Maximum Werten per List-Comprehension
  49. max_lst = [max(i) for i in util_mtrx]
  50.  
  51. #Bildung einer Liste as allen Minimum Werten per List-Comprehension
  52. min_lst = [min(i) for i in util_mtrx]
  53.  
  54. # Jeden Wert in der Maximum Liste mit Alpha multiplizieren per List-Comprehension
  55. max_alpha_lst = [i * alpha for i in max_lst]
  56.  
  57. # Jeden Wert in der Minimum Liste mit 1-Alpha multiplizieren per List-Comprehension
  58. min_alpha_lst = [i * (1-alpha) for i in min_lst]
  59.  
  60. #Vektoren berechnung der beiden Listen per List-Comprehension
  61. value_lst = [i+j for i,j in zip(max_alpha_lst,min_alpha_lst)]
  62.  
  63. dict_res_val = dict()
  64.  
  65. dict_res_val["result"] = value_lst.index(max(value_lst))+1
  66. dict_res_val["value"] = max(value_lst)
  67.  
  68. return(dict_res_val)
  69. else:
  70. raise ValueError
  71.  
  72.  
  73. #Definiton LaPlace Regel
  74. elif method == "laplace":
  75. #Bildung einer Liste in der alle Durchschnittswerte / Alternative enthalten sind.
  76. laplace_lst = [sum(i) / len(i) for i in util_mtrx]
  77.  
  78. #Dictionary Implementation
  79. #Bildung von einem leeren Dictionary
  80. dict_res_val = dict()
  81.  
  82. dict_res_val["result"] = laplace_lst.index(max(laplace_lst)) +1 #array offset
  83. dict_res_val["value"] = max(laplace_lst)
  84.  
  85. return(dict_res_val)
  86. #Definition Savage-Niehans-Regel
  87. elif method == "savage_niehans":
  88.  
  89. #Zippen der util_mtrx mit um die Matrix / Liste zu rotieren -> Werte von A_i sind jetzt Listen von UE_j
  90. zip_lst = list(zip(*util_mtrx))
  91.  
  92. #Ermittlung und Bildung der Maxwerte von UE_j.
  93. max_lst_zip = [max(i) for i in zip_lst]
  94.  
  95. #Erstellung der Regretmatrix
  96. reg_mat = list()
  97.  
  98. for i in util_mtrx:
  99. reg_mat_list = [abs(z-j) for j,z in zip(max_lst_zip, i)]
  100. reg_mat.append(reg_mat_list)
  101.  
  102. print(reg_mat)
  103.  
  104. #print("RegretMatrix:")
  105. #print(reg_mat)
  106.  
  107. max_reg_mat = [max(i) for i in reg_mat]
  108.  
  109. #print("MaxRegretMatrix:")
  110. #print(max_reg_mat)
  111.  
  112. dict_res_val = dict()
  113.  
  114. dict_res_val["result"] = max_reg_mat.index(min(max_reg_mat)) + 1 #arrayOffset
  115. dict_res_val["value"] = min(max_reg_mat)
  116.  
  117. return(dict_res_val)
  118.  
  119.  
  120. #try:
  121. da_no_prob(util_mtrx,method,alpha)
  122.  
  123.  
  124. except NameError:
  125. print("Bitte achten Sie auf Funktionendefinition = da_no_prob(util_mtrx,method,alph")
  126.  
  127. except TypeError:
  128. print("Please keep attention for function definiton")
  129.  
  130. except ValueError:
  131. print("ValueError: Alpha is between 0 and 1")
  132.  
  133.  
  134. print(da_no_prob([[100,10000],[5000,11000],[10000,0]],"savage_niehans",0.9))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement