楼主: ReneeBK
1803 18

Optimization,Rajesh Kumar Arora 2015 [推广有奖]

  • 1关注
  • 62粉丝

VIP

已卖:4897份资源

学术权威

14%

还不是VIP/贵宾

-

TA的文库  其他...

R资源总汇

Panel Data Analysis

Experimental Design

威望
1
论坛币
49635 个
通用积分
55.6937
学术水平
370 点
热心指数
273 点
信用等级
335 点
经验
57805 点
帖子
4005
精华
21
在线时间
582 小时
注册时间
2005-5-8
最后登录
2023-11-26

楼主
ReneeBK 发表于 2015-12-11 10:07:50 |AI写论文
1论坛币

  • Optimization
  • By: Rajesh Kumar Arora

  • Publisher: CRC Press

  • Pub. Date: May 19, 2015

  • ISBN-13: 978-1-4987-2115-8

  • Web ISBN-13: 978-1-4987-2115-8

  • Print ISBN-13: 978-1-4987-2112-7

  • Print ISBN-10: 1-4987-2112-5

  • Pages in Print Edition: 466

  • Subscriber Rating: [0 Ratings



关键词:Optimization Rajesh Kumar ATION Optim

本帖被以下文库推荐

沙发
Reader's 发表于 2015-12-14 05:53:47

藤椅
NewOccidental 发表于 2015-12-14 09:27:21
  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % MATLAB code bisection.m
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. %
  5. % a-> lower bound of the design variable
  6. % b> upper bound of the design variable
  7. % alpha -> midpoint of a and b
  8. % delx -> ?x for central difference method
  9. % derivative -> derivative using central difference method
  10. % derivative_alpha -> derivative at x = alpha
  11. % abs -> absolute of a number, MATLAB function
  12. %
  13. clear all
  14. clc
  15. a = 40;
  16. b = 90;
  17. epsilon = 0.01;
  18. delx = 0.01;
  19. fprintf('    a             b     \n' )
  20. fprintf('-------------------------\n' )

  21. for i= 1:100
  22. fprintf(' %7.3f      %8.3f \n',a,b)
  23. alpha = (a+b)/2;
  24. derivative = (func(a+delx) - func(a-delx) )/(2*delx);
  25. derivative_alpha = (func(alpha+delx)- func(alpha-delx))/(2*delx);
  26. if (derivative*derivative_alpha) < 0
  27.                     b = alpha;
  28. else
  29.             a = alpha;
  30. end

  31. if abs(a-b) < epsilon
  32.                     break;
  33. end
  34. end

  35. fprintf('-------------------------\n' )
  36. fprintf('x* =  %7.3f       Minimum =   %8.3f\n',a,func(a))
  37. fprintf('Number of function calls =     %3d\n',4*i)
  38. %
  39. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码

板凳
NewOccidental 发表于 2015-12-14 09:27:27
  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % MATLAB code cubic
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. %
  5. % a-> lower bound of the design variable
  6. % b> upper bound of the design variable
  7. % alpha -> midpoint of a and b
  8. % delx -> ?x for central difference method
  9. % derivative -> derivative using central difference method
  10. % derivative_alpha -> derivative at x = alpha
  11. % abs -> absolute of a number, MATLAB function
  12. % flag -> set the flag when minimum is bracketed
  13. % derivative_a -> derivative at point a
  14. % derivative_b -> derivative at b
  15. %
  16. a = 40;
  17. b = 90;
  18. delx = 0.01;
  19. flag = 0;
  20. epsilon= 0.001;
  21. fprintf('    a             b     \n' )
  22. fprintf('-------------------------\n' )

  23. for i= 1:100
  24. alpha = (a+b)/2;
  25. derivative = (func(a+delx) - func(a-delx) )/(2*delx);
  26. derivative_alpha = (func(alpha+delx)-func(alpha-delx) )/(2*delx);
  27. if (derivative*derivative_alpha) < 0
  28.     b = alpha;
  29.     flag = 1;
  30. else
  31.     a = alpha;
  32. end
  33. if flag == 1
  34.     break;
  35. end
  36. end

  37. for j=1:100
  38. fprintf(' %7.3f      %8.3f \n',a,b)
  39. derivative_a = (func(a+delx) - func(a-delx) )/(2*delx);
  40. derivative_b = (func(b+delx) - func(b-delx) )/(2*delx);
  41. z = 3*(func(a)-func(b))/(b-a) + derivative_a + derivative_b;
  42. w = ((b-a)/abs(b-a))*sqrt(z*z-derivative_a*derivative_b);
  43. mew = (derivative_b+w-z)/(derivative_b-derivative_a+2*w);
  44. if mew <= 1
  45.     x_opt = b - mew*(b-a);
  46. else
  47.     x_opt = a;
  48. end
  49. alpha1 = (func(x_opt+delx) - func(x_opt-delx) )/(2*delx);
  50. if abs(alpha1) < epsilon
  51.     break;
  52. else
  53.    if (derivative_a*alpha1) < 0
  54.     b = x_opt;
  55. else
  56.     a = x_opt;
  57. end
  58. end

  59. end

  60. fprintf('-------------------------\n' )
  61. fprintf('x* =  %7.3f       Minimum =   %8.3f\n',x_opt,func(x_opt))
  62. fprintf('Number of function calls =     %3d\n',4*i+8*j)
  63. %
  64. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码

报纸
NewOccidental 发表于 2015-12-14 09:27:42
  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % MATLAB code exhaustive.m
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. %
  5. % delta -> step size for search
  6. % T -> independent variable, temperature
  7. % U -> cost function
  8. % uvec -> vector of cost function evaluated at
  9. %         different temperatures
  10. % minu -> minimum of cost function
  11. % min -> MATLAB function
  12. %
  13. clear all
  14. clc
  15. uvec=[];
  16. delta = 0.01;
  17. for T = 40:delta:90
  18.     U = 204165.5/(330-2*T) + 10400/(T-20);
  19.     uvec = [uvec U];
  20.     plot(T,U)
  21.     hold on
  22. end
  23. xlabel('T');ylabel('U');
  24. [minu,i]= min(uvec);
  25. fprintf('Minimum Cost =  %6.2f\n ',minu)
  26. fprintf('occurs at T =  %6.2f\n ',40+(i-1)*delta)

  27. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码

地板
NewOccidental 发表于 2015-12-14 09:32:26
  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % MATLAB code golden.m
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. %
  5. % a-> lower bound of the design variable
  6. % b> upper bound of the design variable
  7. % alpha -> midpoint of a and b
  8. % falpha1 -> function value at x = alpha1
  9. % falpha2 -> function value at x = alpha2
  10. % epsilon -> constant used to terminate the algorithm
  11. % abs -> absolute of a number, MATLAB function
  12. % tau -> 2-golden number
  13. %
  14. clear all
  15. clc
  16. a = 40;
  17. b = 90;
  18. epsilon = 0.00001;
  19. tau = 0.381967;
  20. alpha1 = a*(1-tau) + b*tau;
  21. alpha2 = a*tau + b*(1-tau);
  22. falpha1 = func(alpha1);
  23. falpha2 = func(alpha2);

  24. fprintf('    a             b     \n' )
  25. fprintf('-------------------------\n' )

  26. for i= 1:100
  27.     fprintf(' %7.3f      %8.3f \n',a,b)
  28.     if falpha1 > falpha2
  29.         a = alpha1;
  30.         alpha1 = alpha2;
  31.         falpha1 = falpha2;
  32.         alpha2 = tau*a + (1-tau)*b;
  33.         falpha2 = func(alpha2);
  34.     else
  35.         b = alpha2;
  36.         alpha2 = alpha1;
  37.         falpha2 = falpha1;
  38.         alpha1 = tau*b + (1-tau)*a;
  39.         falpha1 = func(alpha1);
  40.     end

  41. if abs(func(alpha1)-func(alpha2))< epsilon
  42.     break;
  43. end
  44. end

  45. fprintf('-------------------------\n' )
  46. fprintf('x* =  %7.3f       Minimum =   %8.3f\n',alpha1,func(alpha1))
  47. fprintf('Number of function calls =     %3d\n',2+i)
  48. %
  49. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码

7
NewOccidental 发表于 2015-12-14 09:33:01
  1. A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % MATLAB code newtonraphson.m
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. %
  5. % x -> initial guess of design variable
  6. % delx -> ?x for central difference method
  7. % derivative -> derivative using central difference method
  8. % sec_derivative -> second derivative
  9. % epsilon -> constant used to terminate the program
  10. % xprev -> value of x stored from previous iteration
  11. %
  12. clear all
  13. clc
  14. x = 45;
  15. delx = 0.01;
  16. epsilon = 0.01;
  17. fprintf('     x    f(x)      Deriv. Second deriv.\n' )
  18. fprintf('-----------------------------------------\n' )

  19. for i= 1:100
  20. derivative = (func(x+delx) - func(x-delx) )/(2*delx);
  21. sec_derivative=(func(x+delx)+func(x-delx)-2*func(x))/(delx*delx);
  22. fprintf('%8.3f %8.3f %8.3f %8.3f\n',x,func(x),derivative,      sec_derivative)
  23. xprev = x;
  24. x = x- derivative/sec_derivative;
  25. if abs(x-xprev) < epsilon
  26.     break;
  27. end
  28. end

  29. fprintf('-----------------------------------------\n' )
  30. fprintf('Number of function calls =     %3d\n',5*i)

  31. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码

8
NewOccidental 发表于 2015-12-14 09:35:48
  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % MATLAB code grad_vec.m
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. %
  5. function deriv = grad_vec_complex(x,delx,n_of_var)
  6. xvec = x;
  7. h = 1e-14;
  8. for j = 1:length(x)
  9. xvec = x;
  10. c = complex(xvec(j),h);
  11. xvec(j) = c;
  12. deriv(j) = imag(func_multivar(xvec)/h);
  13. end
  14. %
  15. %%%%%%%%%%%%%%%%%
复制代码

9
NewOccidental 发表于 2015-12-14 09:43:46
  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % MATLAB code levenberg-marquardt.m
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. %
  5. % n_of_var -> number of design variables
  6. % x = [-1.5 1.5] -> starting value of x
  7. % lambda -> initially set to a large value
  8. % epsilon1, epsilon2 -> constant used for terminating
  9. %                       the algorithm
  10. % delx -> required for gradient computation
  11. % f_prev -> function valye at first / previous iteration
  12. % deriv -> gradient vector
  13. % sec_deriv -> hessian matrix
  14. % search -> search direction (vector)
  15. %
  16. clear all
  17. clc
  18. n_of_var = 2;
  19. x = [-3 2];
  20. lambda = 1e3;
  21. epsilon1 = 1e-7;
  22. epsilon2 = 1e-7;
  23. delx = 1e-3;
  24. f_prev = func_multivar(x);
  25. fprintf('Initial function value =  %7.4f\n ',f_prev)
  26. fprintf(' No.       x-vector      f(x)      Deriv \n')
  27. fprintf('__________________________________________\n')
  28. for i = 1:100
  29.     f_prev = func_multivar(x);
  30.     deriv = grad_vec(x,delx,n_of_var);
  31.     sec_deriv = hessian(x,delx,n_of_var);
  32.     search = -inv(sec_deriv+lambda*eye(length(x)))*deriv';
  33.     x = x + search';
  34.     f = func_multivar(x);
  35.         if f < f_prev
  36.         lambda = lambda/2;
  37.             else
  38.         lambda = 2*lambda;
  39.             end

  40.             if abs(f-f_prev)<epsilon1 || norm(deriv)<epsilon2
  41.         break;
  42.        end
  43. fprintf('%3d %8.3f %8.3f  % 8.3f  %8.3f  \n',i,x,f,norm(deriv))
  44. end

  45. fprintf('__________________________________________\n')
  46. %
  47. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码

10
NewOccidental 发表于 2015-12-14 09:44:17
  1. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2. % MATLAB code levenberg-marquardt.m
  3. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  4. %
  5. % n_of_var -> number of design variables
  6. % x = [-1.5 1.5] -> starting value of x
  7. % lambda -> initially set to a large value
  8. % epsilon1, epsilon2 -> constant used for terminating
  9. %                       the algorithm
  10. % delx -> required for gradient computation
  11. % f_prev -> function valye at first / previous iteration
  12. % deriv -> gradient vector
  13. % sec_deriv -> hessian matrix
  14. % search -> search direction (vector)
  15. %
  16. clear all
  17. clc
  18. n_of_var = 2;
  19. x = [-3 2];
  20. lambda = 1e3;
  21. epsilon1 = 1e-7;
  22. epsilon2 = 1e-7;
  23. delx = 1e-3;
  24. f_prev = func_multivar(x);
  25. fprintf('Initial function value =  %7.4f\n ',f_prev)
  26. fprintf(' No.       x-vector      f(x)      Deriv \n')
  27. fprintf('__________________________________________\n')
  28. for i = 1:100
  29.     f_prev = func_multivar(x);
  30.     deriv = grad_vec(x,delx,n_of_var);
  31.     sec_deriv = hessian(x,delx,n_of_var);
  32.     search = -inv(sec_deriv+lambda*eye(length(x)))*deriv';
  33.     x = x + search';
  34.     f = func_multivar(x);
  35.         if f < f_prev
  36.         lambda = lambda/2;
  37.             else
  38.         lambda = 2*lambda;
  39.             end

  40.             if abs(f-f_prev)<epsilon1 || norm(deriv)<epsilon2
  41.         break;
  42.        end
  43. fprintf('%3d %8.3f %8.3f  % 8.3f  %8.3f  \n',i,x,f,norm(deriv))
  44. end

  45. fprintf('__________________________________________\n')
  46. %
  47. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
复制代码

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-30 23:48