对于产销不平衡问题有两种情况:

  供大于求(产大于销)→增加虚拟销地

  供不应求(产小于销)→增加虚拟产地

例如以下例题:

这个题中,总产量为55,总销量为60,故而我们知道这个问题属于供不应求。

1.这个问题可以采用笔算的方式:

  表上作业法

    ↓

  得到初始方案

    ↓

  检验基变量个数是否为m+n-1个,若不是,则说明初始解退化,需要不足基变量个数(如填写一个数字同时满足了一厂一商,则需在同行或同列中填写一个数字0,以保证恰好有m+n-1个数字)【注意:基可行解中不能有某个基变量独占一行一列】

    ↓计算位势值(*)

  基于基变量的cij计算出vj和ui,根据公式:cij=vj+ui,可以令v1=0(随意设置)

    ↓

  基于非基变量的表格,计算出非基变量检验数,σij=cij-(vj+ui)。

    ↓若σij全非负,则说明初始方案为最优方案,从而计算出运输费用。

  若存在σij < 0 ,则说明初始方案不是最优方案,需要进行调整。首先在作业表上以xij为起始变量作出闭回路(其余顶点均为基变量,回路中每行每列只有两个变量), 并求出调整量 ε: ε=min{该闭回路中偶数次顶点调运量xij}。

     ↓

  以xij为起始变量,其余顶点为基变量的闭回路,1.闭回路之外的变量调运量不变,2.闭回路上:偶数号顶点的调运量减去ε, 奇数号顶点的调运量加上ε。(*)

     ↓

  重复计算(*)之间的步骤,直到非基变量检验数全部为非负时,方案为最优方案。

2.LINGO计算最优方案

 sets:
supplys/../: produce;
demands/../: sell;
links(supplys, demands): c, x;
endsets
data:
produce = ,,;
sell = ,,,;
c = ;
enddata
min = @sum(links(i,j): c(i,j) * x(i,j));
@for(supplys(i): @sum(demands(j): x(i,j)) = produce(i));
@for(demands(j): @sum(supplys(i): x(i,j)) <= sell(j));

运行结果如下:

  Global optimal solution found.
Objective value: 415.0000
Infeasibilities: 0.000000
Total solver iterations: Model Class: LP Total variables:
Nonlinear variables:
Integer variables: Total constraints:
Nonlinear constraints: Total nonzeros:
Nonlinear nonzeros: Variable Value Reduced Cost
PRODUCE( ) 15.00000 0.000000
PRODUCE( ) 20.00000 0.000000
PRODUCE( ) 20.00000 0.000000
SELL( ) 5.000000 0.000000
SELL( ) 15.00000 0.000000
SELL( ) 20.00000 0.000000
SELL( ) 20.00000 0.000000
C( , ) 5.000000 0.000000
C( , ) 5.000000 0.000000
C( , ) 9.000000 0.000000
C( , ) 10.00000 0.000000
C( , ) 11.00000 0.000000
C( , ) 8.000000 0.000000
C( , ) 13.00000 0.000000
C( , ) 12.00000 0.000000
C( , ) 5.000000 0.000000
C( , ) 8.000000 0.000000
C( , ) 6.000000 0.000000
C( , ) 11.00000 0.000000
X( , ) 5.000000 0.000000
X( , ) 10.00000 0.000000
X( , ) 0.000000 0.000000
X( , ) 0.000000 1.000000
X( , ) 0.000000 3.000000
X( , ) 5.000000 0.000000
X( , ) 0.000000 1.000000
X( , ) 15.00000 0.000000
X( , ) 0.000000 3.000000
X( , ) 0.000000 6.000000
X( , ) 20.00000 0.000000
X( , ) 0.000000 5.000000 Row Slack or Surplus Dual Price
415.0000 -1.000000
0.000000 -9.000000
0.000000 -12.00000
0.000000 -6.000000
0.000000 4.000000
0.000000 4.000000
0.000000 0.000000
5.000000 0.000000

由此可知:

最优方案为:

      

运输费用为 415 。

本篇文章为原创,转载请说明出处。

   

运输问题中产销不平衡问题(表上作业法和LINGO方法)的更多相关文章

  1. 获取sqlserver数据库中所有库、表、字段名的方法

    获取sqlserver数据库中所有库.表.字段名的方法 2009年03月12日 星期四 下午 12:51 1.获取所有数据库名: SELECT Name FROM Master..SysDatabas ...

  2. 万答#1,MySQL中如何查询某个表上的IS(意向共享)锁

    欢迎来到 GreatSQL社区分享的MySQL技术文章,如有疑问或想学习的内容,可以在下方评论区留言,看到后会进行解答 问题 问题原文是这样的: 假如在MySQL事务里,给某个表的一行加了 共享锁,理 ...

  3. EF Core 中DbContext不会跟踪聚合方法和Join方法返回的结果,及FromSql方法使用讲解

    EF Core中: 如果调用Queryable.Count等聚合方法,不会导致DbContext跟踪(track)任何实体. 此外调用Queryable.Join方法返回的匿名类型也不会被DbCont ...

  4. web 中常用的两种上传文件的方法总结

    这里我们来总结整理一下常用的两种文件上传方式以及要注意的东西: 1.springmvc .MultipartFile 的上传方式. 2.org.apache.commons.fileupload 使用 ...

  5. django的FormView中,自定义初始化表单数据的曲折方法

    这个技巧,主要是用于表单初始化及回显. 也就是说,如果用户的数据库里有数据,则要将相应的数据显示在表单里, 如果用户的数据库里没有数据,才会生成一个空白的表单给用户, 这样才显得专业塞! 而我面对的尴 ...

  6. MYSQL 查看表上索引的 1 方法

    前期准备: create table T9(A int ,B text,C text,fulltext index fix_test_for_T8_B(B));#在定义表的时候加索引 create u ...

  7. Java中的class类的cast方法和asSubclass方法

    一般来说cast是转型的意思,但是学java的时间也不短了,class类居然还有cast这个方法,这里来学习一下这个cast有何用. 第一次看到这个cast是在Spring的源码中, spring-f ...

  8. 在 CSS 中表示颜色的hex code方法和rgb方法

    hexadecimal code(十六进制编码),简写为 hex code. 我们通常使用 decimals,也就是十进制数字,它对每一位数字使用符号0到9来表示.Hexadecimals (或 he ...

  9. HashSet中的元素必须重写equals方法和hashCode方法

    http://jingyan.baidu.com/article/d5a880eb8fb61d13f147cc99.html 1.为什么必须重写这两个方法. 2.什么事hashSet去重,符合什么样的 ...

随机推荐

  1. springmvc与swagger2

    首先呢我们导入相关的jar包文件 为了方便copy我copy一份 <!-- 导入java ee jar 包 -->        <dependency>           ...

  2. 浅谈Java开发三层架构

    三层架构,一般来说就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想. 概念简介 1.表现层(UI):简单来说,就是展现 ...

  3. 内网渗透之权限维持 - MSF与cs联动

    年初六 六六六 MSF和cs联动 msf连接cs 1.在队伍服务器上启动cs服务端 ./teamserver 团队服务器ip 连接密码 2.cs客户端连接攻击机 填团队服务器ip和密码,名字随便 ms ...

  4. 关于使用ajax导出excel问题

    最近有个需求是在页面导入文件,后端进行处理后返回处理结果的excel,前端使用的是ajax.我最开始的做法是:在原有代码后加一段导出excel的代码,结果代码能正常运行,但页面始终没有返回我需要的ex ...

  5. Tomcat起不来的原因

    1.没有配java_home Tomcat是Java编写的,所以必须要java_home 2.端口被占用 怎么查看端口被占用呢?——windows 小工具:Fport.exe 3.Catalina_h ...

  6. JAVA反射概念及使用详解(超详细)

    JAVA反射概念及使用详解 一.什么是反射? 反射:框架设计的灵魂 框架:半成品软件.可以在框架的基础上进行软件开发,简化编码 反射:将类的各个组成部分封装为其他对象,这就是反射机制 ​ 好处: ​ ...

  7. javaScript 基础知识汇总(九)

    1.Rest 参数 与 Spread 操作符 当我们在代码中遇到“..."时,它不是Rest参数就是Spread操作符 区分方法: 若...出现在函数的参数列表,那它表示的就是Rest参数, ...

  8. 【Android】Retrofit源码学习

    使用Retrofit的流程 通过Builder创建Retrofit对象: Retrofit retrofit = new Retrofit.Builder().baseUrl("" ...

  9. 数字逻辑与EDA设计

    目录 第一章 数字逻辑基础 1.1数制与码制★★★ 数制 码制 1.2基本及常用的逻辑运算★★ 1.2逻辑函数表示方法★★ 1.3逻辑函数的化简★★★ 1.4常用74HC系列门电路芯片★ 第二章 组合 ...

  10. BFPRT算法(求第K小的数字)

    BFPRT算法: 1.介绍: BFPRT算法又叫中位数的中位数算法,主要用于在无序数组中寻找第K大或第K小的数,它的最坏时间复杂度为O(n),它是由Blum,Floyd,Pratt,Rivest,Ta ...