/// <summary> /// Replace all occurrences of oldVar with expr, and update column cross indices /// oldVar should now be a basic variable. /// </summary> protected /*sealed*/ void SubstituteOut(ClAbstractVariable oldVar, ClLinearExpression expr) { if (Trace) { FnEnterPrint(string.Format("SubstituteOut: {0}", oldVar, expr)); } if (Trace) { TracePrint(this.ToString()); } Set varset = (Set)_columns[oldVar]; foreach (ClAbstractVariable v in varset) { ClLinearExpression row = (ClLinearExpression)_rows[v]; row.SubstituteOut(oldVar, expr, v, this); if (v.IsRestricted && row.Constant < 0.0) { _infeasibleRows.Add(v); } } if (oldVar.IsExternal) { _externalRows.Add(oldVar); _externalParametricVars.Remove(oldVar); } _columns.Remove(oldVar); }