首页 > 编程知识 正文

组合优化模型,库存优化模型

时间:2023-05-05 05:21:20 阅读:35352 作者:934

多目标优化模型及其算法的应用一、大纲多目标优化模型概论传统优化解决方法现代优化算法范例二、多目标优化模型概论一、多目标优化模型概论一、给定领域内多目标函数优化问题称为多目标优化问题。

例如,在一定条件下,将汽车设计成既满足安全(重量大)又满足经济(油耗小)是一个多目标优化问题。

该模型通常可概括为:

在此,将x=(x1、x2、x3…xn )存在的空间称为决定空间(可执行解空间),将向量f(x )存在的空间设为目标空间

与单目标优化不同,多目标优化在各目标函数之间存在矛盾。 原因并不是所有的目标函数都是最优解。 一个解在一个目标函数中可能是最佳的,但在另一个目标函数中是最差的。 (判断多目标优化问题的关键) ) )。

因此,多目标优化问题通常是一个解集,他们之间不能轻易比较优劣。 这种称为非支配解(有效解),Pareto最优解

2 .多目标优化的相关概念:定义1

对于向量支配最小化问题,一个向量u=(u1,u2…un )支配另一个向量v=) v1、v2…vn,且仅此时

uivi

定义2

如果没有支配x的(优良的)解,则x被称为该问题的帕累托最优解(非劣解、有效解、非支配解)

由Pareto最优解整体构成的集合称为Pareto最优解集合,Pareto最优解集合位于目标函数空间中的像集合称为Pareto Front(Pareto前沿)

如上图所示,A,B两点中是一个最优解意味着他们的对应的自变量向量不受任何其它自变量向量所支配,这意味着在任何目标上他们都不能由另一个个体所支配。 这样的解就是Pareto最佳解。

从定义1和定义2可知,c点优于d点,c点优于f点,c点优于e点

三、传统优化解决方法(点到点优化) 1、传统多目标优化问题的处理方法主要分为主要目标法层次序列法加权法约束法极小极大法理想点法…

其共同特点是通过多种方法将多目标优化问题转化为单目标优化问题,然后应用单目标优化方法进行求解

主要目标法是,从m个目标中,以一个为主要目标,以剩下的目标为次要目标,根据实际情况制定适当的界限值,将次要目标转换为制约条件来应对。 可以归纳为以下模型

层次排序法将m个目标按照重要度顺序排列。 重要度的排名为f1(x )、f1(x )…fn (x ) ),

先问问题1 :

最佳解为x(1),最佳值为f1 )

再要求问题2 :

最佳解为x(2),最佳值为f2 )

再要求问题3 :

最佳解为x(3),最佳值为f3 )

从这个类推到求出问题m,将得到的解[x1,x2…]作为最佳解

加权法对m个目标,根据重要程度给出适当的加权系数i0,满足i=1,即可将多优化问题转化为单目标优化问题

将得到的解[x1、x2…]作为最佳解

理想点法先分别求解m个单一目标问题,令

可以转化为单一目的的问题

这里,用权重系数i0,满足i=1,得到的解[x1,x2…]记为最佳解

四、现代优化算法(基于精英策略的快速非支配序列遗传算法) 1、算法框图

帕累托:在一组解中,可以把非支配解帕累托定义为1,把非支配解从解的集合中删除,把剩下的解的帕累托定义为2,依次类推,得到该解集合中所有解的帕累托。 图像如图1所示。

对于相同等级的点,用拥挤度进行区分

拥挤度:

精英保存策略(通过拥塞选择算子选择新的优秀n个点拥塞选择算子(NSGA-II定义了拥塞比较算子,假设I、j分别表示个体群p的2个个体)。 满足以下条件之一

1 ).irankjrank

2 ) irank=jrank,且didj

也就是说,可以说个体I优于个体j

确定算法选项%最优个体系数paretoFraction %个体群马自行车运动中心populationsize %最大进化代数generations %代数stallGenLimit %适应度函数偏差TolFun为matlab库函数gamultionsize 五.范例示范

创建模型

解决程序

得到的Pareto最优解是

10932.642947311914.6295387130128

14605.340461352318.2262297321479

12068.343370783815.1109915229892

12429.057350414315.4986606722887

14532.6593388757 18.1

842935253039
11131.9589772932 14.7011627210495

12231.6101793012 15.3304399641518
14601.9178238651 18.2252135575028
12925.9261417602 15.9920094703867

对应x为

267.971023073048 51.3565915834627 455.633097995301 125.585979212038
252.525614499897 239.427658309710 457.418751888526 128.750437678343
254.389944994419 171.851099214132 358.767031591140 127.301254104520
254.132868382987 186.732012546206 363.703424720114 127.760522787065
262.449535283310 233.128879659259 454.068085989463 128.340668641702
265.164827238227 73.5469917676312 436.961892621559 126.130582721401
255.486999974281 230.161706396739 363.122909473250 128.882635799297
256.416538867289 200.269620434745 381.067408667307 128.202939645206
261.153624157576 113.996154755591 403.634395120644 126.983182335415

252.260342156546 239.240158309710 457.928750235712 128.526159519777
253.531045975866 212.059789018681 363.552109061208 127.628185206671

pateto front 图

源代码:

%[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options)clear;clc;fitnessfcn=@fun;nvars=4;A=[0.015 0.02 0.018 0.011 13 13.5 14 11.5 -13 -13.5 -14 -11.5];b=[20;14400;-12000];Aeq=[];beq=[];lb=[0 0 150 0];ub=[270 240 460 130];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);function y=fun(x)y(1)=-10.*x(1)+-20.*x(2)+-12.*x(3)+-14.*x(4);y(2)=0.015.*x(1)+0.02.*x(2)+0.018.*x(3)+0.011.*x(4);end

参考文献:

1.数学建模算法及其应用(第二版)

2.博客https://blog.csdn.net/weixin_47102975/article/details/108253584,

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。