AMPL:"Bad suffix .npool for Initial" poolstub 错误

AMPL: "Bad suffix .npool for Initial" error with poolstub

我需要使用“poolstub”选项找到一个 AMPL 解决方案池(我对它比较陌生),但是当我尝试检索它们时出现错误。我将尝试逐步解释所有内容。这是我的代码:

option solver cplex;
model my_model.mod;
data my_data.dat;
option cplex_options 'poolstub=multmip poolcapacity=10 populate=1 poolintensity=4 poolreplace=1';
solve;

此时 AMPLE 给了我这个:

CPLEX 20.1.0.0: poolstub=multmip
poolcapacity=10
populate=1
poolintensity=4
poolreplace=1
CPLEX 20.1.0.0: optimal solution; objective 4.153846154
66 dual simplex iterations (0 in phase I)

AMPL 似乎没有将解存储在池中。 事实上,如果我尝试用这段代码检索它们

for {i in 1..Current.npool} {
    solution ('multmip' & i & '.sol');
    display  _varname, _var;
}

我收到这个错误:

Bad suffix .npool for Initial
context:  for {i in  >>> 1..Current.npool} <<<  {
Possible suffix values for Initial.suffix:
    astatus   exitcode   message   relax
    result    sstatus    stage  
for{...} { ? ampl: for{...} { ? ampl: 

我没有整数变量,只有实数变量,而且我读到 CPLEX 不支持线性程序的填充方法。这可能是问题所在还是缺少其他东西?提前谢谢你

您已经正确地确定了您的问题。实体 Initial 没有 npool 后缀,这意味着求解器(在您的情况下是 CPLEX)没有 return 一个。

Gurobi 可以 return 线性程序的信息,但它似乎与最优解相同,因此它不会为您提供任何额外信息(更多信息请参见 AMPL-Gurobi options)。

这是一个示例 AMPL 脚本:

model net1.mod;                                                                 
data net1.dat;                                                                  
                                                                                
option solver gurobi;                                                           
option gurobi_options 'ams_stub=allopt ams_mode=1';              
solve;                                                                          
                                                                                
for {n in 1..Total_Cost.npool} {                                                
   solution ("allopt" & n & ".sol");                                            
   display Ship;                                                                
} 

输出(在我的机器上):

Gurobi 9.1.1: ams_stub=allopt
ams_mode=2
ams_epsabs=0.5
Gurobi 9.1.1: optimal solution; objective 1819
1 simplex iterations
Alternative MIP solution 1, objective = 1819
1 alternative MIP solutions written to "allopt1.sol"
... "allopt1.sol".
Alternative solutions do not include dual variable values.
Best solution is available in "allopt1.sol".

suffix npool OUT;
Alternative MIP solution 1, objective = 1819
Ship :=
NE   BOS    90
NE   BWI    60
NE   EWR   100
PITT NE    250
PITT SE    200
SE   ATL    70
SE   BWI    60
SE   EWR    20
SE   MCO    50
;

文件 net1.mod and net1.dat are from the AMPL book.

求解 MIP 时,求解器可以存储它沿途找到的次优解,因为建模者出于某种原因可能会对它们感兴趣。 就您的 LP 而言,您是否对单纯形算法访问的顶点感兴趣?