Руководство для научно-исследовательской работы по библиотеке ILOG CPLEX 11.2

12 5. Если решение существует, вызывается CPXgetobjval для получения значения целевой функции. Для получения искомых неизвестных задачи необходимо создать соответствующие массивы. Для определения размера массива решений используются следующие функции: CPXgetnumcols – для получения числа столбцов матрицы ограничений, считанной из текстового файла математической модели задачи, CPXgetnumrows – для получения считанного числа строк матрицы ограничений. Значение переменных прямого решения получаем вызовом функции CPXgetx . status = CPXgetobjval (env, lp, &objval); if ( status ) { fprintf (stderr, "Failed to obtain objective value.\n"); goto TERMINATE; } printf ("Objective value %.10g.\n", objval); cur_numcols = CPXgetnumcols (env, lp); cur_numrows = CPXgetnumrows (env, lp); if ( solntype == CPX_BASIC_SOLN ) { cstat = (int *) malloc (cur_numcols*sizeof(int)); rstat = (int *) malloc (cur_numrows*sizeof(int)); if ( cstat == NULL || rstat == NULL ) { fprintf (stderr, "No memory for basis statuses.\n"); goto TERMINATE; } status = CPXgetbase (env, lp, cstat, rstat); if ( status ) { fprintf (stderr, "Failed to get basis; error %d.\n", status); goto TERMINATE; } } else { printf ("No basis available\n"); } x = (double *) malloc (cur_numcols*sizeof(double)); if ( x == NULL ) { fprintf (stderr, "No memory for solution.\n"); goto TERMINATE;

RkJQdWJsaXNoZXIy MTY0OTYy