def test_mcp_newton_minFBLSA(): mcp = SN.MixedComplementarityProblem2(0, 2, mcp_function, mcp_Nablafunction) z = array([0., 0.]) w = array([0., 0.]) SO = SN.SolverOptions(mcp, SN.SICONOS_MCP_NEWTON_MINFBLSA) info = SN.mcp_newton_minFBLSA(mcp, z, w, SO) print("z = ", z) print("w = ", w) assert (linalg.norm(z-zsol) <= ztol) assert not info
SO.iparam[0] = 100 SO.iparam[3] = 2 SO.iparam[4] = 10 lambdaPM = np.empty((N, 4)) signs = np.empty((N, 2)) sol = np.empty((N, 2)) sol[0, :] = xk z[4:6] = xk z[6] = hh k = 0 while t <= T: k += 1 info = SN.mcp_newton_minFBLSA(mcp, z, w, SO) #info = SN.mcp_newton_FBLSA(mcp, z, w, SO) # print('iter {:} ; solver iter = {:} ; prec = {:}'.format(k, SO.iparam[1], SO.dparam[1])) if info > 0: mcp_function(0, 4, z, w) sol[k, 0] = w[0] - z[1] sol[k, 1] = w[2] - z[3] if sol[k, 0] < -1e-7 and np.abs(z[1]) < 1e-10: z[1] = -sol[k, 0] z[0] = 1.0 if z[4] < -1e-7 and np.abs(z[3]) < 1e-10: z[3] = -sol[k, 1] z[2] = 1.0 if z[1] < -1e-7: z[1] = 0.0 z[0] = 0.0