[Trilinos-Users] Moocho question.

Bartlett, Roscoe A rabartl at sandia.gov
Tue Jun 10 08:31:46 MDT 2008


Luca,

To see the exact input that the executables are designed to run with, see:

  Trilinos/packages/moocho/test/definition

There you will see the exact inputs that are tested.  If you turn off derivative support in this example, you have to turn on finite differencing explicitly.  The above moocho/test/definition file will show you how that is done.

- Ross



-----Original Message-----
From: trilinos-users-bounces at software.sandia.gov [mailto:trilinos-users-bounces at software.sandia.gov] On Behalf Of Luca Heltai
Sent: Tuesday, June 10, 2008 8:07 AM
To: trilinos-users at software.sandia.gov
Subject: [Trilinos-Users] Moocho question.

Dear Trilinos Users,

I'm trying to use the Moocho module solve a minimization problem for which I only have access to the (nonlinear) target g(x,p) and the equality constraint f(x,p), and I'm having some difficulties on figuring out a couple of things:

I tried running the example

NLPThyraEpetraModelEval4DOpt.exe --no-support-derivs

where I understood from the source code that in this way, all derivatives (except W=DfDx) should be computed by Finite Differences.
Is this assumption correct? If this is correct, then there must be a problem somewhere else, since the above does not work: I get the following error

---
test_nlp = true: Testing the NLP! ...

Testing the supported NLPFirstOrder interface ...

MoochoSolver: Caught an std::exception of type std::logic_error described as : /usr/local/trilinos-8.0.5/packages/thyra/src/
interfaces/nonlinear/model_evaluator/ana/fundamental/
Thyra_ModelEvaluatorBase.hpp:2292:

Throw number = 1

Throw test that evaluated to true: !deriv.isSupportedBy(derivSupport)

Thyra::ModelEvaluatorBase::OutArgs<Scalar>::assert_supports
(OUT_ARG_DfDp,l):

model = 'Thyra::DefaultFinalPointCaptureModelEvaluator
{thyraModel='Thyra::DefaultNominalBoundsOverrideModelEvaluator
{thyraModel='Thyra::DefaultEvaluationLoggerModelEvaluator
{thyraModel='Thyra::EpetraModelEvaluator
{epetraModel='EpetraModelEval4DOpt',W_factory='Thyra::AmesosLinearOpWith
SolveFactory{solverType=Klu}'}'}'}'}':

Error, The argument DfDp(0) = Derivative {derivMultiVec=DerivativeMultiVector
{multiVec=Thyra::DefaultSpmdMultiVector<double>
{rangeDim=2,domainDim=2},orientation=DERIV_MV_BY_COL}}
is not supported!

The supported types include DerivativeSupport{none}!
---

 From the above error lines, I understood that the thing which was giving me a problem was "simply" the testing of the NLP interface...
I switched this off in the config file, run again, and now I get the
following:


********************************
*** Start of rSQP Iterations ***
n = 4, m = 2, nz = 0

  k    f         ||c||s    ||rGL||s  QN ||Ypy||2 ||Zpz||2 ||d||inf
alpha    time(sec)
  ---- --------- --------- --------- -- -------- -------- --------
-------- ---------
     0         0         -         -  -        -        -
-        -  0.013418

Total time = 0.013452 sec

Oops!  Not the solution.  Some error has occured!


-----

The program then hangs for a while, until I just kill it...

 From the above, my conclusions are:
1. I did not understand how this works
2. There is a problem somewhere (probably in point 1 above ... ;-) ...)

One last question: In the documentation it is stated:

"MOOCHO also includes a minimally invasive mode for reduced-space SQP where the simulator application only needs to compute the objective and constraint functions f (xD , xI): R(n+m) -> R,  c(xD , xI ): R(n+m) -> Rn and solve only forward linear systems involving  DcDxD. All other derivatives can be approximated with directional finite differences but any exact derivatives that can be computed by the application are happily accepted and fully utilized by MOOCHO through the Thyra::ModelEvaluator interface."

Does this mean that one can also approximate DfDx (=DcDxD) in Moocho by finite differences? From the above statement I couldn't figure it out (I was hoping yes, but then in the example codes create_W is always specified, and trying not to specify it gives errors like the one I printed out above).

Assuming that one could calculate W=DfDx in some way, then how do we specify that all other derivatives are to be computed by finite difference approximations? My understanding was that this is the default behavior, unless the various outArgs properties are set accordingly. Is this correct? And if so, what is wrong in the example test problem when --no-support-derivs is set? The effect of this is precisely not to specify the unknown derivatives...

Thanks in advance,

Luca.

--
Luca Heltai <luca.heltai at gmail.com>
http://www-dimat.unipv.it/heltai
--
There are no answers, only cross references.




_______________________________________________
Trilinos-Users mailing list
Trilinos-Users at software.sandia.gov
http://software.sandia.gov/mailman/listinfo/trilinos-users




More information about the Trilinos-Users mailing list