def run_once(x0, x1): sol = fmin_cg(rosen, [x0, x1], retall=True, full_output=1) xy = numpy.asarray(sol[-1]) sam.putarray('xy', xy) sam.eval("plot(xy(:,1),xy(:,2),'w-','LineWidth',2)") sam.eval("plot(xy(:,1),xy(:,2),'wo','MarkerSize',6)") return sol
def run_once(x0,x1): sol = fmin_cg(rosen, [x0, x1], retall = True, full_output=1) xy = numpy.asarray(sol[-1]) sam.putarray('xy',xy) sam.eval("plot(xy(:,1),xy(:,2),'w-','LineWidth',2)") sam.eval("plot(xy(:,1),xy(:,2),'wo','MarkerSize',6)") return sol
def run_once(): simplex = Monitor() solver = fmin(2) solver.SetRandomInitialPoints([0,0],[2,2]) solver.SetGenerationMonitor(simplex) solver.Solve(Corana2, termination=CRT()) sol = solver.Solution() for x in simplex.x: sam.putarray('x',x) sam.eval("plot(x([1,2,3,1],1),x([1,2,3,1],2),'w-')")
def run_once(): simplex = Monitor() solver = fmin(2) solver.SetRandomInitialPoints([0, 0], [7, 7]) solver.SetGenerationMonitor(simplex) solver.Solve(CostFunction, termination=CRT()) sol = solver.Solution() for x in simplex.x: sam.putarray('x', x) sam.eval("plot(x([1,2,3,1],1),x([1,2,3,1],2),'k-')")
def run_once(x0, x1): simplex = Monitor() xinit = [x0, x1] solver = fmin(len(xinit)) solver.SetInitialPoints(xinit) solver.SetGenerationMonitor(simplex) solver.Solve(rosen, termination=CRT()) sol = solver.Solution() for x in simplex.x: sam.putarray('x', x) sam.eval("plot(x([1,2,3,1],1),x([1,2,3,1],2),'w-')")
def run_once(x0,x1): simplex = Monitor() xinit = [x0, x1] solver = fmin(len(xinit)) solver.SetInitialPoints(xinit) solver.SetGenerationMonitor(simplex) solver.Solve(rosen, termination=CRT()) sol = solver.Solution() for x in simplex.x: sam.putarray('x',x) sam.eval("plot(x([1,2,3,1],1),x([1,2,3,1],2),'w-')")
def run_once_xv(): simplex = Monitor() y1 = y0*random.uniform(0.5,1.5) z1 = z0*random.uniform(0.5,1.5) xinit = [random.uniform(x0-40,x0+40), y1, z1, random.uniform(v0-0.1,v0+0.1)] solver = fmin(len(xinit)) solver.SetInitialPoints(xinit) solver.SetGenerationMonitor(simplex) solver.Solve(cost_function, termination=CRT()) sol = solver.Solution() print(sol) for x in simplex.x: sam.putarray('x',x) sam.eval("plot(x([1,2,3,1],1),x([1,2,3,1],2),'w-','LineWidth',2)") return sol
def draw_contour(): import numpy x, y = numpy.mgrid[0:7.5:0.05, 0:7.5:0.05] c = 0 * x s, t = x.shape for i in range(s): for j in range(t): xx, yy = x[i, j], y[i, j] c[i, j] = CostFunction([xx, yy]) sam.putarray('X', x) sam.putarray('Y', y) sam.putarray('C', c) sam.verbose() sam.eval("[c,h]=contourf(X,Y,log(C*20+1)+2,100);set(h,'EdgeColor','none')") sam.eval("title('Zimmermann''s Corner. Min at 7,2')") sam.eval('hold on')
def draw_contour_xv(): import numpy x, y = mgrid[-40:40:0.5, -0.1:0.3:.01] x = x0 + x y = v0 + y s, t = x.shape c = 0 * x s, t = x.shape for i in range(s): for j in range(t): xx, yy = x[i, j], y[i, j] c[i, j] = cost_function([xx, y0, z0, yy]) sam.putarray('X', x) sam.putarray('Y', y) sam.putarray('C', c) sam.eval("[c,h]=contourf(X,Y,C,100);set(h,'EdgeColor','none')") sam.eval('hold on')
def draw_contour_xv(): import numpy x, y = mgrid[-40:40:0.5, -0.1:0.3:.01] x = x0 + x y = v0 + y s,t = x.shape c = 0*x s,t = x.shape for i in range(s): for j in range(t): xx,yy = x[i,j], y[i,j] c[i,j] = cost_function([xx, y0, z0, yy]) sam.putarray('X',x) sam.putarray('Y',y) sam.putarray('C',c) sam.eval("[c,h]=contourf(X,Y,C,100);set(h,'EdgeColor','none')") sam.eval('hold on')
def draw_contour(): import numpy x, y = numpy.mgrid[0:2.1:0.02, 0:2.1:0.02] c = 0 * x s, t = x.shape for i in range(s): for j in range(t): xx, yy = x[i, j], y[i, j] c[i, j] = rosen([xx, yy]) sam.putarray('X', x) sam.putarray('Y', y) sam.putarray('C', c) sam.verbose() #sam.eval("[c,h]=contourf(X,Y,C,60);set(h,'EdgeColor','none')") sam.eval("[c,h]=contourf(X,Y,log(C*20+1)+2,60);set(h,'EdgeColor','none')") sam.eval("title('Rosenbrock''s function in 2D. Min at 1,1')") sam.eval('hold on')
def draw_contour(): import numpy x, y = numpy.mgrid[0:2.1:0.05, 0:2.1:0.05] c = 0 * x s, t = x.shape for i in range(s): for j in range(t): xx, yy = x[i, j], y[i, j] c[i, j] = Corana2([xx, yy]) sam.putarray('X', x) sam.putarray('Y', y) sam.putarray('C', c) sam.verbose() sam.eval("[c,h]=contourf(X,Y,C,100);set(h,'EdgeColor','none')") #sam.eval("[c,h]=contourf(X,Y,log(C*20+1)+2,100);set(h,'EdgeColor','none')") sam.eval("title('Corana''s Parabola in 2D. Min at 0,0')") sam.eval('hold on')
def draw_contour(): import numpy x, y = numpy.mgrid[0:7.5:0.05,0:7.5:0.05] c = 0*x s,t = x.shape for i in range(s): for j in range(t): xx,yy = x[i,j], y[i,j] c[i,j] = CostFunction([xx,yy]) sam.putarray('X',x) sam.putarray('Y',y) sam.putarray('C',c) sam.verbose() sam.eval("[c,h]=contourf(X,Y,log(C*20+1)+2,100);set(h,'EdgeColor','none')") sam.eval("title('Zimmermann''s Corner. Min at 7,2')") sam.eval('hold on')
def draw_contour(): import numpy x, y = numpy.mgrid[0:2.1:0.05,0:2.1:0.05] c = 0*x s,t = x.shape for i in range(s): for j in range(t): xx,yy = x[i,j], y[i,j] c[i,j] = Corana2([xx,yy]) sam.putarray('X',x) sam.putarray('Y',y) sam.putarray('C',c) sam.verbose() sam.eval("[c,h]=contourf(X,Y,C,100);set(h,'EdgeColor','none')") #sam.eval("[c,h]=contourf(X,Y,log(C*20+1)+2,100);set(h,'EdgeColor','none')") sam.eval("title('Corana''s Parabola in 2D. Min at 0,0')") sam.eval('hold on')
def draw_contour_xy(): import numpy x, y = mgrid[-40:40:0.5, -40:40:0.5] x = x0 + x y = y0 + y s, t = x.shape c = 0 * x s, t = x.shape for i in range(s): for j in range(t): xx, yy = x[i, j], y[i, j] c[i, j] = cost_function([xx, yy, z0, v0]) sam.putarray('X', x) sam.putarray('Y', y) sam.putarray('C', c) sam.verbose() sam.eval("[c,h]=contourf(X,Y,C,100);set(h,'EdgeColor','none')") sam.eval("title('Mogi Fitting')") sam.eval('hold on')
def draw_contour(): import numpy x, y = numpy.mgrid[0:2.1:0.02,0:2.1:0.02] c = 0*x s,t = x.shape for i in range(s): for j in range(t): xx,yy = x[i,j], y[i,j] c[i,j] = rosen([xx,yy]) sam.putarray('X',x) sam.putarray('Y',y) sam.putarray('C',c) sam.verbose() #sam.eval("[c,h]=contourf(X,Y,C,60);set(h,'EdgeColor','none')") sam.eval("[c,h]=contourf(X,Y,log(C*20+1)+2,60);set(h,'EdgeColor','none')") sam.eval("title('Rosenbrock''s function in 2D. Min at 1,1')") sam.eval('hold on')
def draw_contour_xy(): import numpy x, y = mgrid[-40:40:0.5, -40:40:0.5] x = x0 + x y = y0 + y s,t = x.shape c = 0*x s,t = x.shape for i in range(s): for j in range(t): xx,yy = x[i,j], y[i,j] c[i,j] = cost_function([xx,yy, z0, v0]) sam.putarray('X',x) sam.putarray('Y',y) sam.putarray('C',c) sam.verbose() sam.eval("[c,h]=contourf(X,Y,C,100);set(h,'EdgeColor','none')") sam.eval("title('Mogi Fitting')") sam.eval('hold on')
from test_circle import sv, xy, x0, y0, R0 import sam # The dual problem verification begins here. npt = xy.shape[0] Q = dot(xy, transpose(xy)) #Q = zeros((npt,npt)) #for i in range(npt): # for j in range(npt): ## Q[i,j] = dot(xy[i,:],xy[j,:]) #Q = array(Q) f = -diag(Q)+10 H = Q*2 A = ones((1,npt)) b = ones(1) sam.putarray('H',H); sam.putarray('f',f); sam.eval("npt = %d;" % npt); sam.eval("al = quadprog(H,f,[],[],ones(1,npt),1,zeros(npt,1),ones(npt,1));") alpha = sam.getarray('al').flatten() def getobj(H,f, x): return 0.5 * dot(dot(x,H),x) + dot(f,x) def chop(x): if abs(x) > 1e-6: return x else: return 0
from test_circle import sv, xy, x0, y0, R0 import sam # The dual problem verification begins here. npt = xy.shape[0] Q = dot(xy, transpose(xy)) #Q = zeros((npt,npt)) #for i in range(npt): # for j in range(npt): ## Q[i,j] = dot(xy[i,:],xy[j,:]) #Q = array(Q) f = -diag(Q) + 10 H = Q * 2 A = ones((1, npt)) b = ones(1) sam.putarray('H', H) sam.putarray('f', f) sam.eval("npt = %d;" % npt) sam.eval("al = quadprog(H,f,[],[],ones(1,npt),1,zeros(npt,1),ones(npt,1));") alpha = sam.getarray('al').flatten() def getobj(H, f, x): return 0.5 * dot(dot(x, H), x) + dot(f, x) def chop(x): if abs(x) > 1e-6: return x else: return 0