基于 python pulp 库求解船舶泊位调度线性规划问题

文章介绍了如何利用Python的Pulp库解决船舶泊位调度的线性规划问题。首先,建立了包含绝对值的目标函数和一系列约束条件的模型。接着,通过随机生成参数并创建变量,将模型转换为Pulp可处理的形式。最后,求解模型并根据解绘制船舶调度的可视化图像,展示最优解。文章提供了从建模到求解再到结果可视化的完整过程。

基于 python pulp 库求解船舶泊位调度线性规划问题

泊位调度问题建模

  • 船舶泊位调度问题指将进港的船舶有序规划, 使各个船舶进港, 离港时间和位置都不冲突
  • 由于是帮朋友做的, 他直接把模型给了我, 建模本人也不太了解, 下面就直接放一下模型.
    min ⁡ f ( x , y , z ) = ∑ i = 1 T { c 1 i ∣ x i − p i ∣ + c 2 i ( y i + b i − d i ) + } s . t . { x i + l i ≤ L , i = 1 , 2 , ⋯   , L x i + l i ≤ x j + M ( 1 − Z i j x ) , i = 1 , ⋯   , l ; j = 1 , ⋯   , l ; i ≠ j y i + b i ≤ y j + M ( 1 − Z i j y ) , i = 1 , ⋯   , l ; j = 1 , ⋯   , l ; i ≠ j Z i j x + Z i j y + Z j i x + Z j i y ≥ 1 , i = 1 , ⋯   , l ; j = 1 , ⋯   , l ; i < j y i ≥ a i , i = 1 , ⋯   , l x i ≥ 0 , i = 1 , ⋯   , l Z i j x , Z i j y = 0 , 1 , i = 1 , ⋯   , l ; j = 1 , ⋯   , l ; i ≠ j \min f(x, y, z)=\sum_{i=1}^{T}\left\{c_{1 i}\left|x_{i}-p_{i}\right|+c_{2 i}\left(y_{i}+b_{i}-d_{i}\right)^{+}\right\} \\ s.t. \left\{ \begin{array}{l} x_{i}+l_{i} \leq L, i=1,2, \cdots, L \\ x_{i}+l_{i} \leq x_{j}+M\left(1-Z_{i j}^{x}\right), i=1, \cdots, l ; j=1, \cdots, l ; i \neq j \\ y_{i}+b_{i} \leq y_{j}+M\left(1-Z_{i j}^{y}\right), i=1, \cdots, l ; j=1, \cdots, l ; i \neq j \\ Z_{i j}^{x}+Z_{i j}^{y}+Z_{j i}^{x}+Z_{j i}^{y} \geq 1, i=1, \cdots, l ; j=1, \cdots, l ; i<j \\ y_{i} \geq a_{i}, i=1, \cdots, l \\ x_{i} \geq 0, i=1, \cdots, l \\ Z_{i j}^{x}, Z_{i j}^{y}=0,1, i=1, \cdots, l ; j=1, \cdots, l ; i \neq j \\ \end{array} \right. minf(x,y,z)=i=1T{ c1ixipi+c2i(yi+bidi)+}s.t. xi+liL,i=1,2,,Lxi+lixj+M(1Zijx),i=1,,l;j=1,,l;i=jyi+biyj+M(1Zijy),i=1,,l;j=1,,l;i=jZijx+Zijy+Zjix+
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值