线性规划与非线性规划

线性规划:

\[\begin{align} &\min {\space} f^Tx \space ,\\ &s.t.\begin{cases} A \cdot x \leq b \\ A_{eq} \cdot x = b_{eq}\\ lb \leq x \leq ub \end{cases} \end{align} \]

f=[13;9;10;11;12;8];
A=[0.4,1.1,1,0,0,0;0,0,0,0.5,1.2,1.3];
b=[800;900];
Aeq=[]; beq=[];
lb=[];ub=[];
[x,fval]=linprog(f,A,b,Aeq,beq,lb,ub);

非线性规划:

\[\begin{align} &Min {\space} F(x) \: ,\\ &s.t.\begin{cases} AX \leq b &\text{线性约束} \\ A_{eq} \cdot X = b_{eq} &\text{线性等式约束}\\ G(X) \leq 0 &\text{非线性约束}\\ C_{eq}(X)=0 &\text{非线性等式约束}\\ VLB \leq X \leq VUB &\text{变量上下限} \end{cases} \end{align} \]

|*非线性函数*|
function [g,ceq] = ulinear(x)
	g=[G1(X);G2(X);...];	//非线性约束组
	ceq=[Ceq1(X);Ceq1(X);...];	//非线性等式约束组
end

|*主函数*|
function res=fun(x)
	res=F(X);
end

|*主程序*|
x0=[-1;1];	//初值
A=[];b=[];	
Aeq=[1 1];beq=[0];	
vlb=[];vub=[];	//空格隔开
[x, fval]=fmincon('fun', x0, A, b, Aeq, beq, vlb, vub, 'ulinear');
上一篇:C++学习第二课——关键字及其用法


下一篇:EQ的理解