LINGO 解线性方程 例子
简介
没有什么比一个例子更好讲解Lingo的了,不行那就两个... ...
Question
已知某种商品6个仓库的存货量,8个客户对该商品的需求量,单位商品运价如下所示,试确定6个仓库到8个客户的商品调运数量,使总的运输费用最小。
c=
6 2 6 7 4 2 5 9
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
6行 每行表示仓库 每列表示客户,中间的数值表示 仓库到客户的单位运价
解题方程
\]
\sum_{j=1}^{8} x_{i j} \leq e_{i}, i=1,2, \ldots, 6 \\
\sum_{i=1}^{6} x_{i j}=d_{j}, j=1,2, \ldots, 8 \\
x_{i j} \geq 0, i=1,2, \ldots, 6 ; j=1,2, \ldots, 8
\end{array}\right.\]
这个方程是什么意思呢?
第一个表示:每个地方的单位运费 * 运送的单位数,要让这个结果最小
第二个表示约束:
约束1:每个仓库的输出的量要小于等于这个仓库中的量
约束2:每个客户收到的量等于所有仓库发送到这个客户的量
约束3:每个仓库的输出量为正数
Lingo 方程
model:
sets:
warehouses/1..6/:e;
vendors/1..8/:d;
links(warehouses, vendors):c,x;
endsets
data: !数据部分;
e=60 55 51 43 41 52; !属性值 表示每个仓库的存货量;
d=35 37 22 32 41 32 43 38; ! 表示需求量;
c=6 2 6 7 4 2 5 9
4 9 5 3 8 5 8 2
5 2 1 9 7 4 3 3
7 6 7 3 9 2 7 1
2 3 9 5 7 2 6 5
5 5 2 2 8 1 4 3;
enddata
min=@sum(links(i,j):c(i,j)*x(i,j)); !目标函数;
@for(warehouses(i):@sum(vendors(j):x(i,j)) <= e(i)); !约束条件;
@for(vendors(j):@sum(warehouses(i):x(i,j)) = d(j));
end
Focus
我们学习lingo的目标就是如何根据我们建立好的数学模型正确书写出他的程式。
第一
模型书写在 model: end之中
第二
sets 集合的书写方式 warehouses/1..6/:e;
links 构建二维集合
第三
data: enddata 对sets进行赋值
data 是从1开始
第四
sum 和 for 都是 两部分的 第一部分:集合的名称第二部分:表达式
examle: 求特征值和矩阵中的未知的参数
2 & -1 & 2 \\
5 & a & 3 \\
-1 & b & -2
\end{array}\right)\]
1 \\
1 \\
-1
\end{array}\right)\]
其中P是A的一个特征向量,求参数a,b及特征向量P所对应的特征值
解方程Ap=lambda p
lambda 是特征向量的特征值
code
model:
sets:
num/1..3/:p;
link(num,num):a;
endsets
data:
p=1 1 -1;
a=2 -1 2
5,,3
-1,,-2;! 两个逗号之间的参数待定;
enddata
@for(num(i):@sum(num(j):a(i,j)*p(j)) = lambda * p(i));
@free(lambda);!特征值可正可负;
@for(link:@free(a));!注意未知参数取值是可正可负的;
end
答案
Variable Value
LAMBDA -1.000000
P( 1) 1.000000
P( 2) 1.000000
P( 3) -1.000000
A( 1, 1) 2.000000
A( 1, 2) -1.000000
A( 1, 3) 2.000000
A( 2, 1) 5.000000
A( 2, 2) -3.000000
A( 2, 3) 3.000000
A( 3, 1) -1.000000
A( 3, 2) 0.000000
A( 3, 3) -2.000000
LINGO 解线性方程 例子的更多相关文章
- Protocol Buffers编码详解,例子,图解
Protocol Buffers编码详解,例子,图解 本文不是让你掌握protobuf的使用,而是以超级细致的例子的方式分析protobuf的编码设计.通过此文你可以了解protobuf的数据压缩能力 ...
- Lambda表达式详解(例子详解)(转自:http://blog.csdn.net/damon316/article/details/51734661)
Lambda表达式详解(例子详解) lambda简介 lambda运算符:所有的lambda表达式都是用新的lambda运算符 " => ",可以叫他,“转到”或者 ...
- Wireshark命令行工具tshark详解(含例子)-01
Wireshark命令行工具tshark使用小记 1.目的 写这篇博客的目的主要是为了方便查阅,使用wireshark可以分析数据包,可以通过编辑过滤表达式来达到对数据的分析:但我的需求是,怎么样把D ...
- Windows驱动开发技术详解HelloWDM例子win7下无法安装
HelloWDM例子编译完成之后,在win7下安装显示 查看setupapi.dev看到如下信息 这个C:\MyDriver_Check目录完全不是我指定的,我放到c盘根目录下 查看inf [Sour ...
- 数论学习笔记之解线性方程 a*x + b*y = gcd(a,b)
~>>_<<~ 咳咳!!!今天写此笔记,以防他日老年痴呆后不会解方程了!!! Begin ! ~1~, 首先呢,就看到了一个 gcd(a,b),这是什么鬼玩意呢?什么鬼玩意并不 ...
- log4j.properties详解与例子
在项目中的classes 中新建立一个log4j.properties文件即可: 在实际编程时,要使Log4j真正在系统中运行事先还要对配置文件进行定义.定义步骤就是对Logger.Appender及 ...
- 【数值分析】误差的分析与减少及Matlab解线性方程的四种方法
1.误差的来源 模型误差:数学模型与实际问题之间的误差 观测误差:测量数据与实际数据的误差 方法误差:数学模型的精确解与数值方法得到的数值解之间的误差:例如 舍入误差:对数据进行四舍五入后产生的误差 ...
- Swap 分区的2种方式 详解与例子
安装完Linux系统后,swap分区太小怎么办,怎么可以扩大Swap分区呢?有两个办法,一个是从新建立swap分区,一个是增加swap分区.下面介绍这两种方法: 第一您必须有root权限,过程中一定要 ...
- Unity3D-常用小功能详解,例子(得分变动效果、倒计时)
Unity3D-Demo多个功能方法 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Score Ind ...
- ps命令详解加例子
Linux中的ps命令是Process Status的缩写.ps命令用来列出系统中当前运行的那些进程.ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信 ...
随机推荐
- Hangfire Redis 实现秒级定时任务、使用 CQRS 实现动态执行代码
目录 定时任务需求 核心逻辑 使用 Redis 实现秒级定时任务 第一步 第二步 第三步 第四步 业务服务实现动态代码 第一步 第二步 第三步 第四步 第五步 最后 定时任务需求 本文示例项目仓库:w ...
- Innodb快速复习
放一张官方架构图: 参考文章: 一文带你了解MySQL之InnoDB_Buffer_Pool-阿里云开发者社区这一篇buffer pool讲解的很好 [动画演示:MySQL的BufferPool和Ch ...
- Asp.net core 少走弯路系列教程(二)HTML 学习
前言 新人学习成本很高,网络上太多的名词和框架,全部学习会浪费大量的时间和精力. 新手缺乏学习内容的辨别能力,本系列文章为新手过滤掉不适合的学习内容(比如多线程等等),让新手少走弯路直通罗马. 作者认 ...
- Python3爬虫入门(一)
Python3爬虫入门 网络爬虫,也叫网络蜘蛛(Web?Spider).它根据网页地址(URL)爬取网页内容,而网页地址(URL)就是我们在浏览器中输入的网站链接. 在浏览器的地址栏输入URL地址, ...
- Web客户端开发
Web开发工具 从高层次来看,可以将客户端工具放入以下三大类需要解决的问题中: 安全网络 - 在代码开发期间有用的工具. 转换 - 以某种方式转换代码的工具,例如将一种中间语言转换为浏览器可以理解的 ...
- idea格式化代码快捷键
Ctrl+Alt+L Ctrl+Shift+Alt+L
- T+常用数据表参考
AA_表 基础档案 AA_Partner 客户 EAP_表 设置表 ST_表 库存 SA_表 销售 PU_表 采购 销售订单 销货单表 SA_SaleDelivery ...
- storageclass和本地持久化存储
StorageClass 之前我们部署了PV 和 PVC 的使用方法,但是前面的 PV 都是静态的,什么意思?就是我要使用的一个 PVC 的话就必须手动去创建一个 PV,我们也说过这种方式在很大程度上 ...
- 原生JS表格数据常用总结
主要是在数据报表这块, 做了好几年发现, 其实用户最终想要看的并不是酷炫的BI大屏, 而是最基础也是最复杂的 中国式报表. 更多就是倾向于从表格中去获取数据信息, 最简单的就是最好的, 于是还是来总结 ...
- flutter系列(一)----- 开发环境搭建
flutter刚刚出来的时候,当时前公司团队使用React Native开发出来项目刚刚上线半年多.当时RN刚刚出来的时候,也是相当的火爆.公司也是紧跟时代的潮流.果断使用RN做了新项目,RN出来的时 ...