📄 example1.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 + -