m0_63664562 2022-04-18 20:30 采纳率: 88.2%
浏览 49
已结题

matlab动态规划问题。

这里我只列出了订购4套和5套的情况,一开始以为能弄出所有排列情况即可,但是结果是我写的排列中没有出现数字有重复的排列,类似于(1,1,2)(1,1, 3)这样的有重复数字的排列,导致计算订购5套时只得到答案时(0,2,3),未得到正确答案(1,1,3),如何在此代码上进行修改从而把有重复数字的排列加进去?

img

clc;clear;
A=[ 0 1 2 3 4];
A1=[0 1 2 3 4 5];
A2=[0 1 2 3 4 5 6];
B=nchoosek(A,3);
B1=nchoosek(A1,3);
B2=nchoosek(A2,3);
C=fliplr(B);
C1=fliplr(B1);
C2=fliplr(B2);
sum=[B;C];
sum1=[B1;C1];
sum2=[B2;C2];
[m,n]=size(sum);
[m1,n1]=size(sum1);
[m2,n2]=size(sum2);
blank=zeros(m,1);
blank1=zeros(m1,1);
blank2=zeros(m2,1);
%%
for i=1:m
        a4=sum(i,1);
        switch a4
            case 0
                a1=0;
            case 1
                a1=3;
            case 2
                a1=5;
            case 3
                a1=6;
            case 4
                a1=7;
        end
                
            
        b4=sum(i,2);
        switch b4
            case 0
                b1=0;
            case 1
                b1=4;
            case 2
                b1=6;
            case 3
                b1=7;
            case 4
                b1=8;
        end
            
        c4=sum(i,3);
        switch c4
            case 0
                c1=0;
            case 1
                c1=2;
            case 2
                c1=5;
            case 3
                c1=9;
            case 4
                c1=8;
        end
        if a4+b4+c4==4
        sum11=a1+b1+c1;
        blank(i,1)=sum11;
        end
    
end
MAX=max(blank);
[q,w]=find(blank==MAX);
final=sum(q,:)
%%
for i=1:m1
        a5=sum1(i,1);
        switch a5
            case 0
                a1=0;
            case 1
                a1=3;
            case 2
                a1=5;
            case 3
                a1=6;
            case 4
                a1=7;
            case 5
                a1=6;
                
                
        end
                
            
        b5=sum1(i,2);
        switch b5
            case 0
                b1=0;
            case 1
                b1=4;
            case 2
                b1=6;
            case 3
                b1=7;
            case 4
                b1=8;
            case 5
                b1=9;
        end
            
        c5=sum1(i,3);
        switch c5
            case 0
                c1=0;
            case 1
                c1=2;
            case 2
                c1=5;
            case 3
                c1=9;
            case 4
                c1=8;
            case 5
                c1=8;
        end
        if a5+b5+c5==5
        sum22=a1+b1+c1;
        blank1(i,1)=sum22;
        end
end
        MAX1=max(blank1);
[q1,w1]=find(blank1==MAX1);
final1=sum1(q1,:)

1)当可分配设备数为4时,最终得到最优决策为(0,1,3)即1分厂不分配设备,2分厂分配1个设备,3分厂分配3个设备,得到最优解为13万元
2)当可分配设备数为5时,最终得到最优决策为(1,1,3)即1分厂分配1台设备,2分厂分配1台设备,3分厂分配3个设备,得到最优解为16万元

  • 写回答

2条回答 默认 最新

  • czy1219 2022-04-18 22:05
    关注

    更改如下:

    clear all
    clc
    % clc;clear;
    % A=[ 0 1 2 3 4];
    % A1=[0 1 2 3 4 5];
    % A2=[0 1 2 3 4 5 6];
    % B=nchoosek(A,3);
    % B1=nchoosek(A1,3);
    % B2=nchoosek(A2,3);
    % C=fliplr(B);
    % C1=fliplr(B1);
    % C2=fliplr(B2);
    % sum=[B;C];
    % sum1=[B1;C1];
    % sum2=[B2;C2];
    % [m,n]=size(sum);
    % [m1,n1]=size(sum1);
    % [m2,n2]=size(sum2);
    blank=0;
    blank1=0;
    % blank2=zeros(m2,1);
    %%
    sum11=0;
    for i=0:4
        %a4=sum(i,1);
        switch i
            case 0
                a1=0;
            case 1
                a1=3;
            case 2
                a1=5;
            case 3
                a1=6;
            case 4
                a1=7;
        end
        for j=1:4
            %b4=sum(j,2);
            switch j
                case 0
                    b1=0;
                case 1
                    b1=4;
                case 2
                    b1=6;
                case 3
                    b1=7;
                case 4
                    b1=8;
            end
            
            for k=0:4
                %c4=sum(k,3);
                switch k
                    case 0
                        c1=0;
                    case 1
                        c1=2;
                    case 2
                        c1=5;
                    case 3
                        c1=9;
                    case 4
                        c1=8;
                end
                if i+j+k==4
                    sum11=a1+b1+c1;
                    if blank<sum11
                        blank=sum11;
                        list=[i,j,k];
                    end
                end
                
            end
        end
    end
    MAX=blank %最大获利
    list %z最终结果
    %%
    
    sum12=0;
    for i=0:5
        switch i
            case 0
                a1=0;
            case 1
                a1=3;
            case 2
                a1=5;
            case 3
                a1=6;
            case 4
                a1=7;
            case 5
                a1=6;
        end
        for j=0:5
            switch j
                case 0
                    b1=0;
                case 1
                    b1=4;
                case 2
                    b1=6;
                case 3
                    b1=7;
                case 4
                    b1=8;
                case 5
                    b1=9;
            end
            for k=0:5
                switch k
                    case 0
                        c1=0;
                    case 1
                        c1=2;
                    case 2
                        c1=5;
                    case 3
                        c1=9;
                    case 4
                        c1=8;
                    case 5
                        c1=8;
                end
                if i+j+k==5
                    sum12=a1+b1+c1;
                    if blank1<sum12
                        blank1=sum12;
                        list1=[i,j,k];
                    end
                end
            end
        end
    end
    MAX1=blank1 %最大获利
    list1 %z最终结果
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月26日
  • 已采纳回答 4月18日
  • 创建了问题 4月18日

悬赏问题

  • ¥50 mac mini外接显示器 画质字体模糊
  • ¥15 TLS1.2协议通信解密
  • ¥40 图书信息管理系统程序编写
  • ¥20 Qcustomplot缩小曲线形状问题
  • ¥15 企业资源规划ERP沙盘模拟
  • ¥15 树莓派控制机械臂传输命令报错,显示摄像头不存在
  • ¥15 前端echarts坐标轴问题
  • ¥15 ad5933的I2C
  • ¥15 请问RTX4060的笔记本电脑可以训练yolov5模型吗?
  • ¥15 数学建模求思路及代码