龙空技术网

量子软件开发包 | 算法组件之费米子算符...

本源量子计算 88

前言:

当前姐妹们对“powell算法原理”可能比较关切,我们都想要剖析一些“powell算法原理”的相关知识。那么小编在网上搜集了一些对于“powell算法原理””的相关知识,希望兄弟们能喜欢,姐妹们一起来了解一下吧!

hi~

上篇为大家推送了

泡利算符类

今天小编要介绍的是

费米子算符类、优化算法

跟我们一起来学习吧!

在上一篇文章中,小编为大家介绍了算法组件之泡利算符类。

泡利算符是一组三个2×2的幺正厄米复矩阵,又称酉矩阵。我们一般都以希腊字母σ(西格玛)来表示,记作σx,σy,σz。在QPanda中我们称它们为X门,Y门,Z门。

接下来介绍的是QPanda 2的算法组件之费米子算符类、优化算法。

◆◆

费米子算符类

◆◆

我们用如下记号标识来表示费米子的两个形态,湮没:X表示ax,创建:X+表示ax†,例如:"1+3 5+1"则代表a1†a3a5†a1。

整理规则如下

1. 不同数字

2. 相同数字

跟PauliOperator类似,FermionOperator类也提供了费米子算符之间加、减和乘的基础的运算操作。通过整理功能可以得到一份有序排列的结果。

◆◆实例◆◆

◆◆优化算法(直接搜索法)◆◆

本章节将讲解优化算法的使用,包括Nelder-Mead算法跟Powell算法,它们都是一种直接搜索算法。我们在QPanda中实现了这两个算法,OriginNelderMead和OriginPowell,这两个类都继承自AbstractOptimizer。

◆◆接口介绍◆◆

我们可以通过优化器工厂生成指定类型的优化器,例如我们指定它的类型为Nelder-Mead。

using namespace QPanda;auto optimizer = OptimizerFactory::makeOptimizer(NELDER_MEAD);

我们需要向优化器注册一个计算损失值的函数和待优化参数。

vector_d init_para{0, 0};optimizer->registerFunc(myFunc, init_para);

然后设置结束条件,我们可以设置变量及函数值的收敛阈值,函数最大可调用次数,和优化迭代次数。只要满足上述结束条件,则优化结束。

optimizer->setXatol(1e-6);optimizer->setFatol(1e-6);optimizer->setMaxFCalls(200);optimizer->setMaxIter(200);

然后通过exec接口执行优化,通过getResult接口获得优化后的结果。

optimizer->exec();auto result = optimizer->getResult();

◆◆实例◆◆

给定一些散列点,我们来拟合一条直线,使得散列点到直线的距离和最小。定义直线的函数的表达式为y=w*x+b,接下来我们将通过使用优化算法得到w和b的优化值。首先定义求期望的函数。

我们使用Nelder-Mead算法进行优化。

我们将散列点和拟合的直线进行绘图。

★以上即为QPanda 2费米子算符类、优化算法部分的详细内容介绍。

★感兴趣的欢迎加入"QPanda 2开发交流群"。(关注“本源量子”公众号,回复“加群”,联系小编即可)

★PC端学习量子计算请登录learn-quantum.com

★掌上学习请下载"本源溯知APP"

★如有疑问可上量子互动论坛,与我们的大神进行交流讨论。

标签: #powell算法原理