Example usage for org.apache.commons.math.optimization RealPointValuePair getValue

List of usage examples for org.apache.commons.math.optimization RealPointValuePair getValue

Introduction

In this page you can find the example usage for org.apache.commons.math.optimization RealPointValuePair getValue.

Prototype

public double getValue() 

Source Link

Document

Get the value of the objective function.

Usage

From source file:rb.app.RBnSCMCSystem.java

public double get_SCM_LB() {
    //return 0.01;

    double min_J_obj = 0.;
    double[] min_Jlocal_obj = new double[n_mubar];

    // Sort the indices of mu_bar based on distance from current_parameters
    List<Integer> sortedmubarIndices = getSorted_CJ_Indices(mu_bar);
    int icount = 0;
    //while ((min_J_obj<=0) && (icount < sortedmubarIndices.size())){
    while ((min_J_obj <= 0) && (icount < sortedmubarIndices.size())) {
        int imubar = sortedmubarIndices.get(icount);

        // First, declare the constraints
        Collection constraints = new ArrayList();

        // Add bounding box constraints for the get_Q_a() variables
        for (int q = 0; q < get_Q_a(); q++) {
            double[] index = new double[get_Q_a() * 2];
            index[q] = 1.;/*from www  . j  a  v a  2  s  .com*/

            constraints.add(new LinearConstraint(index, Relationship.GEQ, B_min[q] / beta_bar[imubar]));
            constraints.add(new LinearConstraint(index, Relationship.LEQ, B_max[q] / beta_bar[imubar]));

            index[q] = 0.;
            index[q + get_Q_a()] = 1.;

            constraints.add(new LinearConstraint(index, Relationship.GEQ, B_min[q] / beta_bar[imubar]));
            constraints.add(new LinearConstraint(index, Relationship.LEQ, B_max[q] / beta_bar[imubar]));
        }

        // Save the current_parameters since we'll change them in the loop below
        save_current_parameters();

        // Add the constraint rows
        if (n_muhat[imubar] > 0) {
            for (int imuhat = 0; imuhat < n_muhat[imubar]; imuhat++) {
                current_parameters = mu_hat[imubar].get(imuhat);

                double[] constraint_row = new double[get_Q_a() * 2];
                for (int q = 0; q < get_Q_a(); q++) {
                    Complex theta_q_a = complex_eval_theta_q_a(q);
                    constraint_row[q] = theta_q_a.getReal() * beta_bar[imubar];
                    constraint_row[q + get_Q_a()] = theta_q_a.getImaginary() * beta_bar[imubar];
                }

                constraints
                        .add(new LinearConstraint(constraint_row, Relationship.GEQ, beta_hat[imubar][imuhat]));
            }
        }

        // Now load the original parameters back into current_parameters
        // in order to set the coefficients of the objective function
        reload_current_parameters();

        // Create objective function object
        double[] objectiveFn = new double[get_Q_a() * 2];
        for (int q = 0; q < get_Q_a(); q++) {
            Complex theta_q_a = complex_eval_theta_q_a(q);
            objectiveFn[q] = theta_q_a.getReal() * beta_bar[imubar];
            objectiveFn[q + get_Q_a()] = theta_q_a.getImaginary() * beta_bar[imubar];
        }
        LinearObjectiveFunction f = new LinearObjectiveFunction(objectiveFn, 0.);

        try {
            SimplexSolver solver = new SimplexSolver(1e-6);
            RealPointValuePair opt_pair = solver.optimize(f, constraints, GoalType.MINIMIZE, false);
            min_Jlocal_obj[icount] = opt_pair.getValue();
        } catch (OptimizationException e) {
            Log.e("RBSCMSYSTEM_TAG", "Optimal solution not found");
            e.printStackTrace();
        } catch (Exception e) {
            Log.e("RBSCMSYSTEM_TAG", "Exception occurred during SCM_LB calculation");
            e.printStackTrace();
        }

        min_J_obj = min_J_obj > min_Jlocal_obj[icount] ? min_J_obj : min_Jlocal_obj[icount];
        icount++;
    }
    return min_J_obj;
}

From source file:rb.app.RBSCMSystem.java

/**
* @return the SCM lower bound for the current parameters.
*//* w  ww.j  a va 2 s  . c o  m*/
public double get_SCM_LB() {
    double min_J_obj = 0.;

    try {

        // First, declare the constraints
        Collection constraints = new ArrayList();

        // Add bounding box constraints for the get_Q_a() variables
        for (int q = 0; q < get_Q_a(); q++) {
            double[] index = new double[get_Q_a()];
            index[q] = 1.;

            constraints.add(new LinearConstraint(index, Relationship.GEQ, B_min[q]));
            constraints.add(new LinearConstraint(index, Relationship.LEQ, B_max[q]));
        }

        // Sort the indices of C_J based on distance from current_parameters
        List<Integer> sortedIndices = getSorted_CJ_Indices();

        // Save the current_parameters since we'll change them in the loop below
        save_current_parameters();

        // Add the constraint rows
        int n_rows = Math.min(SCM_M, C_J.size());
        int count = 1;

        if (n_rows > 0) {
            for (Iterator it = sortedIndices.iterator(); it.hasNext();) {
                Integer mu_index = (Integer) it.next();

                get_current_parameters_from_C_J(mu_index);
                // current_parameters = C_J.get(mu_index);

                double[] constraint_row = new double[get_Q_a()];
                for (int q = 0; q < get_Q_a(); q++) {
                    constraint_row[q] = eval_theta_q_a(q);
                }

                constraints.add(
                        new LinearConstraint(constraint_row, Relationship.GEQ, C_J_stability_vector[mu_index]));

                if (count >= n_rows)
                    break;

                count++;

            }
        }

        // Now load the original parameters back into current_parameters
        // in order to set the coefficients of the objective function
        reload_current_parameters();

        // Create objective function object
        double[] objectiveFn = new double[get_Q_a()];
        for (int q = 0; q < get_Q_a(); q++) {
            objectiveFn[q] = eval_theta_q_a(q);
        }
        LinearObjectiveFunction f = new LinearObjectiveFunction(objectiveFn, 0.);

        SimplexSolver solver = new SimplexSolver();
        RealPointValuePair opt_pair = solver.optimize(f, constraints, GoalType.MINIMIZE, false);
        min_J_obj = opt_pair.getValue();
    } catch (OptimizationException e) {
        Log.e("DEBUG_TAG", "Optimal solution not found");
        e.printStackTrace();
    } catch (Exception e) {
        Log.e("DEBUG_TAG", "Exception occurred during SCM_LB calculation");
        e.printStackTrace();
    }

    Log.d(DEBUG_TAG, "SCM val = " + min_J_obj);
    return min_J_obj;
}