public void setQuick(int i, double value) { content.set(index+i,value); } };
public void setQuick(int index, double value) { content.set(size-1-index,value); } };
public void setQuick(int index, double value) { content.set(index*_stride,value); } };
public void setQuick(int index, double value) { content.set(size-1-index,value); } };
public void setQuick(int i, double value) { content.set(idx[i],value); } };
public void setQuick(int index, double value) { content.set(index*_stride,value); } };
public void setQuick(int i, double value) { content.set(idx[i],value); } };
public void setQuick(int i, double value) { content.set(index+i,value); } };
private void setup(int m, int n, DoubleMatrix2D ss, Rho rho, DoubleMatrix2D ww, DoubleMatrix2D vv, DoubleMatrix1D s, DoubleMatrix1D r) { int l = -1; for (int j = 0; j < n; j++) { if (j == m) continue; l = l + 1; r.set(l, rho.get(j, m)); // r is r12 s.set(l, ss.get(j, m)); // s is s12 int i = -1; for (int k = 0; k < n; k++) { if (Thread.currentThread().isInterrupted()) { break; } if (k == m) continue; i++; vv.set(i, l, ww.get(k, j)); // vv is ww.11 } } }
/** */ public static void doubleTest31(int size) { System.out.println("\ninit"); DoubleMatrix1D a = Factory1D.dense.descending(size); DoubleMatrix1D b = new WrapperDoubleMatrix1D(a); DoubleMatrix1D c = b.viewPart(2,3); DoubleMatrix1D d = c.viewFlip(); //DoubleMatrix1D c = b.viewFlip(); //DoubleMatrix1D d = c.viewFlip(); d.set(0,99); b = b.viewSorted(); System.out.println("a = "+a); System.out.println("b = "+b); System.out.println("c = "+c); System.out.println("d = "+d); System.out.println("done"); } /**
/** */ public static void doubleTest31(int size) { System.out.println("\ninit"); DoubleMatrix1D a = Factory1D.dense.descending(size); DoubleMatrix1D b = new WrapperDoubleMatrix1D(a); DoubleMatrix1D c = b.viewPart(2,3); DoubleMatrix1D d = c.viewFlip(); //DoubleMatrix1D c = b.viewFlip(); //DoubleMatrix1D d = c.viewFlip(); d.set(0,99); b = b.viewSorted(); System.out.println("a = "+a); System.out.println("b = "+b); System.out.println("c = "+c); System.out.println("d = "+d); System.out.println("done"); } /**
/** * Constructs a matrix from the values of the given list. * The values are copied. So subsequent changes in <tt>values</tt> are not reflected in the matrix, and vice-versa. * * @param values The values to be filled into the new matrix. * @return a new matrix. */ public DoubleMatrix1D make(cern.colt.list.AbstractDoubleList values) { int size = values.size(); DoubleMatrix1D vector = make(size); for (int i=size; --i >= 0; ) vector.set(i, values.get(i)); return vector; } /**
/** * Constructs a matrix from the values of the given list. * The values are copied. So subsequent changes in <tt>values</tt> are not reflected in the matrix, and vice-versa. * * @param values The values to be filled into the new matrix. * @return a new matrix. */ public DoubleMatrix1D make(cern.colt.list.AbstractDoubleList values) { int size = values.size(); DoubleMatrix1D vector = make(size); for (int i=size; --i >= 0; ) vector.set(i, values.get(i)); return vector; } /**
private void calcWeights(){ weights = factory1D.make(p+q); for(int i = 0; i < p; i++){ weights.set(i, StatUtils.sd(xDat.viewColumn(i).toArray())); } for(int j = 0; j < q; j++){ double curWeight = 0; for(int k = 0; k < l[j] ; k++){ double curp = yDat.viewColumn(j).copy().assign(Functions.equals(k+1)).zSum()/(double) n; curWeight += curp*(1-curp); } weights.set(p+j, Math.sqrt(curWeight)); } }
/** * Calculates the initial value for the s parameter in Phase I. * Return s = max(fi(x)) * @see "S.Boyd and L.Vandenberghe, Convex Optimization, 11.6.2" */ @Override public double calculatePhase1InitialFeasiblePoint(double[] originalNotFeasiblePoint, double tolerance){ //DoubleMatrix1D X0NF = F1.make(originalNotFeasiblePoint); DoubleMatrix1D fiX0NF = F1.make(fi.length); for(int i=0; i<fi.length; i++){ fiX0NF.set(i, this.fi[i].value(originalNotFeasiblePoint)); } //lucky strike? int maxIneqIndex = Utils.getMaxIndex(fiX0NF); if(fiX0NF.get(maxIneqIndex) < 0){ //the given notFeasible starting point is in fact already feasible return -1; } double s = Math.pow(tolerance,-0.5); for(int i=0; i<fiX0NF.size(); i++){ s = Math.max(s, fiX0NF.get(i)*Math.pow(tolerance,-0.5)); } return s; } }
protected double computeJSDivergence(DoubleMatrix1D v1, DoubleMatrix1D v2) { assert(v1.size() == v2.size()); double sum = 0.0; for(int i = 0; i < v2.size(); ++i ) { sum += v2.getQuick(i); } DoubleMatrix1D v3 = v2.copy(); for(int i = 0; i < v2.size(); ++i ) { v3.set(i, v2.getQuick(i)/sum); } double divergence = 0.0; double[] meanVector = averageDist(v1, v2); divergence = computeKLDivergence(v1, meanVector) + computeKLDivergence(v2, meanVector); return divergence; }
@Override public double[][] hessian(double[] X) { DoubleMatrix1D x = DoubleFactory1D.dense.make(X); DoubleMatrix1D g = ALG.mult(A, x).assign(b, Functions.plus).assign(Functions.exp); double den = g.zSum(); DoubleMatrix1D r = DoubleFactory1D.dense.make(dim); for(int i=0; i<dim; i++){ double d = 0d; for(int k=0; k<A.rows(); k++){ d += g.get(k) * A.get(k, i); } r.set(i, d); } DoubleMatrix2D ret = DoubleFactory2D.dense.make(dim, dim); ret.assign(ALG.multOuter(r, r, null).assign(Mult.mult(-1d/Math.pow(den, 2))), Functions.plus); for(int k=0; k<A.rows(); k++){ ret.assign(ALG.multOuter(A.viewRow(k), A.viewRow(k), null).assign(Mult.mult(g.get(k))).assign(Mult.mult(1d/den)), Functions.plus); } return ret.toArray(); }