规划问题Matlab求解
线性规划问题
目标函数与约束函数均为线性函数,因此求解目标函数的问题可以称作线性规划问题。
一般求目标函数的最大值或者最小值作为最优值。
线性规划的MATLAB标准形式
求解命令函数
[x,fval]=linprog(c,A,b,Aeq,beq,LB,UB,X0,OPTIONS)
其中的fval为返回目标函数的值;A,b对应不等式约束;Aeq,beq对应等式约束;LB,UB为变量x的下界和上界。X0为x的初始值;OPTIONS是控制参数。
fval=c’*x
例1
clear all;
clc;
c=[6 3 4]';
A=[0,1,0];
b=50;
Aeq=[1,1,1];
beq=120;
v1=[30,0,20];%下界
v2=[];
[x,z]=linprog(c,A,b,Aeq,beq,v1,v2)
求解结果
例2
clear all;
clc;
%错误的
c=[2,3,-5]';
A=[2,-5,1];
b=10;
Aeq=[1,1,1];
beq=7;
[x,value]=linprog(-c,-A,-b,Aeq,beq,zeros(3,1))
%正确的
c=[2;3;-5];
a=[-2,5,-1];b=-10;
aeq=[1,1,1];
beq=7;
x=linprog(-c,a,b,aeq,beq,zeros(3,1))%是求最大值而不是最小值
value=c'*x
注意两段代码结果区别,注意是求最大值,而不是最小值。第一段代码的结果value=-14.5714。为什么第一段代码的结果缺少一个负号。因为value=c*x
求解结果
非线性规划问题
如果目标函数或约束函数中有非线性函数,则称为非线性规划问题。
非线性规划的MATLAB求解