Skip to content

Commit

Permalink
DRC-1570: switch qpsLoader to using getResources so Bamboo would work.
Browse files Browse the repository at this point in the history
  • Loading branch information
Tingfan Wu committed Sep 12, 2014
1 parent 621cc57 commit 9536931
Show file tree
Hide file tree
Showing 37 changed files with 73 additions and 76 deletions.
2 changes: 1 addition & 1 deletion ConvexOptimizationAdapter/Matlab/ReadMpsAdapter.m
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
filePath = strcat('MpsParser/QpsFiles/',fileName);

fileNameNoExtensionVector = strsplit(fileName,'.');
fileNameToWrite = strcat(pwd,'/YamlQpProblems/',fileNameNoExtensionVector(1),'.yaml');
fileNameToWrite = strcat(pwd,'/../resources/YamlQpProblems/',fileNameNoExtensionVector(1),'.yaml');

rawObj = readmps(filePath);
processedObj = convert(rawObj);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import org.ejml.ops.CommonOps;
import org.ejml.ops.NormOps;


import us.ihmc.utilities.math.MatrixTools;

public class GenericActiveSetQPSolver extends AbstractActiveSetQPSolver
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -400,80 +400,78 @@ private void testCaseFromQPS(String qpsFileName, GenericActiveSetQPSolver solver
DenseMatrix64F x =null;
Yaml yaml = new Yaml();

String qpsPath="Matlab/YamlQpProblems/";
InputStream input = new FileInputStream(new File(qpsPath+ qpsFileName));

Map<String, Object> object = (Map<String, Object>) yaml.load(input);
// System.out.print(object + "\n");

beq=MatrixTools.yamlFieldToMatrix(null,"beq",object);
Aeq=MatrixTools.yamlFieldToMatrix(null,"Aeq",object);
A=MatrixTools.yamlFieldToMatrix(null,"A",object);
b=MatrixTools.yamlFieldToMatrix(null,"b",object);
H=MatrixTools.yamlFieldToMatrix(null,"H",object);
f=MatrixTools.yamlFieldToMatrix(null,"f",object);
lb=MatrixTools.yamlFieldToMatrix(null,"lb",object);
ub=MatrixTools.yamlFieldToMatrix(null,"ub",object);
x=MatrixTools.yamlFieldToMatrix(null,"X",object);

CommonOps.scale(2.0, H);

if(f==null)
f=new DenseMatrix64F(H.numRows,1);
solver.setQuadraticCostFunction(H, f, 0);

if(Aeq!=null)
solver.setLinearEqualityConstraints(Aeq, beq);

int maxInequalityRows=solver.numberOfVariablesToSolve*2 +( A==null?0:A.numRows);
DenseMatrix64F aggregatedInequalityMatrix = new DenseMatrix64F(maxInequalityRows, solver.numberOfVariablesToSolve);
DenseMatrix64F aggregatedInequalityVector = new DenseMatrix64F(maxInequalityRows, 1);
int offset=0;
if(A!=null)
{
CommonOps.insert(A,aggregatedInequalityMatrix,0,0);
CommonOps.insert(b, aggregatedInequalityVector, 0, 0);
assert(A.numRows==b.numRows);
offset+=A.numRows;
}

if(ub!=null)
{
for(int j=0;j<solver.numberOfVariablesToSolve;j++)
aggregatedInequalityMatrix.set(j+offset,j,1);
CommonOps.insert(ub, aggregatedInequalityVector, offset, 0);
offset+=ub.numRows;
}

if(lb!=null)
{
for(int j=0;j<solver.numberOfVariablesToSolve;j++)
aggregatedInequalityMatrix.set(j+offset,j,-1);
CommonOps.scale(-1, lb);
CommonOps.insert(lb, aggregatedInequalityVector, offset, 0);
offset+=lb.numRows;
}

aggregatedInequalityMatrix.setNumRows(offset);
aggregatedInequalityVector.setNumRows(offset);

if(offset>0)
solver.setLinearInequalityConstraints(aggregatedInequalityMatrix, aggregatedInequalityVector);

solver.displayProblem();
try{
solver.solve(null);
}
catch(RuntimeException e)
{
System.out.println("Solver exceeeded max iteration");
e.printStackTrace();
}
DenseMatrix64F solution = solver.getSolution();
CommonOps.subtract(solution, x, solution);
System.out.println("File"+qpsFileName);
double norm=NormOps.normP1(solution);
System.out.println("Norm="+ norm);
String qpsPath="YamlQpProblems/";
InputStream input = getClass().getClassLoader().getResourceAsStream(qpsPath+qpsFileName);
Map<String, Object> object = (Map<String, Object>) yaml.load(input);

beq=MatrixTools.yamlFieldToMatrix(null,"beq",object);
Aeq=MatrixTools.yamlFieldToMatrix(null,"Aeq",object);
A=MatrixTools.yamlFieldToMatrix(null,"A",object);
b=MatrixTools.yamlFieldToMatrix(null,"b",object);
H=MatrixTools.yamlFieldToMatrix(null,"H",object);
f=MatrixTools.yamlFieldToMatrix(null,"f",object);
lb=MatrixTools.yamlFieldToMatrix(null,"lb",object);
ub=MatrixTools.yamlFieldToMatrix(null,"ub",object);
x=MatrixTools.yamlFieldToMatrix(null,"X",object);

CommonOps.scale(2.0, H);

if(f==null)
f=new DenseMatrix64F(H.numRows,1);
solver.setQuadraticCostFunction(H, f, 0);

if(Aeq!=null)
solver.setLinearEqualityConstraints(Aeq, beq);

int maxInequalityRows=solver.numberOfVariablesToSolve*2 +( A==null?0:A.numRows);
DenseMatrix64F aggregatedInequalityMatrix = new DenseMatrix64F(maxInequalityRows, solver.numberOfVariablesToSolve);
DenseMatrix64F aggregatedInequalityVector = new DenseMatrix64F(maxInequalityRows, 1);
int offset=0;
if(A!=null)
{
CommonOps.insert(A,aggregatedInequalityMatrix,0,0);
CommonOps.insert(b, aggregatedInequalityVector, 0, 0);
assert(A.numRows==b.numRows);
offset+=A.numRows;
}

if(ub!=null)
{
for(int j=0;j<solver.numberOfVariablesToSolve;j++)
aggregatedInequalityMatrix.set(j+offset,j,1);
CommonOps.insert(ub, aggregatedInequalityVector, offset, 0);
offset+=ub.numRows;
}

if(lb!=null)
{
for(int j=0;j<solver.numberOfVariablesToSolve;j++)
aggregatedInequalityMatrix.set(j+offset,j,-1);
CommonOps.scale(-1, lb);
CommonOps.insert(lb, aggregatedInequalityVector, offset, 0);
offset+=lb.numRows;
}

aggregatedInequalityMatrix.setNumRows(offset);
aggregatedInequalityVector.setNumRows(offset);

if(offset>0)
solver.setLinearInequalityConstraints(aggregatedInequalityMatrix, aggregatedInequalityVector);

solver.displayProblem();
try{
solver.solve(null);
}
catch(RuntimeException e)
{
System.out.println("Solver exceeeded max iteration");
e.printStackTrace();
}
DenseMatrix64F solution = solver.getSolution();
CommonOps.subtract(solution, x, solution);
System.out.println("File"+qpsFileName);
double norm=NormOps.normP1(solution);
System.out.println("Norm="+ norm);
}

@Test
Expand Down

0 comments on commit 9536931

Please sign in to comment.