OsiConicCut * OsiConicCut::clone() const { OsiConicCut * new_cut = new OsiConicCut(); new_cut->setConeMembers(coneMembers(), coneSize()); new_cut->setConeType(coneType()); new_cut->setCutRow(cutRowPtr(), numCutRows(), coneSize()); new_cut->setCutRowLb(cutRowLb(), numCutRows()); new_cut->setCutRowUb(cutRowUb(), numCutRows()); new_cut->setCutCol(cutCol()); new_cut->setCutColLb(cutColLb(), numCutCols()); new_cut->setCutColUb(cutColUb(), numCutCols()); new_cut->setEffectiveness(effectiveness()); new_cut->setGloballyValid(globallyValid()); }
void Tattempt::updateEffectiveness() { if (mistakes.size()) { qreal effSum = 0.0; m_sum = 0; for (int i = 0; i < mistakes.size(); ++i) { m_sum |= mistakes[i]; if (mistakes[i] == TQAunit::e_correct) effSum += CORRECT_EFF; else if (!(mistakes[i] & TQAunit::e_wrongNote) && !(mistakes[i] & TQAunit::e_wrongPos)) effSum += NOTBAD_EFF; } m_effectiveness = effSum / (qreal)mistakes.size(); } else m_effectiveness = 0.0; if (effectiveness() >= 50.0) { if (m_sum & TQAunit::e_wrongNote) { // subtract e_wrongNote if summary has sufficient effectiveness m_sum = m_sum - TQAunit::e_wrongNote; // attempt was successful m_sum |= TQAunit::e_littleNotes; // but has little valid notes } } }