1.求最小值
%minz = 2x1+3x2+x3 %x1+4x2+2x3>= 8 %3x1+2x2>=6 %x1,x2,x3>=0 c= [2;3;1]; a =[1,4,2;3,2,0] b =[8;6]; [x,y] = linprog(-00c,-a,-b,[],[],zeros(3,1))
2.非线性规划
%minf(x) = x1^2 + x2^2 +8 %x1^2 -x2>=0 %-x1-x2^2=2=0 %x1,x2>=0 function f = fun1(x) f = x(1)^2+x(2)+8; end function [g,h] = fun2(x); g = -x(1)^2+x(2); %不等式约束 g(1) g(2) g(3)... h = -x(1)-x(2)+2;%等式约束 h(1) h(2) ... end [x,y] = fmincon('fun1',rand(2,1),[],[],[],[],zeros(2,1),[], ... 'fun2',options)
函数fmincon
返回回值是向量x,其中FUN是M文件定义的目标函数 X0 是x的初始值 A,B,Aeq,Beq定义了线性约束的条件,如果没有线性约束,A = [],B = [],Aeq = [],Beq = [] LB和UB是变量X的下界和上界,无上界和无下界用inf表示 NONCON是定义的非线性向量函数C(X) 和Ceq(X) OPTIONS定义了MATLAB的默认参数设置 3.二次规划 非线性目标函数是自变量的二次函数,约束条件又全部都是线性的,则称这种规划为二次规划 二次规划的命令 h 设矩阵H第i行第j列的元素H(i,j)二次项系数为a(i,j) 那么H(i,j) = 2a(i,j) i=j H(i,j) = a(i,j) i≠j f ,一次项系数 A,B不等式系数 Aeq,Beq等式系数 LB,自变量的最小值 UB,自变量的最大值 X0,自变量的起始值X = fmincon(fun,x0,A,B,aeq,beq,LB,UB,NONLCON,OPTIONS)
[X,FAVL] = quadprog(h,f,A,B,Aeq,Beq,LB,UB,X0,OPTIONS)
当自变量的取值是整数的时候,称为整数规划,并且,自变量的约束都是线性的时候称为线性规划 (1)0-1整数规划 自变量的取值是0-1时称为0-1规划,约束条件时0≤x≤1,x(1-x) = 0; 隐枚举法解0-1规划 (2)随机取样计算法4.整数规划
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)