If all your variables are in the range 1e-13 to 3e-5,
you may find that general-purpose solvers like KNITRO
and MINOS will have trouble distinguishing them from
noise. The Feasibility tolerance in MINOS is 1e-6.
This means that MINOS is willing to let the variables
go *negative* by as much as 1e-13 - 1e-6 (that is,
by almost 1e-6). Conceivably it could help to scale
your variables up by a large factor like 1e+8, but
this may cause trouble elsewhere.
Sometimes special functions need special solvers.
In case your problem has only linear constraints
(and bounds on x), you could look at the PDCO solver
here, implemented in Matlab:
http://www.stanford.edu/group/SOL/software.html
It happens to work remarkably well with the entropy
objective function. It uses an interior method that
keeps the variables strictly within their bounds,
so you can specify the lower bounds to be 0.0 rather
than 1e-13.
Good luck,
Michael
I should have mentioned that KNITRO uses an interior
method also, so may already avoid the difficulty I
had in mind. (Sorry for this oversight.) Also,
you can reset the Feasibility tolerance in MINOS
to 1e-13 if you really want to, though it may cause
trouble elsewhere.
Not to say that numerical optimization is a minefield(!).
But it doesn't hurt to be conscious of scaling, tolerances,
etc.
Michael
solve;
display x;
display obj;
Do not include "reset;" or "option solver ...;" in the commands file,
though; NEOS takes care of these things.
Bob Fourer
4...@ampl.com
Thank you very much for the useful information.
You are quite right. I am encountering the problem you described. I
plan to scale
the variables up by a large factor like 1e+8 or larger.
As you mentioned, SOL can solve the entropy object function well. But the
constraints in my problem also has non-linear ones such as some sum {
x[i]*log(x[i]) }.
Can SOL also handle this well?
I tried KNITRO/AMPL yesterday. The problem characteristics is:
Number of variables: 8510
bounded below: 0
bounded above: 0
bounded below and above: 8510
fixed: 0
free: 0
Number of constraints: 6438
linear equalities: 5411
nonlinear equalities: 0
linear inequalities: 0
nonlinear inequalities: 1027
range: 0
Number of nonzeros in Jacobian: 198410
Number of nonzeros in Hessian: 17607844
All the nonlinear inequalities contains something like x[i]*log(x[i]).
What kind of solver
do you think is suitable for problem like this?
Thanks in advance!
Regards,
Tower
I have done as you said. Unfortunately, there is memory limitation. It
can't perform the computation. :(
Regards,
Tower
In KNITRO 5.2 manual, I am told to use knitroampl rather than knitro.
Now I can run it locally. Is there any different between local running
and Kestrel?
Regards,
Tower
Thanks, Robert.