ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数学建模暑期集训15:matlab求解多目标规划模型

2021-08-01 21:01:52  阅读:250  来源: 互联网

标签:200 15 暑期 nvars matlab Fun lb options ub


多目标规划模型的求解方法

1.传统优化算法

1.1主要目标法

在这里插入图片描述

1.2分层序列法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3加权法

在这里插入图片描述

1.4理想点法

在这里插入图片描述

2.智能优化算法

遗传算法等…

例题实战:MATLAB中多目标遗传算法求解法

通用形式

在这里插入图片描述

例1:

在这里插入图片描述
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(2)^4-x(1)^2*x(2)^2+x(1)^4+x(1)*x(2); 

main.m

clear 
clc 
fitnessfcn=@Fun;%适应度函数句柄
 nvars=2; %变量个数
 lb=[-5,-5]; %下限
 ub=[5,5]; %上限
 A=[];b=[]; %线性不等式约束
 Aeq=[];beq=[]; %线性等式约束
 
options=gaoptimset('paretoFraction',0.3,'populationsize',200,'generations',200,'stallGenLimit',200,'TolFun',1e-10,'PlotFcns',@gaplotpareto); 
% 最优个体系数paretoFraction为0.3;
%种群大小populationsize为100,
%最大进化代数generations为200,
% 停止代数stallGenLimit为200,
%适应度函数偏差TolFun设为1e-10,
%函数gaplotpareto:绘制Pareto前沿
[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)

例2:

在这里插入图片描述
matlab求解:
Fun.m

function y=Fun(x) 
y(1)=x(1); 
y(2)=(1+x(2))/x(1); 

nonlcon.m

function [c,ceq] = nonlcon(x)
c =[];
ceq =[x(1)^2+x(2)^2-2];

main.m

clear 
clc 
fitnessfcn=@Fun;
 nvars=2; 
 lb=[0.1,0]; 
 ub=[1,5]; 
 A=[-9,-1;-9,1];b=[-6;-1]; 
 Aeq=[];beq=[]; 
 nonlinearCons = @nonlcon;
 options=gaoptimset('paretoFraction',0.4,'populationsize',200,'generations',300,'stallGenLimit',300,'TolFun',1e-10,'PlotFcns',@gaplotpareto); 

[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,nonlinearCons,options)

例3:

在这里插入图片描述
matlab求解:
fitness.m

function  F = fitness(x)
F(1) = -100*x(1) - 80*x(2)- 90*x(3) - 70*x(4);
F(2) = 30*x(3) + 20*x(4);
F(3) = 50*x(1) +40*x(2)

main.m

clear
clc
fit = @fitness;
nvars = 4;
lb = [0 0 0 0];
ub = [];
A = [3, 2, 0, 0; -3, -2, 0, 0; 0, 0, 3, 2; 0, 0, -3, -2; -1, 0, -1, 0; 0, -1, 0, -1];
b = [120 0 48 0 -30 -30];

options = gaoptimset('paretoFraction',0.4,'populationsize',200,'generations',300,'stallGenLimit',200,'TolFun',1e-10);
[x,fval] = gamultiobj(fit,nvars,A,b,[],[],lb,ub,options)
plot3(fval(:,1),fval(:,2),fval(:,3),'pr')
xlabel('f_1(x)')
ylabel('f_2(x)')
zlabel('f_3(x)')
title('Pareto front')
grid on

标签:200,15,暑期,nvars,matlab,Fun,lb,options,ub
来源: https://blog.csdn.net/qq1198768105/article/details/119302954

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有