如何更改古罗比C++模型中的目标值系数
How to change the Objective Value Coefficients in Gurobi C++ Model
我构建了一个MIP模型,我想使用一组不同的目标函数系数多次求解(我意识到热启动不会很有帮助,我只是想避免模型构建时间(。
我通过将每个变量的 obj 系数设置为0.0
来构建可重用模型。
我现在想将所有变量的目标系数添加到值std::vector
,然后优化模型并再次将所有目标系数设置为 0。
我目前正在这样做:
auto vars = model.getVars();
auto cols = model.get(GRB_IntAttr_NumVars);
for (int i =0; i < cols; ++i) {
std::cout << vars[i].get(GRB_StringAttr_VarName) << "n";
vars[i].set(GRB_DoubleAttr_Obj, obj_val[i]);
}
//after doing stuff with the rebuilt-model setting all obj coeffs to 0
for (int i =0; i < cols; ++i) {
vars[i].set(GRB_DoubleAttr_Obj, 0.0);
}
delete[] vars;
有没有更快、更优雅的方法可以做到这一点?
要重置目标,您可以使用setObjective((并将0
作为线性表达式传递。
您还可以使用数组集方法在一次调用中传递所有目标系数。这应该是执行此操作的最快方法,并在代码中保存一个 for 循环。
如果您在设置新目标时无论如何都要遍历所有变量,为什么还要首先将其重置为 0?
您还应该检查多目标功能是否可以成为您的选项。
相关文章:
- QTableView:endMoveRows在模型中重置水平页眉大小
- 将IBM Rhapsody模型集成到VS 2019中
- 旋转模型矩阵时的形状失真
- 成员函数调用和C++对象模型
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 打印 ONNXRUNTIME::图形没有模型
- C++内存模型和位字段的最大序列
- 使用SIR模型的疾病爆发模拟
- Qt - QVector 和模型视图 - 从列表视图获取自定义类的最佳方法是什么?
- 如何在 ECS 模型中组织实体?
- 在官方张量流 resnet50 模型上运行 tflite 精度工具
- Libtorch:如何加载ONNX模型?
- 使用 assimp 加载模型 - 不需要提升?
- 如何将经过训练的机器学习模型保存在python中并将其加载到C++中进行预测?
- C++内存模型中的确切规则阻止在获取操作之前重新排序
- 如何更改古罗比C++模型中的目标值系数
- C++ lower_bound() 搜索最接近目标值的元素
- 如何在 openGL 中围绕全局轴旋转模型?
- 我们可以将阈值应用于色彩空间模型的单个组件(如 RGB 和 LAB)吗?
- ASIMP 模型加载不会加载所有网格