This repository contains the experiment code and results for the fixed-point bundle method for solving variational inequalities (VIs) and game equilibrium problems.
vi_numpy.py: implementation for the paper titled “A path-following framework on fiber bundle for variational inequalities” (available at arXiv:2606.00778 and Optimization Online).game_numpy.py: implementation for the paper titled “The fixed-point bundle method over product-of-simplex domains arising from game equilibria” (available at arXiv:2609.16158 and Optimization Online).main.py: experiment entry points.data/: experiment results.
main.py implements two operator models:
- the neural network representation
nn_Fmodels general real-analytic VI operators; - a payoff tensor representation
payoff_Fmodels the VI operator for general finite normal-form games.
test_vicallsvi_numpy.pyto solve a VI over a simplex domain with a neural network operator.test_gamecallsgame_numpy.pyto solve a VI over a product-of-simplex domain with either a neural network operator or a payoff tensor operator.group_testrunstest_viortest_gamein parallel usingmultiprocessing, where the number of worker processes is specified byprocess_num. It is intended for solving multiple VIs or games simultaneously.
The solvers are based on a predictor-corrector framework. vi_numpy.py and game_numpy.py support two corrector options, which are selectable inside the corrector_comp functions. See the papers for a detailed discussion of the differences between the two correctors.
The current implementation uses a naive navigation of the fixed-point bundle, with the sole goal of finding at least one solution for each input VI instance.
- The current singularity-avoidance mechanism uses the simplest stateless or randomized strategy to produce a step along the fiber. For complex problem instances, adaptively determining the singularity-avoidance step based on the algorithm state could further improve performance.
- Some solutions cannot be reached by the current navigation. If convergence to a specific solution is required, the
decrease_onlyoption inpredictor_correctorcan help reach any solution; however, there is no convergence guarantee ifdecrease_only=Trueat every step.
If you use this code, please cite the corresponding papers:
@misc{sun2026pathfollowingframeworkfiberbundle,
title={A path-following framework on fiber bundle for variational inequalities},
author={Hongbo Sun},
year={2026},
eprint={2606.00778},
archivePrefix={arXiv},
primaryClass={math.OC},
url={https://arxiv.org/abs/2606.00778},
}
@misc{sun2026fixedpointbundlemethodproductofsimplex,
title={The fixed-point bundle method over product-of-simplex domains arising from game equilibria},
author={Hongbo Sun},
year={2026},
eprint={2609.16158},
archivePrefix={arXiv},
primaryClass={math.OC},
url={https://arxiv.org/abs/2609.16158},
}