Search in sources :

Example 1 with OpenMapRealVector

use of org.apache.commons.math3.linear.OpenMapRealVector in project ipss-plugin by InterPSS-Project.

the class ApacheLpsolveSolverInputBuilder method buildInput.

public void buildInput() {
    for (OpfConstraint conIn : cstContainer) {
        IntArrayList idx = conIn.getColNo();
        DoubleArrayList val = conIn.getVal();
        // output constraint to constraint collection
        OpenMapRealVector vec = new OpenMapRealVector(numOfVar);
        LinearConstraint con = null;
        OpfConstraintType type = conIn.getCstType();
        try {
            if (type.equals(OpfConstraintType.EQUALITY)) {
                double rh = conIn.getLowerLimit();
                for (int j = 0; j < idx.size(); j++) {
                    int colIdx = idx.elements()[j];
                    double posVal = val.elements()[j];
                    vec.setEntry(colIdx, posVal);
                }
                con = new LinearConstraint(vec, Relationship.EQ, rh);
            } else if (type.equals(OpfConstraintType.LARGER_THAN)) {
                double[] valRow = val.elements();
                double rh = conIn.getLowerLimit();
                double[] valRow_r = valRow;
                for (int ii = 0; ii < idx.size(); ii++) {
                    valRow_r[ii] = valRow[ii] * (-1);
                    int colIdx = idx.elements()[ii];
                    double posVal = valRow_r[ii];
                    vec.setEntry(colIdx, posVal);
                }
                con = new LinearConstraint(vec, Relationship.LEQ, -rh);
            } else if (type.equals(OpfConstraintType.LESS_THAN)) {
                double[] valRow = val.elements();
                double rh = conIn.getUpperLimit();
                for (int j = 0; j < idx.size(); j++) {
                    int colIdx = idx.elements()[j];
                    double posVal = valRow[j];
                    vec.setEntry(colIdx, posVal);
                }
                con = new LinearConstraint(vec, Relationship.LEQ, rh);
            }
            constCol.add(con);
        } catch (Exception e) {
            OPFLogger.getLogger().severe(e.toString() + " at constraint: " + conIn.getDesc());
        // e.printStackTrace();
        }
    }
}
Also used : LinearConstraint(org.apache.commons.math3.optimization.linear.LinearConstraint) OpfConstraintType(com.interpss.opf.datatype.OpfConstraintType) OpenMapRealVector(org.apache.commons.math3.linear.OpenMapRealVector) IntArrayList(cern.colt.list.IntArrayList) DoubleArrayList(cern.colt.list.DoubleArrayList) OpfConstraint(org.interpss.plugin.opf.constraint.OpfConstraint) OpfConstraint(org.interpss.plugin.opf.constraint.OpfConstraint) LinearConstraint(org.apache.commons.math3.optimization.linear.LinearConstraint)

Aggregations

DoubleArrayList (cern.colt.list.DoubleArrayList)1 IntArrayList (cern.colt.list.IntArrayList)1 OpfConstraintType (com.interpss.opf.datatype.OpfConstraintType)1 OpenMapRealVector (org.apache.commons.math3.linear.OpenMapRealVector)1 LinearConstraint (org.apache.commons.math3.optimization.linear.LinearConstraint)1 OpfConstraint (org.interpss.plugin.opf.constraint.OpfConstraint)1