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()
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()
def eval_jac_g(x): 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) r = Vstack(r) # TODO: make it more properly rr = (r.tocsr() if isspmatrix(r) else r) R = rr[I, J] if np.prod(rr.shape) != 0 else np.array([]) if isspmatrix(R) or type(R) == np.matrix: R = R.A elif not isinstance(R, np.ndarray): p.err('bug in OpenOpt-knitro connection, inform OpenOpt developers, type(R) = %s' % type(R)) return R.flatten()