public double[][] solveThreeStage(String method) // Method: Enter CCR, BCC, SBM { DEA stageOne = new DEA(dmu, input, interOne); double[][] solutionOne = null; try { if (method.equals("CCR") == true && settings[0][0] == true) // Input-Orientation solutionOne = stageOne.solve_Dual_Basic_Input(false); // Solve stage one else if (method.equals("CCR") == true && settings[0][0] == false) // Output-Orientation solutionOne = stageOne.solve_Dual_Basic_Output(false); // Solve stage one else if (method.equals("BCC") == true && settings[0][0] == true) // Input-Orientation solutionOne = stageOne.solve_Dual_Basic_Input(true); // Solve stage one else if (method.equals("BCC") == true && settings[0][0] == false) // Output-Orientation solutionOne = stageOne.solve_Dual_Basic_Output(true); // Solve stage one else if (method.equals("SBM") == true && settings[0][0] == true) // Input-Orientation solutionOne = stageOne.solve_Dual_SBM_Input(); // Solve stage one else if (method.equals("SBM") == true && settings[0][0] == false) // Output-Orientation solutionOne = stageOne.solve_Dual_SBM_Output(); // Solve stage one /*else throw new Exception("Falsche Methodik");*/ solList.add(solutionOne); } catch (IloException ex) { Logger.getLogger(ThreeStageDEA.class.getName()).log(Level.SEVERE, null, ex); } // Calculate Stage 2 DEA stageTwo = null; double[][] effOneFitted = null; if (settings[1][1] == true) // Efficiency of stage 1 is input of stage 2 { double[] effOne = Evaluation.getEfficiency(solutionOne); effOneFitted = fitEfficiency(effOne); stageTwo = new DEA(dmu, effOneFitted, interTwo); } else { if (settings[2][1] == false) // Input is no combination of efficiency and intermediary product { stageTwo = new DEA(dmu, interOne, interTwo); } else { double[][] combInter = combineEffInter(Evaluation.getEfficiency(solutionOne)); stageTwo = new DEA(dmu, combInter, interTwo); } } double[][] solutionTwo = null; try { if (method.equals("CCR") == true && settings[0][1] == true) // Input-Orientation solutionTwo = stageTwo.solve_Dual_Basic_Input(false); // Solve stage two else if (method.equals("CCR") == true && settings[0][1] == false) // Output-Orientation solutionTwo = stageTwo.solve_Dual_Basic_Output(false); // Solve stage two else if (method.equals("BCC") == true && settings[0][1] == true) // Input-Orientation solutionTwo = stageTwo.solve_Dual_Basic_Input(true); // Solve stage two else if (method.equals("BCC") == true && settings[0][1] == false) // Output-Orientation solutionTwo = stageTwo.solve_Dual_Basic_Output(true); // Solve stage two else if (method.equals("SBM") == true && settings[0][1] == true) // Input-Orientation solutionTwo = stageTwo.solve_Dual_SBM_Input(); // Solve stage two else if (method.equals("SBM") == true && settings[0][1] == false) // Output-Orientation solutionTwo = stageTwo.solve_Dual_SBM_Output(); // Solve stage two /*else throw new Exception("Falsche Methodik");*/ solList.add(solutionTwo); } catch (IloException ex) { Logger.getLogger(ThreeStageDEA.class.getName()).log(Level.SEVERE, null, ex); } double[][] solutionOneTwo = createSolution( solutionOne, solutionTwo); // Create a single solution array containing weights and efficiencies. // Calculate Stage 3 DEA stageThree = null; double[][] effTwoFitted = null; if (settings[1][2] == true) // Efficiency of stage 1 is input of stage 2 { double[] effTwo = Evaluation.getEfficiency(solutionTwo); effTwoFitted = fitEfficiency(effTwo); stageThree = new DEA(dmu, effTwoFitted, output); } else { if (settings[2][2] == false) // Input is no combination of efficiency and intermediary product { stageThree = new DEA(dmu, interTwo, output); } else { double[][] combInterTwo = combineEffInter(Evaluation.getEfficiency(solutionTwo)); stageThree = new DEA(dmu, combInterTwo, output); } } double[][] solutionThree = null; try { if (method.equals("CCR") == true && settings[0][2] == true) // Input-Orientation solutionThree = stageThree.solve_Dual_Basic_Input(false); // Solve stage three else if (method.equals("CCR") == true && settings[0][2] == false) // Output-Orientation solutionThree = stageThree.solve_Dual_Basic_Output(false); // Solve stage three else if (method.equals("BCC") == true && settings[0][2] == true) // Input-Orientation solutionThree = stageThree.solve_Dual_Basic_Input(true); // Solve stage three else if (method.equals("BCC") == true && settings[0][2] == false) // Output-Orientation solutionThree = stageThree.solve_Dual_Basic_Output(true); // Solve stage three else if (method.equals("SBM") == true && settings[0][2] == true) // Input-Orientation solutionThree = stageThree.solve_Dual_SBM_Input(); // Solve stage two else if (method.equals("SBM") == true && settings[0][2] == false) // Output-Orientation solutionThree = stageThree.solve_Dual_SBM_Output(); // Solve stage two /*else throw new Exception("Falsche Methodik");*/ solList.add(solutionThree); } catch (IloException ex) { Logger.getLogger(ThreeStageDEA.class.getName()).log(Level.SEVERE, null, ex); } double[][] solutionComplete = createSolution( solutionOneTwo, solutionThree); // Create a single solution array containing weights and efficiencies. return solutionComplete; }