示例#1
0
args = parser.parse_args()
setting_file = args.settings[0]
settings = importlib.import_module('games.' + setting_file)

rows, cols = settings.payoff_matrix_row.shape

# algorithm settings
rate = 10 ** -5
iters = 2 * 10 ** 5


import matplotlib.pyplot as plt
for _ in range(10):
    str_row_init = utils.randomize_mixed_strategy(rows)
    str_col_init = utils.randomize_mixed_strategy(cols)
    fpi = FPI_2P_Stgy([str_row_init, str_col_init], [settings.payoff_matrix_row, settings.payoff_matrix_col])
    fpi.converge(rate, iters)
    eqpt = fpi.eqpt()
    FPI_2P_Stgy.display_eqpt(eqpt)
    row_x_a, row_y_a = utils.barycentric_to_cartesian(np.array(fpi.get_stats()['str_row_l']))
    col_x_a, col_y_a = utils.barycentric_to_cartesian(np.array(fpi.get_stats()['str_col_l']))
    plt.plot(row_x_a, row_y_a, color='red', alpha=.5)
    plt.plot(col_x_a, col_y_a, color='blue', alpha=.5)

import matplotlib.patches as mpatches
ax = plt.gca()
triangle = mpatches.Polygon(np.array([[0, 0], [np.sqrt(2) / 2, np.sqrt(6) / 2], [np.sqrt(2), 0]]), fc="gray", alpha=.2)
ax.add_artist(triangle)
plt.axis('scaled')
plt.xlim(0, np.sqrt(2))
plt.ylim(0, np.sqrt(6) / 2)
示例#2
0
文件: fig_metric.py 项目: lansiz/eqpt
import numpy as np
import utils
from FPI_2P import FPI_2P_Stgy
import matplotlib.pyplot as plt
import contraction

plt.figure(figsize=(utils.xy_x, utils.xy_x))

settings = utils.read_settings()

# run the FPI
fpi = FPI_2P_Stgy([settings.str_row_init_l[0], settings.str_col_init_l[0]],
                  [settings.payoff_matrix_row, settings.payoff_matrix_col])
if settings.display_game: fpi.print_game()
fpi.converge(settings.rate, settings.iters)
FPI_2P_Stgy.display_eqpt(fpi.eqpt())
if settings.use_LH: fpi.lemke_howson()

stats = fpi.get_stats()
str_row_l = stats['str_row_l']
str_col_l = stats['str_col_l']

d_l = []
for i in range(1, settings.iters):
    tuple_i = (str_row_l[i], str_col_l[i])
    tuple_i_minus_1 = (str_row_l[i - 1], str_col_l[i - 1])
    d_l.append(contraction.distance_function_1(tuple_i_minus_1, tuple_i))

q_l = []
for i in range(1, len(d_l)):
    q_l.append(d_l[i] / d_l[i - 1])