MATLAB线形规划函数linprog、intlinprog与二次规划函数quadprog |
您所在的位置:网站首页 › 线性规划中整数约束怎么表示出来的 › MATLAB线形规划函数linprog、intlinprog与二次规划函数quadprog |
一、目标函数简介
线形规划问题的数学模型:
s.t 线形规划,顾名思义就是目标函数与约束条件均为线形函数(一次函数)。 二、线形规划函数linproglinprog函数的用法大致分为以下几种用法: 1、不等式约束 x = linprog(f,A,b) ,f为目标函数,A为不等式约束的系数矩阵,b为不等式右侧的值,返回值x为最优解。 例1、目标函数 s.t matlab代码 % x = linprog(f,A,b) 不等式约束 f=[3 -1] A=[-1 1; 1 1; -1 -3;] b=[1;3;-3] [x,fval]=linprog(f,A,b)%fval为目标点的函数值2、等式+不等式约束 x = linprog(f,A,b,Aeq,beq),f为目标函数,A为不等式约束的系数矩阵,b为不等式右侧的值,Aeq为不等式约束的系数矩阵,beq为不等式右侧的值,返回值x为最优解。 例1、目标函数 s.t matlab代码 %% x = linprog(f,A,b,Aeq,beq) 包含等式、不等式 f=[-1 -1/3]; A=[1 1; 1 1/4; 1 -1; -1/4 -1; -1 -1; -1 1;]; b=[2; 1; 2; 1; -1; 2]; Aeq=[1 1/4]; beq=1/2; [x,fval]=linprog(f,A,b,Aeq,beq)%fval为目标点的函数值3、规定x的下限lb和上限ub x = linprog(f,A,b,Aeq,beq,lb,ub),f为目标函数,A为不等式约束的系数矩阵,b为不等式右侧的值,Aeq为不等式约束的系数矩阵,beq为不等式右侧的值,lb、ub分别为x的下限和上限,返回值x为最优解。 例2、目标函数 s.t matlab代码 %% x = linprog(f,A,b,Aeq,beq,lb,ub) f=[2 3 1] A=[-1 -4 -2; -3 -2 0;]; b=[-8;-6]; lb=[0;0;0]; [x,fval]=linprog(f,A,b,[],[],lb); %fval为目标点的函数值4、设置线性规划的算法 x = linprog(f,A,b,Aeq,beq,lb,ub,options) ,f为目标函数,A为不等式约束的系数矩阵,b为不等式右侧的值,Aeq为不等式约束的系数矩阵,beq为不等式右侧的值,lb、ub分别为x的下限和上限,options为算法设置句柄,返回值x为最优解。 matlab代码 %% x = linprog(f,A,b,Aeq,beq,lb,ub,options) % options = optimoptions('linprog','Algorithm','interior-point'); %内点法 options = optimoptions('linprog','Algorithm','interior-point-legacy'); % options = optimoptions('linprog','Algorithm','dual-simplex');%对偶单纯形法 f=[2 3 1]; A=[-1 -4 -2; -3 -2 0;]; b=[-8;-6]; lb=[0;0;0]; [x,fval]=linprog(f,A,b,[],[],lb,[],options)%fval为目标点的函数值 三、整数规划与0 1规划函数intlinprogintlinprog函数与linprog函数用法相同,只是多出了一个整数项设置参数。 1、不等式约束 x = intlinprog(f,intcon,A,b),f为目标函数,intcon为整数设置项,A为不等式约束的系数矩阵,b为不等式右侧的值,返回值x为最优解。 例1、目标函数 s.t matlab代码 %% x = intlinprog(f,intcon,A,b) 整数规划 f=[3 -1] A=[-1 1;1 1;-1 -3] b=[0.5;3;-3] % intcon=[1] %变量X1为整数项 % intcon=[2] %变量x2为整数项 intcon=[1,2] %x1、x2都为整数项 % intcon=[] %没有整数项 [x,fval]=intlinprog(f,intcon,A,b)2、等式+不等式约束 x = linprog(f,intcon,A,b,Aeq,beq),f为目标函数,A为不等式约束的系数矩阵,intcon为整数设置项,b为不等式右侧的值,Aeq为不等式约束的系数矩阵,beq为不等式右侧的值,返回值x为最优解。 例2、目标函数 s.t matlab代码 %% x = intlinprog(f,intcon,A,b,Aeq,beq) f=[-3 -2 -1] %目标函数系数矩阵 A=[1 1 1] %不等式约束 b=7 Aeq=[4 2 1] %等式约束 beq=12 intcon=[1 2 3] %x1 x2 x3都为整数项 lb=zeros(3,1) %下限为0 [x,fval]=intlinprog(f,intcon,A,b,Aeq,beq,lb)3、0-1规划 例2、目标函数 s.t x3= 0或1 matlab代码 %% 0-1 规划 f=[-3 -2 -1]; A=[1 1 1]; b=7; Aeq=[4 2 1]; beq=12; intcon=[1 2 3]; lb=zeros(3,1); 将x3下限和上线都设置为1即可 ub=[inf;inf;1]; [x,fval]=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub) 四、二次规划quadprog定义:目标函数事自变量的二次函数,约束条件为线性函数。 二次规划问题的数学模型:
s.t 例1、目标函数 s.t 1、首先对目标函数做处理,写成系数矩阵的形式 2、写出对应的系数矩阵 a11=2,a12=-2,a21=-2,a22=4,f1=-2,f2=-6 可得H与f matlab代码 %% 二次规划 H=[2 -2;-2 4] f=[-2;-6;] A=[1 1;-1 2] %不等式约束 b=[2;2] lb=zeros(2,1) %下限 [x,favl]=quadprog(H,f,A,b,[],[],lb)
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |