Test instances of disjointly constrained bilinear program
收藏资源简介:
BLP SECTION This section contains the algorithms and benchmark instances for the disjointly constrained bilinear programs. Algorithms - PEA: This code implements the Polyhedra Expansion Algorithm(PEA). It solves the disjoint bilinear program using an iterative exploration of optimality polyhedrons. PEA treats the y variables as free and does not require bounds on them. - Gurobi_Module: Python code that solves the BLP problems using the Gurobi Optimizer as a nonconvex optimization problem. A lower bound on the y variables is required for Gurobi to run. Instances: The BLP instances are stored inside BLP.zip. They consist of 160 benchmark problems organized into 16 folders numbered 1 through 16. Each folder contains the following for every instance: An input file containing the full problem specificationas follows: Line 1: m = number of constraints in the x variables; Line 2: n = number of x variables; Line 3: p = number of y variables; Line 4: l = number of constraints in the y variables The next line contains the vector c. It has n entries separated by commas. This corresponds to the linear term c^T x. The next line contains the vector d. It has p entries separated by commas. This corresponds to the linear term d^T y. The next block contains the matrix Q. It is an n by p matrix written row by row. This defines the bilinear term x^T Q y. The next block contains the matrix A. It is an m by n matrix that defines the constraints A x = b. The next block contains the matrix E. It is an l by p matrix that defines the constraints E y >= f. The next line contains the vector b. It has m entries. The next line contains the vector f. It has l entries. The final line contains a lower bound for all y variables. This bound is used only when solving with Gurobi. It is not used by PEA, since PEA treats y as a free variable. The bound was added because Gurobi cannot solve these instances without at least one finite bound on the y variables. This ordering is the same for all instance files. An info file containing metadata about the instance. This includes the number of Kernel Problem 1 and Kernel Problem 2 components, the class selections for KP 1, the number of KP 1 problems in each class, the number of local minima, the number of global minima, and lists of global optimal points before and after transformation. BIMATRIX SECTION This section contains the algorithms and instances for the bimatrix game problems. - PEA_BMX: Python code implementing the PEA algorithm for bimatrix games. - R4B_BMX: Python version of R4B_linear.m of Zhen et al.(2021), customized to solve bimatrix instances. - Bimatrix instances: The bimatrix game instances are provided in text format. These instances were originally created by Zhen et al. (2021) in MATLAB data format as part of their work in Zhen et al. (2022). Only the payoff matrices are used in PEA_BMX and R4B_BMX. (Note that x_LH and y_LH do not appear to represent the actual solutions, contrary to the description in the original dataset.) REQUIREMENTS Python 3 NumPy Gurobi and the Gurobi Python interface. Any additional packages are listed in the code headers
BLP 章节 本章节包含针对带分离约束的双线性规划(Bilinear Program, BLP)的算法与基准测试实例。 ### 算法 - 多面体展开算法(Polyhedra Expansion Algorithm, PEA):本代码实现了多面体展开算法,通过迭代探索最优多面体来求解分离约束双线性规划问题。PEA将y变量视为自由变量,无需为其设置上下界。 - Gurobi模块:采用Gurobi优化器将BLP问题作为非凸优化问题求解的Python代码。Gurobi运行需要为y变量设置下界。 ### 实例集 BLP实例存储于BLP.zip压缩包中,共包含160个基准测试问题,被划分为16个编号1至16的文件夹。每个文件夹下的每个实例均包含以下文件: 1. 输入文件:包含完整的问题规格说明,格式如下: 第1行:m为x变量对应的约束数量;第2行:n为x变量的个数;第3行:p为y变量的个数;第4行:l为y变量对应的约束数量。 下一行包含向量c,包含n个以逗号分隔的元素,对应线性项$c^mathrm{T}x$。 下一行包含向量d,包含p个以逗号分隔的元素,对应线性项$d^mathrm{T}y$。 下一个数据块为矩阵Q,为n×p维矩阵,按行依次写入,定义双线性项$x^mathrm{T}Qy$。 下一个数据块为矩阵A,为m×n维矩阵,用于定义约束$Ax = b$。 下一个数据块为矩阵E,为l×p维矩阵,用于定义约束$Ey geq f$。 下一行包含向量b,包含m个元素。 下一行包含向量f,包含l个元素。 最后一行为所有y变量的下界。该下界仅在使用Gurobi求解时生效,PEA无需使用该下界,因为PEA将y视为自由变量。添加该下界是因为Gurobi无法在未给y变量设置至少一个有限下界的情况下求解此类实例。 所有实例文件均遵循此格式规范。 2. 信息文件:包含该实例的元数据,具体包括核问题1(Kernel Problem 1, KP1)与核问题2(Kernel Problem 2, KP2)的组件数量、KP1的类别选择、每个类别下KP1问题的数量、局部极小值点数量、全局极小值点数量,以及变换前后的全局最优点列表。 双矩阵博弈(Bimatrix Game)章节 本章节包含针对双矩阵博弈问题的算法与实例集。 ### 算法 - PEA_BMX:用于求解双矩阵博弈问题的PEA算法Python实现代码。 - R4B_BMX:改编自Zhen等人2021年提出的R4B_linear.m的Python版本,针对双矩阵博弈实例进行了定制化适配。 ### 双矩阵博弈实例 双矩阵博弈实例以文本格式提供。这些实例最初由Zhen等人于2021年以MATLAB数据格式创建,作为其2022年研究工作的一部分。PEA_BMX与R4B_BMX仅使用其中的收益矩阵。(注:与原数据集描述相悖的是,x_LH与y_LH似乎并非实际的博弈解。) ### 依赖要求 Python 3、NumPy、Gurobi及其Python接口。其余额外依赖包详见各代码文件的头部注释。



