def do_dreesen(model, data, maxdeg=3): eqns = model.empirical_moment_equations(data, maxdeg) syms = model.param_symbols() M = MomentMatrix(2, syms, morder='grevlex') solsdp = solvers.solve_generalized_mom_coneqp(M, eqns, None) sol = extractors.extract_solutions_lasserre(M, solsdp['x'], Kmax=model.k) params = array([sol[sym][0] for sym in syms]) params = array([make_distribution(col) for col in params.T]).T return model["w"], params
def do_lasserre(model, data, maxdeg=3, maxcontrs=-1): eqns = model.empirical_moment_equations(data, 3) syms = model.param_symbols() #ipdb.set_trace() M = MomentMatrix(maxdeg, syms, morder='grevlex') solsdp = solvers.solve_generalized_mom_coneqp(M, eqns, None) #solsdp = solvers.solve_basic_constraints(M, eqns, slack=1e-5) sol = extractors.extract_solutions_lasserre(M, solsdp['x'], Kmax=model.k, tol=1e-5) #sol = extractors.extract_solutions_dreesen(M, solsdp['x'], Kmax=model.k) #sol = extractors.extract_solutions_dreesen_proto(M, solsdp['x'], Kmax=model.k) return sol