diff --git a/Assignment 1/assignment1.py b/Assignment 1/assignment1.py index f321ef8e534f4fcad6e71af2e5983d600961af01..c95919df4064d4d87a598c7e3539bca474cc2c12 100644 --- a/Assignment 1/assignment1.py +++ b/Assignment 1/assignment1.py @@ -1,22 +1,16 @@ import numpy as np -# Initialize iteration counter + # Import text files Q = np.asmatrix(np.loadtxt('Q.txt')) b = np.asmatrix(np.loadtxt('b.txt')) c = np.asmatrix(np.loadtxt('c.txt')) b = np.transpose(b) #make b a column vector -D = np.asmatrix(np.ones(np.size(b))) m = 1 -# Make a guess for x vector -#x = np.asmatrix(np.zeros(np.size(b))) -#x = np.transpose(x) #make column vector -#x=np.matrix(np.random.rand(5,1)) -x = np.transpose(np.asmatrix(np.ones(np.size(b)))*1) - -alpha0 = 1.0 -count = 0 +# Initialize iteration counter +global x +global count # Define f(x) def f(Q,b,c,x): return np.transpose(x)*Q*x + np.transpose(b)*x + c @@ -26,7 +20,7 @@ def gradf(Q,b,x): return 2*Q*x + b # Define algorithm for Armijos rule -def armijo(alpha0,Q,b,c,D,m): +def armijo(alpha0,Q,b,c,D,m,x): alpha = alpha0 #print('alpha is ', alpha) @@ -41,13 +35,6 @@ def armijo(alpha0,Q,b,c,D,m): return alpha - - -def xval(): - return x - -def countval(): - return count # Begin Gradient Descent Algorithm def grad_opt(epsilon,x,count,alpha): @@ -55,7 +42,7 @@ def grad_opt(epsilon,x,count,alpha): while np.linalg.norm(gradf(Q,b,x))>= epsilon: D = -1*np.transpose(gradf(Q,b,x))/np.linalg.norm(gradf(Q,b,x)) #print('D is ', D) - alpha = armijo(alpha,Q,b,c,D,m) + alpha = armijo(alpha,Q,b,c,D,m,x) #print('alpha0 is ', alpha) count += 1 if count%1000==0: @@ -71,11 +58,15 @@ def grad_opt(epsilon,x,count,alpha): print 'epsilon is ', epsilon return 0 - def run(epsilon): - xstart = xval() - countstart = countval() - grad_opt(epsilon,xstart,countstart,alpha0) + # Make a guess for x vector + #x = np.asmatrix(np.zeros(np.size(b))) + #x = np.transpose(x) #make column vector + #x=np.matrix(np.random.rand(5,1)) + x = np.transpose(np.asmatrix(np.ones(np.size(b)))*1) + count = 0 + alpha0 = 1.0 + grad_opt(epsilon,x,count,alpha0) return 0 -run(0.1) \ No newline at end of file +run(0.00001) \ No newline at end of file