论文部分内容阅读
目前,云计算的发展十分快速,对于计算资源有限的用户来说,无法对结构庞大的项目进行计算,寻求云计算的协助成为优先的选择。实际生活中,很多问题能够归结为非线性规划(NLP)问题,NLP问题一般没有确定的通用解法,对于很多复杂问题常使用启发式算法求解。粒子群优化算法(PSO)作为一种进化计算技术,在求解NLP问题上有着不错的效果。比如,当一个计算能力有限的用户有一个复杂且庞大的优化问题需要使用PSO算法来求解,他可以将问题的求解工作委托给云,运用云强大的计算能力快速求解。尽管云计算有很多好处,但是对用户来说,云执行计算的过程并不透明,因此带来用户如何验证云如实地运行了算法进行求解的问题。本文首先介绍了NLP和PSO算法的相关概念。KKT条件可以用来检验解的最优性,但是传统KKT条件在检验进化算法结果上有比较大的局限性。进化算法求得的解可能并不是最优的,近似KKT条件的提出就提供了一种衡量KKT点邻域内的点最优性的思路。然后概要介绍了可验证计算的研究进展。可验证计算领域希望能设计一个通用的方案来验证计算的结果,但是即便是对十分简单的问题也需要极其庞大的存储和计算资源来构造执行程序,很难应用到实际的场景中。其次,本文针对PSO算法外包问题提出可验证的PSO算法以及对应的验证方案。可验证的PSO算法保留了传统粒子群优化算法计算高效的优点,还能对传递的算法参数进行验证。用户对需要发送的参数签名,可验证的PSO算法验证签名的有效性,验证失败则终止算法进程。云端返回结果后,由验证算法验证结果的有效性,根据验证结果可以判断云是不是如实进行了运算。最后,本文将外包问题限制为NLP问题,用户需要确认云按要求执行了PSO算法来求解并返回合适的结果。用户需要对NLP问题进行预处理,使用罚函数法将问题转化为可以被PSO算法解决的适应度函数的形式后,由云服务器执行计算。该方案移除了可验证PSO算法中的签名部分,并采用了近似KKT条件作为工具,通过验证解是否是一个?-KKT点,来检验PSO算法返回解的最优性。本文还通过代码仿真,对PSO测试函数和NLP测试问题进行实验,均取得了较高的验证成功率,表明方案具备可行性和高效性。