数学建模(7)动态规划以及matlab实现

数学建模(7)动态规划以及matlab实现数学建模(7)动态规划概念运筹学分支,求解多阶段决策过程最优化问题的数学方法思路将复杂的多阶段决策问题分解为一系列的简单,离散的单阶段决策问题,顺序求解法在考虑本阶段最优的情况下兼顾整体最优的解决方法主要处理离散连续型问题特点没有特定的算法,需要具体问题具体分析无后效性马尔科夫性,系统从某个阶段后的发展仅与本阶段所处的状态和以后的决策所做的决策所决定,与之前的状态无关。具体问题企业…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

数学建模(7)动态规划以及matlab实现

概念

运筹学分支,求解多阶段决策过程最优化问题的数学方法
思路将复杂的多阶段决策问题分解为一系列的简单,离散的单阶段决策问题,顺序求解法
在考虑本阶段最优的情况下兼顾整体最优的解决方法
主要处理离散连续型问题
特点没有特定的算法,需要具体问题具体分析
无后效性马尔科夫性,系统从某个阶段后的发展仅与本阶段所处的状态和以后的决策所做的决策所决定,与之前的状态无关。
具体问题企业管理,资源分配,路径优化,排序问题,最优控制

步骤思路

1.将问题转化为动态规划类型的问题
2.划分阶段
3.确定状态(若干状态)
4.决策,决策变量(描述决策变化的量),允许决策集合(决策变量的一定允许取值范围,由约束条件决定)
5.策略和允许策略集合(决策序列)全过程策略,k部子策略
6.状态转移方式,从一个状态转移到另一个状态的转移的方式
7.状态转移方程,描述状态转移过程由状态转移方程描述
8.指标函数,描述决策效果的函数
阶段指标函数(阶段效应):描述第k步处于某状态且做出某策略时的指标
过程指标函数(目标函数):描述第k步处于某状态且做出某策略时,目前状态距离目标状态的多少

动态规划的最优性原理
无论过去的状态跟决策如何,对前面的决策所形成的状态而言,后续决策必须构成最优策略。
对于动态规划而言,重要的并不是所谓的模板,比较重要的是在动态规划中,推导的思维方式。在个人看来动态规划实际就是编程解决大量数据的决策问题的一种重要编程理念和编程思路。
在动态规划的思路即是反向确立后三次状态改变的两次决策量的最优决策,确定了该最优决策之后每次反向推导一步,穷举倒数第三次的不同决策所带来的状态变化量,与之前所得到的的最优决策量进行加成处理(可能加和也可能相减或相乘相除,具体视情况而定),将所得后三次决策的总决策量对比选取最优值,作为后四步的最优状态变化值。先前重复推导,最终得到该问题的最优策略。

最好还是通过例题来理解:

例:
在这里插入图片描述

首先本文将如上问题转换为动态规划问题,首先确定本文所解决问题总共要对三个公司进行设备分配,共分为两个求最优决策的阶段。其次确定指标函数:给每个厂分配相应数量所得到的的收益。
状态变量:每个厂分配到的设备的数量,
决策变量:每一阶段进行决策改变时该厂所分配到设备
由此可以首先推导出每次做出决策后的状态转移方程,

求设备收益的最大化即是求在两个阶段的中做出的所有决策,进而得到各阶段最优的目标函数,最后得到最优策略和最优值。据此本文成功将原本的问题转换为动态规划问题。针对该问题本文决定采用倒推穷举法,利用matlab编程得到最优策略与最优解

在matlab求解中本文首先利用嵌套循环语句筛选出第一阶段和第二阶段的最优决策,并利用选择语句得到此时的对应状态变量。

(1)当可分配设备数为4时,最终得到最优决策为(0,1,3)即1分厂不分配设备,2分厂分配1个设备,3分厂分配3个设备,得到最优解为13万元

(2)当可分配设备数为5时,最终得到最优决策为(1,1,3)即1分厂分配1台设备,2分厂分配1台设备,3分厂分配3个设备,得到最优解为16万元

(3)当可分配设备数为6时,最终得到最优决策为(1,2,3)或者(2,1,3)即1分厂分配1台设备,2分厂分配2台设备,3分厂分配3个设备或者1分厂分配2台设备,2分厂分配1台设备,3分厂分配3个设备,得到最优解为18万元

Matlab代码:
a = zeros(1,5); %建立一个1*5的空矩阵用于储存f1(x)+g2(4-x)的结果
f1=[0 3 5 6 7 6 5]
f2=[0 4 6 7 8 9 10]
f3=[0 2 5 9 8 8 7]      %输入
s1 = zeros(1,5);        
s2 = zeros(1,5);        %分别建立两个1*5空矩阵储存f2(x)+f3(x)以及min(g2)
i = 0;
s = 0;
z = 0;
s3=[0,0,0];             %建立一个1*3空矩阵用于记录每一状态的最佳决策
while (i<=4)            %利用两个循环语句分别计算出min(g2)再与f1(x)相加   
j=4-i;
while(j>=0)       
k=4-i-j;       
s1(j+1)=f2(j+1)+f3(k+1)       
if s1(j+1)>z         %利用if语句找到g2最小时对应的给2,3厂分配的设备数
            z=s1(j+1)
            s3(2)=j
            s3(3)=k       
end       
j=j-1;   
end   
s2(i+1)=max(s1)
if s2(i+1)>s        %同理利用if语句找到f1(x)的最佳决策       
s=s2(i+1);       
s3(1)=i;   
end   
s1=zeros(1,5);          %将s1置零记录下一次的g2的值   
a(i+1) = f1(i+1)+s2(i+1)   
i=i+1;
end
a
s3

Jetbrains全家桶1年46,售后保障稳定

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226807.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • macpro录屏快捷键_mac屏幕录制设置

    macpro录屏快捷键_mac屏幕录制设置在视频内容越来越丰富的今天,录屏是我们经常会用到的一个功能,不管是录制一些无法下载的视频还是录制屏幕制作自己的视频,都需要用到录屏功能,本文中我们来推荐几款好用的Mac录屏软件Mac系统自带的录屏工具虽然我们可能天天都在使用Mac系统,但是可能很多人都不知道,其实Mac已经自带了一个好用的截图和录屏工具,你可以随时使用Command+Shift+5快捷键调出Mac自带的录屏功…

    2022年9月25日
    2
  • Mysql慢查询_mysql并发查询慢

    Mysql慢查询_mysql并发查询慢慢查询日志概念MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动慢查询日志,需要我们手动来设置这个参数,当然,如果不是调优需要的话,一般不建议启动该参数…

    2022年10月9日
    4
  • pycharm怎么装第三方库jieba_python怎么导入requests库

    pycharm怎么装第三方库jieba_python怎么导入requests库PyCharm安装第三方库是十分方便的,无需pip或其他工具,平台就自带了这个功能而且操作十分简便。如下:

    2022年8月25日
    9
  • “永恒之蓝”病毒防护[通俗易懂]

    “永恒之蓝”病毒防护[通俗易懂]“永恒之蓝”勒索蠕虫涉及多个Windows系统服务的远程执行命令,恶意代码会扫描开放的445文件共享端口!只要开机的情况下,无需用户任何操作,就能控制你的电脑!SMB服务进行网络攻击的蠕虫病毒,简单的说就是:你局域网内如果有一台机器中了这个病毒,它会向整个网络传播,这个是非常可怕的!现在著名的勒索病毒和挖矿病毒都是利用这个漏洞进行传播,中了勒索病毒,就是交钱数据也回不来。不能全指望杀毒软…

    2022年10月16日
    0
  • Can通信接口学习笔记[通俗易懂]

    Can通信接口学习笔记[通俗易懂]第一步:了解Can通信接口协议,这里推荐大家<<Can入门教程>>(必读),里面详细说明的can相关知识点;另外推荐大家看有关Can协议标准书籍(选读),相关的pdf书籍下载地址:链接:https://pan.baidu.com/s/1KDtoqkm541xZhoTUpXVJaw提取码:9dvs第二步:特别需要关注点,1、通信速度与传输距离关系,2、通讯接口的硬…

    2022年6月20日
    36
  • 编译LAVFilters

    编译LAVFiltersLAV Filters编译全攻略0. Msys mingw安装1. Git安装2. Yasm下载3. Lavfiltes下载4. Ffmpeg下载5. Pkg-config 不用单独用gtk+包包含了很多工具和库用于mingw 【开发环境】直接下载的地址http://xhmikosr.1f0.de/tools/ 且包含了yasm zlib等已经弄好了。-j8也可

    2022年5月21日
    50

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号