Skip to content
Snippets Groups Projects
Commit 3694663a authored by asilador's avatar asilador
Browse files

Cleaned up code to have run(epsilon) work in interactive python

parent 7615f6e6
No related branches found
No related tags found
No related merge requests found
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment