【发布时间】:2013-03-28 22:05:59
【问题描述】:
我是 c++ 和 cplex 的新手,因此我们将不胜感激。 问题:我正在运行列生成代码。我的代码如下所示:
CPXENVptr *env = NULL;
CPXLPptr *lp= null;
//---------COLUMN GENERATION BEGINS--------------------------------------------
printf("\nStarting column generation.\n");
num_iterations = 0;
total_cols_generated = 0;
while(1)
{
// we are about to do another pricing iteration
num_iterations++;
// get dual prices
status=CPXgetpi(env,lp,dual_value,0,num_customers-1);
if (status)
{
fprintf(stderr,"CPXgetpi Failed.\n");
goto TERMINATE;
}
// call pricing routine
printf ("\nPricing iteration %u.\n", num_iterations);
cols_generated = generate_column(env, lp, num_nodes, num_customers, TT, service_time, start_of_window, end_of_window, out_degree, neighbour, arc_cost, arc_time, dual_value);
total_cols_generated += cols_generated;
if (cols_generated == 0)
break;
// re-optimize the master problem
printf("Re-optimising master LP.\n");
status = CPXdualopt (env, lp);
if ( status ) {
printf ("Failed to re-optimize master LP.\n");
getchar();
goto TERMINATE;
}
// get objective value
status = CPXgetobjval (env, lp, &lower_bound);
if ( status ) {
fprintf (stderr,"Failed to obtain objective value.\n");
goto TERMINATE;
}
// print stuff to screen
printf ("Current cost of RMP solution is %.3f\n", lower_bound);
printf ("\nPress a key\n");
getchar();
} // end while
在第二次优化(第二次进入 while )时,它会在 status = CPXdualopt (env, lp); 处提供访问冲突写入位置。
有什么想法吗?
【问题讨论】:
-
env 和 lp 真的是 NULL 指针吗?我认为您需要发布更多代码。还要发布你的真实代码,因为上面甚至不是合法的 C++。
-
"我的代码看起来像这样:..." 不,它没有,否则你甚至不会编译更不用说运行到访问冲突。尝试发布真实代码来演示真实问题。
-
如果程序太大,请创建一个具有相同问题的较小程序并使用该代码更新此问题。我们不能假设
...不是错误,并且您发布的任何代码都不会产生访问冲突。