def load_V_Vectors(cluster_v_bar_epsilon, _name): global V_vectors global p # global v_prog res = open("show_out" + ".txt", "w") _p = Problem.Problem( initial=[ {s: [random.randint(0, na - 1)] for s in range(n)}, np.zeros(d, dtype=ftype), np.zeros((n, d), dtype=ftype), ], _mdp=m, _cluster_error=cluster_v_bar_epsilon, _epsilon=epsilon_error, ) """the main problem is defined as a mdp with two errors: epsilon_error: the used error in hierarchical clustering using cosine similarity metric. cluster_v_bar_epsilon: the used error for stopping criteria in generating \mathcal{V} set.""" _v_prog = propagation_V.propagation_V( m=m, inequalities=generate_inequalities(m.d), cluster_v_bar_epsilon=cluster_v_bar_epsilon, epsilon_error=epsilon_error, ) _v_prog.initialize_LP() start1 = time.clock() tem = _v_prog.convex_hull_search(_p) stop1 = time.clock() # cProfile.run('v_prog.convex_hull_search(p)') print >> res, "time v propagation", stop1 - start1 print >> res, "iteration", tem[1] res.flush() _V_vectors = tem[0] V_vectors = _V_vectors print "V_vectors", _V_vectors print "len(V_vectors)", len(_V_vectors) print >> res, "V_vectors", _V_vectors res.flush() print >> res, "len(V_vectors)", len(_V_vectors) res.flush() p = _p # v_prog = _v_prog name = "param" + _name + "v-propagate.dmp" pp = pickle.Pickler(open(name, "w")) pp.dump(p) # pp.dump(v_prog) pp.dump(V_vectors)
time_find_V_optimal = [] number_asked_queries = [] error = [] for iteration in range(average_on): _lambda_rand = interior_easy_points(d) _r = my_mdp.generate_random_reward_function(n, na, d) m = my_mdp.make_simulate_mdp(n, na, _lambda_rand, _r) Uvec = m.policy_iteration() exact = m.initial_states_distribution().dot(Uvec) p = Problem.Problem(initial=[{s:[random.randint(0,na-1)] for s in range(n)}, np.zeros(d, dtype=ftype), np.zeros((n,d),dtype=ftype)], _mdp=m, _cluster_error=0.1, _epsilon=0.00001) v_prog = propagation_V.propagation_V(m=m, d=d, cluster_v_bar_epsilon = _cluster_v_bar_epsilon, epsilon_error = epsilon_error) start_time_gather_V_bars = time.time() V_vectors = v_prog.convex_hull_search(p) time_gather_V_bars.append(time.time() - start_time_gather_V_bars) print >> log1, 'V_vectors', V_vectors print >> log1, "exact", exact log1.flush() V = V_bar_search.V_bar_search(_mdp= m, _V_bar=V_vectors, lam_random= m.get_lambda()) start_time_find_V_optimal = time.time() v_opt = V.v_optimal() print >> log1, 'v_opt', v_opt log1.flush()