学习最优化理论算法时用到了《优化设计》和《最优理论与方法》两本书。
根据的《优化设计》第55页的流程图,实现了流程图前半部分的代码设计(尚未添加Powell判断条件),给自己也给正在学习的朋友们留下学习笔记。
代码如下:
import numpy as np
from sympy import symbols,solve,diff
import time
e = 0.01 #精度
n = int(input('请输入n的值:'))
count = 0 # 迭代次数计数器
maxtimes = int(input('请输入最大迭代次数:')) # 最大迭代次数
time_s = time.time()
# 定义初始点
X0 = []
for i in range(1,n+3):
if i % 3 == 0:
X0.append(0.5)
elif i % 3 == 1:
X0.append(0.5)
elif i % 3 == 2:
X0.append(1)
# 初始方向
d = np.identity(n+2,dtype = int)
# 定义目标函数
def objfun(n,x):
f = 0
for i in range(1,n+1):
item = (-x