求解一道matlab的动态规划问题

求解一道matlab的动态规划问题,第1张

题主的求解一道matlab的动态规划问题,可以简化为求最小值优化问题,即

min (100+x1)^2+10*x1+(110+x2)^2+10*x2+(120+x3)^2+10*x3

求解上述最小值问题,可以用fmincon函数来解决。其解决方法为:

第一步,自定义目标函数,即

x1=ceil(k(1))x2=ceil(k(2))x3=0

maxZ=(100+x1)^2+10*x1+(110+x2)^2+10*x2+(120+x2)^2+10*x3

第二步,确定k的初值 ,k0=[0,0]

第三步,使用fmincon函数,即

[k,fval,exitflag] = fmincon(@(k) fmincon_fun(k),k0)

可以得到

x1=1x2=1(库存量)

fval=37183(最小总费用)

以前搞建模在网上下到的代码,不是自己编的,但经过试验可以用,分享了:

function len=dijkstra(Input)

%最短路Dijkstra算法,同时给出路径,input为图矩阵

row=size(Input,1)

%赋初值

% s_path=1

distance=inf*ones(1,row)

distance(1)=0

% flag(1)=1

temp=1

%求起点到各点的最短路的权

% s_path=ones(1,3)

while length(s_path)<row

pos=find(Input(temp, : )~=inf)

n=length(pos)

flag=ones(1,n)

for i=1:n

if (isempty(find(s_path==pos(i),1)))&&(distance(pos(i))>...

(distance(temp)+Input(temp,pos(i))))

distance(pos(i))=distance(temp)+Input(temp,pos(i))

flag(pos(i))=temp

end

end

k=inf

for i=1:row

if (isempty(find(s_path==i,1)))&&(k>distance(i))

k=distance(i)

temp_2=i

end

end

s_path=[s_path,temp_2]

temp=temp_2

end

%用追溯法得到起点到各点的最短路的路线

len=zeros(1,row)

for endpoint=1:row

path=0 %初始化

path(1)=endpoint

i=1

while path(i)~=1

path(i+1)=flag(path(i))

i=i+1

end

path(i)=1

path=path(end:-1:1)%最短路径

short_distance=distance(endpoint) %最短路径权

len(endpoint)=short_distance %起点到各点的最短距离

pathall=path %总路径矩阵

end

len=len(25:end)

%{

disp('起点到各点的最短路径:')

celldisp(pathall)

%设法只画出最短路径

em=find(w==inf)

w(em)=0

h = view(biograph(w,[],'ShowWeights','on'))

%}

邮箱给你发了个资料,多年前搞的,估计是忘了,也许这个函数有点问题,你按资料里的做吧

max Z=4x1+5x2 +6x3

s.t. 3x1+4x2+5x3<=10

x1,x2,x3>=0且都为整数

约束条件分析:

x1=1,2,3

x2=1,2

x3=1,2

阶段变量:x1、x2、x3

状态变量:

决策变量:

目标函数:Z=4x1+5x2 +6x3

状态转移方程:

约束条件用惩罚处理

……未完待续……


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11130353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存