Pyomo 可以找到解决方案,但它给出了以下警告:警告:将具有警告状态的 SolverResults 对象加载到模型 =(SecondCD)中;来自求解器的消息=Ipopt 3.11.1\x3a 收敛到本地不可行点。问题可能是不可行的。
我如何知道问题是否不可行?
这个 pyomo 模型优化了农场的投入分配决策。
model.Crops = Set() # set Crops := cereal rapes maize ;
model.Inputs = Set() # set Inputs := land labor capital fertilizer;
model.b = Param(model.Inputs) # Parameters in CD production function
model.x = Var(model.Crops, model.Inputs, initialize = 100, within=NonNegativeReals)
def production_function(model, i):
return prod(model.x[i,j]**model.b[j] for j in model.Inputs)
model.Q = Expression(model.Crops, rule=production_function)
...
instance = model.create_instance(data="SecondCD.dat")
opt = SolverFactory("ipopt")
opt.options["tol"] = 1E-64
results = opt.solve(instance, tee=True) # solves and updates instance
instance.display()
如果我设置 b >=1,(例如:参数 b := 土地 1 劳动力 1 资本 1 肥料 1),pyomo 可以找到最优解;
但如果我设置 b < 1,(例如:参数 b := 土地 0.1 劳动力 0.1 资本 0.1 肥料 0.1),并设置 opt.options["tol"] = 1E-64,pyomo 可以找到解决方案,但会发出警告.
我期待一个最佳解决方案,但实际结果给出了上述警告。