并行解决不同的模型(C ++ / OpenMP)
回答免责声明:我对Gurobi新是新的,所以不要完全理解所有细节。
我有很多(成千上万)相对小的线性程序来解决。我的想法是编写一个OpenMP循环,其中每个线程都解决了它的一部分Liinear计划。稍后,所有解决方案都是合并和输出的。类似的东西:
矢量
//加载lp_problem_descrittions
int num_of_problems = lp_problem_descriptions.size();
矢量
grbenv ent = grbenv(真实);//或每个线程应该是一个吗?
env.start();
#pragma patly.
{
Vector
#pragma for nowait
for(int i = 0; i GrbModel Model = GrbModel(ENV); //填写LP_Problem_Descrittions的值的模型[i] model.Optimize(); if(model.get(grb_intattr_status)== grb_optimal){ local_solutions.push_back(model.get(grb_doubleattr_objval)); } } // 为了 #pragma eval关心 { for(double val:local_solutions)global_solutions.push_back(val); } } //输出global_solutions. 我的问题是,是否可以使用Gurobi(在并行线程中运行独立模型)。如果是这样,我应该为所有线程使用相同的grbenv或每个线程应该有自己的?
请登入留下评论。
评论
2评论