Example #1
0
 def eval_jac_g(x, flag, userdata = (I, J)):
     (I, J) = userdata
     if  flag and p.isFDmodel: 
         return (I, J) 
     r = []
     if p.userProvided.c: r.append(p.dc(x))
     if p.userProvided.h: r.append(p.dh(x))
     if p.nb != 0: r.append(p.A)
     if p.nbeq != 0: r.append(p.Aeq)
     # TODO: fix it!
     if any([isspmatrix(elem) for elem in r]):
         r = Vstack([(atleast_2d(elem) if elem.ndim < 2 else elem) for elem in r])
     elif len(r)!=0:
         r = vstack(r)
     
     if p.isFDmodel: 
         # TODO: make it more properly
         R = (r.tocsr() if isspmatrix(r) else r)[I, J]
         if isspmatrix(R): 
             return R.A
         elif isinstance(R, ndarray): 
             return R
         else: p.err('bug in OpenOpt-ipopt connection, inform OpenOpt developers, type(R) = %s' % type(R))
     if flag:
         return (I, J)
     else:
         if isspmatrix(r): r = r.A
         return r.flatten()
Example #2
0
        def eval_jac_g(x, flag, userdata=(I, J)):
            (I, J) = userdata
            if flag and p.isFDmodel:
                return (I, J)
            r = []
            if p.userProvided.c: r.append(p.dc(x))
            if p.userProvided.h: r.append(p.dh(x))
            if p.nb != 0: r.append(p.A)
            if p.nbeq != 0: r.append(p.Aeq)
            # TODO: fix it!
            if any([isspmatrix(elem) for elem in r]):
                r = Vstack([(atleast_2d(elem) if elem.ndim < 2 else elem)
                            for elem in r])
            elif len(r) != 0:
                r = vstack(r)

            if p.isFDmodel:
                # TODO: make it more properly
                R = (r.tocsr() if isspmatrix(r) else r)[I, J]
                if isspmatrix(R):
                    return R.A
                elif isinstance(R, ndarray):
                    return R
                else:
                    p.err(
                        'bug in OpenOpt-ipopt connection, inform OpenOpt developers, type(R) = %s'
                        % type(R))
            if flag:
                return (I, J)
            else:
                if isspmatrix(r): r = r.A
                return r.flatten()