使用matlab优化工具箱求解规划问题

matlab优化工具箱

在命令行中输入optimtool,即可打开优化工具箱
使用matlab优化工具箱求解规划问题

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=[];

示例

以此题为例:
使用matlab优化工具箱求解规划问题

目标函数的M文件:

使用matlab优化工具箱求解规划问题
由于fmincon函数求的是最小值,而题目要求的是最大值,将题目中的原函数取负,这样求得的最小值就是原函数最大值的倒数。在工具箱中以函数句柄的形式引用目标函数和约束条件的M文件。

约束条件的M文件:

使用matlab优化工具箱求解规划问题
将不等式整理成f(x)<=0的形式,左边的部分(f(x))就是c(i)
x1~x6>=0的条件可以在工具箱的bounds里设置
使用matlab优化工具箱求解规划问题
线性、非线性规划都可以解(大概)

结果

使用matlab优化工具箱求解规划问题