Skip to content

An efficient solver for nonlinear constrained feedback Stackelberg games

Notifications You must be signed in to change notification settings

jamesjingqili/FeedbackStackelbergGames.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Primal-Dual Interior Point Method For Constrained Nonlinear Feedback Stackelberg Games

A Julia implementation of this work: https://arxiv.org/pdf/2401.15745.pdf. All the source codes for the experiments in the above paper are included in this repo.

Key features:

We are able to handle

  1. nonlinear discrete-time dynamics
  2. general cost functions of each player, which may be nonconvex but may require smoothness
  3. coupled nonlinear equality and inequality constraints, which could be nonconvex
  4. infeasible initializations, to some extent

Dependency: Julia 1.9.0 - 1.9.2

Recommended actions:

  1. make sure julia version is 1.9.0 - 1.9.2
  2. git clone <this_repo>
  3. cd to FeedbackStackelbergGames.jl
  4. install the dependency package by running in the terminal:
    1. "julia --project"
    2. once the Julia REPL is openned, enter the package management mode by typing "]"
    3. type "instantiate", and then press "enter".
    4. wait for julia to finish installing the necessary packages
    5. manually install LatexStrings julia package by "add LatexStrings"

For highway experiments:

  1. cd to the folder /example
  2. run the following codes in the terminal: "julia --project highway.jl"
  3. wait, it may take a while to precompile the program, but after the precompilation, it will execute the algorithm super fast, returning a solution within a few seconds. (Test result generated by a home desktop equipped with an AMD 5950x CPU and 64 GB 3200mhz DDR4 memory.)
  4. data file and plots will be stored in a folder named after the date and time

Note that parameters of the PDIP algorithm, dynamics, costs, and constraints could be customized in the file /example/highway.jl

Limitations of the current implementation:

  1. The KKT conditions construction process (, e.g., in /src/lq_solvers/constrained_fbst_lq_solver.jl) has not been optimized. We can speed it up by using StaticArray.jl and automatically constructing the first-order KKT conditions approximation using automatic differentiation. However, in the current implementation, we manually programmed the KKT conditions.
  2. In the current implementation, we assume each player has the same state, control, and constraint dimension. However, it should be relaxed in the future.

About

An efficient solver for nonlinear constrained feedback Stackelberg games

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages