Python 可以识别无界变量吗?

Python 可以识别无界变量吗?,python,drake,Python,Drake,当我试图解决我的数学程序,我得到以下错误 IPOPT terminated after exceeding the maximum iteration limit. Hint: Remember that IPOPT is an interior-point method and performs badly if any variables are unbounded. (我使用IPOPT是因为我认为它是唯一可用的免费解算器) 有没有办法确定哪些变量是无界的,以帮助调试问题?Drake的数

当我试图解决我的数学程序,我得到以下错误

IPOPT terminated after exceeding the maximum iteration limit.  Hint: Remember that IPOPT is an interior-point method and performs badly if any variables are unbounded.
(我使用IPOPT是因为我认为它是唯一可用的免费解算器)


有没有办法确定哪些变量是无界的,以帮助调试问题?

Drake的数学程序返回
bounding\u box\u constraints()
函数中的所有边界,您可以查询每个边界框约束并获得变量的边界。下面是python代码

#我们将在x_lo和x_up中存储每个变量的上下限。
x_lo=np.full((prog.num_vars(),),-np.inf)
x\u up=np.full((prog.num\u vars(),),np.inf)
对于程序边界框约束()中的bb约束:
#在每个边界框约束上循环
对于范围内的i(bb_con.variables().shape[0]):
#循环与约束关联的每个变量。首先找到变量的索引
var_index=int(prog.decision_variable_index()[bb_con.variables()[i].get_id()]))
#更新变量的下限。
x_lo[var_index]=np.max((x_lo[var_index],bb_con.evaluator().下限()[i]))
#更新变量的上限。
x_up[var_index]=np.min((x_up[var_index],bb_con.evaluator().上界()[i]))
#现在x_lo和x_up存储每个变量的边界
对于范围内的i(prog.num_vars()):
如果np.ISNF(x_ulo[i])和np.isinf(x_uup[i]):
#打印出没有下限和上限的变量。
打印(程序决策变量()[i])

谢谢你的回答!我注意到等式约束(通过
prog.AddLinearConstraint(eq(…)
)添加)不会添加到边界框约束的数量中。等式约束变量是否被认为是无界的??线性等式约束存储在
prog.linear\u equality\u constraints()
中,而不是
bounding\u box\u constraint
。我不知道IPOPT是否将这些变量视为有界变量。如果要添加边界框约束val,可以始终执行
prog.AddBoundingBoxConstraint(val,val,var)