一、Python中传递函数
def Test(a,b):
print(a,b)
class TEST:
def __init__(self, FitnessFunction):
self.FitnessFunction = FitnessFunction
def initial(self):
self.FitnessFunction(1,2)
if __name__ == '__main__':
fa = TEST(Test)
fa.initial()
二、常用优化算法测试函数及实现
这里学到的两个小技巧是:
(1)np.linalg.norm()来求一范式和二范式
(2)累加、累成的便捷写法:reduce(lambda x,y: x+y, x_),当x_为[x1, x2, x3, x4]时,reduce这个函数相当于执行f(f(f(x1,x2),x3),x4),其中f(a, b)是由lambda创建的。
参考资料:https://zhidao.baidu.com/question/397090143281977845.html
def f1(x_): #Sphere
return np.linalg.norm(x_) ** 2
def f2(x_): #Schwefel 2.22
xa = reduce(lambda x,y: x*y, abs(x_))
xb = np.linalg.norm(x_, ord=1)
return xa + xb
def f3(x_): #Rosenbrock
xa = 100 *