cplex — переполнение стека местоположения записи нарушения доступа

Я новичок в 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

На второй Оптимизации (второй раз в то время как) это дает место записи Нарушения Доступа в статусе = CPXdualopt (env, lp) ;.

Любая идея?

-2

Решение

Согласно документация для CPXgetpi:

CPXCENVptr окр

Указатель на среду CPLEX, возвращаемый CPXopenCPLEX(),

CPXCLPptr Л.П.

Указатель на проблемный объект CPLEX, возвращаемый CPXcreateprob(),

Вы не передаете указатели на эти объекты. Вы проходите NULL вместо этого для них обоих.

документация для CPXdualopt показывает ту же проблему.

2

Другие решения

Других решений пока нет …