MOOCHO (Single Doxygen Collection)  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NLPWBCounterExampleMain.cpp
Go to the documentation of this file.
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
5 // Copyright (2003) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #include <iostream>
43 
49 
50 int main( int argc, char* argv[] )
51 {
55  bool success = true;
56 
57  Teuchos::GlobalMPISession mpiSession(&argc, &argv);
58 
59  try {
60 
61  MoochoSolver solver;
62 
63  //
64  // Get options from the command line
65  //
66 
67  double xinit[3] = { 0.0, 0.0, 0.0 };
68  double a = 0.0;
69  double b = 1.0;
70  bool nlp_selects_basis = true;
71  bool linear_obj = true;
72 
73  CommandLineProcessor clp(false); // don't throw exceptions
74  solver.setup_commandline_processor(&clp);
75  clp.setOption( "x1-init", &xinit[0], "Initail guess for x(1)" );
76  clp.setOption( "x2-init", &xinit[1], "Initail guess for x(2)" );
77  clp.setOption( "x3-init", &xinit[2], "Initail guess for x(3)" );
78  clp.setOption( "a", &a, "Constant for c(1)" );
79  clp.setOption( "b", &b, "Constant for c(2)" );
80  clp.setOption(
81  "nlp-selects-basis", "no-nlp-selects-basis", &nlp_selects_basis
82  ,"Determine if NLP will select basis" );
83  clp.setOption(
84  "linear-obj", "nonlinear-obj", &linear_obj
85  ,"Determine if objective is linear" );
86  CommandLineProcessor::EParseCommandLineReturn
87  parse_return = clp.parse(argc,argv,&std::cerr);
88  if( parse_return != CommandLineProcessor::PARSE_SUCCESSFUL )
89  return parse_return;
90 
91  //
92  // Create the NLP and solve it
93  //
94 
95  // Create the NLP
96  NLPWBCounterExample
97  nlp(xinit,a,b,nlp_selects_basis,linear_obj);
98  // Set the NLP
99  solver.set_nlp( Teuchos::rcp(&nlp,false) );
100  // Solve the NLP
101  const MoochoSolver::ESolutionStatus
102  solution_status = solver.solve_nlp();
103 
104  //
105  // Return the solution status (0 if sucessfull)
106  //
107 
108  return solution_status;
109 
110  }
111  TEUCHOS_STANDARD_CATCH_STATEMENTS(true,std::cout,success)
112 
113  return MoochoSolver::SOLVE_RETURN_EXCEPTION;
114 
115 }
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
#define TEUCHOS_STANDARD_CATCH_STATEMENTS(VERBOSE, ERR_STREAM, SUCCESS_FLAG)
Universal interface to a MOOCHO solver.
int main(int argc, char *argv[])
NLP subclass for the Waechter and Biegler Counter Example.