一个线性规划问题 cvxpy 解决了,但 IBM ILOG CPLEX 是 'optimal with unscaled infeasabilities'?

An Linear Programming problem cvxpy solves but IBM ILOG CPLEX is 'optimal with unscaled infeasabilities'?

正在解决的问题是找到重量最小的桁架,完全按照本网站上的方法完成:https://www.layopt.com/truss/。这种方法也称为地结构法。我的目标是通过 MILP 优化为该方法添加一些功能。最初,我从 cvxpy 线性规划 (LP) 求解器开始,但由于它无法求解 MILP,我现在使用带有 python 模块 docplex 的 IBM ILOG CPLEX 求解器。不幸的是我遇到了一个问题,但首先简而言之,优化是如何工作的:

..

"build the model"
model = Model()
a = model.continuous_var_list(len(members), name='a', lb=0, ub=1)
q = []
Bcons = []
for k, fk in enumerate(f):
    qk = model.continuous_var_list(len(members), name=f'q{k}', lb=-10 ** 10, ub=10 ** 10)
    Bconsk = model.add_constraints(
        sum(B[i, j] * qk[j] for j in range(len(qk))) == fk[i] for i in range(len(dof)) if dof[i] != 0)
    model.add_constraints(qk[i] <= sigma * a[i] for i in range(len(qk)))
    model.add_constraints(qk[i] >= -sigma * a[i] for i in range(len(qk)))
    q.append(qk)
    Bcons.append(Bconsk)
model.set_objective('min', sum(a[i] * l[i] for i in range(len(a))))  
model.print_information()

"solve model and update results"
sol = model.solve()
print(model.solve_details)

对于小型问题(少于 1000 个成员),LP 在 CPLEX 求解器中收敛并且工作完美。然而,对于更大的问题规模(例如超过 10 000 名成员),问题是 'optimal with unscaled infeasibilities'。这是什么意思,我该如何解决这个更大的 LP?

到目前为止我尝试了什么:

..

Results:
Nodes: 231 Members: 16290
Model: docplex_model1
 - number of variables: 32580
   - binary=0, integer=0, continuous=32580
 - number of constraints: 33038
   - linear=33038
 - parameters: defaults
 - objective: minimize
 - problem type is: LP
status  = optimal with unscaled infeasibilities
time    = 131.297 s.
problem = LP

激进的缩放 mdl.parameters.read.scale = 1 就像@Philippe Couronne 评论的那样工作