数学规划运输问题

新时代多目标优化【数学建模】领域的极致探索——数学规划模型 数学规划模型是数学建模中用于描述和解决优化问题的一类模型。它通过构建目标函数和约束条件,将实际问题转化为数学形式,旨在寻找满足约束条件的最优解。数学规划模型广泛应用于各个领域,包括资源分配、生产计划、物流管理和金融投资等,通过线性规划、非线性规划、整数规划等方法,帮助决策者在复杂环境中做出最优选择。 阅读详情

在这里插入图片描述
我们可以先绘制出各个工地以及临时料场的位置如下图所示
在这里插入图片描述

import numpy as np
import  matplotlib
import  matplotlib.pyplot as plt
#指定默认字体
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] 
matplotlib.rcParams['font.family']='sans-serif'
#解决负号'-'显示为方块的问题
matplotlib.rcParams['axes.unicode_minus'] = False 

x = [1.25,8.75,0.5,5.75,3,7.25]
y = [1.25,0.75,4.75,5,6.5,7.75]
d = [3,5,4,7,6,11]
x_1 = [5,2]
y_1 = [1,7]
plt.figure(figsize=(3,2), dpi=200)
plt.scatter(x,y,marker="o")
plt.scatter(x_1,y_1,marker="*")
for i in range(1,7):
    plt.annotate("工地"+str(i),(x[i-1],y[i-1]))
    
for i in range(1,3):
    plt.annotate("供料场"+str(i),(x_1[i-1],y_1[i-1]))
plt.show()

我们可以算出供料场到各个工地的距离

第一个料场到各工地的距离[3.758324094593227, 3.758324094593227, 5.8576872569299905, 4.0697051490249265, 5.852349955359813, 7.115124735378854]
第二个料场到各工地的距离[5.798706752371601, 9.199184746487049, 2.704163456597992, 4.25, 1.118033988749895, 5.303300858899107]
x = [1.25,8.75,0.5,5.75,3,7.25]
y = [1.25,0.75,4.75,5,6.5,7.75]
d = [3,5,4,7,6,11]
x_1 = [5,2]
y_1 = [1,7]
def distance(x_1,y_1,x_2,y_2):
    return ((x_1-x_2)**2+(y_1-y_2)**2)**(1/2)
list_all = []
for i in range(2):
    list_line = []
    for j in range(6):
        list_line.append(distance(x_1[i],y_1[i],x[j],y[j]))
    list_all.append(list_line)
for i in list_all:
    print(i)

那么我们可以假设从第iii个料场运送往第jjj个工地的水泥量为xijx_{ij}xij​距离为distanceijdistance_{ij}distanceij​第jjj个工地的水泥需求量为needjneed_jneedj​
那么我们可以建立模型:
Min∑i=1,j=1i=2,j=6xij∗distanceijMin \qquad \sum_{i=1,j=1}^{i=2,j=6}x_{ij}*distance_{ij} Mini=1,j=1∑i=2,j=6​xij​∗distanceij​
S.T.{∑i=1i=2xij<=20∑j=1j=6xij>=needjxij>=0,i=1,2j=1⋯6 S.T.\left\{ \begin{aligned} \sum_{i=1}^{i=2}x_{ij}<=20\\ \sum_{j=1}^{j=6}x_{ij}>=need_j\\ x_{ij}>=0 \qquad,i=1,2\quad j= 1\cdots6 \end{aligned} \right. S.T.⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧​i=1∑i=2​xij​<=20j=1∑j=6​xij​>=needj​xij​>=0,i=1,2j=1⋯6​
最终解得结果如下

import cvxpy as cp
import numpy as np
c=np.array(list_all)
x = cp.Variable((2,6),integer=False)
obj = cp.Minimize(cp.sum(cp.multiply(c,x)))
d = [3.,5.,4,7,6,11]
con= [cp.sum(x, axis=1, keepdims=True)<=np.array([20,20]).reshape(-1,1),
      cp.sum(x, axis=0, keepdims=True)==np.array([d]),
     x>=0]
prob = cp.Problem(obj, con)
prob.solve(solver='GLPK_MI',verbose =True)
print("最优值为:",prob.value)
print("最优解为:\n",x.value)
'''
输出结果
===============================================================================
                                     CVXPY                                     
                                    v1.1.12                                    
===============================================================================
(CVXPY) Aug 12 09:22:59 AM: Your problem has 12 variables, 3 constraints, and 0 parameters.
(CVXPY) Aug 12 09:22:59 AM: It is compliant with the following grammars: DCP, DQCP
(CVXPY) Aug 12 09:22:59 AM: (If you need to solve this problem multiple times, but with different data, consider using parameters.)
(CVXPY) Aug 12 09:22:59 AM: CVXPY will first compile your problem; then, it will invoke a numerical solver to obtain a solution.
-------------------------------------------------------------------------------
                                  Compilation                                  
-------------------------------------------------------------------------------
(CVXPY) Aug 12 09:22:59 AM: Compiling problem (target solver=GLPK_MI).
(CVXPY) Aug 12 09:22:59 AM: Reduction chain: Dcp2Cone -> CvxAttr2Constr -> ConeMatrixStuffing -> GLPK_MI
(CVXPY) Aug 12 09:22:59 AM: Applying reduction Dcp2Cone
(CVXPY) Aug 12 09:22:59 AM: Applying reduction CvxAttr2Constr
(CVXPY) Aug 12 09:22:59 AM: Applying reduction ConeMatrixStuffing
(CVXPY) Aug 12 09:22:59 AM: Applying reduction GLPK_MI
(CVXPY) Aug 12 09:22:59 AM: Finished problem compilation (took 1.900e-02 seconds).
-------------------------------------------------------------------------------
                                Numerical solver                               
-------------------------------------------------------------------------------
(CVXPY) Aug 12 09:22:59 AM: Invoking solver GLPK_MI  to obtain a solution.
-------------------------------------------------------------------------------
                                    Summary                                    
-------------------------------------------------------------------------------
(CVXPY) Aug 12 09:22:59 AM: Problem status: optimal
(CVXPY) Aug 12 09:22:59 AM: Optimal value: 1.362e+02
(CVXPY) Aug 12 09:22:59 AM: Compilation took 1.900e-02 seconds
(CVXPY) Aug 12 09:22:59 AM: Solver (including time spent in interface) took 5.996e-03 seconds
最优值为: 136.22751988318157
最优解为:
 [[ 3.  5. -0.  7. -0.  1.]
 [-0. -0.  4. -0.  6. 10.]]

'''

最终得到结果:
从第一个供料场向六个工地运输的料分别为

[ 3.  5. -0.  7. -0.  1.]

从第二个供料场向六个工地运输的料分别为

 [-0. -0.  4. -0.  6. 10.]

这样总的吨千米为136.22751988318157

GAMS的使用 The General Algebraic Modeling System (GAMS)是一款数学规划和优化的高级建模系统。本文简单通过一个例子简单介绍GAMS的用法。 GAMS官方网站:http://www.gams.com/ 例子:运输问题基本模型 代码: sets i canning plants /seattle, san-diego/ 阅读详情

相关推荐

仓库选址问题【数学规划的应用(含代码)】阿里达院MindOpt

使用阿里云MindOpt工具,文章展示了如何解决仓库选址的数学规划问题。该问题涉及构建工厂以供应多个商店,考虑因素包括建设成本、库存成本、运输成本和需求量。MindOpt是一个优化求解器,能处理大规模数据的数学规划问题。通过声明集合、参数、变量、目标函数和约束条件,构建模型并求解,以最小化总成本。文中还提到了不同行业的应用场景,如农业、制造业、零售业和电商,并提供了视频讲解和代码示例。

MindOpt_003的博客 1715

运输问题 Lingo

1. 问题重述 某公司有 6 个建筑工地要开工,每个工地的位置(用平面坐标系 a,b 表示,距离单位:千米 )及水泥日用量 d(吨)由下表给出.目前有两个临时料场位于A(5,1),B(2,7),日储量各有 20 吨.假设从料场到工地之间均有直线道路相连. (1)试制定每天的供应计划,即从 A,B 两料场分别向各工地运送多少吨水泥,使总的吨千米数最小. 2.模型假设 1.不考虑实际运输成本问题,只考虑吨千米最低。 2.为了便于计算,不考虑水泥的黏附损耗问题。 3.不考虑运输过程其他因素对水泥质量的改变,仅考

cj12345657582255的博客 2万+

网络流:优化仓储物流调度问题-达摩院MindOpt

仓储物流调度问题也是网络流问题的一种,在我们已经介绍了什么是网络流问题。那么什么是仓储物流调度呢?仓储物流调度是指在物流供应链中,对仓储和运输(运输路线、成本)进行协调和安排的过程。主要包含物流计划、运输调度、运发管理、库存管理等重要环节。随着网络、电商行业的迅速发展,仓储物流调度对于企业来说也非常重要,优秀的调度方案可以帮助降低库存成本、物流配送的效率、成本等等等,从而给企业带来降本增效。

MindOpt_003的博客 668

【数学建模lingo学习】lingo解决规划问题1:投料问题

本文将分享一道简单规划例题,使用lingo语言求解,为正在学习lingo语言的同学提供一个学习机会

denghls的博客 2162

解析数学规划问题与奖学金政策的策略

本文针对给定章节内容中提出的数学规划问题进行深入分析。首先,探讨了如何通过数学建模最小化运输成本与潜在损失贡献。接着,分析了奖学金委员会在分配财务援助时面临的挑战,包括如何优先考虑需要帮助的学生,并在有限的资金下最大化录取高质量学生数量。文章还讨论了如何应用非线性规划来优化生产管理,并提供了一些实用的解决方案。最后,文章对非线性规划问题的对偶性质进行了探讨,指出了线性规划和非线性规划在对偶性质上的不同。

weixin_34945060的博客 401

Lingo求解运输问题和整数规划

Lingo求解运输问题和整数规划

【运筹学】运输规划 ( 运输规划问题的数学模型 | 运输问题引入 )

一、运输规划涉及内容、 二、运输规划问题的数学模型、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 7800

数学建模 运输问题 最优化 产销问题

数学建模 运输问题 最优化 数学建模 运输问题 最优化

Matlab建模—无约束优化与非线性规划相关算例

建立非线性规划的模型、无约束最优化问题的建模与求解

徐思孟的博客 5863

数学建模:货运公司的运输问题论文

本文根据货运公司需要完成的运输量和确定的运输路线图,对货运公司的出车调度方案进行分析和优化,分别建立了线性规划模型和0-1规划模型,解决了车辆安排问题,得出了运费最小的调度方案。

选址问题 matlab lingo

某公司有6个建筑工地要开工,每个工地的位置(用平面坐标系 表示,距离单位:千米 )及水泥日用量 (吨)由下表给出。目前有两个临时料场位于A(5,1),B(2,7),日储量各有20吨。假设从料场到工地之间均有直线道路相连。 问题(1):试制定每天的供应计划,即从A,B两料场分别向各工地运送多少吨水泥,使总的吨千米数最小; 问题(2):为了进一步减少吨千米数,打算舍弃两个临时料场,改建两个新的,日储量各为20吨,问应建在何处,节省的吨千米数有多大?

运输问题的建模优化(二)——MindOpt

本系列将讲解多篇运输问题的示例,讲解对于不同的运输问题场景,用数学规划的方法进行线性规划问题建模,并进行求解得到解决方案。

MindOpt_003的博客 1148

选址问题abc

利用lingo 软件编写的选址问题代码lingo11免安装破解版,数学建模。

钢管订购和运输

图与网络模型: 【1】图与网络模型及方法:图与网络的基本概念 【2】图&网络模型应用—最短路径问题 【3】树:基本概念与最小生成树 【4】匹配问题: 匈牙利算法 、最优指派、相等子图 【5】Euler 图和 Hamilton 图 【6】计划评审方法和关键路线法【统筹方法】:广泛地用于系统分析和项 目管理 【7】最小费用流及其求法 : 【8】最大流问题 【10】钢管订购...

冷月无声的博客 2万+

数学建模运输问题与Lingo求解PPT课件.pptx

数学建模运输问题与Lingo求解PPT课件.pptx

STM32H745xI双核芯片SMPS/LDO配置误区:从复位失败到精准排查的实战复盘

本文详细分析了STM32H745xI双核芯片在SMPS/LDO配置中的常见误区,特别是复位失败问题的排查过程。通过对比参考板与故障板的波形数据,揭示了电感选型不当导致的电源稳定性问题,并提供了硬件设计检查清单和调试技巧,帮助开发者避免类似陷阱。

weixin_42531588的博客 264

待编辑 数学建模 2.最优化模型----数学规划(lingo)

约束条件和目标函数无关俗称最优化,指在一系列客观或主观限制条件下,寻求合理分配有限资源使所关注的某个或多个指标达到最大(或最小)的数学理论和方法。约束条件不涉及“最。。。”,“最”就是目标函数了。约束条件就是找规则约束条件(2)所确定的x的范围称为可行域feasible region,满足(2)的解x称为可行解feasible solution,同时满足(1)(2)的解x称为最优解Optimal solution,整个可行域上的最优解称为全局最优解global optimal solution。

q15623588795的博客 2309

FPGA实战:AXI BRAM Controller配置避坑指南(Vivado 2023版)

本文详细解析了Vivado 2023环境下AXI BRAM Controller的配置技巧与避坑指南,涵盖AXI4协议转换、BRAM地址空间配置、信号异常处理及突发传输优化等核心内容。针对写时序冲突、跨时钟域处理等常见问题提供实用解决方案,帮助开发者提升FPGA系统性能与稳定性。

q1w3e5r7t9y的博客 340

数学规划建模实战:从问题分析到Python求解,掌握优化问题核心方法

数学规划是运筹学与优化领域的核心方法,旨在通过数学建模寻找最优决策方案。其基本原理是定义决策变量、目标函数和约束条件,将现实问题转化为可计算的数学模型。这一技术具有极高的工程价值,广泛应用于资源分配、路径规划、生产调度等场景,是解决复杂优化问题的基石。例如,在运输问题中,通过构建线性规划模型,可以高效求解成本最低的物流方案。本文以Python的PuLP库为例,结合数学建模竞赛中的实战经验,详细阐述了从问题抽象、模型构建到代码实现的完整流程,并深入探讨了混合整数规划、非线性规划等高级模型的应用与求解策略,为读

weixin_33816946的博客 344

深入解析机器人软件开发中的核心:状态机管理(FSM)—— 理论、实践与优化

状态机(FSM)是机器人软件开发中管理复杂行为逻辑的核心工具,广泛应用于导航、任务执行、故障处理等场景。本文系统探讨状态机的基础理论(定义、要素)、主流设计模式(经典FSM、分层状态机HSM、行为树BT),以及工业级实现方法(代码架构、线程安全、调试技巧)。通过移动机器人导航和机械臂任务执行的案例,分析分层状态机的实际应用,并总结常见陷阱(如状态爆炸、阻塞操作)与优化策略(异步化、事件过滤)。

郑伟强dev的专栏 292

MATLAB基础应用精讲-【强化学习】Actor - Critic 算法(附python代码实现)

这种架构结合了策略梯度方法(Policy - Gradient Methods)和价值函数估计方法(Value Function Estimation Methods)的优点。在强化学习中,智能体(Agent)需要通过与环境(Environment)的交互来学习最优的行为策略,以获得最大的累积奖励(Cumulative Reward)。

qq_36130719的博客 360
上一篇: 数学规划模型习题-线性规划
下一篇: 数学规划-服务员指派
Kilig*
博客等级 码龄7年 752粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kilig*

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值