【Matlab】动态规划算法代码记录

这篇具有很好参考价值的文章主要介绍了【Matlab】动态规划算法代码记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简单记录一下学习Matlab过程中的代码。

一、01背包问题

参考资料:0-1背包问题

%01背包问题
clc;clear
thing=[1500;3000;2000;2000;100];thing_weight=[1;4;3;1;1];   %定义物品参数
bag=zeros(length(thing),4);[a,b]=size(bag);     %创建矩阵
for row=1:a
    for col=1:b
        if row == 1     %定义第一行数据
            bag(row,col) = thing(row);
        else            %其他行
            if col>thing_weight(row)   %口袋承重大于该行物品重
                bag(row,col) = max(bag(row-1,col),thing(row)+bag(row-1,col-thing_weight(row)));
            elseif col==thing_weight(row)
                bag(row,col) = max(thing(row),max(bag(:,col)));
            else                        %口袋承重小于该行物品重
                bag(row,col) = bag(row-1,col);
            end
        end
    end
end
disp(bag)

二、最少硬币个数问题

参考资料:清华学霸总结的动态规划4步曲,仅这篇动归够了文章来源地址https://www.toymoban.com/news/detail-588057.html

%%最少硬币组合
clc;clear
%%定义初始参数
coin=[2 5 7];
goal=27;
f=zeros(goal+2,1);
f(1)=inf;   %正无穷大
f(2)=0;
%%递归
for x=3:goal+2
    i=x-2;
    j=x-5;
    k=x-7;
    if i<0
        i=1;
    elseif i==0
        i=2;
    end
    if j<0
        j=1;
    elseif j==0
        j=2;
    end
    if k<0
        k=1;
    elseif k==0
        k=2;
    end
    f(x)=min([f(i)+1 f(j)+1 f(k)+1]);
end
n=f(end);   %符合goal的最少硬币数
disp(n)
%%查看硬币组合情况
%定义硬币库
a1=ones(n,1)*2;
a2=ones(n,1)*5;
a3=ones(n,1)*7;
A=[a1,a2,a3];
while true
    random_num = A(randperm(numel(A),n));   %从A中随机取n个元素
    if sum(random_num)==goal
        break
    end
end
disp(sort(random_num))

三、线性规划最优解

%水库动态规划
clc;clear
%每月来水量
input=[10 10 10 10 40 40 40 40 5 5 5 5];
%初始水量、最大水量、最小水量
w0=100;mx=130;mn=70;
%各月电价(水价)
f=[2;2;4;2;5;6;1;4;3;5;3;2]*-10;	% *-10是为了使输出结果更直观;负号是为了求最大值
%水库剩余水量应介于最大最小之间
b1=zeros(12,1);
b2=zeros(12,1);
p1=mx-w0;
p2=w0-mn;
for i=1:12
    p1=p1-input(i);
    p2=p2+input(i);
    b1(i)=p1;
    b2(i)=p2;
end
b=[b1;b2];
a1=tril(ones(12))*-1;	%下三角矩阵
a2=tril(ones(12));
a=[a1;a2];
[x,y]=linprog(f,a,b,[],[],ones(12,1)*5);	%求函数f最小值
disp(x)
disp(-y)
xplot=[1 2 3 4 5 6 7 8 9 10 11 12];
plot(xplot,f*-1,xplot,x,xplot,input)
xlabel('月份')
legend('电价','放水量','来水量')

到了这里,关于【Matlab】动态规划算法代码记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 轨迹规划 | 图解动态窗口算法DWA(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Moti

    2024年02月08日
    浏览(52)
  • 路径规划 | 图解动态A*(D*)算法(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法

    2024年02月03日
    浏览(65)
  • 【路径规划matlab代码】基于遗传算法求解机器人栅格地图路径规划问题

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年03月08日
    浏览(69)
  • 【路径规划】基于遗传算法求解机器人栅格地图路径规划问题matlab代码

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年01月24日
    浏览(64)
  • 【MATLAB源码-第64期】matlab基于DWA算法的机器人局部路径规划包含动态障碍物和静态障碍物。

    动态窗口法(Dynamic Window Approach,DWA)是一种局部路径规划算法,常用于移动机器人的导航和避障。这种方法能够考虑机器人的动态约束,帮助机器人在复杂环境中安全、高效地移动。下面是DWA算法的详细描述: 1. 动态窗口的概念 动态窗口法的核心概念是“动态窗口”,这是

    2024年02月05日
    浏览(52)
  • 基于A*算法的机器人迷宫路径规划(MATLAB代码)

    基于A*算法的机器人迷宫路径规划(MATLAB代码) 迷宫路径规划是一个经典的问题,涉及到在迷宫中找到从起点到终点的最短路径。其中,A 算法是一种常用的启发式搜索算法,它结合了Dijkstra算法和启发式函数,能够有效地找到最优路径。在本文中,我们将介绍如何使用MATLA

    2024年02月07日
    浏览(44)
  • 基于蚁群算法的无人机航路规划研究附MATLAB代码

    基于蚁群算法的无人机航路规划研究附MATLAB代码 无人机航路规划是无人机应用中的关键问题之一,它涉及到如何有效地规划无人机的航路,以实现任务的完成和路径的优化。蚁群算法是一种模拟蚁群觅食行为的启发式优化算法,被广泛应用于解决各种路径规划问题。本文将介

    2024年02月07日
    浏览(53)
  • 无人机三维路径规划matlab代码 基于麻雀算法SSA的复杂山地环境下路径规划

     ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进, 代码获取、论文复现及科研仿真合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab完整代码及仿真定制内容点击👇 智能优化算法       神经网络预测       雷达通信    

    2024年02月02日
    浏览(92)
  • Matlab数学建模算法详解之混合整数线性规划 (MILP) 算法(附完整实现代码)

    🔗 运行环境:Matlab 🚩 撰写作者:左手の明天 🥇 精选专栏:《python》 🔥  推荐专栏:《算法研究》 ####  防伪水印—— 左手の明天 #### 💗 大家好🤗🤗🤗,我是 左手の明天 !好久不见💗 💗今天分享matlab数学建模算法—— 混合整数线性规划 (MILP) 算法 💗

    2024年02月04日
    浏览(48)
  • 基于Bresenham直线算法的机器人栅格地图路径规划(附带Matlab代码)

    基于Bresenham直线算法的机器人栅格地图路径规划(附带Matlab代码) 路径规划是机器人导航中的关键任务之一,它涉及寻找从起点到目标点的最优路径。在栅格地图中,机器人通常被表示为一个点,而障碍物被表示为栅格单元。Bresenham直线算法是一种经典的图形算法,可以用于

    2024年02月07日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包