From 8c0e901ec6fde4eefce2d1b5305934dc4448cc5e Mon Sep 17 00:00:00 2001 From: "(no author)" <(no author)@9d5b8971-822b-0410-80eb-d18c1038ef23> Date: Thu, 27 Jan 2011 02:11:46 +0000 Subject: [PATCH] Minor fix. --- .../core/parallel/table_exchange.h | 2 +- .../mixed_logit_dcm/mixed_logit_dcm_dev.h | 6 ++-- .../mixed_logit_dcm_sampling.h | 28 +++++++++++++++++-- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/core/parallel/table_exchange.h b/fastlib/trunk/contrib/dongryel/thesis_research/core/parallel/table_exchange.h index 20a2709fb6..abf60a5ffd 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/core/parallel/table_exchange.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/core/parallel/table_exchange.h @@ -126,7 +126,7 @@ class TableExchange { // Put the found subtable to the end. SubTableType subtable_copy = *it; (*it) = received_subtables_[process_id].front(); - received_subtables_[process_id].pop_front(); + received_subtables_[process_id].pop_front(); received_subtables_[process_id].push_back(subtable_copy); return &(received_subtables_[process_id].back()); } diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_dev.h b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_dev.h index 3dc8f9114b..23522f5bb5 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_dev.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_dev.h @@ -287,8 +287,10 @@ void MixedLogitDCM::Compute( parameters.zeros(table_.num_parameters()); sampling.Init( parameters, &table_, num_data_samples, num_integration_samples); - sampling.SimulatedLoglikelihoodGradient(&gradient); - sampling.SimulatedLoglikelihoodHessian(&hessian); + double negative_simulated_loglikelihood = + sampling.NegativeSimulatedLogLikelihood(); + sampling.NegativeSimulatedLogLikelihoodGradient(&gradient); + sampling.NegativeSimulatedLogLikelihoodHessian(&hessian); // Enter the trust region loop. do { diff --git a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_sampling.h b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_sampling.h index 2d2255f3ae..25421098a7 100644 --- a/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_sampling.h +++ b/fastlib/trunk/contrib/dongryel/thesis_research/mlpack/mixed_logit_dcm/mixed_logit_dcm_sampling.h @@ -159,6 +159,30 @@ class MixedLogitDCMSampling { public: + /** @brief Returns the negative simulated loglikelihood. + */ + double NegativeSimulatedLogLikelihood() const { + return - this->SimulatedLogLikelihood(); + } + + /** @brief Returns the gradient of the negative simulated + * log-likelihood objective. + */ + void NegativeSimulatedLogLikelihoodGradient( + arma::vec *negative_likelihood_gradient) const { + this->SimulatedLogLikelihoodGradient(negative_likelihood_gradient); + (*negative_likelihood_gradient) = - (*negative_likelihood_gradient); + } + + /** @brief Returns the hessian of the negative simulated + * log-likelihood objective. + */ + void NegativeSimulatedLogLikelihoodHessian( + arma::mat *negative_likelihood_hessian) const { + this->SimulatedLogLikelihoodHessian(negative_likelihood_hessian); + (*negative_likelihood_hessian) = - (*negative_likelihood_hessian); + } + /** @brief Returns the parameters associated with the sampling. */ const arma::vec ¶meters() const { @@ -199,7 +223,7 @@ class MixedLogitDCMSampling { * likelihood score objective. This completes the * computation of Equation 8.14 in the paper. */ - void SimulatedLoglikelihoodHessian( + void SimulatedLogLikelihoodHessian( arma::mat *likelihood_hessian) const { likelihood_hessian->set_size( @@ -249,7 +273,7 @@ class MixedLogitDCMSampling { * likelihood score objective. This computes Equation 8.7 * in the paper. */ - void SimulatedLoglikelihoodGradient( + void SimulatedLogLikelihoodGradient( arma::vec *likelihood_gradient) const { likelihood_gradient->set_size(dcm_table_->num_parameters());