【问题标题】:Access Violation Writing Location c++ [closed]访问冲突写入位置c ++ [关闭]
【发布时间】: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++。
  • "我的代码看起来像这样:..." 不,它没有,否则你甚至不会编译更不用说运行到访问冲突。尝试发布真实代码来演示真实问题。
  • 如果程序太大,请创建一个具有相同问题的较小程序并使用该代码更新此问题。我们不能假设 ... 不是错误,并且您发布的任何代码都不会产生访问冲突。

标签: c++ cplex


【解决方案1】:

根据documentation for CPXgetpi

CPXCENVptr环境

CPXopenCPLEX() 返回的指向 CPLEX 环境的指针。

CPXCLPptrlp

CPXcreateprob() 返回的指向 CPLEX 问题对象的指针。

您没有传递指向这些对象的指针。你为他们两个都传递了NULL

documentation for CPXdualopt 显示同样的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多