IPOPT非线性解算器MATLAB使用

调用IPOPT约束的非线性解算器。 基本的函数调用 [x, info] = IPOPT(x0,funcs,options) 第一个输入是一个矩阵或矩阵的单元数组。它声明求解器的起点。 回调函数 第二个输入必须是包含各种MATLAB例程函数句柄的结构。有关MATLAB中使用函数和函数句柄的更多信息,请在MATLAB提示符中输入HELP function和HELP FUNCTION_HANDLE。 function f = objective (x) (必须) 计算当前点的目标函数。例如,Hock & Schittkowski (H&S)测试问题#71(包含4个优化变量)的目标函数的定义将是 1 2 functionf =objective (x)f = x(1)*x(4)*sum(x(1:3)) + x(3); funcs.gradient (required) (必须) 计算目标在当前点的梯度。它接受一个输入,当前迭代x。对于H&S测试问题#71,梯度回调函数的定义是 1 2 3 4 5 functiong =gradient (x)g = [ x(1)*x(4) + x(4)*sum(x(1:3)) x(1)*x(4) x(1)*x(4) + 1 x(1)*sum(x(1:3)) ]; funcs.constraints (可选) 只有当变量有约束时才需要此函数。它在当前点计算约束函数。它接受一个输入x。返回值是一个长度等于约束数量的向量(它必须与options.cl和options.cu的长度相同)。对于H&S测试问题#71,回调函数定义为 1 2 functionc =constraints (x)c = [ prod(x); sum(x....

July 29, 2022 · 2 min · 染竹君