之前的公式计算了fmincon需要的 三个非线性约束,已经转换成了标准型。
目标函数是求 minimum: m^2+n^2+p^2+q^2
想要一个转化方式将约束中包含的m,n,p,q 自动转化成x(1),x(2),x(3),x(4)这种形式。
因为这三约束根据给出的初始条件不同,约束也不一样,所以需要一个通用方案。
你好,这类似于这种构架就行
ro1 = @(m,n,p,q) 这里写你的约束;
ro2 = @(m,n,p,q) 这里写你的约束;
ro3 = @(m,n,p,q) 这里写你的约束;
g = @(x) myfun(g, x);
fmincon(g, ……, @(x) nlinc(x,ro1,ro2,ro3))
function [c, ceq] = nlinc(x, ro1, ro2, ro3)
x = num2cell(x(:))';
ceq =[]; %我这里设若等式约束没有
if(条件1)
c = ro1(x{:})
elseif(条件2)
c = ro2(x{:})
else
c = ro3(x{:})
end
end