现在时间是:
当前位置:首 页 >> 数学建模>> 教学区>> 文章列表

数学建模作业10

作者:王思婕   发布时间:2020-05-14 10:49:14   浏览次数:130

1a=[0,5,3,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf;

   inf,0,inf,1,3,6,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf;

   inf,inf,0,inf,8,7,6,inf,inf,inf,inf,inf,inf,inf,inf,inf;

   inf,inf,inf,0,inf,inf,inf,6,8,inf,inf,inf,inf,inf,inf,inf;

   inf,inf,inf,inf,0,inf,inf,3,5,inf,inf,inf,inf,inf,inf,inf;

   inf,inf,inf,inf,inf,0,inf,inf,3,3,inf,inf,inf,inf,inf,inf;

   inf,inf,inf,inf,inf,inf,0,inf,8,4,inf,inf,inf,inf,inf,inf;

   inf,inf,inf,inf,inf,inf,inf,0,inf,inf,2,2,inf,inf,inf,inf;

   inf,inf,inf,inf,inf,inf,inf,inf,0,inf,inf,1,2,inf,inf,inf;

   inf,inf,inf,inf,inf,inf,inf,inf,inf,0,inf,3,3,inf,inf,inf;

   inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,0,inf,inf,3,5,inf;

   inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,0,inf,5,2,inf;

   inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,0,6,6,inf;

   inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,0,inf,4;

   inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,0,3;

   inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,inf,0]

[D,path]=floyd1(a)

 

 

function [D,path]=floyd1(a)

n=size(a,1);

D=a;

path=zeros(n,n);

for i=1:n

    for j=1:n

        if D(i,j)~=inf

            path(i,j)=j

        end

    end

end

for k=1:n

    for i=1:n

        for j=1:n

            if D(i,k)+D(k,j)<D(i,j)

                D(i,j)=D(i,k)+D(k,j)

                path(i,j)=path(i,k)

            end

        end

    end

end

end

 

path =

 

     1     2     3     2     2     3     3     2     2     3     2     2     2     2     2     2

     0     2     0     4     5     6     0     5     5     6     5     5     5     5     5     5

     0     0     3     0     5     6     7     5     6     6     5     6     6     5     6     6

     0     0     0     4     0     0     0     8     9     0     8     8     9     8     8     8

     0     0     0     0     5     0     0     8     9     0     8     8     9     8     8     8

     0     0     0     0     0     6     0     0     9    10     0     9     9     9     9     9

     0     0     0     0     0     0     7     0     9    10     0    10    10    10    10    10

     0     0     0     0     0     0     0     8     0     0    11    12     0    11    12    12

     0     0     0     0     0     0     0     0     9     0     0    12    13    12    12    12

     0     0     0     0     0     0     0     0     0    10     0    12    13    12    12    12

     0     0     0     0     0     0     0     0     0     0    11     0     0    14    15    14

     0     0     0     0     0     0     0     0     0     0     0    12     0    14    15    15

     0     0     0     0     0     0     0     0     0     0     0     0    13    14    15    15

     0     0     0     0     0     0     0     0     0     0     0     0     0    14     0    16

     0     0     0     0     0     0     0     0     0     0     0     0     0     0    15    16

     0     0     0     0     0     0     0     0     0     0     0     0     0     0     0    16

 

 

 

2

function u=DecisF1(k,x)%决策函数

d=[2 3 2 4];m=6;

if k==4

    u=d(k)-x;

else

    u=max(0,d(k)-x):m;

end

function s=TransF1(k,x,u)%状态转移方程

d=[2 3 2 4];

s=x+u-d(k);

function f=SubObjF1(k,x,u)%阶段k的指标函数

d=[2 3 2 4];

if u==0

    f=0.5*(x+u-d(k));

else if u>6

        f=10^6;

    else 

        f=3+u+0.5*(x+u-d(k));

    end

end

 

 

clear;clc;

x1=0:4;

s=nan*ones(5,1);

s(1)=0;

x=[s x1' x1' x1'];

[p,f]=dynprog(x,'DecisF1','SubObjF1','TransF1')

 

 

p =

 

    1.0000         0    5.0000    9.5000

    2.0000    3.0000         0         0

    3.0000         0    6.0000   11.0000

    4.0000    4.0000         0         0

 

 

f =

 

   20.5000

 

 

 

 

 

3

 

function u=DecisF1(k,x)%决策函数

A=[600 700 500 1200];

if k==4

    u=A(k)-x;

else

    u=A(k)-x:10^6;

end

function f=SubObjF1(k,x,u)%阶段k的指标函数

A=[600 700 500 1200];

if u==0

    f=x+u-A(k);

else

f=(x+u-A(k))+0.005*(u^2);

end

 

function s=TransF1(k,x,u)%状态转移方程

A=[600 700 500 1200];

s=x+u-A(k);

end

 

 

clear;clc;

x1=0:4;

s=nan*ones(5,1);

s(1)=0;

x=[s x1' x1' x1'];

[p,f]=dynprog(x,'DecisF1','SubObjF1','TransF1')

 

 

p =

 

   1.0e+03 *

 

    0.0010       0    0.6000    1.8000

    0.0020      0    0.7000    2.4500

    0.0030      0    0.5040    1.2741

    0.0040    0.0040   1.1960    7.1521

 

 

f =

 

   1.2676e+04

 

>>

 

4

 

function y=ObjF1(v,f)%基本方程中函数

y=v+f;

y=-y;

 

function u=DecisF1(k,x)%决策函数

u=0:x;

end

function f=SubObjF1(k,x,u)%阶段k的指标函数

 

f=8*u+5*(x-u);

f=-f;

end

 

function s=TransF1(k,x,u)%状态转移方程

s=0.7*u+0.9*(x-u);

s=-s;

End

 

clear;clc;

x1=0:5;

s=nan*ones(6,1);

s(1)=1000;

x=[s x1' x1' x1' x1' x1'];

[p,f]=dynprog(x,'DecisF1','SubObjF1','TransF1','ObjF1')

 

 

5

 

function u=DecisF1(k,x)%决策函数

if k~=1

u=1:k-1;

else

    u=0;

end

 

function f=SubObjF1(k,x,u)%阶段k的指标函数

r=[5 4.5 4 3.75 3 2.5];

U=[0.5 1 1.5 2 2.5 3];

c=[0.5 1 1.5 2 2.5 3];

 

f=max(r(k)-U(k),r(1)-U(1)-c(k));

 

end

function s=TransF1(k,x,u)%状态转移方程

s=u;

End

 

clear;clc;

x1=0:5;

s=nan*ones(6,1);

s(1)=0;

x=[s x1' x1' x1' x1'];

[p,f]=dynprog(x,'DecisF1','SubObjF1','TransF1')

 

 

 

 

p =

 

    1.0000     0       0      4.5000

    2.0000     0      1.0000    3.5000

    3.0000    1.0000    2.0000    3.0000

    4.0000    2.0000    3.0000    2.5000

    5.0000    3.0000    4.0000    2.0000

 

 

f =

 

   15.5000

 







上一篇:没有了    下一篇:没有了

Copyright ©2020    计算数学达人 All Right Reserved.

技术支持:自助建站 | 领地网站建设 |短信接口 |燕窝 版权所有 © 2005-2020 lingw.net.粤ICP备16125321号 -5