在C++API中获取无界方向
Getting unbounded direction in C++ API
我正在尝试实现Benders分解,将其作为C++API中问题的解决方法。同时,我使用"getRay"函数来获得对偶子问题的极限方向,以在松弛主问题中建立可行性切割。我使用"getRay"函数的方式是这样的。
IloNumVarArray var(env);
IloNumArray val(env);
cplex.getRay(val, var);
我最终得到了var/val数组中的极端方向。我主要关心的是使用"getRay"函数的方式。据我所知,"getRay"用极端方向上非零的变量填充这个IloNumVarArray,这些变量的相应值将在IloNumArray中。getRay()返回的数组中元素的顺序未指定。此外,它只返回无界的非零值。我不知道如何将每个极端方向映射到可行性切割中的相应表达式。更具体地说,我知道如何通过val和var数组中的值来构建我的可行性!我想知道是否有人能帮我一个忙。问候
我不知道你的确切问题是什么,要获得射线,你应该先关闭预求解,使用原始单纯形作为你的求解方法,然后使用getRay。你可以参考这篇文章"http://orinanobworld.blogspot.com/2010/07/finding-extreme-rays-in-cplex.html"。我希望它对你有帮助。
Niraj
我想您想要的东西在这篇文章中已经解释过了(用代码片段)。
getRay
函数有两个输入(val, var)
。它用非零系数填充val
,用相应的变量填充var
。
例如,如果val返回(1.5,2.5),var返回(x1,x3);你可以说1.5x1+2.5x3是一个极端的方向。
对于映射值,可以检查x[i].getId() == var[j].getId()
。
编辑:可以使用setStringProperty
和setIntProperty
为变量设置属性。您可以访问用于映射值的属性。
- C++为构建时间获取QDateTime的可靠方法
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 使用指针从C++中的数组中获取最大值
- 如何获取std::result_of函数的返回类型
- 如何在openssl-ecc中获取十六进制格式的私钥
- 使用Unreal C++获取VR耳机的世界位置/方向
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 从C字符串中获取奇怪的字符串长度
- 为什么我的for循环不能正确获取argv
- 从python中调用C++函数并获取返回值
- 如何获取一个数字的前3位
- 获取字符串的长度并将其分配给数组
- 无法获取菜单选择以运行函数.C++
- 从图像中的像素中获取轴承矢量(方向)
- 如何获取设备方向
- 在C++API中获取无界方向
- QML:如何在不实际移动任何可见组件的情况下,在鼠标Aeria顶部获取鼠标移动的方向
- 从cin获取方向键
- 从像素补丁OpenCV中获取方向直方图