1、如果约束是对每个时隙的约束,比如,稍微复杂一点的,不同约束条件中的变量的重叠的,即约束条件之间是有耦合关系的(我猜这就是耦合),或者稍微简单一点的,一个约束条件是所有任务的计算功率总和不超过阈值。此时,可以直接根据拉格朗日对偶的原理(见下面):以在功率阈值的约束下,最小化(平均)时延为例,1)在每个时隙中,把约束条件写到目标函数上形成L(x,λ),2)在每个时隙,做了个动作后(有了个x),希望改变λ以让L(x,λ)最大(若x在约束条件内,则最大时约束项为0,L(x,λ)=D(x),若x不在约束条件内,则L(x,λ)将为无穷大),则从λ的初始值开始,用梯度下降法,让L(x,λ)对λ求导,更新λ,直到λ收敛,那么此时就在这个时隙下得到了做x这个动作后的最小L(x,λ)(这里是最小,原理看拉格朗日对偶https://zhuanlan.zhihu.com/p/38182879),注意,回报最好写成R=1/L(x,λ)(来自文章[1]),否则,若动作x不符合限制条件,则L(x,λ)会无穷大,不利于训练过程。虽然多个时隙的1/L(x,λ)总和和平均时延不一致,但靠说话可以圆过来。
2、如果约束是对平均时隙的约束,例如在平均时延的约束下,最小化平均功率。可以用类似[3]中的处理方法,不过是简化版,因为[3]中是Q-learning,他在求出最优λ后,进一步优化了策略,这个你的文章没必要。你的策略是,直接每个时隙在后面加一个约束项:
??
显而易见,随着λ变大,每个时隙中,时延的重要程度越来越大,则强化学习策略下,所得的平均时延将会单调递减。你需要逐渐增加λ,直到平均时延等于你的平均时延约束,即找到了与该约束匹配的最佳λ。你可以用二分法来找λ,刚开始为了确定b,可以乘2,快速增加b的值,然后用二分法即可。即,每隔128步,算一下平均时延,看看比平均时延约束大还是小,决定下128步的lamda更新为多少。
[1] Task Offloading for Wireless VR-Enabled Medical Treatment with Blockchain Security Using Collective Reinforcement Learning
[2]?Computation Rate Maximization in UAV-Enabled Wireless-Powered Mobile-Edge Computing Systems
[3]??Q-Learning Algorithms for Constrained Markov Decision Processes With Randomized Monotone Policies: Application to MIMO Transmission Control
|