在matlab中,对于已处理好的负载回归阵Hb_Load_MCG_g1.mat和Det_Tao_Load_g1.mat,运行phyFesibal_problem.m脚本,会自动求解线性矩阵不等式并生成对应的problem和cpp文件
此时也可在matlab对该problem进行求解,matlab默认使用sedumi求解器
1、先对problem进行分解
2、输入参数并进行求解,此处rvals和pvals是可输入的变量,因为在我们的目标函数中,回归阵和力矩已处理完毕,不需要输入参数,此处设为0(注:如果在Ⅲ型系统中,为了实时求解,回归阵和力矩必定是在线生成的,rvals和pvals为实时求解提供了可能)
生成了phyFesi_problem.cpp文件和phyFesi_problem.h文件后,便可在已安装了SDPA环境(具体安装细节待进一步阐述)的linux终端中进行求解,此处相应的主函数为phyFesi_solver.cpp,为了简便操作用终端指令进行编译和运行
已生成的文件如下
使用指令编译中间文件,指令如下
g++ -DSDPA_SOLVER -DNDEBUG -O3 -I../GpoSolver/include/ -I../SDPA/include/ -I../SDPA/include/include -I./ -c phyFesi_problem.cpp phyFesi_solver.cpp
根据中间文件生成可执行文件
g++ -std=c++11 -o phyFesi_solver_sdpa phyFesi_problem.o phyFesi_solver.o -I../SDPA/include -I../SDPA/include/include -I/mpich-install/include -L/usr/lib -lsdpa -ldmumps -lmumps_common -lpord -llapack -lblas -lpthread -L../mumps -lmpiseq -lgfortran
运行该可执行文件得到求解结果