Lingo学习(二)——线性规划基础、矩阵工厂

一、线性规划基础

(一)方法

① 一个线性规划中只含一个目标函数。(两个以上是多目标线性规划,Lingo无法直接解)

② 求目标函数的最大值或最小值分别用max = …或min = …来表示。

③ 以!开头,以;结束的语句是注释语句;

④ 线性规划和非线性规划的本质区别是目标函数是否线性,其余一致,故不需要区分。

但值得注意的是,非线性规划的求解十分困难,基本得不到全局最优解。  

(二)例题

某工厂有两条生产线,分别用来生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和120,生产线每生产一个M产品需要1个劳动日(1个工人工作8小时称为1个劳动日)进行调试、检测等工作,而每个P产品需要2个劳动日,该厂工人每天共计能提供160劳动日,假如原材料等其他条件不受限制,问应如何安排生产计划,才能使获得的利润最大?

(三)解

设两种产品的生产量分别为x1x2,则该问题的数学模型为:

目标函数:max z=200x1+300x2 

约束条件为:

x1<=100

x2<=200

x1+2*x2<=160

xi>=0,  i=1,2 

(四)程序
max = 200*x1 + 300*x2;
x1 <= 100;  
x2 <= 120;
x1 + 2*x2 <= 160;

由Lingo信息可知,运行时间依旧0秒,目标值为29000,此时x1是100,x2是30。

二、矩阵工厂

(一)矩阵工厂:生产一维矩阵

先来看看例子,不必在意其中的空格(Lingo不读取空格):

sets:                  
factory /1..6/ : a,b;  
plant /1..3/ : x,y;    
endsets                

以上程序对应知识点:

① factory和plant都是制造矩阵的工厂,但它们是两家不同的工厂。

② factory工厂后面的 /1..6/ 说明它专门生产1*6的矩阵。

   factory工厂最后面出现的a和b,都是1*6的矩阵。

③ plant工厂后面的 /1..3/ 说明它专门生产1*3的矩阵。

    plant工厂最后面出现的x和y,都是1*3的矩阵。

④ 矩阵工厂的名字factory是随便起的,工厂所生产行矩阵的名字a和b也是随便起的。

⑤ 以上这四句话,本质是定义了四个行矩阵的大小,矩阵工厂只是中介。

⑥ 生产完矩阵后,工厂和矩阵之间将脱开联系。

⑦ Lingo不是一行一行读代码的,所以用sets:和endsets表示矩阵工厂生产流程的起止。

(二) 矩阵的赋值

矩阵工厂不能只生产矩阵,还要给矩阵赋初值才行,例子如下:

sets:                             
factory /1..6/ : a,b;             
plant /1..3/ : c,x;               
endsets                           
data:                             
a = 1, 2, 3, 4, 5, 6;             
b = 6.0, 5.0, 4.0, 3.0, 2.0, 1.0;
c = 10, 20, 30;                   
enddata                           

以上程序对应以下知识点:

① 不是每个矩阵都要赋值,有些矩阵正是我们要求解的变量。

② 需要赋值的矩阵必须赋满,不能给6个元素的矩阵只赋3个数值。

③ Lingo中可以给矩阵赋整数,也可以赋小数。

④ Lingo不是一行一行读代码的,所以用data:和enddata表示矩阵赋值的起止。

 (三) 循环与求和

【例】已知模型如下,请编程求解:

【for循环】

题中约束条件:i=1,2,…,5可以利用for循环一步到位。

   @for( gc(i) : a(i)*x(i) = S );

① for循环,括起整行语句,因为S=ai*xi,i=1,2,…,5,相当于5个约束条件;

② for循环内部,先写工厂,以告诉for循环几次,之后再上接约束条件。

③ 此处的i可带可不带,甚至可以换成j、k或m等等。

④ 二维矩阵工厂出现后,同时会出现i和j,那时必须带i和j。

【sum求和】

题中约束条件,可以利用sum求和一步到位。

 @sum( gc(i) : x(i) ) = 5000;

① sum求和,不可以括起完整的约束条件,因为一般的求和的结构是这样的: x1+x2+x3+x4+x5=5000

② sum求和内部,先写工厂,以告诉sum求和几次,之后再上接约束条件。

③ 此处的i可带可不带。

④ 二维矩阵工厂出现后,同时会出现i和j,那时必须带。

【for与sum出现的标志】

① 约束条件后面有i=1,2,…,5一定在最外层套上for。

② 约束条件前面是出现求和符号å,一定在中间加上sum。

  • 【例题】

【程序】
model:                         
sets:                          
gc /1..5/ : a,x;               
endsets                        
data:                          
a = 1,2,3,4,5;                 
enddata                        
max = S;                       
@for( gc(i) : a(i)*x(i) = S );
@sum( gc(i) : x(i) ) = 5000;   
end                            

PS:使用了矩阵工厂创建矩阵后,整个程序需用model:和end包起来。

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

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

相关文章

分布式应用系统设计:即时消息系统

即时消息(IM)系统&#xff0c;涉及&#xff1a;站内消息系统 组件如下&#xff1b; 客户端&#xff1a; WEB页面&#xff0c;IM桌面客户端。通过WebSocket 跟ChatService后端服务连接 Chat Service&#xff1a; 提供WebSocket接口&#xff0c;并保持跟“客户端”状态的维护。…

独立开发者系列(23)——Linux掌握小结

只要开发系统&#xff0c;就绕不开使用Linux服务器 &#xff0c;而Linux除了使用BT面板进行初级管理&#xff0c;很多稍微高级点的管理&#xff0c;还是需要命令行进行的。这里总结在不需要精通的情况下&#xff0c;掌握常见命令和环境的相关配置。 &#xff08;1&#xff09…

MyBatis框架学习笔记(三):MyBatis重要文件详解:配置文件与映射文件

1 mybatis-config.xml-配置文件详解 1.1 说明 &#xff08;1&#xff09;mybatis 的核心配置文件(mybatis-config.xml)&#xff0c;比如配置 jdbc 连接信息&#xff0c;注册 mapper 等等都是在这个文件中进行配置,我们需要对这个配置文件有详细的了解 &#xff08;2&#x…

LabVIEW滤波器性能研究

为了研究滤波器的滤波性能&#xff0c;采用LabVIEW设计了一套滤波器性能研究系统。该系统通过LabVIEW中的波形生成函数&#xff0c;输出幅值及频率可调的正弦波和白噪声两种信号&#xff0c;并将白噪声与正弦波叠加&#xff0c;再通过滤波器输出纯净的正弦波信号。系统通过FFT&…

git仓库使用

一、没有仓库 首先要有gitee账号 创建仓库 有了仓库就按已有仓库进行操作 二、已有仓库 先让仓库负责人把自己拉进仓库 成为开发者或者管理员 git clone 仓库地址 开始工作 git add . git commit -m “ 提交说明” git pull 更新一下也叫同步 将线上代码更新到本地 git pu…

Golang | Leetcode Golang题解之第230题二叉搜索树中第K小的元素

题目&#xff1a; 题解&#xff1a; type MyBst struct {root *TreeNodenodeNum map[*TreeNode]int // 统计以每个结点为根结点的子树的结点数&#xff0c;并存储在哈希表中 }// 统计以 node 为根结点的子树的结点数 func (t *MyBst) countNodeNum(node *TreeNode) int {if…

JAVA之Scanner类的使用

一、Scanner类的介绍 java语言中的Scanner类可以实现从键盘输入内容的操作。通常我们使用该类完成一些用户信息的采集&#xff0c;通过java中的变量保存这些信息。 二、Scanner类的使用 1.使用步骤 a&#xff09;导包&#xff1a;import java.util.Scanner; b&#xff09;创…

2024年西安铁一中集训DAY1---- 杂题选讲

文章目录 牛客练习赛125 E 联谊活动&#xff08;枚举&#xff0c;分讨&#xff09;牛客练习赛125 F 玻璃弹珠&#xff08;类莫队&#xff0c;离线询问&#xff0c;数据结构&#xff09;2024ccpc长春邀请赛 D Parallel Lines&#xff08;随机化&#xff09;2024ccpc长春邀请赛 E…

昇思25天学习打卡营第14天|基于MindSpore的红酒分类实验

背景介绍 本文主要介绍使用MindSpore在部分wine数据集上进行KNN实验。 K近邻算法原理 K近邻算法&#xff08;K-Nearest-Neighbor, KNN&#xff09;是一种用于分类和回归的非参数统计方法&#xff0c;最初由 Cover和Hart于1968年提出(Cover等人,1967)&#xff0c;是机器学习最…

了解AsyncRotationController

概述 基于android 15.0, 以从强制横屏App上滑退回桌面流程来分析 frameworks/base/services/core/java/com/android/server/wm/AsyncRotationController.javaAsyncRotationController 是一种控制器&#xff0c;用于处理设备显示屏旋转时非活动窗口的异步更新。这种控制器通过…

国产化框架PaddleClas结合Swanlab进行杂草分类

1. 项目介绍 杂草是农业中的主要问题之一&#xff0c;对作物生长和产量造成严重威胁。传统的手动识别和管理方式效率低下且不够精确&#xff0c;因此需要借助先进的计算机视觉技术来提升农业生产的效率和质量。ResNet作为一种深度学习模型&#xff0c;在处理复杂的图像分类任务…

C++入门基础篇(1)

欢迎大家来到海盗猫鸥的博客—— 断更许久&#xff0c;让我们继续好好学习吧&#xff01; 目录 1.namespace命名空间 命名空间的存在价值&#xff1a; 命名空间的定义&#xff1a; 命名空间的使用&#xff1a; 2.C输入输出函数 使用&#xff1a; 3.缺省参数 4.函数重载…

可观察性优势:掌握当代编程技术

反馈循环是我们开发人员工作的关键。它们为我们提供信息&#xff0c;并让我们从用户过去和现在的行为中学习。这意味着我们可以根据过去的反应进行主动开发。 TestComplete 是一款自动化UI测试工具&#xff0c;这款工具目前在全球范围内被广泛应用于进行桌面、移动和Web应用的…

Redis+Caffeine 实现两级缓存实战

RedisCaffeine 实现两级缓存 背景 ​ 事情的开始是这样的&#xff0c;前段时间接了个需求&#xff0c;给公司的商城官网提供一个查询预计送达时间的接口。接口很简单&#xff0c;根据请求传的城市仓库发货时间查询快递的预计送达时间。因为商城下单就会调用这个接口&#xff…

【RHCE】系统服务综合实验

一、实验内容 现有主机 node01 和 node02&#xff0c;完成如下需求&#xff1a; 1、在 node01 主机上提供 DNS 和 WEB 服务 2、dns 服务提供本实验所有主机名解析 3、web服务提供 www.rhce.com 虚拟主机 4、该虚拟主机的documentroot目录在 /nfs/rhce 目录 5、该目录由 node02…

【Unity2D 2022:UI】制作主菜单

一、创建主菜单游戏场景 1. 在Scenes文件夹中新建一个游戏场景Main Menu 2. 为场景添加背景 &#xff08;1&#xff09;创建画布Canvas &#xff08;2&#xff09;在Canvas中创建新的空游戏物体Main Menu &#xff08;3&#xff09;在Main Menu中新建一个图像游戏物体Backgrou…

达梦数据库dm8安装步骤及迁移

目录 前言: 一、安装部署 1、下载 2、创建用户及安装目录 3、挂载下载的镜像 4、环境配置 5、安装 二、基本使用 1、DM工具使用 2、兼容性配置 2.1 兼容GBK字符集编码 2.2 兼容UTF-8字符集编码 3、创建用户和密码,表空间 4、整理数据库配置 5、启动脚本设置 …

普中51单片机:定时器与计数器详解及应用(七)

文章目录 引言定时器工作原理TMOD定时器/计数器工作模式寄存器定时器工作模式模式0(13位定时器/计数器)模式1(16位定时器/计数器)模式2(8位自动重装模式)模式3(两个8位计数器) 定时器配置流程代码演示——LED1间隔1秒闪烁代码演示——按键1控制LED流水灯状态代码演示——LCD160…

初始网络知识

前言&#x1f440;~ 上一章我们介绍了使用java代码操作文件&#xff0c;今天我们来聊聊网络的一些基础知识点&#xff0c;以便后续更深入的了解网络 网络 局域网&#xff08;LAN&#xff09; 广域网&#xff08;WAN&#xff09; 路由器 交换机 网络通信基础 IP地址 端…

法律咨询援助网站

1 项目介绍 1.1 摘要 随着互联网技术的飞速发展&#xff0c;公众对于便捷、高效的法律咨询服务需求日益增长。传统的法律咨询方式已难以满足人们即时性、多样化的咨询需求&#xff0c;促使法律咨询援助网站应运而生。这些平台旨在通过数字化手段&#xff0c;为用户提供法律知…