使用matlab优化工具箱求解规划问题
matlab优化工具箱
在命令行中输入optimtool,即可打开优化工具箱
fmincon函数
在matlab中,可以使用函数x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)求解非线性规划问题。
fun为目标函数
x0为不等式的初始值:
x0=[x(1)0,x(2)0,…,x(n)0]
A,b,Aeq,beq为线性不等式约束条件的参数
A = [1,2];
b = 1; % A*x <= b
Aeq = [2,1];
beq = 1; % Aeq*x <= b
lb,ub为x的上下界
lb=[x(1)min,x(2)min,…x(n)min]
ub=[x(1)max,x(2)max,…x(n)max]
nonlcon为约束条件,写在M文件中
function [c,ceq] = mycon(x)
c = [(),…,()] % 非线性不等式的约束条件
ceq = [(),…,()] % 非线性等式的约束条件
没有非线性等式的约束条件时,需要写ceq=[];
示例
以此题为例:
目标函数的M文件:
由于fmincon函数求的是最小值,而题目要求的是最大值,将题目中的原函数取负,这样求得的最小值就是原函数最大值的倒数。在工具箱中以函数句柄的形式引用目标函数和约束条件的M文件。
约束条件的M文件:
将不等式整理成f(x)<=0的形式,左边的部分(f(x))就是c(i)
x1~x6>=0的条件可以在工具箱的bounds里设置
线性、非线性规划都可以解(大概)