Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ##----python 3.5* version----
- ##Author name: Mariam Anayan-
- ##------Variant: 1-----------
- import sys
- import math
- out = sys.stdout
- float_format = '{:8.2f}'
- answer_format = 'Optimal strategy is {:d}, value for it {:.2f}'
- separator = '\n' + '-'* 30 + '\n'
- probability = 0.5
- def max_in_column(matrix, column_index):
- max_value = - math.inf
- for i in range(len(matrix)):
- max_value = max(max_value, matrix[i][column_index])
- return max_value
- def Bernoulli_model(matrix):
- print('--Bernoulli model--', file = out)
- max_value = - math.inf
- max_value_raw = -1
- for i in range(len(matrix)):
- #just to avoid float division
- if sum(matrix[i]) > max_value:
- max_value_raw = i
- max_value = sum(matrix[i])
- print_answer(max_value_raw, max_value/len(matrix[max_value_raw]))
- return max_value_raw, max_value/len(matrix[max_value_raw])
- def Wald_model(matrix):
- print('--Wald model--', file = out)
- max_value = - math.inf
- max_value_raw = -1
- for i in range(len(matrix)):
- if min(matrix[i]) > max_value:
- max_value_raw = i
- max_value = min(matrix[i])
- print_answer(max_value_raw, max_value)
- return max_value_raw, max_value
- def max_model(matrix):
- print('--Max model--', file = out)
- max_value = - math.inf
- max_value_raw = -1
- for i in range(len(matrix)):
- if max(matrix[i]) > max_value:
- max_value_raw = i
- max_value = max(matrix[i])
- print_answer(max_value_raw, max_value)
- return max_value_raw, max_value
- def Hurwitz_model(matrix, probability):
- print('--Hurwitz model--', file = out)
- max_value = - math.inf
- max_value_raw = -1
- for i in range(len(matrix)):
- temp_value = probability * min(matrix[i]) + (1 - probability)* max(matrix[i])
- if temp_value > max_value:
- max_value_raw = i
- max_value = temp_value
- print_answer(max_value_raw, max_value)
- return max_value_raw, max_value
- def Savage_model(matrix):
- print('--Savage model--', file = out)
- min_value = math.inf
- min_value_raw = -1
- risk_matrix = []
- for i in range(len(matrix)):
- risk_matrix.append([0] * len(matrix[i]))
- for i in range(len(matrix)):
- temp_max_value = -math.inf
- for j in range(len(matrix[i])):
- risk_matrix[i][j] = max_in_column(matrix, j) - matrix[i][j]
- temp_max_value = max(risk_matrix[i][j], temp_max_value)
- if temp_max_value < min_value:
- min_value = temp_max_value
- min_value_raw = i
- print('----Risk matrix is----', file = out)
- print_matrix(risk_matrix, "")
- print_answer(min_value_raw, min_value)
- return min_value_raw, min_value
- def input_matrix(matrix_file):
- buffer = []
- matrix = []
- while True:
- buffer = matrix_file.readline()
- if not buffer:
- break
- buffer = list(map(float, buffer.split()))
- matrix.append(buffer)
- return matrix
- def print_matrix(matrix, message):
- print(message, file = out)
- for raw in matrix:
- for element in raw:
- print(float_format.format(element), end = " ", file = out)
- print(file = out)
- print(file = out)
- def print_answer(index, value):
- print(answer_format.format(index, value), separator, file = out)
- def main():
- global out
- matrix_file = open('{:}.txt'.format(input('Please, enter filename (.txt):')), 'r')
- if input('Do you want write to the file (y/n)? ') == 'y':
- out = open('{:}.txt'.format(input('Please, enter filename (.txt):')), 'w')
- matrix = input_matrix(matrix_file)
- print_matrix(matrix, '-- Your matrix is --')
- Bernoulli_model(matrix)
- Wald_model(matrix)
- max_model(matrix)
- Hurwitz_model(matrix, probability)
- Savage_model(matrix)
- out.close()
- if __name__ == '__main__':
- main( )
Advertisement
Add Comment
Please, Sign In to add comment