scipy.optimize.minimize changes values at low decimal place

"jan-hendrik.berlin" <[email protected]>
Newsgroups gmane.comp.python.scientific.user
Message-ID <[email protected]>
Hey guys,

this is my code for the optimisation.

       initialGuess = D.Matrix[:,D.menge]
       bnds = D.Matrix[:,(D.mengenMin,D.mengenMax)]
       con1 = {'type': 'eq', 'fun': PercentSum}
       con2 = {'type': 'eq', 'fun': MinMaxProportion}
       cons = ([con1,con2])

       solution = minimize(rootfunc,initialGuess,method='SLSQP',\
                     bounds=bnds,constraints=cons)

The Problem is, the algorithm changes values at low decimal place.
e.g. this is my initial guess. I already tried to change from float to 
integers, to have a work around.

      [  0.   0. 123.   0.   0. 622. 245.   0.   0.   0.]

The first try of the of the optimizer looks like this:

     [1.49011612e-08 0.00000000e+00 1.23000000e+02 0.00000000e+00
     0.00000000e+00 6.22000000e+02 2.45000000e+02 0.00000000e+00
     0.00000000e+00 0.00000000e+00]

Another is this:

     [  0.           0.         123.00000001   0.           0.
      622.         245.           0.           0.           0.        ]

And finally the optimization finishes with this error:

     status 6
     message Singular matrix C in LSQ subproblem

I think the problem is the tiny difference. Is there a possibility to 
tell the SLSQP algorithm only to try changes on the first two decimal 
places or higher?

kind regards

jan
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.