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 而言,您是否对单纯形算法访问的顶点感兴趣?
我需要使用“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 而言,您是否对单纯形算法访问的顶点感兴趣?