实例解释在lingo中使用集合模型

news/2024/5/19 6:03:32/文章来源:https://blog.csdn.net/m0_63024355/article/details/131616932

某部门有三个生产同一产品的工厂(产地),生产的产品运往四个销售点(销地)出售,各个工厂的生产量、各销地的销量(单位:吨)、从各个工厂到各个销售点的单位运价(元/吨)如下表,研究如何调运才能使得总运费最小。

 【数学模型】

 

如果此模型扩展到有50个产地和100个销售地的规模,从理解问题的角度看,就是让i=1,2,…,50;j=1,2,…,100就行了,但是为了让计算机处理,还是按照前面的一行一个语句逐字逐句地输入,工作量就太大了。Lingo就有节约时间的输入方式,且计算机也能理解,那就是集合式输入法


1、集合(下标)部分

这一部分定义集合(数组)以及属性(也就是只与这些下表有关的决策变量(符号变量))

规范格式

sets:
chandi/1,2,3/:a;
endsets

这样就定义了集合chandi={1,2,3},对应的属性(只与这个下标有关的量)a,于是上述语句就定有了a(1),a(2),a(3)这三个变量名(可能是决策变量,也可能是已知量),表示是三个产地的产量。

在计算过程中,只要出现chandi,就表示按顺序取值于1,2,3。

上面的集合定义,如果集合元素比较多,则采用下面的定义方式

sets:
chandi/1..3/:a;
endsets

如果是

sets:
chandi/1..50/:a;
endsets 

那就定义了50个变量名a(1),a(2),…,a(50)。

而上例中,有三个产地(及其产量),四个销售地(及其相应的销量),则可以如下定义

 这样就定义了chandi这个集合,与这个集合有关的属性a,xiaodi这个集合,与这个集合有关的属性b,直接定义了a(1),a(2),a(3),b(1),b(2),b(3),b(4),这样直接定义的集合称为基本集合。

上例中,还有形如x12,c12这样的变量名如何定义呢?这样的变量既与产地有关,又与销地有关,于是就由chandi这个集合与xiaodi这个集合联合生成一个笛卡尔集,称为派生集合(关联变量的下标范围):

sets:
chandi/1..3/:a;
xiaodi/1..4/:b;
link(chandi,xiaodi):x,c;
endsets

这样就增加了一个新的集合link,它由chandi和xiaodi两个集合生成,从数学看

 与之有关的属性为x,c,就定义了如下变量名

x(1,1),x(1,2),x(1,3),x(1,4) x(2,1),x(2,2),x(2,3),x(2,4) x(3,1),x(3,2),x(3,3),x(3,4)

c(1,1),c(1,2) ,c(1,3),c(1,4) c(2,1),c(,2,2),c(2,3),c(2,4) c(3,1),c(3,2) ,c(3,3),c(3,4)

2、数据部分

这部分格式:

data:
a=16,10,22;
b=8,14,12,14;
c=4 12 4  112 10 3  98 5  11 6;
enddata

  以”data:”开始,以“enddata”结束。不管变量是行还是列,都采用行写,行元素之间可以逗号“,”隔开,也可以空格隔开。而矩阵输入时,先行后列,每行输入完毕,就回车(enter),再输入一行,直到输入完毕,再分号“;”每个变量的数据输入完毕,都用分号“;”结束。

3、模型部分

这部分要把模型的约束和目标函数全部反应出来,如下约束

 即对每个产地i(i=1,2,3)来说,从这里运往各个销地(j=1,j=2,j=3,j=4)的运输量之和:x(i,1)+x(i,2)+x(i,3)+x(i,4)不超过产地i 的产量a(i),即x(i,1)+x(i,2)+x(i,3)+x(i,4)<= a(i),    i=1,2,3

 翻译为lingo程序语言:

@for(chandi(i):@sum(xiaodi(j): x(i,j))<=a(i));

实际就是其它程序语言的for循环结构的打包形式!

按照上面的分析方法,对每个销售地来说,调运量总和必须满足销售需求

 翻译为lingo程序语言为

@for(xiaodi(j): @sum(chandi(i):  x(i,j)) >= b(j) );

目标是将所有线路的运费求和,并使之最小化,即

 翻译为Lingo程序语言,就是

min=    @sum(     link(i,j):    c(i,j)*x(i,j));

注意:以上写法中,注意括号匹配,分号结束。

4、初始值部分

在针对线性规划时,这个部分不需要。但是针对非线性规划,这个部分就有必要了,给出决策值的迭代始点,更容易找到局部最优解,同时,给出不同的初始值,可以尝试寻找不同的局部最优解,然后加以比较,找到较好的局部最优解,作为全局最优解使用。格式为init开始,endinit结束。

举例:

初始值设为x1=0,x2=5

 设x1=5,x2=1

 

本例子的总代码

sets:
chandi/1..3/:a;
xiaodi/1..4/:b;
link(chandi,xiaodi):x,c;
endsets
data:
a=16,10,22;
b=8,14,12,14;
c=4 12 4 112 10 3 98 5  11 6;
enddata
@for(chandi(i):@sum(xiaodi(j):x(i,j))<a(i));
@for(xiaodi(j):@sum(chandi(i):x(i,j))>b(j));
min=@sum(link(i,j):x(i,j)*c(i,j));

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_328235.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

动态规划之62 不同路径(第4道)

题目&#xff1a; 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

debian to go

可以使用虚拟机操作&#xff0c;在运行镜像到安装步骤时选择 u盘 不需要手动分 /boot 分区之类的&#xff0c;“Automaction”自动分区就行&#xff0c;全安装到根目录。boot load 安装到 /dev/sdb&#xff0c;也就是硬盘本身 推荐使用gpt分区表&#xff0c;建议拿不用的盘练…

js实现图片压缩

创建一个type"file"的input标签&#xff0c;用于文件上传。 <input type"file" name"" id"upload" value"" />通过js实现图片压缩 window.onload function () {const upload document.getElementById("upload…

范德波尔方程可视化

Van der Pol方程如下所示 d x d t y d y d t − x ( 1 − x 2 ) y \begin{equation} \begin{aligned} \frac{dx}{dt} & y \\ \frac{dy}{dt} & -x(1-x^2)y \end{aligned} \end{equation} dtdx​dtdy​​y−x(1−x2)y​​​ 相应的程序如下 为了观看长期趋势&…

【LeetCode每日一题合集】2023.7.3-2023.7.9

文章目录 2023.7.3——445. 两数相加 II&#xff08;大数相加/高精度加法&#xff09;2023.7.4——2679. 矩阵中的和2023.7.5——2600. K 件物品的最大和&#xff08;贪心&#xff09;代码1——贪心模拟代码2——Java一行 2023.7.6——2178. 拆分成最多数目的正偶数之和&#x…

STM32的ADC模式及其应用例程介绍

STM32的ADC模式及其应用例程介绍 &#x1f4cd;ST官方相关应用笔记介绍资料&#xff1a;https://www.stmcu.com.cn/Designresource/detail/application_note/705947&#x1f4cc;相关例程资源包&#xff1a;STSW-STM32028&#xff1a;https://www.st.com/zh/embedded-software/…

MySQL数据库对象与数据备份和还原详解

目录 一、视图 1. 什么是视图 2. 视图与数据表的区别 3. 视图的优点 4. 创建视图 二、索引 1. 什么是索引 2. 为什么要使用索引 3. 索引优缺点 4. 何时不使用索引 5. 索引何时失效 6. 索引分类 6.1 普通索引 6.2 唯一索引 6.3 主键索引 6.4 组合索引 三、数据的…

Integration Objects OPC 所有产品Crack

OPC产品 OPC UA 升级到 OPC UA 以提高互操作性和安全性。 OPC 隧道 无需 DCOM 即可实现安全可靠的连接。 OPC 数据归档 将 OPC 数据存储到标准数据库或 CSV 文件中。 OPC 服务器 将任何通信协议转换为OPC标准。 OPC 客户端 读取、写入和传输您的 OPC 数据。 OPC 服务器工具…

axios的学习

axios是基于promise对ajax的一种封装 //将省份信息打印到网页上 <p class"my-p"></p> <script src"https://unpkg.com/axios/dist/axios.min.js"></script> <script>axios({url:http://hmajax.itheima.net/api/province}).…

图形学 | 期末复习(上)| games101笔记 | 补档

博客基于GAMES101-现代计算机图形学入门-闫令琪&#xff0c;但不是其完整笔记&#xff0c;基于复习要求有一定的删减。考试以图形学入门基本概念和核心研究内容为主&#xff0c;少量公式。即以论述概念为主&#xff0c;涉及少量算法。p1:29:12是对应的games101视频节点&#xf…

在阿里云上部署Springboot项目

文章目录 环境准备1.安装jdk2.安装mysql3.开启端口 上传项目1.数据库上传2.项目上传 环境准备 1.安装jdk 查看系统中原来是否含有java环境 rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj其中&#xff0c;gcj是一个轻巧的&#xff0c;性能优越的Java语言编译器。它…

基于深度学习的高精度球场足球检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度球场足球检测识别系统可用于日常生活中或野外来检测与定位球场足球目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的球场足球目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

【考研408计算机组成原理】第三章存储系统 第五节cache

3.5.1工作原理 局部性原理&#xff1a;在最近可能会使用到周围的数据和指令。 性能分析&#xff1a;访问数据的时间 例题&#xff1a; 提出问题 知识总结 3.5.2 cache和主存的映射方式 3.5.3 替换算法 3.5.4 cache写策略

确保无缝、安全的云转型

随着云计算继续主导数字化转型&#xff08;这是理所当然的&#xff09;&#xff0c;组织面临着双重挑战&#xff1a;将运营无缝转移到云并确保这种转型的安全。 虽然云的采用保证了可扩展性、成本效率和生产力的提高&#xff0c;但保持警惕对于组织防范网络安全威胁和安全漏洞…

Nuxt3引入Element-plus和sass

1.引入Element-plus 打开编辑器终端 运行npm install element-plus/nuxt 或者命令行cd到项目文件 运行npm install element-plus/nuxt package.json文件会出现 使用Element-plus 在nuxt.config.ts文件添加代码 export default defineNuxtConfig({devtools: { enabled: true }…

<数据结构>NO9.选择类排序|直接选择排序|堆排序

文章目录 选择排序1.直接选择排序优化直接选择排序 2. 堆排序 选择排序 基本思想 选组排序是从待排序数据中选出最大/最小的元素放入到序列的起始位置&#xff0c;直到待排序数据全部有序。 直接选择排序和堆排序的基本思想均符合选择排序。 1.直接选择排序 假设数据按升序…

深入理解java虚拟机精华总结:硬件的效率与一致性、Java内存模型、Java与线程、Java与协程

深入理解java虚拟机精华总结&#xff1a;硬件的效率与一致性、Java内存模型、Java与线程、Java与协程 硬件的效率与一致性Java内存模型主内存与工作内存内存间交互操作对于volatile型变量的特殊规则针对long和double型变量的特殊规则原子性、可见性与有序性原子性可见性有序性 …

离线环境下安装微软Visual Studio 2022 生成工具

1. 前言 最近&#xff0c;在学习cython的时候&#xff0c;需要安装windows下的C/C编译、链接工具。开始觉得传统的msvc太大了&#xff0c;想要尝试Mingw&#xff0c;但是都是编译错误。无奈之下&#xff0c;还是要安装msvc。 微软提供了Visual Studio 2022 Build Tools &…

【华为机试】HJ16 购物单详解+完整源代码示例

从毕业到入职&#xff0c;忙于各种事情&#xff0c;所以博客一直也没有空更新。从入职到现在差不多整三个月了&#xff0c;刚刚在比亚迪这边转正。目前干的工作涉及到开发的工作不是很多&#xff0c;但是又怕之前的技能荒废了。所以最近有个想法&#xff0c;再把C算法和数据结构…

【CSS】跳动文字

文章目录 效果展示代码实现 效果展示 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>一颗不甘坠落的流星</title></head><style type"text/css">/* 遮罩盒子样式 */#mask {/* 设…