diff --git a/src/simplex/spydual.c b/src/simplex/spydual.c index e41baf2..d33ebb1 100644 --- a/src/simplex/spydual.c +++ b/src/simplex/spydual.c @@ -1374,13 +1374,15 @@ loop: /* main loop starts here */ check_accuracy(csa); #endif /* check if the objective limit has been reached */ -#if PERTURB - /* FIXME */ - if (!perturb) -#endif if (csa->phase == 2 && csa->obj_lim != DBL_MAX && spx_eval_obj(lp, beta) >= csa->obj_lim) - { if (csa->beta_st != 1) + { if (perturb) + { /* remove perturbation */ + perturb = 0; + memcpy(csa->lp->c, csa->orig_c, (1+n) * sizeof(double)); + csa->phase = csa->d_st = 0; + } + if (csa->beta_st != 1) csa->beta_st = 0; if (csa->d_st != 1) csa->d_st = 0;