绝了,通用Lingo模型巧解运输问题:同时兼顾产销平衡与不平衡

            在运筹学领域,运输问题是一个经典且实用的优化模型,旨在寻找最低成本的货物分配方案,以满足多个供应点向多个需求点的配送需求。运输问题可分为两类:产销平衡与产销不平衡。本文将以Lingo编程语言为例,介绍一个灵活的模型框架,既能处理标准的产销平衡情况,也能适应产销不平衡的。

数学模型

变量定义

    Xij:从供应点 𝑖i 到需求点 𝑗j 的运输量。

    CAi:供应点 𝑖i 的供应量。

    DEj:需求点 𝑗j 的需求量。

    Coij:从供应点 𝑖i 到需求点 𝑗j 的单位运输成本。

目标函数:

最小化总运输成本:

    Minimize Z =∑Coij⋅Xij

约束条件:

1、供应点供应量限制:

2、需求点需求量限制:

3、运输量限制(处理产销平衡和不平衡):

总供应量 𝑇𝑆,总需求量 𝑇𝐷,总运输量 𝑇𝑇


ligno代码如下:

```swift

Model

!By William ,2024/6/16;

SETS:

    Supply /1..19/: CA;      ! 定义供应点集合,有19个供应点,每个供应点有供应量CA;

    Market /1..14/: De;      ! 定义需求点集合,有14个需求点,每个需求点有需求量De;

    ij(Supply, Market): Co, X; ! 定义运输路径集合,表示从任意供应点到任意需求点的路径,Co为单位运输成本,X为运输量;

ENDSETS

DATA:

    Ca ,De , Co =@ole("gen_trans_data.xlsx") ; ! 从Excel文件gen_trans_data.xlsx中读取供应量CA、需求量De和单位运输成本Co的数据;

    @ole("gen_trans_data.xlsx")=x ;          ! 将解(即各路径的运输量X)写回同一个Excel文件;

ENDDATA

MIN = @SUM(ij: Co*X); ! 目标是最小化总运输成本,即所有路径运输量X乘以对应路径的单位成本Co之和;

TS=@sum(supply:Ca);          ! 计算总供应量TS;

TD=@sum(market:De);          ! 计算总需求量TD;

TT=@smin(TS,TD);            ! 总运输量TT取TS和TD中的较小值;

TT=@sum(ij:X);              ! 用总运输量对各运输量进行约束;

@FOR(Supply(I): @SUM(Market(J): X(I,J))<= CA(I)); ! 供应约束,确保每个供应点的总输出不超过其供应能力CA;

@FOR(Market(J): @SUM(Supply(I): X(I,J))<= De(J));  ! 需求约束,确保每个需求点的总输入不超过其需求量De;

end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容