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

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

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

例如以下例题:

这个题中,总产量为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. Visual Studio Code打开后是黑色的什么都没显示

    测试系统:win7 x64. 问题:打开Microsoft VS Code后是黑色的界面并且什么都没有显示. 截图:本来想放一张图片的,因为当时忘记截了,所以这里就忽略了. 解决办法: 需要安装以下三 ...

  2. jinja2的url_for 和数据块

    1.静态文件引入:{{ url_for('static', filename='文件路径') }}   2.定义路由:{{ url_for('模块名.视图名',变量=参数) }}   3.定义数据块: ...

  3. 论JS函数传参时:值传递与引用传递的区别

    什么是值传递:值传递是指在调用函数时将实际参数(实参)复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数. 值传递的总结:也就是说,将实参复制到函数中的这个过程叫值传递 什么是 ...

  4. spring boot Shiro JWT整合

    一个api要支持H5, PC和APP三个前端,如果使用session的话对app不是很友好,而且session有跨域攻击的问题,所以选择了JWT 1.导入依赖包 <dependency> ...

  5. JS如何进行对象的深克隆(深拷贝)?

    JS中,一般的赋值传递的都是对象/数组的引用,并没有真正的深拷贝一个对象,如何进行对象的深拷贝呢? var a = {name : 'miay'}; var b = a; b.name = 'Jone ...

  6. localStorage,sessionStorage的方法重写

    本文是针对于localStorage,sessionStorage对于object,string,number,bollean类型的存取方法 我们知道,在布尔类型的值localStorage保存到本地 ...

  7. Redux 架构理解

    Redux 是一种前端“架构模式”,是 Flux 架构的一种变种,用来提供可预测的状态管理.虽然经常和 React 一起被提及,但是 Redux 却不仅仅只能用于 React,还可以将其运用到其他前端 ...

  8. Django中ORM中的get与filter区别

    本文出自 “orangleliu笔记本” 博客,出处http://blog.csdn.net/orangleliu/article/details/38597593 Django的orm中get和fi ...

  9. 问题描述:判断一个整数 n 是否为 2 的幂次方

    一.2的幂次方的基本定义 什么样的数为2的幂次方?例如2^0=1,2^1=2,2^2=4……,符合公式2^n(n>=0)的数称为2的幂次方. 如何判断一个数是否为2的幂次方呢?基本思路:把一个数 ...

  10. HTML5 history-hash 随机选择彩票

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...