【MATLAB】数学建模中的规划问题

版权声明:欢迎转载 https://blog.csdn.net/suntengnb/article/details/81699943

引子

关键词:费用最小、利润最大、问什么设什么
规划的分类:

  • 约束规划与无约束规划(既无不等式约束又无等式约束)
  • 线性规划(目标函数与约束函数均为线性函数)与非线性规划
  • 整数规划(包括0-1规划)
  • 多目标规划(目标函数形如 f ( x ) = [ f 1 ( x ) , f 2 ( x ) , , f n ( x ) ]

相关术语:
可行解:满足约束条件的一组决策变量的取值
可行域:全部可行解的集合
最优解:可行域中使目标函数达到最优值的可行解

线性规划(Linear Programming,LP

MATLAB中的标准形式:
m i n f ( x )
s.t. A × x b
A e q × x = b e q
l b x u b
调用格式:[x,fval] = linprog(f,A,b,Aeq,beq,lb,ub)

整数规划(Integer Linear Programming,ILP)

MATLAB中的标准形式:
m i n f ( x )
s.t. A × x b
A e q × x = b e q
l b x u b
x 1 , x 2 , , x n 部分或全部取整数
调用格式:[x,fval] = intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)

无约束非线性规划

求解方法:

  • 目标函数连续可微:最速下降法、牛顿法、拟牛顿法、共轭梯度法等
  • 目标函数不连续不可微:遗传算法、粒子群算法等

问题类型:

  1. 一元函数在给定区间上的最小值

    模型: m i n f ( x ) s . t . x 1 < x < x 2
    调用格式:[x,fval] = fminbnd(f,x1,x2)

  2. 无约束的多元函数的最小值

    模型: m i n f ( x )
    调用格式:[x,fval] = fminunc(f,x0)

  3. 无导数法求解无约束的多元函数的最小值
    模型: m i n f ( x )
    调用格式:[x,fval] = fminsearch(f,x0)

  4. 遗传算法求解无约束规划问题的最小值
    模型: m i n f ( x ) s . t . l b x u b
    调用格式:[x,fval] = ga(fitnessfcn,nvars,[],[],[],[],lb,ub)

  5. 粒子群算法求解无约束规划问题的最小值
    模型: m i n f ( x ) s . t . l b x u b
    调用格式:[x,fval] = particleswarm(f,nvars,lb,ub)

  6. 模式搜索算法求解无约束规划问题的最小值

    模型: m i n f ( x ) s . t . l b x u b
    调用格式:[x,fval] = patternsearch(f,x0,[],[],[],[],lb,ub)

非线性规划

  1. 二次规划
    模型:
    m i n Z = 1 2 x T H x + c T x
    s.t. A x b
    A e q x = b e q
    l b x u b
    调用格式:[x,fval] = quadprog(H,f,A,b,Aeq,beq,lb,ub)
  2. 约束的多元函数的最小值
    m i n f ( x )
    s.t. A x b
    A e q x = b e q
    G ( x ) 0
    G e q ( x ) = 0
    l b x u b
    调用格式:[x,fval] = fmincon(f,x0,A,b,Aeq,beq,lb,ub,nonlcon)
  3. 遗传算法求解约束规划问题的最小值
    m i n f ( x )
    s.t. A x b
    A e q x = b e q
    G ( x ) 0
    G e q ( x ) = 0
    l b x u b
    调用格式:[x,fval] = ga(fitnessfcn,nvars,A,b,Aeq,beq,LB,UB,nonlcon)
  4. 模式搜索算法求解约束规划问题的最小值
    m i n f ( x )
    s.t. A x b
    A e q x = b e q
    G ( x ) 0
    G e q ( x ) = 0
    l b x u b
    调用格式:[x,fval] = patternsearch(f,x0,A,b,Aeq,beq,lb,ub,nonlcon)

多目标规划

多目标规划问题的解之间通常不能简单地比较好坏,这样的解称为非支配解Pareto最优解
遗传算法求解多目标规划问题:
gamultiobj运用基于NSGA-II方法的多目标遗传算法
模型:
m i n F ( x )
s.t. A x b
A e q x = b e q L i n e a r C o n s t r a i n t s
G ( x ) 0
G e q ( x ) = 0 N o n l i n e a r C o n s t r a i n t s
l b x u b B o u n d C o n s t r a i n t s
调用格式:[x,fval] = gamultionj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
例题:求解下面的多目标规划
m i n f 1 ( x ) = x 1 4 10 x 1 + x 1 x 2 + x 2 4 x 1 2 x 2 2
m i n f 2 ( x ) = x 1 4 + x 1 x 2 + x 2 4 x 1 2 x 2 2
s . t . 5 x 1 , x 2 5
MATLAB代码:

%Fun.m
function y = Fun(x)
y(1) = x(1)^4 - 10 * x(1)^2 + x(1) * x(2) + x(2)^4 - x(1)^2 * x(2)^2; 
y(2) = x(1)^4 + x(1) * x(2) + x(2)^4 - x(1)^2 * x(2)^2; 

%gamultionj_usage.m
clc
clear
fitnessfcn = @Fun;
nvars = 2;
lb = [-5,-5];
ub = [5,5];
A = [];
b = [];
Aeq = [];
beq = [];
%gamultiobj函数的参数设置
%最优个体系数paretoFraction = 0.3
%种群大小populationsize = 100
%最大进化代数generations = 200
%停止代数stallGenLimit = 200
%适应度函数偏差TolFun设为1e-10
%函数gaplotpareto绘制Pareto前沿
options = gaoptimset('paretoFraction',0.3,'populationsize',200,'generations',300,'stallGenLimit',200,'TolFun',1e-10,'PlotFcns',@gaplotpareto);
[x,fval] = gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)

猜你喜欢

转载自blog.csdn.net/suntengnb/article/details/81699943
今日推荐