Skip to content

Solving two-player noncooperative games using value of information

Notifications You must be signed in to change notification settings

CLeARoboticsLab/GamesVoI.jl

Repository files navigation

GamesVoI.jl

GamesVoI

A Julia package for computing the value of information in Bayesian games. Read the full paper here

Paper Abstract

We present a mathematical framework for modeling two-player noncooperative games in which one player (the defender) is uncertain of the costs of the game and the second player’s (the attacker’s) intention, but can preemptively allocate information-gathering resources to reduce this uncertainty. We obtain the defender’s decisions by solving a two-stage problem. In Stage 1, the defender allocates information-gathering resources, and in Stage 2, the information-gathering resources output a signal that informs the defender about the costs of the game and the attacker’s intent, and then both players play a noncooperative game. We provide a gradient-based algorithm to solve the two- stage game and apply this framework to a tower-defense game which can be interpreted as a variant of a Colonel Blotto game with smooth payoff functions and uncertainty over battlefield valuations. Finally, we analyze how optimal decisions shift with changes in information-gathering allocations and perturbations

Read the full paper here

Quickstart Guide

Replicating paper visuals

If you would like to replicate the visualizations shown in the paper, run the following commands. Going through the source code for the visualizations is also a good way of understanding how the code is structured.

First, instantiate the package and load the experiment scripts

julia> ] instantiate
julia> include("experiments/tower_defense.jl")

Attacker/defense policies (Fig. 4, 5)

julia> run_stage_1_breakout(display_controls = 1) # 1 for defender, 2 for attacker

Stage 1 cost landscape (Fig. 2)

julia> visualize_stage_1_cost()

Stage 1 cost terms (Fig. 3)

julia> run_stage_1_breakout(display_controls = 0)

Stage 2 demo (Fig. 7)

julia> include("experiments/scout_visuals.jl")
julia> demo_full()

Precompute for faster Stage 2 demo

julia> include("experiments/scout_visuals.jl")
julia> precompute_r()

A note on the solver

This package uses the proprietary PATH solver under the hood (via PATHSolver.jl). Therefore, you will need a license key to solve larger problems. However, by courtesy of Steven Dirkse, Michael Ferris, and Tudd Munson, temporary licenses are available free of charge. Please consult the documentation of PATHSolver.jl to learn about loading the license key.

Contact

Note: For any questions on how to use this code, do not hesitate to reach out to Fernando Palafox at [email protected] or open an issue.

About

Solving two-player noncooperative games using value of information

Resources

Stars

Watchers

Forks

Contributors 4

  •  
  •  
  •  
  •  

Languages