MATLAB7.0学习之一到运筹学的实验题解答

        这几天,小伙伴又来找笨小葱,说她有一道运筹学实验题需要笨小葱帮忙解决一下。我一看题目,顿时感觉,好高端的样子。幸好小伙伴提供了答案,需要的是,笨小葱使用matlab编程实现一下答案。于是乎matlab学习之路就此开始咯。首先选择版本,看了一下最新的2014要7个G,吓了一跳。都赶上网游了。。。于是选用了十年前的金典matlab7.0版本,1个G左右。

        下面是整个解决问题过程:

1.网上下载matlab7.0

安装:修改系统变量tmp和temp的值为:c:\temp
              不要解压下载的安装包,直接通过winrar进去,双击setup按钮
              安装界面输入cdkey(百度一下)

安装完成后,如果点击运行,出现如下界面:

那么,进入到软件执行程序,也就是这个 ,右键 属性->兼容性 ->勾选"以兼容模式运行这个程序"->选择Windows Vista SP1->勾选"以管理员身份运行此程序"->确定即可

下面进入matlab运行界面:


matlab基础知识:


这里clear需要注意,清除内存变量,比较实用。








了解了基本命令和使用方法后,直接跳到矩阵的生成知识(因为立马要用到)
首先看数组:
>>array=[1 2 3 4];
要访问array数组中的第2个元素:
>>array(2)
要访问array数组中的第2到4个元素:
>>array(2:4 )

我们这里需要通过函数生成矩阵:
>>B=zeros(4,5)    %生成4行5列的零矩阵

matlab程序书写在M文件中,M文件有2中,一种脚本式(script),一种函数式(function)
(1)函数式M文件名和出现在文件的第一行的函数名必须相同。实际上,matlab忽略第一行函数名,并根据文件名来执行函数。
(2) 函数的文件名最多可以有31个字符。
(3)函数名必须以字母开头

下面我们用一个简单的demo来看看2中M文件间的调用
首先写一个add(a,b)函数,将其保存在MATLAB7\work目录下。
   

然后写一个脚本调用这个add函数。同样保存在work目录下

然后执行脚本
>>test
得到输出结果:



到这里我们暂时需要的技能都已经get啦。

下面开始解决问题:

【3】购车问题

Tom大学毕业后刚取得汽车驾驶执照,对SKY05型小汽车情有独钟。准备第1年年初买一辆使用了3年的SKY05型二手车,价格为7.12万元。1年后可以继续使用该车,也可以卖掉购买同一品牌的新车,不再购买二手车。通过市场调查和预测,得到有关资料。

    (1)该车第1年初的价格为10万元,以后逐年降价,第2年到第5年的的降价幅度分别为4%、5%、7%、5%。第t年的价格记为Ptt=1,2,…。

    (2)购新车必须支付10%的各项税费。购置费用记为CtCt=1.1Pt

    (3)该车第t年的维护费用Mt是使用年限t的函数,Mt=0.4t1.3

(4)汽车年折旧率为15%,汽车残值为:Bt0.85 tPt

无论第5年末更新或不更新,将汽车残值从总成本中减去,等价于将车卖掉。Tom如何制定一个5年的购车方案使5年的总成本最低(不计其它成本)。



------------------------------------------------------------------------

模型建立: 

(1)由题意可该购车问题分为五个阶段T=[1,2,3,4,5],T表示第i各阶段(第i年) 

(2)某个阶段的指标函数为:d=购置费+维修费-残值,当汽车未更新是购置费减去残值即为某一年对汽车的折旧费, 

(3)记第一年到某一年的总成本为55万,A中第i行第j列的某个值,当i=j时表示为第i年更换汽车 

(4)所以第5列中的最小值为5年内的最低成本,由此依次向前推找出每列的最小值,当i=j时A(i,j)为第i列中最小值时,即第j年更换汽车,由此可得一个总成本最低的购车方案。


MATLAB编程实现:

首先定义维修费函数:
function y=repaire(t)
 y=0.4*t^1.3;

残值函数:
function y=residual(t,pt) 
y=(0.85^t)*pt; 

指标函数:
function y=cost(a,b,c)
y=a+b-c;
  

然后编写代码调用
B=[7.2,9.6,9.12,8.482,8.058];   %汽车价格
 C=[7.2,10.56,10.032,9.330,8.863];     %汽车购置费
 A=zeros(5,5);        %对角线上的值表示那一年购买新车,理解这个便于理解下面的t的取值问题
for i=1:5           %第一重循环
     if i==1       %因为tom第一年购买的是使用三年的二手车,所以t=4,维修费是repaire(4)
            t=4;    
     else              
            t=1;   
       end     
     for j=i:5                                %j=i,说明只取矩阵上三角
        y1=repaire(t);         
          if i==1 
           y2=residual(t-3,B(i));        %残值从拿到车后就从当年开始计算(购买时,已经是花的残值的价格购买的)
          else 
           y2=residual(t,B(i));        
           end        
           if j==i          
                 switch i              
                          case 1  
                             A(i,j)=cost(C(i),y1,y2);               
                         case 2                   
                                 Q=A(:,1);                                  %   符号:表示列所有元素,1表示第一列
                             Q(find(Q==0))=NaN;                   
                                 m=min(Q); 
                          A(i,j)=cost(C(i),y1,y2)+m;     % 这里取对映列的最小值,求和,表示这一年购买新车的累计最低消费       
                         case 3                  
                                Q=A(:,2); 
                             Q(find(Q==0))=NaN;                   
                                  m=min(Q);
                                  A(i,j)=cost(C(i),y1,y2)+m;              
                         case 4                   
                                   Q=A(:,3); 
                                Q(find(Q==0))=NaN;                   
                                     m=min(Q); 
                             A(i,j)=cost(C(i),y1,y2)+m;             
                          case 5                   
                                     Q=A(:,4); 
                                 Q(find(Q==0))=NaN;                  
                                    m=min(Q); 
                                 A(i,j)=cost(C(i),y1,y2)+m;             
            end        
            else  
                   A(i,j)=cost(y2/0.85,y1,y2)+A(i,j-1);         
           end        
                 t=t+1;    
  end 
end

A

得到矩阵如下:



由运行程序得到的结果可得一个5年的购车计划始终成本最低:
 第一年购买二手车使用一年,第二年购买新车使用两年,第四年更换新车使用到第五年末,可得最低成本为13.1007万元。


ps:好啦,到这里就可以交差了,再次说明,答案是小伙伴提供的,笨小葱太笨了搞不懂运筹学这种高端东东(⊙o⊙) 大哭

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值