优化模型

优化模型

现在模型已经建立,下一步是优化它:


/*优化模型*/ error = grboptimization(模型);如果(错误)goto QUIT;

这个例程执行优化并填充几个内部模型属性,包括优化的状态、解决方案等。一旦函数返回,我们就可以查询这些属性的值。属性的值来查询优化过程的状态状态属性……


/*捕获解决方案信息*/ error = grbgetattr (model, GRB_INT_ATTR_STATUS, &optimstatus);如果(错误)goto QUIT;

优化状态有许多可能的值。模型的最优解可能已经找到,或者模型可能已经被确定为不可行的或无界的,或者解的过程可能已经中断。一个可能的状态列表可以在Gurobi参考手册.对于我们的示例,我们知道模型是可行的,并且我们没有修改任何可能导致优化提前停止的参数(例如,时间限制),因此状态将是GRB_OPTIMAL

另一个重要的模型属性是计算解的目标函数值。这是通过调用访问:


错误= GRBgetdblattr(模型,GRB_DBL_ATTR_OBJVAL, &objval);如果(错误)goto QUIT;

注意,如果没有找到此模型的解决方案,该调用将返回一个非零错误结果。

一旦我们知道模型已被求解,我们就可以提取X属性,该属性包含计算解中每个变量的值:


error = GRBgetdblattrarray(model, GRB_DBL_ATTR_X, 0, 3, sol);如果(错误)goto QUIT;

这个例程检索数组值属性的值。第三个和第四个参数分别指示要检索的第一个数组元素的索引和要检索的元素数量。在本例中,我们检索条目0到2(即,所有三个条目)