General files:
-- utils.py
-- solver.py: FWSA/MDSA for phi-divegence based constraints and for moment based constraints
-- simulation.py: simulation code 
-- SA.py: FWSA/MDSA solvers 
-- gradient_estimator.py: 
get_centered_delta_mixture: delta**
get_uncentered_delta_mixture: delta* with C = 2/min(theta_i^2)
gradient_estimator1: SFE + delta*
gradient_estimator2: FFE + delta*
gradient_estimator3: CFE + delta**
gradient_estimator2_centered_mixture: FFE + delta**
gradient_estimator_finite_difference
gradient_estimator_finite_difference_random
-- objective_functions.py: Rosenbrock_orignal for Rosenbrock objective and Rosenbrock_testing for the objective function in Section 6.2.1. (i.e. the original Rosenbrock with a translation)


6.1. Moment Properties of Dirichlet Mixtures
-- moment_properties_exp.py

6.2.1. Rosenbrock Objective with Divergence Constraint
-- shell_run_rosen.py: run the following codes for different sets of parameters: 
	-- get_baseline_rosen.py: generate baseline distribution
	-- simulation_exp_rosen.py: run MDSA for rosenbrock function, to run, ''python3 simulation_exp_rosen.py arg1 arg2 arg3 arg4 arg 5'' 
		-- index = arg1: appended to the name of the directory
		-- est_name = arg2: when arg2 = 0, use FFE with delta**; when arg2 = 1, use random finite difference 
		-- R0 = arg3
		-- N = arg4
		-- noise_level = arg5
	-- evaluate_Z_rosen.py: evaluate the function value for each iteration and trial 
-- make_all_plot_rosen.py make final plots in the paper, run the following code
	-- make_plot_rosen.py: make individual plot
 

6.2.2. M/G/1 Queue Objective
-- shell_run_0(1).py: : run the following codes for different sets of parameters: 
	-- get_base_0(1).py: generate baseline distribution and support points for MDSA (FWSA) problem
	-- MG1_exp_0(1).py: run MDSA (FWSA) for MG1 problem, to run, "python3 python3 MG1_exp_0(1).py arg1 arg2 arg3 arg4"
		-- index = arg1: appended to the name of the directory
		-- est_name = arg2: when arg2 = 0, use FFE with delta**; when arg2 = 1, use random finite difference 
		-- R0 = arg3
		-- N = arg4
	-- evaluate_Z_0(1).py: evaluate Z for each iteration and trial

-- make_all_plots_MG1.py: make all plots for MG1 experiments, run the following codes:
	-- shell_plot_MDSA_val.py, shell_plot_MDSA_gap.py, shell_plot_FWSA_val.py, shell_plot_FWSA_gap.py: making individual plot


EC.1. Experiments on Estimation Variances of Dirichlet Mixtures
-- grad_est_compare.py: varying R
-- grad_est_compare1.py: varying c
-- grad_est_compare2.py: varying dimension
-- grad_est_compare4.py: varying sigma
-- ec2_exp_plot.py 