def test_id_hessian(self): """Very simple example for testing qpOASES (using QProblem class).""" path = os.path.join(testing_path, "dev_idhessian_data") #Setup data for QP. H = np.loadtxt(os.path.join(path, "H.txt")) g = np.loadtxt(os.path.join(path, "g.txt")) A = np.loadtxt(os.path.join(path, "A.txt")) lb = np.loadtxt(os.path.join(path, "lb.txt")) ub = np.loadtxt(os.path.join(path, "ub.txt")) lbA = np.loadtxt(os.path.join(path, "lbA.txt")) ubA = np.loadtxt(os.path.join(path, "ubA.txt")) #Setting up QProblem object. qp = QProblem(72, 144) options = Options() options.numRefinementSteps = 1 options.printLevel = PrintLevel.NONE #options.setToMPC() #options.setToReliable() #options.enableFlippingBounds = BooleanType.FALSE options.enableRamping = BooleanType.FALSE #options.enableRamping = BooleanType.TRUE #options.enableFarBounds = BooleanType.FALSE #options.enableRamping = BooleanType.FALSE #options.printLevel = PL_LOW #options.enableFullLITests = BooleanType.FALSE #options.boundRelaxation = 1.0e-1 qp.setOptions(options) #Solve QP. nWSR = 1200 qp.init(H, g, A, lb, ub, lbA, ubA, nWSR)
def test_id_hessian(self): """Very simple example for testing qpOASES (using QProblem class).""" path = os.path.join(testing_path, "dev_idhessian_data") #Setup data for QP. H = np.loadtxt(os.path.join(path, "H.txt")) g = np.loadtxt(os.path.join(path, "g.txt")) A = np.loadtxt(os.path.join(path, "A.txt")) lb = np.loadtxt(os.path.join(path, "lb.txt")) ub = np.loadtxt(os.path.join(path, "ub.txt")) lbA = np.loadtxt(os.path.join(path, "lbA.txt")) ubA = np.loadtxt(os.path.join(path, "ubA.txt")) #Setting up QProblem object. qp = QProblem(72,144) options = Options() options.numRefinementSteps = 1 options.printLevel = PrintLevel.NONE #options.setToMPC() #options.setToReliable() #options.enableFlippingBounds = BooleanType.FALSE options.enableRamping = BooleanType.FALSE #options.enableRamping = BooleanType.TRUE #options.enableFarBounds = BooleanType.FALSE #options.enableRamping = BooleanType.FALSE #options.printLevel = PL_LOW #options.enableFullLITests = BooleanType.FALSE #options.boundRelaxation = 1.0e-1 qp.setOptions( options ) #Solve QP. nWSR = 1200 qp.init(H, g, A, lb, ub, lbA, ubA, nWSR)
def test_example1b(self): # Example for qpOASES main function using the QProblemB class. #Setup data of first QP. H = np.array([1.0, 0.0, 0.0, 0.5 ]).reshape((2,2)) g = np.array([1.5, 1.0 ]) lb = np.array([0.5, -2.0]) ub = np.array([5.0, 2.0 ]) # Setup data of second QP. g_new = np.array([1.0, 1.5]) lb_new = np.array([0.0, -1.0]) ub_new = np.array([5.0, -0.5]) # Setting up QProblemB object. qp = QProblemB(2) options = Options() options.enableFlippingBounds = BooleanType.FALSE options.initialStatusBounds = SubjectToStatus.INACTIVE options.numRefinementSteps = 1 options.printLevel = PrintLevel.NONE qp.setOptions(options) # Solve first QP. nWSR = 10 qp.init(H, g, lb, ub, nWSR) # Solve second QP. nWSR = 10; qp.hotstart(g_new, lb_new, ub_new, nWSR) # Get and print solution of second QP. xOpt_actual = np.zeros(2) qp.getPrimalSolution(xOpt_actual) xOpt_actual = np.asarray(xOpt_actual, dtype=float) objVal_actual = qp.getObjVal() objVal_actual = np.asarray(objVal_actual, dtype=float) cmd = os.path.join(bin_path, "example1b") p = Popen(cmd, shell=True, stdout=PIPE) stdout, stderr = p.communicate() stdout = str(stdout).replace('\\n', '\n') stdout = stdout.replace("'", '') print(stdout) # get c++ solution from std pattern = re.compile(r'xOpt\s*=\s*\[\s+(?P<xOpt>([0-9., e+-])*)\];') match = pattern.search(stdout) xOpt_expected = match.group('xOpt') xOpt_expected = xOpt_expected.split(",") xOpt_expected = np.asarray(xOpt_expected, dtype=float) pattern = re.compile(r'objVal = (?P<objVal>[0-9-+e.]*)') match = pattern.search(stdout) objVal_expected = match.group('objVal') objVal_expected = np.asarray(objVal_expected, dtype=float) print("xOpt_actual =", xOpt_actual) print("xOpt_expected =", xOpt_expected) print("objVal_actual = ", objVal_actual) print("objVal_expected = ", objVal_expected) assert_almost_equal(xOpt_actual, xOpt_expected, decimal=7) assert_almost_equal(objVal_actual, objVal_expected, decimal=7)
ub = np.array([5.0, 2.0 ]) # Setup data of second QP. g_new = np.array([1.0, 1.5]) lb_new = np.array([0.0, -1.0]) ub_new = np.array([5.0, -0.5]) # Setting up QProblemB object. example = QProblemB(2) options = Options() options.enableFlippingBounds = BooleanType.FALSE options.initialStatusBounds = SubjectToStatus.INACTIVE options.numRefinementSteps = 1 example.setOptions(options) # Solve first QP. nWSR = np.array([10]) example.init(H, g, lb, ub, nWSR) print("\nnWSR = %d\n\n"%nWSR) # Solve second QP. nWSR = np.array([10]) example.hotstart(g_new, lb_new, ub_new, nWSR) print("\nnWSR = %d\n\n"% nWSR) # Get and print solution of second QP. xOpt = np.zeros(2)
lb = np.array([0.5, -2.0]) ub = np.array([5.0, 2.0]) # Setup data of second QP. g_new = np.array([1.0, 1.5]) lb_new = np.array([0.0, -1.0]) ub_new = np.array([5.0, -0.5]) # Setting up QProblemB object. example = QProblemB(2) options = Options() options.enableFlippingBounds = BooleanType.FALSE options.initialStatusBounds = SubjectToStatus.INACTIVE options.numRefinementSteps = 1 example.setOptions(options) # Solve first QP. nWSR = 10 example.init(H, g, lb, ub, nWSR) print("\nnWSR = %d\n\n" % nWSR) # Solve second QP. nWSR = 10 example.hotstart(g_new, lb_new, ub_new, nWSR) print("\nnWSR = %d\n\n" % nWSR) # Get and print solution of second QP. xOpt = np.zeros(2)