VariablePtr Transformer::newVar_(LinearFunctionPtr lf, double d, ProblemPtr newp) { VariablePtr ov; FunctionPtr f; ConstraintPtr cnew; ov = yLfs_->findY(lf, d); if (!ov) { LinearFunctionPtr lf2 = lf->clone(); ov = newp->newVariable(VarTran); yLfs_->insert(ov, lf2, d); lf->addTerm(ov, -1.0); f = (FunctionPtr) new Function(lf); cnew = newp->newConstraint(f, -d, -d); #if SPEW logger_->msgStream(LogDebug) << me_ << "added new constraint " << std::endl; cnew->write(logger_->msgStream(LogDebug)); #endif lHandler_->addConstraint(cnew); } return ov; }
VariablePtr Transformer::newVar_(CGraphPtr cg, ProblemPtr newp) { VariablePtr iv; VariablePtr ov = VariablePtr(); // NULL FunctionPtr f; LinearFunctionPtr lf; ConstraintPtr cnew; assert(cg); if (OpSumList!=cg->getOut()->getOp()) { ov = yUniExprs_->findY(cg); } if (!ov) { ov = newp->newVariable(VarTran); lf = (LinearFunctionPtr) new LinearFunction(); lf->addTerm(ov, -1.0); f = (FunctionPtr) new Function(lf, cg); cnew = newp->newConstraint(f, 0.0, 0.0); #if SPEW logger_->msgStream(LogDebug) << me_ << "added new constraint " << std::endl; cnew->write(logger_->msgStream(LogDebug)); #endif assignHandler_(cg, cnew); yUniExprs_->insert(ov, cg); } return ov; }
VariablePtr Transformer::newVar_(VariablePtr iv, double d, ProblemPtr newp) { if (fabs(d)<zTol_) { return iv; } else { LinearFunctionPtr lf = (LinearFunctionPtr) new LinearFunction(); VariablePtr ov; FunctionPtr f; ConstraintPtr cnew; ov = yVars_->findY(iv, d); if (!ov) { ov = newp->newVariable(VarTran); yVars_->insert(ov, iv, d); lf->addTerm(iv, 1.0); lf->addTerm(ov, -1.0); f = (FunctionPtr) new Function(lf); cnew = newp->newConstraint(f, -d, -d); #if SPEW logger_->msgStream(LogDebug) << me_ << "added new constraint " << std::endl; cnew->write(logger_->msgStream(LogDebug)); #endif lHandler_->addConstraint(cnew); } return ov; } }