Matlab素质拓展课第四次作业
主要包括:线性规划非线性规划,元胞数组结构体,文件输入输出
Dy4_1. max f(x1,x2)=2x1+3x2
s.t. x1+x2≤8
4x1≤16
4x2≤12
x1,x2≥0 解:
% Dy4_1. max f(x1,x2)=2x1+3x2
% s.t. x1+x2≤8
% 4x1≤16
% 4x2≤12
% x1,x2≥0 clc;
clear;
c=[-2 -3];
A=[1 2;4 0;0 4];
b=[8;16;12];
[x z]=linprog(c,A,b)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Dy4_1. max f(x1,x2)=2x1+3x2
% s.t. x1+x2≤8
% 4x1≤16
% 4x2≤12
% x1,x2≥0 clc;
clear;
c=[-2 -3];
A=[1 2;4 0;0 4;-1 0;0 -1];
b=[8;16;12;0;0];
[x z]=linprog(c,A,b)
一是 对于linprog命令的几种常用格式及其求解的对应的问题模型,现作陈述如下:
(1) x=linprog(f,A,b)
求解的模型 min z=cx
s.t. Ax≤b
(2) x=linprog(f,A,b,Aeq,beq)
求解的模型 min z=cx
s.t. Ax≤b
Aeq.x=beq
若没有不等式约束Ax≤b,则在M文件中加入命令:A=[],b=[].
(3) x=linprog(f,A,b,Aeq,beq,lu,ub)
求解的模型 min z=cx
s.t. Ax≤b
Aeq.x=beq
lb≤x≤ub
若没有不等式约束Aeq.x=beq,则在M文件中加入命令:Aeq=[],beq=[].
二是 二次规划
在matlab中二次规划(QP)问题的标准型为:
Min f(x)=1/2.xTHx+cTx
s.t. Ax≤b
Aeq.x=beq
vlb≤x≤vub
其中H∈Rn×n为对称矩阵,A和Aeq为矩阵,其余为向量.
Dy4_2. min f(x1,x2)=-x1-2x2+1/2.x1^2+1/2.x2^2
s.t. 2x1+2x2≤8
x1+4x2≤5
x1,x2≥0
解:写成标准形式:
% Dy4_2. min f(x1,x2)=-x1-2x2+1/2.x1^2+1/2.x2^2
% s.t. 2x1+2x2≤8
% x1+4x2≤5
% x1,x2≥0 clc;
clear;
H=[1 0;0 1];
c=[-1;-2];
A=[2 2;1 4];
b=[6;5];
lb=[0;0];
[x,fval]=quadprog(H,c,A,b,[],[],lb)
三是一般非线性规划解法
Matlab中非线性规划的数学模型写成以下标准型:
Min f(x)
s.t. Ax≤b
Aeq.x=beq
C(x)≤0
Ceq(x)=0
vlb≤x≤vub
其中x为n维向量,f(x)是标量函数,A,b,Aeq,beq是相应维数的矩阵和向量,C(x)和Ceq(x)是非线性向量函数.
Matlab中非线性规划求解的函数是fmincon,命令的基本格式为 :
X=fmincon(fun,x0,A,b,Aeq,beq,VLB,VUB,nonlcon)
其中,给定初值x0,求解fun函数的最小值x.fun函数的约束条件为Ax≤b, Aeq.x=beq, vlb≤x≤vub,在nonlcon参数中提供非线性不等式c(x)≤0和等式Ceq(x)=0。
Dy4_3 min f(x)=e^x1(4x1^2+2x2^2+4x1x2+2x2+1)
s.t. x1+x2=0
1.5+x1x2-x1-x2≤0
-x1x2-10≤0 解
% min f(x)=e^x1(4x1^2+2x2^2+4x1x2+2x2+1)
% s.t. x1+x2=0
% 1.5+x1x2-x1-x2≤0
% -x1x2-10≤0
%dy4_3.m clc;
clear;
x0=[-1;1];
Aeq=[1 1];
beq=0;
[x,fval]=fmincon('fun4_3',x0,[],[],Aeq,beq,[],[],'nonlcon4_3')
先定义目标函数 fun4_3.m
function f=fun4_3(x)
f=exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1); end
再定义非线性函数nonlcon4_3.m
function [c,ceq]=nonlcon4_3(x)
c=[1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10];
ceq=[];
end
dy4_4 max (x1^2+2x2^2+x3^2+x1x2+x1x3)
s.t. x1^2+x2^2+x3^2-25=0;
8x1+14x2+7x3-56=0
x1,x2,x3≥0
解: 先转换成标准模型求 min (-x1^2-2x2^2-x3^2-x1x2-x1x3)
% max (x1^2+2x2^2+x3^2+x1x2+x1x3)
% s.t. x1^2+x2^2+x3^2-25=0;
% 8x1+14x2+7x3-56=0
% x1,x2,x3≥0
% 解: 先转换成标准模型求 min (-x1^2-2x2^2-x3^2-x1x2-x1x3)
% dy4_4.m clc;
clear;
x0=[1;1;1];
VLB=[0;0;0];
VUB=[];
A=[]; b=[];
Aeq=[8 14 7];
beq=56;
[x,f,exitflag,output]=fmincon('fun4_4',x0,A,b,Aeq,beq,VLB,VUB,'nonlcon4_4')
先定义目标函数 fun4_4.m
function f=fun4_4(x)
y=-x(1)*x(1)-2*x(2)*x(2)-x(3)*x(3)-x(1)*x(2)-x(1)*x(3); end