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.mzph.cn/web/44148.shtml

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

相关文章

01、Kerberos安全认证之原理及搭建命令使用学习笔记

文章目录 前言一、Kerberos原理1.1、数据安全防护&#xff08;kerberos所属的层次&#xff09;1.2、Kerberos介绍1.3、Kerberos名词介绍1.4、Kerberos术语1.5、Kerberos认证流程1.5.1、Kerberos流程图1.5.2、第一次通信&#xff1a;客户端与AS1.5.3、第二次通信&#xff1a;客户…

60、基于浅层神经网络的数据拟合(matlab)

1、基于浅层神经网络的数据拟合的简介、原理以及matlab实现 1&#xff09;内容说明 基于浅层神经网络的数据拟合是一种常见的机器学习方法&#xff0c;用于通过输入数据来拟合一个非线性函数。这种方法通常包括一个输入层、一个或多个隐藏层和一个输出层。神经网络通过学习权…

广电日志分析系统

需求 广电集团中有若干个系统都产生日志信息&#xff0c;目前大约分布与70到80台服务器中&#xff0c;分别是windows与Linux操作系统。需要将服务器上产生的日志文件利用我们的技术进行解析 设计 每个日志工作站负责30-50个服务器的日志解析工作。可以根据实际需求进行设置&…

ENSP实现防火墙区域策略与用户管理

目录 实验拓扑与要求​编辑 交换机与防火墙接口的配置 交换机&#xff1a; 创建vlan 接口配置 防火墙配置及接口配置 防火墙IP地址配置 云配置​编辑​编辑​编辑 在浏览器上使用https协议登陆防火墙&#xff0c;并操作 访问网址&#xff1a;https://192.168.100.1:844…

51单片机嵌入式开发:9、 STC89C52RC 操作LCD1602技巧

STC89C52RC 操作LCD1602技巧 1 代码工程2 LCD1602使用2.1 LCD1602字库2.2 巧妙使用sprintf2.3 光标显示2.4 写固定长度的字符2.5 所以引入固定长度写入方式&#xff1a; 3 LCD1602操作总结 1 代码工程 承接上文&#xff0c;在原有工程基础上&#xff0c;新建关于lcd1602的c和h…

11-《风信子》

风信子 风信子&#xff08;学名&#xff1a;Hyacinthus orientalis L.&#xff09;&#xff1a;是多年草本球根类植物&#xff0c;鳞茎卵形&#xff0c;有膜质外皮&#xff0c;皮膜颜色与花色成正相关&#xff0c;未开花时形如大蒜&#xff0c;原产地中海沿岸及小亚细亚一带&am…

C++基础(二)

目录 1.类和对象 1.1类的定义 1.2访问限定符 1.3类域 2.实例化 2.1实例化概念 2.2对象大小 3.this指针 4.类的默认成员函数 4.1构造函数 4.2析构函数 4.5运算符重载 1.类和对象 1.1类的定义 类的定义格式 class为定义类的关键字&#xff0c;Stack为类的名字&…

7月11日学习打卡,数据结构栈

大家好呀&#xff0c;本博客目的在于记录暑假学习打卡&#xff0c;后续会整理成一个专栏&#xff0c;主要打算在暑假学习完数据结构&#xff0c;因此会发一些相关的数据结构实现的博客和一些刷的题&#xff0c;个人学习使用&#xff0c;也希望大家多多支持&#xff0c;有不足之…

dataX入门

下载dataX https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202308/datax.tar.gz 然后 下载后解压至本地某个目录&#xff0c;进入bin目录&#xff0c;即可运行同步作业&#xff1a; $ cd {YOUR_DATAX_HOME}/bin $ python datax.py {YOUR_JOB.json} 要求你有python…

怎样在 C 语言中进行类型转换?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; &#x1f4d9;C 语言百万年薪修炼课程 通俗易懂&#xff0c;深入浅出&#xff0c;匠心打磨&#xff0c;死磕细节&#xff0c;6年迭代&#xff0c;看过的人都说好。 文章目…

kafka发送消息流程

配置props.put(ProducerConfig.PARTITIONER_CLASS_CONFIG, RoundRobinPartitioner.class); public Map<String,Object> producerConfigs(){Map<String,Object> props new HashMap<>();props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG,bootstrapServers…

在表格中把tab换成enter键------ivx

为了方便用户输入&#xff0c;把tab键替换成enter回车 方法如下&#xff1a; 添加一个fx函数 document.addEventListener(‘keydown’, function(event) { if (event.key ‘Enter’ && !event.shiftKey) { event.preventDefault(); var focusableElements document.q…

【C++BFS】690. 员工的重要性

本文涉及知识点 CBFS算法 LeetCode690. 员工的重要性 你有一个保存员工信息的数据结构&#xff0c;它包含了员工唯一的 id &#xff0c;重要度和直系下属的 id 。 给定一个员工数组 employees&#xff0c;其中&#xff1a; employees[i].id 是第 i 个员工的 ID。 employees[…

软件架构之嵌入式系统设计(2)

软件架构之嵌入式系统设计&#xff08;2&#xff09; 12.4 嵌入式网络系统12.4.1 现场总线网12.4.2 家庭信息网11.4.3 无线数据通信网12.4.4 嵌入式 Internet 12.5 嵌入式数据库管理系统12.5.1 使用环境的特点12.5.2 系统组成与关键技术 12.6 实时系统与嵌入式操作系统12.6.1 嵌…

Linux 忘记root密码,通过单用户模式修改

银河麒麟桌面操作系统 V10&#xff08;sp1&#xff09;”忘记用户密码&#xff0c;需要修改用户密码所写&#xff0c;可用于 X86 架构和 arm 架构。 2. 选择第一项&#xff0c;在上图界面按“e”键进行编辑修改。 3. 在以 linux 开头这行的行末&#xff0c;添加“init/bin/bas…

SSE(Server-Send-Event)服务端推送数据技术

SSE&#xff08;Server-Send-Event&#xff09;服务端推送数据技术 大家是否遇到过服务端需要主动传输数据到客户端的情况&#xff0c;目前有三种解决方案。 客户端轮询更新数据。服务端与客户端建立 Socket 连接双向通信服务端与客户建立 SSE 连接单向通信 几种方案的比较&…

Nginx上配置多个网站

一、需求描述 我们只有一台安装了Nginx的服务器,但是我们需要实现在这台服务器上部署多个网站,用以对外提供服务。 二、Nginx上配置多个网站分析 一般网站的格式为:【http://ip地址:端口号/URI】(比如:http://192.168.3.201:80),IP地址也可用域名表示;那么要实现在Nginx…

i18n、L10n、G11N 和 T9N 的含义

注&#xff1a;机翻&#xff0c;未校对。 Looking into localization for the first time can be terrifying, if only due to all of the abbreviations. But the meaning of i18n, L10n, G11N, and T9N, are all very easy to understand. 第一次研究本地化可能会很可怕&…

如何做一个迟钝不受伤的打工人?

一、背景 在当前激烈的职场环境中&#xff0c;想要成为一个相对“迟钝”且不易受伤的打工人&#xff0c;以下是一些建议&#xff0c;但请注意&#xff0c;这里的“迟钝”并非指智力上的迟钝&#xff0c;而是指在应对复杂人际关系和压力时展现出的豁达与钝感力&#xff1a; 尊重…

【测开能力提升-fastapi框架】fastapi路由分发

1.7 路由分发 apps/app01.py from fastapi import APIRouterapp01 APIRouter()app01.get("/food") async def shop_food():return {"shop": "food"}app01.get("/bed") async def shop_food():return {"shop": "bed&…