Exemplo n.º 1
0
        /// <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);
        }