学习清风蒙特卡罗书店买书0-1规划问题——学习笔记

本人小白,仅为本人学习笔记

 1.问题

某同学要从6家线上商城购买5本书籍B1,B2,B3,B4,B5,每本书记在不同商家的售价及每个商家的单次运费如下表所示,请该同学制定最省钱的选购方案。

 2.代码

clear;clc

%%  代码部分
M=[18 39 29 48 59    %导入每家书店对应5本书对应的价格
   24 45 23 54 44
   22 45 23 53 53
   28 47 17 57 47
   24 42 24 47 59
   27 48 20 55 53];
freight=[10 15 15 10 10 15];   %导入每家店的对应的运费
valuemin=inf;                  %最小总花费初始化
choose=[1 1 1 1 1];            %选择书店初始化
valuemin1=M(1,1)+M(1,2)+M(1,3)+M(1,4)+M(1,5)+freight(1);   %总花费初始化
for i=1:100000         %模拟随机选择100000次
    choose=randi([1,6],1,5);   %每本书随机选择的书店
    t=unique(choose);          %所购买书的书店
    [n,m]=size(t); 
    for i1=1:5     %购买所有书的价格总和  
        valuemin1=valuemin1+M(choose(i1),i1);
    end
    for i2=1:m     %加上运费,总消费的总和
        valuemin1=valuemin1+freight(t(i2));
    end
    if valuemin>=valuemin1    %对比选择出最小花费
       valuemin=valuemin1;
       choose1=choose;   
    end
    valuemin1=0;
end
disp(['最小花费为:',num2str(valuemin)]);
disp(['五本书分别到:',' ',num2str(choose1(1)),' ',num2str(choose1(2)),' ',num2str(choose1(3)),' ',num2str(choose1(4)),' ',num2str(choose1(5)) ,'购买']);

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值