hms2010

optim_lab6.py

Nov 30th, 2016
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.56 KB | None | 0 0
  1. ##----python 3.5* version----
  2. ##Author name: Mariam Anayan-
  3. ##------Variant: 1-----------
  4. import sys
  5. import math
  6.  
  7. out = sys.stdout
  8.  
  9. float_format  = '{:8.2f}'
  10. answer_format = 'Optimal strategy is {:d}, value for it {:.2f}'
  11. separator = '\n' + '-'* 30 + '\n'
  12.  
  13. probability = 0.5
  14.  
  15. def max_in_column(matrix, column_index):
  16.     max_value = - math.inf
  17.     for i in range(len(matrix)):
  18.         max_value = max(max_value, matrix[i][column_index])
  19.  
  20.     return max_value
  21.  
  22. def Bernoulli_model(matrix):
  23.     print('--Bernoulli model--', file = out)
  24.     max_value = - math.inf
  25.     max_value_raw = -1
  26.  
  27.     for i in range(len(matrix)):
  28.         #just to avoid float division
  29.         if sum(matrix[i]) > max_value:
  30.             max_value_raw = i
  31.             max_value = sum(matrix[i])
  32.    
  33.     print_answer(max_value_raw, max_value/len(matrix[max_value_raw]))
  34.     return max_value_raw, max_value/len(matrix[max_value_raw])
  35.  
  36. def Wald_model(matrix):
  37.     print('--Wald model--', file = out)
  38.     max_value = - math.inf
  39.     max_value_raw = -1
  40.    
  41.     for i in range(len(matrix)):
  42.         if min(matrix[i]) > max_value:
  43.             max_value_raw = i
  44.             max_value = min(matrix[i])
  45.  
  46.     print_answer(max_value_raw, max_value)
  47.     return max_value_raw, max_value
  48.  
  49. def max_model(matrix):
  50.     print('--Max model--', file = out) 
  51.     max_value = - math.inf
  52.     max_value_raw = -1
  53.    
  54.     for i in range(len(matrix)):
  55.         if max(matrix[i]) > max_value:
  56.             max_value_raw = i
  57.             max_value = max(matrix[i])
  58.  
  59.     print_answer(max_value_raw, max_value)
  60.     return max_value_raw, max_value
  61.  
  62. def Hurwitz_model(matrix, probability):
  63.     print('--Hurwitz model--', file = out)
  64.     max_value = - math.inf
  65.     max_value_raw = -1
  66.    
  67.     for i in range(len(matrix)):
  68.         temp_value = probability * min(matrix[i]) + (1 - probability)* max(matrix[i])
  69.         if temp_value > max_value:
  70.             max_value_raw = i
  71.             max_value = temp_value
  72.  
  73.     print_answer(max_value_raw, max_value)
  74.     return max_value_raw, max_value
  75.  
  76. def Savage_model(matrix):
  77.     print('--Savage model--', file = out)
  78.     min_value = math.inf
  79.     min_value_raw = -1
  80.  
  81.     risk_matrix = []
  82.     for i in range(len(matrix)):
  83.         risk_matrix.append([0] * len(matrix[i]))
  84.  
  85.    
  86.     for i in range(len(matrix)):
  87.         temp_max_value = -math.inf
  88.  
  89.         for j in range(len(matrix[i])):
  90.             risk_matrix[i][j] = max_in_column(matrix, j) - matrix[i][j]
  91.             temp_max_value = max(risk_matrix[i][j], temp_max_value)
  92.        
  93.        
  94.         if temp_max_value < min_value:
  95.             min_value = temp_max_value
  96.             min_value_raw = i
  97.  
  98.     print('----Risk matrix is----', file = out)
  99.     print_matrix(risk_matrix, "")
  100.  
  101.     print_answer(min_value_raw, min_value)
  102.     return min_value_raw, min_value
  103.  
  104. def input_matrix(matrix_file):
  105.     buffer = []
  106.     matrix = []
  107.  
  108.     while True:
  109.         buffer = matrix_file.readline()
  110.         if not buffer:
  111.             break
  112.         buffer = list(map(float, buffer.split()))
  113.         matrix.append(buffer)
  114.     return matrix
  115.  
  116. def print_matrix(matrix, message):
  117.     print(message, file = out)
  118.     for raw in matrix:
  119.         for element in raw:
  120.             print(float_format.format(element), end = " ", file = out)
  121.         print(file = out)
  122.     print(file = out)
  123.  
  124. def print_answer(index, value):
  125.      print(answer_format.format(index, value), separator, file = out)
  126.  
  127. def main():
  128.     global out
  129.  
  130.     matrix_file = open('{:}.txt'.format(input('Please, enter filename (.txt):')), 'r')
  131.     if input('Do you want write to the file (y/n)? ') == 'y':
  132.         out = open('{:}.txt'.format(input('Please, enter filename (.txt):')), 'w')
  133.    
  134.     matrix = input_matrix(matrix_file)
  135.     print_matrix(matrix, '-- Your matrix is --')
  136.  
  137.     Bernoulli_model(matrix)
  138.     Wald_model(matrix)
  139.     max_model(matrix)
  140.     Hurwitz_model(matrix, probability)
  141.     Savage_model(matrix)
  142.     out.close()
  143.  
  144. if __name__ == '__main__':
  145.     main( )
Advertisement
Add Comment
Please, Sign In to add comment