优化模型

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


/ * * /优化模型误差= GRBoptimize(模型);如果(错误)转到退出;

这个例程执行优化并填充一些内部模型的属性,包括优化的状态,解决方案,等。函数返回后,我们可以查询这些属性的值。特别是,我们可以通过检索查询的状态优化过程的价值状态属性……


/ *获取解决方案信息* /错误= GRBgetintattr(模型、GRB_INT_ATTR_STATUS &optimstatus);如果(错误)转到退出;

有许多可能的值的优化状态。模型的最优解可能已经发现,或模型可能是决心不可行或无界,或解决方案过程可能会被打断。中可以找到可能的状态列表Gurobi参考手册。对于我们的示例,我们知道,该模型是可行的,并且我们还没有修改任何参数可能导致优化停止早期(例如,时间限制),所以状态GRB_OPTIMAL

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


错误= GRBgetdblattr(模型、GRB_DBL_ATTR_OBJVAL &objval);如果(错误)转到退出;

注意,这个调用将返回一个非零误差的结果如果没有解决方案被发现这个模型。

一旦我们知道模型解决,我们可以提取X模型的属性,它包含每个变量的值的计算解决方案:


错误= GRBgetdblattrarray(模型、GRB_DBL_ATTR_X 0、3、溶胶);如果(错误)转到退出;

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