|
Go to the documentation of this file.
26 #define STEEP_REFINETOL 2.0
227 coPref[i] *= 1.0 - mult * i;
230 pref[i] *= 1.0 + mult * i;
278 Real rhov_1 = 1.0 / rhoVec[n];
285 MSG_ERROR( std::cerr << "WSTEEP04: rhoVec = "
286 << rhoVec[n] << " with smaller absolute value than 0.5*theeps = " << 0.5* theeps << std::endl; )
294 for( int i = 0; i < len; ++i)
296 int j = rhoIdx.index(i);
298 coWeights_ptr[j] += rhoVec[j] * (beta_q * rhoVec[j] - 2.0 * rhov_1 * workVec_ptr[j]);
300 if (coWeights_ptr[j] < delta)
301 coWeights_ptr[j] = delta;
302 else if (coWeights_ptr[j] >= infinity)
303 coWeights_ptr[j] = 1.0 / theeps;
305 coWeights_ptr[n] = beta_q;
330 if( cpen[idx] < feastol )
331 x = x * x / feastol * prefPtr[idx];
333 x = x * x / cpen[idx] * prefPtr[idx];
345 for( int i = 0; i < nsorted; ++i )
423 if( coWeights_ptr[i] < tol )
425 #ifdef ENABLE_ADDITIONAL_CHECKS
426 MSG_WARNING( spxout, spxout << "WSTEEP02 SPxSteepPR::selectLeaveX(): coWeights too small ("
427 << coWeights_ptr[i] << "), assuming epsilon (" << tol << ")!" << std::endl; )
429 x = x * x / tol * p[i];
432 x = x * x / coWeights_ptr[i] * p[i];
462 if( coWeights_ptr[idx] < tol )
464 #ifdef ENABLE_ADDITIONAL_CHECKS
465 MSG_WARNING( spxout, spxout << "WSTEEP02 SPxSteepPR::selectLeaveSparse(): coWeights too small ("
466 << coWeights_ptr[idx] << "), assuming epsilon (" << tol << ")!" << std::endl; )
468 x = x * x / tol * p[idx];
471 x = x * x / coWeights_ptr[idx] * p[idx];
511 if( coPen[idx] < -tol )
513 #ifdef ENABLE_ADDITIONAL_CHECKS
514 MSG_WARNING( spxout, spxout << "WSTEEP02 SPxSteepPR::selectLeaveSparse(): coWeights too small ("
515 << coPen[idx] << "), assuming epsilon (" << tol << ")!" << std::endl; )
517 x = x * x / tol * prefPtr[idx];
520 x = x * x / coPen[idx] * prefPtr[idx];
553 if( coPen[idx] < -tol )
555 #ifdef ENABLE_ADDITIONAL_CHECKS
556 MSG_WARNING( spxout, spxout << "WSTEEP02 SPxSteepPR::selectLeaveSparse(): coWeights too small ("
557 << coPen[idx] << "), assuming epsilon (" << tol << ")!" << std::endl; )
559 x = x * x / tol * prefPtr[idx];
562 x = x * x / coPen[idx] * prefPtr[idx];
586 if (n >= 0 && n < thesolver->dim())
603 for (j = coPidx. size() - 1; j >= 0; --j)
606 xi_ip = xi_p * coPvec[i];
607 x = coWeights_ptr[i] += xi_ip * (xi_ip * pi_p - 2 * workVec_ptr[i]);
613 coWeights_ptr[i] = delta;
619 for (j = pIdx. size() - 1; j >= 0; --j)
622 xi_ip = xi_p * pVec[i];
629 weights_ptr[i] = delta;
667 x = x * x / coWeights_ptr[idx];
668 price.val = x * cp[idx];
684 for( int i = 0; i < nsorted; ++i )
721 x = x * x / weights_ptr[idx];
722 price.val = x * p[idx];
738 for( int i = 0; i < nsorted; ++i )
838 x = x * x / coWeights_ptr[idx];
872 x = x * x / coWeights_ptr[idx];
918 x = x * x / weights_ptr[idx];
952 x = x * x / weights_ptr[idx];
999 coPen = coWeights_ptr[idx];
1001 coPrefValue = cp[idx];
1002 x = x * coPrefValue;
1038 pen = weights_ptr[idx];
1072 x *= x / coWeights_ptr[i];
1099 x *= x / weights_ptr[i];
1158 for (i = 0; i < j; ++i)
1179 for (i = 0; i < j; ++i)
1188 #ifdef ENABLE_CONSISTENCY_CHECKS
1200 MSG_ERROR( std::cerr << "ESTEEP03 x[" << i << "] = " << x << std::endl; )
|