⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example1.asv

📁 动态规划算法的顺序(前向求最小值)算法的matlab实现以及一个算例
💻 ASV
字号:
%***************************************************************%
%问题描述:例1 现有4种不同的车床1,2,3,4同时加工500件相同的零件,
  % 各车床加工一个零件的时间分别为0.5,0.1,0.2和0.05h.问如何给4个
  % 车床分配加工零件数目,使完工时间最短?

%算法设计:将问题按车床编号分为4个阶段,再外加1个阶段,共5个阶段.设状态变
  %量x表示可分配给第k号车床的零件数,决策变量u(k-1)表示分配给第k一1号车床的
  %零件数,状态转移方程为x(k-1)=x(k)+u(k-1),阶段目标函数L(x(k-l),u(k-1))
  %表示u(k-1)个零件分配给第k一1号车床加工所需的最短时间L(x(k-l),u(k-1))=u(k-1)*
  %t(k-1),t(k-1)是第是k-1号车床的加工时间.fk(x(k))表示状态变量为xk时所需的最短
  %时间,则基本方程为.....见文献。设想x(0)=500,若x(0)=500,则 f0(x0)=0,否则,
  %f0(x0)=infinity.根据上面所述的阶段目标函数、状态转移方程和基本方程,写出以下4个M一函数

%参数说明:p由四列构成,p=[ 阶段号; 状态; 决策; 阶段目标函数值];
  %f是一个列向量,各元素分别表示各最优策略对应的最优目标函数值.
  %p和f分别对应MinForeDynprog程序的两个输出参数OptPol和OptObjval
%详情参见MinForeDynprog代码说明
%***************************************************************%
clear;
n=500;x1=[n;nan*ones(n-1,1)];%除第一行为500外,其余皆为nan
x2=1:n;%x2为1到500的行向量
x2=x2';%把x2为变为1到500的列向量
x5=[0;nan*ones(n-1,1)];
x=[x1,x2,x2,x2,x5];
[p,f]=MinForeDynprog(x,'DecisF1','SubObjF1','TransF1','ObjF1')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -