最优控制理论 六、拉格朗日乘子法和KKT条件

article/2025/9/25 11:45:19

拉格朗日乘子法和KKT条件

    • 1. 等式约束最优化
    • 2. 不等式约束最优化
      • 2.1 1个不等式约束
      • 2.2 KKT条件
      • 2.3 二维不等式约束图解
    • 3. MATLAB不等式约束优化
    • 总结
    • 4. 参考文献

最优控制是建立在最优化基础上的,它所处理的是无穷维路径函数的泛函极值问题,而后者是处理的对有限个参数所构成的函数的优化问题。也就是说,最优化处理的是 min ⁡ x L ( x ) , x ∈ R n \min_{\mathbf x}L(\mathbf x),\mathbf x\in\Reals^n minxL(x),xRn;而最优控制处理的是 min ⁡ x ( t ) L ( x ( t ) ) , x ( t ) ∈ R n \min_{\mathbf x(t)}L(\mathbf x(t)),\mathbf x(t)\in\Reals^n minx(t)L(x(t)),x(t)Rn的问题,其中 t t t为独立变量, x \mathbf x x都是被优化的变量。

对于最优控制问题而言,在处理等式约束条件时,采用的协态变量实际上就是时变的Lagrange乘子。具体而言,在变分法章节讲述终端约束 ψ ( x ( t f ) , t f ) = 0 \psi(x(t_f),t_f)=0 ψ(x(tf),tf)=0时,直接引入了Lagrange乘数 μ ∈ R m \mu\in\Reals^m μRm;同样在处理路径等式约束 f ( x ( t ) , x ˙ ( t ) , t ) = 0 f(x(t),\dot x(t),t)=0 f(x(t),x˙(t),t)=0时,在Hamilton函数中引入了Lagrange乘子 λ ( t ) ∈ R n \lambda(t)\in\Reals^n λ(t)Rn。事实上,在最优化问题 min ⁡ x L ( x ) , s . t . g ( x ) = 0 \min_{\mathbf x}L(\mathbf x),s.t. g(\mathbf x)=0 minxL(x),s.t.g(x)=0 时,这种方法也是类似的。

本篇博客从等式约束最优化开始,进一步解释不等式约束最优化问题的必要条件,即KKT条件。

1. 等式约束最优化

下面举一个例子来说明拉格朗日乘子法在最优化问题中的应用:

例1:等式约束凸二次规划
min ⁡ x ∈ R n 1 2 x T P x + q T x , s . t . A x = b \min_{x\in\Reals^n}\frac 1 2x^\mathrm TPx+q^\mathrm Tx,\quad s.t.Ax=b xRnmin21xTPx+qTx,s.t.Ax=b

其中 b ∈ R m , A ∈ R n ∗ m , r a n k ( A ) = m , m ≤ n b\in\Reals^m,A\in\Reals^{n*m},rank(A)=m,m\leq n bRm,ARnm,rank(A)=m,mn。同样引入Lagrange乘子 λ ∈ R m \lambda\in\Reals^m λRm,构建Hamilton函数
H ( x , λ ) = 1 2 x T P x + q T x + λ T ( A x − b ) H(x,\lambda)=\frac 1 2x^\mathrm TPx+q^\mathrm Tx+\lambda^\mathrm T(Ax-b) H(x,λ)=21xTPx+qTx+λT(Axb)

于是,等式约束优化问题转化为对无约束Hamilton函数的优化问题。最优解 x ∗ x^* x和乘数 λ ∗ \lambda^* λ服从一阶必要条件
∂ H ∂ x ∗ = P x ∗ + q + A λ ∗ = 0 ∂ H ∂ λ ∗ = A x ∗ − b = 0 \frac{\partial H}{\partial x^*}=Px^*+q+A\lambda^*=0\\ \frac{\partial H}{\partial \lambda^*}=Ax^*-b=0 xH=Px+q+Aλ=0λH=Axb=0

该问题构成 m + n m+n m+n维的线性方程组,若矩阵不奇异,则可以求出最优解。该问题的数值求解方法可见 zealscott-等式约束优化,不会的可以直接调用MATLAB函数 f m i n c o n \tt fmincon fmincon.

利用**Lagrange乘子法,可以把等式约束问题转化为无约束问题,**这个无约束问题求解Hamilton函数的极值。下面我们再来了解一下Lagrange乘子的物理意义。问题 知乎-如何理解拉格朗日乘子法?从各个角度都进行了回答,我在这里简单摘取别人的话。

  • 从平面几何角度。极值点处,函数等势面 f ( x ) = c f(x)=\text c f(x)=c和等式约束 g ( x ) = 0 g(x)=0 g(x)=0的切线相切,也就是说两个梯度 ∇ f ( x ) , ∇ g ( x ) \nabla f(x),\nabla g(x) f(x),g(x)共线,而这个梯度前面的系数是Lagrange乘数 λ \lambda λ。梯度共线,意味着每个方向 x i x_i xi上都有偏导数成比例,即
    ∂ f ∂ x i = − λ i ∂ g ∂ x i \frac{\partial f}{\partial x_i}=-\lambda_i\frac{\partial g}{\partial x_i} xif=λixig

    那么写成向量形式就是 ∇ f ( x ) + λ T ∇ g ( x ) = 0 \nabla f(x)+\lambda^\mathrm T\nabla g(x)=0 f(x)+λTg(x)=0

  • 从代数角度。我们所定义的多元标量函数 H ( x , λ ) = f ( x ) + λ T g ( x ) H(x,\lambda)=f(x)+\lambda^\mathrm Tg(x) H(x,λ)=f(x)+λTg(x),是一个无约束优化问题,它在极值点的必要条件就是,对自变量 λ , x \lambda,x λ,x的梯度都为0。即
    ∂ H ∂ x = ∇ f + λ T ∇ g = 0 ∂ H ∂ λ = g ( x ) = 0 \frac{\partial H}{\partial x}=\nabla f+\lambda^\mathrm T\nabla g=0\\ \frac{\partial H}{\partial \lambda}=g(x)=0 xH=f+λTg=0λH=g(x)=0

    第一个式子是必要条件,第二个式子是等式约束,这两个同时满足才行。

  • 从函数构造方面来说,如果等式约束自然满足 g ( x ) = 0 g(x)=0 g(x)=0,那显然哈密尔顿函数的第二项就没有了,即 H ( x , λ ) = f ( x ) H(x,\lambda)=f(x) H(x,λ)=f(x)。从这个意义上来说,所构造Hamilton函数和原问题是等价的。

2. 不等式约束最优化

上面讲述了等式约束最优化的处理方法,采用Lagrange乘子法把约束问题转化为无约束问题。下面我们来讨论不等式约束最优化问题,不同之处在于不等式约束是否active是需要分类讨论的。

2.1 1个不等式约束

为简单起见,首先考虑一个不等式的情况,例如 g ( x ) = − x + c ≤ 0 g(x)=-x+c\leq0 g(x)=x+c0
min ⁡ x f ( x ) , s . t . g ( x ) ≤ 0 \min_xf(x),\quad s.t.g(x)\leq 0 xminf(x),s.t.g(x)0

不等式约束的处理方法要从不等式约束有没有 起作用(active) 谈起。阴影部分为与不等式冲突的区域,即 g ( x ) > 0 g(x)>0 g(x)>0,下图反映了不等式与极小值之间的两种情况

x ∗ x^* x不在不等式边界上,图1 x ∗ x^* x在不等式边界上,图2
[1dim constrained Nolinear Programming, in Region]1dim constrained Nolinear Programming, boundary
g ( x ∗ ) < 0 , μ = 0 g(x^*)<0,\mu=0 g(x)<0,μ=0 g ( x ∗ ) = 0 , μ > 0 g(x^*)=0,\mu>0 g(x)=0,μ>0

图1,最小值本来就在 g ( x ∗ ) < 0 g(x^*)<0 g(x)<0的部分取得;图2,由于受到不等式的约束,函数极小值只能在边界处取得,此时, g ( x ∗ ) = 0 g(x^*)=0 g(x)=0。如果引入松弛变量 μ ∈ R \mu\in\Reals μR,把不等式约束暂且用等式约束的方法来处理,构建如下形式的Hamilton函数, H ( x , μ ) = f ( x ) + μ g ( x ) H(x,\mu)=f(x)+\mu g(x) H(x,μ)=f(x)+μg(x)。函数取得极值的一阶必要条件为
∂ H ∂ x = ∇ f ( x ∗ ) + μ ∇ g ( x ∗ ) = 0 g ( x ∗ ) ≤ 0 μ { = 0 , g ( x ∗ ) < 0 (本来就满足,约束条件不影响结果) > 0 , g ( x ∗ ) = 0 (限制了最小值的取得) \begin{aligned} &\frac{\partial H}{\partial x}=\nabla f(x^*)+\mu \nabla g(x^*)=0\\ &g(x^*)\leq 0\\ &\mu\begin{cases} =0, &g(x^*)<0&\text{(本来就满足,约束条件不影响结果)}\\ \gt0, &g(x^*)=0&\text{(限制了最小值的取得)} \end{cases} \end{aligned} xH=f(x)+μg(x)=0g(x)0μ{=0,>0,g(x)<0g(x)=0(本来就满足,约束条件不影响结果)(限制了最小值的取得)

上式 ∇ ( ⋅ ) = ∂ ( ⋅ ) ∂ x \nabla (\cdot)=\frac{\partial(\cdot)}{\partial x} ()=x(),把两种情况写作一个条件,即
{ μ ≥ 0 μ ⋅ g ( x ∗ ) = 0 \left\{\begin{matrix} \mu\geq 0\\ \mu\cdot g(x^*)=0 \end{matrix}\right. {μ0μg(x)=0

下面解释为什么松弛变量 μ ≥ 0 \mu\geq 0 μ0而不能小于0. 我们引入松弛变量 μ \mu μ的目的是,使新的问题和原始问题等价,只有这样才能保证等价。大于号和等于号对应了不等式约束对优化问题的限制行为,这个由图1和图2就可以明显看出来。当 μ = 0 \mu=0 μ=0时,不等式约束是可有可无的,没有它求出的极小值和原来的一样。当 μ > 0 \mu>0 μ>0时,和约束冲突的解 ∀ x , g ( x ) > 0 \forall x,g(x)>0 x,g(x)>0必然使得 H ( x , μ ) = f ( x ) + μ g ( x ) > f ( x ) H(x,\mu)=f(x)+\mu g(x)>f(x) H(x,μ)=f(x)+μg(x)>f(x),这也就避免了它取这个点。从一阶必要条件来看,如果极小值就恰好在不等式的边界取得,此时, ∇ f ( x ) > 0 ( → ) , ∇ g ( x ) < 0 ( ← ) \nabla f(x)>0(\rightarrow),\nabla g(x)<0(\leftarrow) f(x)>0(),g(x)<0(),要使两者达到平衡的系数是 μ > 0 \mu>0 μ>0,这样 ∇ f ( x ∗ ) + μ ∇ g ( x ∗ ) = 0 \nabla f(x^*)+\mu \nabla g(x^*)=0 f(x)+μg(x)=0.

2.2 KKT条件

2.1节函数极小值的必要条件即为KKT条件,Karush–Kuhn–Tucker conditions。参考doubleslow- KKT条件详解这篇文章,以下直接给出KKT条件。设不等式+等式约束的非线性最优化问题如下
min ⁡ x f ( x ) , s . t . h ( x ) = 0 g ( x ) ≤ 0 \min_\mathbf x f(\mathbf x),\quad s.t.\begin{aligned} \mathbf h(\mathbf x)=0\\ \mathbf g(\mathbf x)\leq0 \end{aligned} xminf(x),s.t.h(x)=0g(x)0

其中 x ∈ R n \mathbf x\in\Reals^n xRn为多元向量, f ( x ) f(x) f(x)为标量函数, h ∈ R p , g ∈ R q \mathbf h\in\Reals^p,\mathbf g\in\Reals^q hRp,gRq为多元向量函数,对该问题引入Lagrange乘子 λ ∈ R p \lambda\in\Reals^p λRp,松弛变量 μ ∈ R q \mu\in\Reals^q μRq. 构建Hamilton函数
H ( x , λ , μ ) = f ( x ) + λ T h ( x ) + μ T g ( x ) H(x,\lambda,\mu)=f(x)+\lambda^\mathrm T h(x)+\mu^\mathrm Tg(x) H(x,λ,μ)=f(x)+λTh(x)+μTg(x)

该问题的KKT条件为
{ ∇ H = 0 ( 一 阶 必 要 条 件 ) h ( x ∗ ) = 0 , g ( x ) ≤ 0 ( 原 始 约 束 ) λ i ≠ 0 ( 等 式 约 束 始 终 起 作 用 ) μ j g j ( x ∗ ) = 0 ( 互 补 松 弛 性 ) μ j ≥ 0 ( 松 弛 变 量 非 负 ) \left\{\begin{matrix} \nabla H=0& (一阶必要条件)\\ \mathbf h(\mathbf x^*)=0, \mathbf g(\mathbf x)\leq0 &(原始约束)\\ \lambda_i\neq0&(等式约束始终起作用)\\ \mu_jg_j(\mathbf x^*)=0&(互补松弛性)\\ \mu_j\geq0&(松弛变量非负) \end{matrix}\right. H=0h(x)=0,g(x)0λi=0μjgj(x)=0μj0()()()()()
上式 ∇ ( ⋅ ) = ∂ ( ⋅ ) ∂ x ∈ R n , i = 1 , 2 , ⋯ , p , j = 1 , 2 , ⋯ , q \nabla (\cdot)=\frac{\partial(\cdot)}{\partial x}\in\Reals^n,i=1,2,\cdots,p, j=1,2,\cdots,q ()=x()Rni=1,2,,p,j=1,2,,q.

2.3 二维不等式约束图解

下面是一个不等式约束的非线性规划问题,
min ⁡ x , y f ( x , y ) = x exp ⁡ [ − ( x 2 + y 2 ) ] + ( x 2 + y 2 ) / 20 s . t . g ( x , y ) = x y / 2 + ( x + 2 ) 2 + ( y − 2 ) 2 / 2 − c ≤ 0 \min_{x,y}f(x,y)=x \exp[-(x^2+y^2)]+(x^2+y^2)/20\\ s.t.g(x,y)=xy/2+(x+2)^2+(y-2)^2/2-c\leq0 x,yminf(x,y)=xexp[(x2+y2)]+(x2+y2)/20s.t.g(x,y)=xy/2+(x+2)2+(y2)2/2c0

同样用梯度法来解释,有下面的二维图形,红色弧线内部是不等式满足的区域,即 g ( x ) < 0 g(x)<0 g(x)<0。图3的极小值点是无约束问题本来的极小值点。在这一点 x ∗ x^* x,不等式约束不起作用,要使得 H ( x , y , μ 1 , μ 2 ) = f ( x , y ) H(x,y,\mu_1,\mu_2)=f(x,y) H(x,y,μ1,μ2)=f(x,y),所以 μ j = 0 \mu_j=0 μj=0。图4中,极小值是在不等式边界上取得的。在这一点 x ∗ x^* x,梯度沿 x , y x,y x,y方向互相成比例,即 ∇ x f ( x ∗ ) + μ 1 ∇ x g ( x ∗ ) = 0 , ∇ y f ( x ∗ ) + μ 2 ∇ y g ( x ∗ ) = 0 \nabla_x f(x^*)+\mu_1 \nabla_x g(x^*)=0,\nabla_y f(x^*)+\mu_2 \nabla_y g(x^*)=0 xf(x)+μ1xg(x)=0,yf(x)+μ2yg(x)=0 ,由于梯度是反向的,所以 μ j > 0 \mu_j>0 μj>0.

c = 5 , x ∗ c=5,x^* c=5,x不在不等式边界上,图3 c = 2 , x ∗ c=2,x^* c=2,x在不等式边界上,图4
2dim constrained Nolinear Programming, in region2dim constrained Nolinear Programming, boundary
g ( x ∗ ) < 0 , μ = 0 g(x^*)<0,\mu=0 g(x)<0,μ=0 g ( x ∗ ) = 0 , μ > 0 g(x^*)=0,\mu>0 g(x)=0,μ>0

实际上和下面这篇文章的表达方式一样,知乎-图解KKT条件和拉格朗日乘子法 ,绘图解释了二维函数+线性不等式约束KKT条件。

3. MATLAB不等式约束优化

很多形式规范的约束最优化问题都可以直接调用MATLAB中现有的优化函数,下面是各类情形常用来的求解算法:
MATLAB_funs1MATLAB_funs2
需要注意的是,并不是所有优化问题都可以用这些算法,(比如一些有很多局部最优解的问题就只能用智能优化算法),以上表格中列举的算法求解对应形式的问题效率非常高,而采用智能算法的效率就不一定更高。

总结

一言以蔽之,等式约束的最优性条件就是说被优化函数的梯度,等于多个等式约束函数梯度的线性组合,由于等式约束是互相线性无关的,所以等式约束的函数梯度的线性组合系数就是拉格朗日乘子。

不等式约束的自由训条件是说被优化函数的梯度,等于多个等式约束以及起作用的(active)不等式约束的梯度的线性组合,然后这个组合系数的就是每个等式的线性

4. 参考文献

[1] Bryson A E , Ho Y C ,Applied optimal control : optimization, estimation, and control Sec 1.1~Sec 1.7 [J]. IEEE Transactions on Systems Man & Cybernetics, 1975
[2]. 见文中的链接。
[3]. 桂。cnblogs 最优化:拉格朗日乘子法


http://chatgpt.dhexx.cn/article/1ZofPegP.shtml

相关文章

Buck变换器MOSFET开关过程分析与损耗计算

为了方便理解MOSFET的开关过程及其损耗&#xff0c;以Buck变换器为研究对象进行说明&#xff08;注&#xff1a;仅限于对MOSFET及其驱动进行分析&#xff0c;不涉及二极管反向恢复等损耗。&#xff09; 图1所示为Buck变换器拓扑&#xff0c;其中用于减小主功率电路的AC Loop&am…

JAVA-如何修改源码(重写JAR包里的类)

今天写代码的时候发现alibaba的druid工具对postgresql数据库的union all语法支持不够完善&#xff0c;具体场景&#xff1a; select id,name from a union all (select id,name from b order by id); 该语法在druid工具中被解析为&#xff1a; select id,name from a uni…

堆的操作(Java)

文章目录 1.堆的存储方式2.堆的创建2.1向下调整2.2向上调整 3.堆的操作3.1元素插入堆3.2取堆顶元素3.3删除堆顶元素 1.堆的存储方式 由堆的概念可知&#xff0c;堆是一棵完全二叉树&#xff0c;因此可以层序的规则采用顺序的方式来存储堆。 注意&#xff1a; 对于非完全二叉树…

[Java]堆

目录 一、堆的概念 二、大小根堆的建立 三、 堆的调整 1. 向下调整 2. 向上调整 三、堆的删除与插入 一、堆的概念 堆可以看做一个完全二叉树&#xff0c;如果有一个关键码的集合K {k0&#xff0c;k1&#xff0c; k2&#xff0c;…&#xff0c;kn-1}&#xff0c;把它的所…

JVM-堆

文章目录 堆&#xff0c;是运行是数据区的一部分堆内存分区&#xff1a;JAVA堆区细分&#xff1a; 设置堆内存大小与OOM设置堆空间大小 OOM Outof Memory Error 举例!!!图解对象分配过程Minor GC、Major GC、Full GC年轻代 GC&#xff08;Minor GC&#xff09;触发机制老年代 G…

jvm堆大小的设置

问题引入&#xff1a; -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio3&#xff0c;,其最小内存值和Survivor区总大小分别是&#xff08;10240m 2048m&#xff09;&#xff1b; 解析&#xff1a; -Xmx&#xff1a;最大堆大小 -Xms&#xff1a;初始堆大小 -Xmn:年轻…

如何修改java中堆、栈空间的默认大小

1、修改堆、栈空间大小的命令 在命令行中输入java -X可以得到设置java堆大小和栈大小的命令 2、修改java运行时的堆和栈空间 进入界面后 按AltV 3、检验堆空间修改 3.1 测试类 public class StackTest {public static void main(String[] args) {//返回Java虚拟机中的堆内存…

java 堆设置

Young&#xff1a;主要是用来存放新生的对象。&#xff08;Eden、survivorSpaces(from、To)&#xff09; Old&#xff1a;主要存放应用程序中生命周期长的内存对象。 Permanent&#xff1a;是指内存的永久保存区域&#xff0c;主要存放Class和Meta的信息,Class在被 Load的时候…

Java堆内存设置

堆内存设置 原理 JVM堆内存分为2块&#xff1a;永久空间和堆空间。 永久即持久代&#xff08;Permanent Generation&#xff09;&#xff0c;主要存放的是Java类定义信息&#xff0c;与垃圾收集器要收集的Java对象关系不大。Heap {Old NEW {Eden&#xff0c;from&#xff0…

OBEX(一)

一、概述 1、OBEX v2.0&#xff08;v2.0版本开始OBEX直接在L2CAP上传输&#xff0c;v2.0版本以前OBEX在RFCOMM上传输&#xff09; 2、OBEX即Object Exchange Protocol&#xff0c;对象交换协议 3、OBEX协议是典型的client/server request-response模型 4、OBEX v2.0蓝牙协议…

利用docker部署oxidized网络设备备份系统

随着网络设备的增多,通过人手备份网络设备倍感压力,而且效率低。有编程基础的人可能会通过Python的parimiko 或者netmiko 连接到设备操作 把文件通过ftp 上传到FTP服务器, 在通过定时任务,定期自动备份。这个应该是现阶段主流非人民币网络玩家的最优解决方案。 今天我们来看看…

网络自动化运维第一篇 自动化备份网络配置

网络设备厂商众多&#xff0c;各种安全厂商&#xff0c;网络厂商&#xff0c;负载均衡厂商&#xff0c;如果想实现自动化备份配置&#xff0c;可以自己写python脚本。如果网络设备厂商多&#xff0c;自己写python 非常耗费时间精力。偶然在网上发现了oxidized 非常好用&#xf…

.odex文件的反编译

0x00 问题呈现 在分析某手机自带应用时&#xff0c;为了在JEB中反编译&#xff0c;将其adb pull到了电脑上。解压后发现如下文件&#xff1a; APK解压目录列表 惊奇的发现该APK包中没有dex文件&#xff0c;一开始特别疑惑没有dex文件&#xff0c;也就是没有代码&#xff0c;那…

ZeroDivisionError: integer division or modulo by zero

这里的错误就是由于数据集太小。 # 2. Split into train / validation partitionsn_val int(len(dataset) * val_percent)n_train len(dataset) - n_val#我这里是刚好有10张数据集然后其中一张被拆分为验证集导致训练集太小&#xff0c;从而报错。

反编译odex

需要工具&#xff1a; 1、baksmali-x.x.x.jar2、smali-x.x.x.jar工具下载&#xff1a;https://bitbucket.org/JesusFreke/smali/downloads/ 步骤&#xff1a; 1、odex转smali&#xff1a; java -jar “D:\google\tool\mony_tool\baksmali-2.2.1.jar” deodex SystemUI.odex -…

ZeroDivisionError:Integer division or modulo by zero

docker环境下&#xff0c;多GPU训练 方式&#xff1a;采用nvidia-docker创建容器 另&#xff1a; 在用sudo无法解决sh文件的pemission denied问题时&#xff0c;采用bash替代sudo

deactive(Deactive breakpoint)

deactive怎么译&#xff1f; de-active 原指吊销, 计算机的专用词叫 "去活". 多指停止某指令.吊销&#xff0c;不激活&#xff0c;关闭 三星bc01指令代码 三星手机总复位&#xff0c;在待机状态下输入*2767*3855#需要专门的智能仪器才可以解开手机密码忘记了 一般普…

Oxidized-20180912-docker 版本的网络设备备份系统

Problem Oxidized 非常好用&#xff0c;基本兼容所有网络设备的备份&#xff0c;但是有一个小小小小的问题&#xff0c;就是在 Linux 环境下&#xff0c;默认安装的 Ruby 版本问题为其在离线情况下的安装增添了很多的麻烦和限制。 于是轻量级的 docker 成了不二的选择。 &am…

Oxidized-最好用的网络设备备份系统(三)-双机自动备份

oxidized备份网络配置默认路径为 /root/.config/oxidized/group group分别是不同设备分组 group1 group2 group3 group4 双机自动备份思路: 制作将需要备份的数据先备份到back/bak目录下,再通过打包gz格式放到backup目录下,然后通过远程传输,上传到备份服务器的/usr/…

cas:27025-41-8 Glutathione oxidized氧化型谷胱甘肽 活性氧抑制剂

cas:27025-41-8 Glutathione oxidized氧化型谷胱甘肽 活性氧抑制剂 中文名称&#xff1a;氧化型谷胱甘肽 英文名称&#xff1a;Glutathione oxidized 分子量&#xff1a;612.63 性状&#xff1a;Solid 分子式&#xff1a;C20H32N6O12S2 cas:27025-41-8 别称&#xff1a;…