matlab+cplex解决简单运输问题(记录第一次使用matlab+cplex)

cplex下载时附带的文件夹中有许多例子可供学习,我这个代码也主要是参考了里面的例题写的。第一次用matlab +cplex,所有是很简单的运输问题,代码也不长。

一、简单的运输问题模型:

(1)符号:

  • m个工厂,n个仓库
  • :第i个工厂的供应
  • :第j个仓库的需求
  • :i, j之间的运输成本

(2)决策变量: ,从工厂i到仓库j的货物运输量

(3) 模型: 

(4)选取一个具体的简单案例

有三个工厂,产量分别为S1=75、S2=125、S3=100;有四个仓库,需求分别为d1=80、d2=65、d3=70、d4=85。每个工厂到仓库的成本如下:

仓库1仓库2仓库3仓库4
工厂1464513654867
工厂2352416690791
工厂3995682388685

二、小白代码部分/(ㄒoㄒ)/~~

function transport()
try 
    %读入数据
    [supply,demand,cost] = inputdata ('D:/Cplex/exercise/data.dat');%[供应,需求,成本]
     cost = reshape (cost', 12, 1);
     
     nbfactory = length(supply);%工厂(供应方)的数量
     nbwarehouse = length(demand);%仓库(需求方)的数量
     
     %建立模型
     cplex = Cplex('transport');
     
     %模型要求成本最小化
     cplex.Model.sense = 'minimize';
     %obj是目标函数系数,lb是每个决策变量的下界
     obj = cost;
     lb = zeros(nbfactory*nbwarehouse,1);
     cplex.addCols(obj,[],lb);
     
     %添加约束:每个仓库的需求都刚好被满足
     for j = 1:nbwarehouse
         v = zeros(1,nbfactory*nbwarehouse);
         v((j-1)*nbfactory+1:(j-1)*nbfactory+nbfactory) = ones(1,nbfactory);
         cplex.addRows(demand(j),v,demand(j));
     end
     
     %添加约束:每个工厂的总供货量等于其产量
     for i = 1:nbfactory
         v = zeros(1,nbfactory*nbwarehouse);
         v(i:nbfactory:nbfactory*nbwarehouse) = ones(1,nbwarehouse);
         cplex.addRows(supply(i),v,supply(i));     
     end
    
    %求解模型
    cplex.solve();
    cplex.writeModel('transport.lp');
    
    %展示模型结果
    fprintf ('\nSolution status = %s\n',cplex.Solution.statusstring);
    if cplex.Solution.status == 1
        fprintf ('\nMinimum Cost: %f \n', cplex.Solution.objval);
        supplies = cplex.Solution.x;
        fprintf('\nSpecific Plan:');
        for i = 1:nbfactory
            x = supplies(i:nbfactory:nbfactory*nbwarehouse);
            fprintf('\nThe amount of supply shipped to the warehouse by the %dth factory:',i);
            fprintf('%f ',x);
        end
    end
    catch m
   disp (m.message);
   throw (m);
end
end

三、代码运行结果​​​​​​​

 

如果有错误还望大佬指出!!! 

物流配送优化是一个复杂的问题,可以使用数学建模和优化算法来解决。其中,IBM的CPLEX是一个强大的数学优化工具,可以用于解决物流配送优化问题。 CPLEX是一个商业化的数学优化软件,它提供了一套丰富的API和建模语言,可以用于建立和求解各种数学优化模型。在物流配送优化中,可以使用CPLEX来建立一个数学模型,然后使用CPLEX求解器来找到最优的配送方案。 具体来说,可以使用CPLEX来建立一个线性规划模型或混合整数规划模型,其中包括以下几个关键要素: 1. 网点位置和配送站点的选择:可以将网点和配送站点表示为变量,并使用约束条件来限制配送站点的数量和位置。 2. 配送时间和成本:可以将配送时间和成本表示为目标函数的一部分,并使用约束条件来限制配送时间和成本的范围。 3. 配送量均衡:可以使用约束条件来确保各配送站点的配送量均衡,避免资源浪费或延误配送。 4. 配送路线和路径选择:可以使用约束条件来限制配送路线和路径选择,以确保配送时间不超过规定的时间限制。 通过将这些要素组合在一起,可以建立一个数学模型,并使用CPLEX求解器来找到最优的配送站点设置方案。 需要注意的是,CPLEX是一个商业化的软件,需要购买和安装才能使用。另外,使用CPLEX进行物流配送优化需要一定的数学建模和编程知识。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值