paddle\_quantum.ansatz.vans
==================================

可变结构电路的功能实现。

.. py:function:: cir_decompose(cir)

   将电路中的 Layer 分解成量子门, 如果需要的话可以把所有参数门的输入转为可训练参数

   :param cir: 待分解电路
   :type cir: Circuit
   :param trainable: 是否将分解后的参数量子门输入转为参数baidu
   :type trainable: bool, optional
   :return: 分解后的电路
   :rtype: Circuit

   .. note::

      该量子电路稳定支持原生门，不支持 oracle 等其他自定义量子门。

.. py:class:: Inserter

   基类: :py:class:`object`

   用于向电路中加入模块的插入器类。

   .. py:classmethod:: insert_identities(cir, insert_rate, epsilon)

      根据插入比例，向当前量子电路中添加电路模块。

      :param cir: 输入量子电路。
      :type cir: Circuit
      :param insert_rate: 添加速率。
      :type insert_rate: float
      :param epsilon: 添加模块初始化参数的浮动范围。
      :type epsilon: float
      :return: 插入后的电路。
      :rtype: Circuit

.. py:class:: Simplifier

   基类: :py:class:`object`

   用于电路简化的简化器类。

   .. py:classmethod:: simplify_circuit(cir, zero_init_state=True)

      根据简化规则删除电路中的量子门。

      :param cir: 待简化电路。
      :type cir: Circuit
      :param zero_init_state: 量子电路作用的初始态是否为 :math:`|0\rangle`，默认为 ``True``。
      :type zero_init_state: bool, optional
      :return: 简化后的电路。
      :rtype: Circuit

.. py:class:: VAns(n, loss_func, *loss_func_args, epsilon=0.1, insert_rate=2, iter=100, iter_out=10, LR =0.1, threshold=0.002, accept_wall=100, zero_init_state=True)

   基类: :py:class:`object`

   自动优化电路结构的 VAns 类。

   .. note::

      输入的损失函数的第一个参数必须为量子电路。

   :param n: 量子比特数量。
   :type n: int
   :param loss_func: 损失函数。
   :type loss_func: Callable[[Circuit, Any], paddle.Tensor]
   :param \*loss_func_args: 损失函数除了电路以外的所有参数。
   :type \*loss_func_args: Any
   :param epsilon: 添加模块的初始化参数浮动范围，默认为 ``0.1``。
   :type epsilon: float, optional
   :param insert_rate: 添加率，控制一次添加模块的数量，默认为 ``2``。
   :type insert_rate: float, optional
   :param iter: 优化参数迭代次数，默认为 ``100``。
   :type iter: int, optional
   :param iter_out: 优化结构的迭代次数，默认为 ``10``。
   :type iter_out: int, optional
   :param LR: 学习率，默认为 ``0.1``。
   :type LR: float, optional
   :param threshold: 删除量子门时允许损失上升的阈值，默认为 ``0.002``。
   :type threshold: float, optional
   :param accept_wall: 完成一轮结构优化后的电路采纳率，默认为 ``100``。
   :type accept_wall: float, optional
   :param zero_init_state: 电路作用的初始态是否为 :math:`|0\rangle`，默认为 ``True``。
   :type zero_init_state: bool, optional

   .. py:method:: train()

      使用 VAns 方法进行训练。

      :return: 优化过程中损失最低的电路。
      :rtype: Circuit

   .. py:method:: optimization(cir)

      对电路参数进行优化。

      :param cir: 当前电路。
      :type cir: Circuit
      :return: 优化后的损失值。
      :rtype: float

   .. py:method:: delete_gates(cir, loss)

      在损失增加小于一定阈值的情况下，删除电路中的参数化量子门以进一步简化电路。

      :param cir: 目标量子电路。
      :type cir: Circuit
      :param loss: 当前损失值。
      :type loss: float
      :return: 删除多余量子门后的电路。
      :rtype: Circuit
