Advertisement
Guest User

Untitled

a guest
Dec 10th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. def delta(pab,xt,yt):
  2. a = pab[0];
  3. b = pab[1];
  4. yc = [0 for i in range(len(xt))]
  5. for i in range(len(xt) - 1):
  6. yc[i] = a * xt[i] + b
  7. e = list(abs(yt[i] - yc[i]) for i in range(len(yt)))
  8. cr = sum(list(e[i] / yt[i] for i in range(len(yt)))) / len(xt)
  9. # print cr
  10. return cr
  11.  
  12. def mre(xt, yt):
  13. ll = len(xt)
  14. am, aM, bm, bM = adm(xt, yt)
  15. lb = [am, bm]
  16. rb = [aM, bM]
  17. vv =[] ; feas = []
  18. p = 20
  19. for i in range(p):
  20. feas += [[0, 0]]
  21. for j in range(len(lb)):
  22. feas[i][j] = (rb[j] - lb[j]) * np.random.uniform() + lb[j]
  23. count = 0; iters = 200; funp = 0
  24. for j in range(1, p):
  25. vv.append(delta(feas[j], xt, yt))
  26. funi = np.min(vv); ini = np.argmin(vv)
  27. soli = feas[ini]
  28. si = 0.5
  29. flag = 1; count = 0; si = 1
  30. while count < iters:
  31. count += 1
  32. for i in range(len(feas)):
  33. for j in range(len(feas[i])):
  34. feas[i][j] = feas[i][j] + si * np.random.randn()
  35. vec = [0]*p
  36. for i in range(p):
  37. feas[i] = max(lb, feas[i])
  38. feas[i] = min(rb, feas[i])
  39. vec[i] = delta(feas[i],xt,yt)
  40. fun = np.min(vec); init = np.argmin(vec)
  41. sol = feas[init]
  42. wf, wi = np.max(vec), np.argmax(vec)
  43. # print wi, len(feas), len(vec)
  44. wun = feas[wi]
  45. if wf > funi:
  46. feas[wi] = soli
  47. vec[wi] = funi
  48. if fun < funi:
  49. soli = sol
  50. funi = fun
  51. if count % 1000 == 0:
  52. print soli, residvar
  53. a = soli[0]
  54. b = soli[1]
  55. return a, b, funi
  56.  
  57. q = mre(datab, data)
  58. print q
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement