数学建模~~多目标规划

1.认识多目标规划

(1)前面我们介绍的是单目标规划,现在我们要认识一下多目标规划:

(2)使用上面的这个题目作为例子,简单的翻译一下题干,这个题目说的就是 有1,2这两种产品需要我们进行生产,一共有11的原材料,10小时的时间,产品1的生产消耗原材料2千克,需要耗费1小时,利润是8万元,产品二以此类推;

如果是单个目标规划问题,可能题干就会问这个最大的利润是多少,如果是这个多目标规划问题,问题就是这个图片里面展示的那样,产品1的产量不超过产品2的产量,充分利用设备就是说不要只是用一个设备,而且最大化这个效率,不希望加班的意思就是时间不能超过这个10小时,总利润不能低于56万元;

上面的这三个目标就是我们说的多目标;这三个目标并不是都要一定满足,而是在不能全部满足的情况下,根据重要性进行取舍;

2.模型分析

(1)正负偏差变量

衡量的是每个目标的完成情况:

我们定义变量fi表示的是这个目标的实际值,我们使用di0表示的是这个目标的理论值;

正偏差变量di+=max{fi-di0,0},就是取得两者里面的最大值;

负偏差变量di-=-min{fi-di0,0},就是这个实际值偏离理论值的部分;

上面的这个只是看起来好像还要运算,还要求最值,有的时候求最大值,有的时候求最小值,其实实际过程中这个偏差变量我们一眼就可以看出来,而且无论是正偏差变量还是负偏差变量,这个具体的数值都是一个正数;

上面的这个就是理论值56万元,50万就是低于这个理论值,产生的就是负偏差变量6,60万元就是超过了这个理论值,产生的就是正偏差变量4;

(2)目标函数

目标函数1:

因为题目的要求是不超过这个目标值,但是现实生活中可能会那么不尽如人意,不超过这个目标值更好,超过的话就尽量让这个正偏差变量越小越好;

目标函数3:

要求不少于 目标值,大于目标值更好,如果实在是小于目标值,我们就需要让这个负偏差变量越小越好;

目标函数2:

尽量充分利用设备,但是不希望加班,就是让这个x1+x2的时间尽量等于10个小时;

(3)约束条件

这个分为绝对约束和相对约束,绝对约束就是题目必须要满足的条件,目标约束就是允许的偏差

这个目标约束遵循多退少补的规则,就是这个di-是这个负偏差变量,di+就是正偏差变量,我们把这个不足的给补上,把这个超过的给减去,最后就可以把这个8x1+10x2的大于等于号变成等于号,因为在这个偏差变量的加持下,我们已经考虑到了这个误差,所以这个时候是可以取到等号的

(4)优先因子 

这个优先因子就是重要性的意思,这个题目里面我们假设他们的重要性是一致的;

我们上面就是这个数学模型的数学语言,这个里面的第一行就是目标函数,下面的大括号里面的就是约束条件,其中第一个是绝对约束,下面的三个就是目标约束条件;

这个里面的p1,p2,p3就是我们上面已经提到的优先因子,为什么这个d1是右上角有正号,d3的右上角有负号,因为这个是取决于我们的约束条件的,因为这个第一个条件是产品1的尽量小于产品2的,就是x1-x2<=0.但这个可能会不满足,我们考虑的就是这个不满足的,因为这个d代表的就是偏差因子,只有x1>x2才叫做偏差,大于的话,我们希望这个正偏差变量越小越好,因为这个是正偏差变量,所以我们的d的右上角是正号,

同理,第三个约束条件的 是让这个利润尽量大于56,如果这个大于的话,肯定是符合条件的,小于的话就是负偏差变量,所以这个地方就是d的右上角有一个负号;

通过这里我们就可以得出多退少补的一个规律,就是正偏差变量的前面是减号,负偏差变量的前面是加号(通过这个可以辅助我们记住偏差变量前面的符号);

3.数学建模

(1)优先因子说明

首先需要注意的就是这个题目(注意是这个题目,不是所有该类型的),这里的p1p2p3仅仅表示的是计算的先后顺序,不是一个具体的数字(可以是具体的数字,但是这样就具有主观性,所以我们一般不会这样做的);

(2)序贯算法 

就是这里第一个优先级计算时,我们这个地方求出第一个单目标规划的时候最优解是f1,我们在这个第一个优先因子里的最优解f1在新的约束条件下面进行第二个优先级的目标的最优解,以此类推,这个地方需要注意的就是这个当我们求解到最后一级的时候,是吧前面的所有作为新的约束条件,而不仅仅是他的上一级作为约束条件;

(3)创建优化问题和优化变量

我们这里是使用的关键字optimvar创建优化变量,使用这个optimproblem关键字创建优化问题;

(为了方便大家记忆这个关键字,简单介绍,这个optim就是英文单词optimistic简写,这个单词的意思就是乐观的,在数学建模里面就有这个优化的意思,都表示的是朝着好的方向发展,var就是表示的创建一个变量,无论是在MATLAB还是其他的编程语言里面,这个var都可以用来表示一个变量的创建,所以optimvar就表示的优化变量,optimproblem就表示的优化问题);

(4)创建优化变量问题代码

上面展示的就是优化变量和优化问题的创建,x,dp,dm都是在创建优化变量,因为创建优化变量使用的是 optimvar关键字,x,dp,dm加上单引号表示的是这个变量的名字,我们就是在这个x的外面加上单引号就可以了(实际上这个可以类似于C++里面的类和对象的创建,等号左边的x可以理解为一个类,右边括号里面的带引号的x可以理解为对象,对象的名字就是在这个类外面加上引号,这样明明是为了我们后续使用的时候代码更加简洁,省略不必要的问题);

lowerbound字面就是最低边界意思,在这个地方可以理解为最小值,我们对于这三个优化变量的最小值全部设置为0;这里说明一下,x创建了两个变量就是代表的产品1和产品2,dp表示的是正偏差变量,dm表示的是负偏差变量,无论是正偏差变量还是负偏差变量我们都设置3个,这三个偏差变量分别代表的是第一个约束条件的两个产品的生产数量之间的关系,第二个偏差变量代表这个生产时间的那个偏差,第三个偏差变量就代表的是生产利润的偏差;

在这个优化问题的创建的时候,里面的两个参数,第一个参数指明这个问题的属性,第二个参数min表示的就是求解的最小值问题,为什么是最小值,因为我们的目标函数(下面的这个式子),表示的就是这三个偏差变量的和,我们肯定是想让这三个偏差变量的和越小越好,因此我们这里是求得最小值;

(5)设置优化问题的约束条件 

就是我们上面的约束条件使用数学符号语言进行表达出来即可,dm表示的是正偏差变量,dp表示的是负偏差变量,p.Constraints.cons1表示的是第一个约束条件,cons2表示的就是第二个约束条件,为了简单,我们可以把多个约束条件放到一个中括号里面去;

(6)目标函数和求解

 

这个goal就是一个很大的约束,一个很大的约束相当于没有进行约束 ;

因为这个序贯算法要求每一级的求解是建立在上一级最优解的基础上面的,所以我们设置循环的时候相当于每次都是让这个目标产量小于100000,实际上也是不会达到这个熟数值的;

每一级计算出新的结果之后,都会更新到这个goal里面去,这样的话就可以保证每次计算的时候上一级就已经达到了最优解,符合序贯算法;goal(i)=fval就是把每一次计算的结果同步进去的过程;

这个地方的solve就是一个可以自动匹配求解的函数,返回值fval就是我们想要的值,xx就是一个两行一列的矩阵,这两个数据分别代表的就是产品1和产品2的生产数量;

下面的就是最后的求解结果,这里是一共进行了三次计算,每次计算都是在上一级达到最优解的情况下进行的,最后的结果就是产品1对应的是两个,产品2对应的是4个。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/633048.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode题练习与总结:二叉树的最大深度--104

一、题目描述 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&#xff1a;root […

Nginx/阿里云/二级域名的配置和使用

阿里云域名解析配置如下&#xff1a; nginx配置如下&#xff1a; 访问地址&#xff1a; zhadmin.iotzzh.com image.png

SD-WAN EVPN基本原理

SD-WAN EVPN是一种用于Overlay业务网络和底层传输网络分离以及业务网络路由和传输网络路由分离的VPN技术。SD-WAN EVPN技术采用类似于BGP/MPLS IP VPN的机制&#xff0c;通过扩展BGP协议&#xff0c;使用扩展后的可达性信息&#xff0c;使不同站点的底层传输网络互通&#xff0…

【NumPy】关于numpy.loadtxt()函数,看这一篇文章就够了

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

微服务如何做好监控

大家好&#xff0c;我是苍何。 在脉脉上看到这条帖子&#xff0c;说阿里 P8 因为上面 P9 斗争失败走人&#xff0c;以超龄 35 被裁&#xff0c;Boss 上找工作半年&#xff0c;到现在还处于失业中。 看了下沟通记录&#xff0c; 沟通了 1000 多次&#xff0c;但没有一个邀请投递…

MySQL-笔记-02.关系模型基本理论

目录 2.1 关系模型 2.1.1 基本概念 2.1.2 关系的完整性 1 实体完整性 2 参照完整性 3 用户定义完整性 2.2 关系代数 2.2.1 传统的集合运算 1 并运算 2 交运算 3 差运算 4 ​​笛卡尔积​编辑 2.2.2 专门的关系运算 1 选择 2 投影 3 连接 &#xff08;1&#xff09;等…

活动预告|来 GIAC 大会听大数据降本利器:AutoMQ 基于云原生重新设计的 Kafka

GIAC大会 2024年5月24日至25日&#xff0c;2024 全球互联网架构大会&#xff08;简称&#xff1a;GIAC大会&#xff09;将于深圳华侨城洲际酒店举行。大会将聚焦互联网架构热门的 AIGC、效能提升、 云原生架构、数据智能、新硬件等领域&#xff0c;甄选前沿的有典型代表性的技…

“手撕”String类+练习题

目录 一、什么是String类 二、String类的使用 三、String类的字符串操作 String对象的比较 字符串的查找 字符串的转换 字符串的替换 字符串的拆分 字符串的截取 大小写和去空格方法 四、字符串的不可变性 五、字符串的修改 六、StringBuilder类和StringBuffer类…

正确可用--Notepad++批量转换文件编码为UTF8

参考了:Notepad批量转换文件编码为UTF8_怎么批量把ansi转成utf8-CSDN博客​​​​​​https://blog.csdn.net/wangmy1988/article/details/118698647我参考了它的教程,但是py脚本写的不对. 只能改一个.不能实现批量更改. 他的操作步骤没问题,就是把脚本代码换成我这个. #-*-…

解锁创意新境界:StartAI插件让Photoshop飞起来!

Photoshop AI插件的革命性突破&#xff1a;StartAI插件的全面体验 作为一名AIGC测评博主&#xff0c;我一直在寻找能够提升设计效率和创意表现的工具。今天&#xff0c;我将带大家深入了解一款令人兴奋的Photoshop AI插件——StartAI&#xff0c;它不仅为设计师带来了前所未有…

新零售数据中台:构建零售业高效率、智能化的数据处理平台_光点科技

随着互联网技术的快速发展和移动支付、大数据等技术的广泛应用&#xff0c;零售行业已经逐渐从传统零售向新零售模式转变。在这个变革的时代背景下&#xff0c;新零售数据中台应运而生&#xff0c;它作为零售行业数据资源的整合与智能分析的核心载体&#xff0c;成为推动零售行…

C语言-----数据存储

# define _CRT_SECURE_NO_WARNINGS # include<stdio.h>int main(void) {char a -1;signed char b -1;unsigned char c -1;printf("a%d,b%d,c%d", a, b, c); //a-1,b-1,c255 }

Google发布的CAT3D,在1分钟内,能够从任意数量的真实或生成的图像创建3D场景。

给定任意数量的输入图像&#xff0c;使用以这些图像为条件的多视图扩散模型来生成场景的新视图。生成的视图被输入到强大的 3D 重建管道&#xff0c;生成可以交互渲染的 3D 表示。总处理时间&#xff08;包括视图生成和 3D 重建&#xff09;仅需一分钟。 相关链接 论文&#x…

Redis主从、哨兵、集群讲解

一、Redis主从 大家在面试中可能经常会被问到Redis的高可用问题。Redis高可用回答包括两个层面&#xff0c;一个就是数据不能丢失&#xff0c;或者说尽量减少丢失 ;另外一个就是保证Redis服务不中断 。 对于尽量减少数据丢失&#xff0c;可以通过AOF和RDB保证。 对于保证服务…

ROS | 用C++和python实现运动控制功能

基础知识&#xff1a; 用C实现&#xff1a; C代码&#xff1a; 用python实现&#xff1a; Python代码&#xff1a;

Git学习和使用指南详细篇

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【源码】二开版发卡自助下单授权DU系统/发卡秒u系统//完整总代理+子代理系统/支付模板全部优化授权

测试环境&#xff1a;宝塔、Linux系统、PHP7.4、MySQL5.6&#xff0c;根目录public&#xff0c;伪静态thinkPHP&#xff0c;开启SSL 和前面发的那一套不一样哈&#xff0c;这套是新的后端&#xff0c;然后用了前面那一套的前端支付授权模板&#xff0c;总之改了很多东西&#…

逻辑漏洞靶场通关

会员中心注册新用户test&#xff0c;密码123123 会员中心注册新用户name&#xff0c;密码abcabc 管理员账号admin&#xff0c;密码123456 1.普通账号间水平越权漏洞测试 一个网站登录普通账号test后修改信息时进行抓包 在重发器中修改普通账号test为普通账号name&#xff0c;并…

Win11系统CMD乱码

1. 背景 在打包前端代码的时候&#xff0c;看到系统控制台中竟然出现了乱码。想到之前就曾经出现过因为影响不大就一直放着没管。今天有空就把问题解决掉吧。 2. 解决过程 2.1 问题定位 在命令行中执行 chcp&#xff0c;看到返回结果如下 Active code page: 936936 代表的…

报名开启!2024 开源之夏丨Serverless Devs 课题已上线!

Serverless 是近年来云计算领域热门话题&#xff0c;凭借极致弹性、按量付费、降本提效等众多优势受到很多人的追捧&#xff0c;各云厂商也在不断地布局 Serverless 领域。 Serverless Devs 是一个由阿里巴巴发起的 Serverless 领域的开源项目&#xff0c;其目的是要和开发者们…