Lingo基本操作

目录

  • Lingo基本操作

    • 前言
    • 一、Lingo基本运算符
      • 1.1 算术运算符
      • 1.2 逻辑运算符
      • 1.3 关系运算符
    • 二、函数
      • 2.1 标准数学函数
      • 2.2 集循环函数
    • 三、待更新

Lingo基本操作

@

前言

Lingo是一门主要求解非线性规划数学模型的编程软件,记得最初接触Lingo是在阅读《数学建模教程》一书,该书在第五章主要讲解使用Lingo来解决优化问题,也是在那个时候认识到了Lingo的强大之处。Lingo的使用就好比解决一道简单的数学问题,而你只需要使用Lingo支持的编程规范给其提供充足的已知条件即可,之后会自动使用相关算法为您解答。为了日后更加方便的查询Lingo相关知识,所以将Lingo的基本使用在此记录。

关于Lingo的下载及安装问题博主已做整理,可参考本篇教程 Lingo安装

一、Lingo基本运算符

1.1 算术运算符

^:乘方

*:乘

/:除

+:加

-:减

1.2 逻辑运算符

在Lingo中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些集成员被包含,哪些被排斥。

符号 说明
#and# 且,&
#or# 或,||
#not# 非,!
#eq# 等于,==
#ne# 不等于,!=
#gt# 大于,>
#ge# 大于等于,>=
#lt# 小于,<
#le# 小于等于,<=

1.3 关系运算符

= 、<= 、 >=

二、函数

2.1 标准数学函数

函数 说明
@abs(x) 绝对值
@sin(x) 正弦值,采用弧度制
@cos(x) 余弦值
@tan(x) 正切
@exp(x) 指数,$e^x$
@log(x) 自然对数
@lgm(x) gamma函数的自然对数
@sign(x) x<0返回-1,否则返回返回1
@floor(x) 取整
@smax($x_1,x_2,\cdots,x_n$) 取($x_1,x_2,\cdots,x_n$) 中的最大值
@smin($x_1,x_2,\cdots,x_n$) 取($x_1,x_2,\cdots,x_n$) 中的最小值

2.2 集循环函数

集循环函数用于遍历整个集,其基本语法如下:

@function(setname[(set_index_list)[|conditional_qualifier]]:
expression_list);

@function相应于下面罗列的四个集循环函数之一;setname是要遍历的集;set_ index_list是集索引列表;conditional_qualifier是用来限制集循环函数的范围,当集循环函数遍历集的每个成员时,LINGO都要对conditional_qualifier进行评价,若结果为真,则对该成员执行@function操作,否则跳过,继续执行下一次循环。expression_list是被应用到每个集成员的表达式列表,当用的是@for函数时,expression_list可以包含多个表达式,其间用逗号隔开。这些表达式将被作为约束加到模型中。当使用其余的三个集循环函数时,expression_list只能有一个表达式。如果省略set_index_list,那么在expression_list中引用的所有属性的类型都是setname集。

2.2.1 @for

@for函数用来对集中的成员形成约束。

例:产生序列[1,4,9,16,25]

sets:
nums/1..5/: x;
endsets

@for(nums(i): x(i)=i^2);

2.2.2 @sum

@sum函数返回遍历指定集成员的一个表达式的和

例:求[1,2,3,4,5,6,7]中前五个数的和

sets:
nums/1..7/: x;
endsets

@for(nums(i): x(i)=i);

s = @sum(nums(i) | i #le# 5: x(i));

2.2.3 @max,@min

这两个函数分别用于返回指定集成员的一个表达式的最大值和最小值

例:求[1,2,3,4,5,6,7,8,9,10]中前五个数的最大值,后五个数的最小值

sets:
nums/1..10/: x;
endsets

@for(nums(i): x(i)=i);

min_value = @max(nums(i) | i #le# 5: x);
max_value = @min(nums(i) | i #ge# 6: x);

2.2.4 变量界定函数

该函数主要是对决策变量做附加限制,一般用于@for函数中,主要有如下四种:

函数 说明
@bin(x) 限制x为0或1
@bnd(a,x,b) 限制x取a到b之间的值
@free(x) x取实数
@gin(x) x取整数

2.2.5 说明

Lingo中还有其他大量的函数,比如金融函数、概率函数、变量界定函数,由于目前博主占时用不上,所以就暂且不记录了,待需要时再做进一步更新。

三、待更新

原文地址:https://www.cnblogs.com/LiT-26647879-510087153/p/9721057.html

时间: 2024-08-29 09:58:21

Lingo基本操作的相关文章

&lt;二叉树的基本操作&gt;

#include<stdio.h> #include<stdlib.h> #include<string.h> #define num 100 #define OK 1 typedef int Status; typedef char DataType; typedef struct node { DataType data; struct node *lchild,*rchild; }BinTNode,*BinTree; Status CreateBiTree(Bin

iOS_UITextField 基本操作

基本操作 UITextField *userNameTextField = [[UITextField alloc] init]; userNameTextField.frame = CGRectMake(30, 100, 220, 50); [self.window addSubview:userNameTextField]; [userNameTextField release]; // 设置样式 userNameTextField.borderStyle = UITextBorderSty

Mongodb入门系列(4)——Mongodb体系结构与客户端基本操作及注意细节

说到Mongodb的体系结构,免不了与关系型数据库做个对比.这里以MySQL为例,我们进行一些比较: 从逻辑结构上对比: MySQL层次概念 MongoDB层次概念 数据库(database) 数据库(database) 表(table) 集合(collection) 记录(row) 文档(document) 在MongoDB中没有行.列.关系的概念,集合中的文档相当于一条记录,这体现了模式自由的特点. 从数据存储结构上对比: MySQL的每个数据库存放在一个与数据库同名的文件夹中,MySQL如

Oracle的基本操作-解除用户,赋予权限

一.表的基本操作 1. 用户管理 1.1 初始状态下系统的用户 在系统用户下,执行下面的查询语句可以查看到当前系统的所有用户  select * from dba_users; 1.2 创建一个用户 SQL> create user xp identified by xp; User created. 授予连接数据库的权限:SQL> grant connect to xp; Grant succeeded. SQL> conn xp/xp;Connected. 1.3 解锁一个用户并修改

数据结构中线性表的基本操作-合并两个线性表-依照元素升序排列

#include<iostream> #include<stdlib.h> #define LIST_INIT_SIZE 10/*线性表初始长度*/ #define LIST_CREATENT 2/*每次的增量*/ typedef int ElemType; using namespace std; typedef struct SqList/*线性表的数据结构定义*/ { ElemType *elem;/*线性表基址*/ int length;/*当前线性表所含的元素个数*/ i

【华为技术】VRP平台基本操作

一.显示系统信息 <Huawei>display version 图上所示可以知道VRP平台信息,运行的版本,运行的时间 二.修改和查看设备系统时间参数 1.查看时间 <Huawei>display clock 2.修改系统日期和时间 三.进入系统视图界面 <Huawei>system-view 可以配置接口.路由协议等 四.修改设备名称 五.配置登录标语信息 [R1]header shell information "Welcome to Huawei ro

Mysql查询优化从入门到跑路(三)查询的基本操作

查询的基本操作 1.选择操作 对应的是限制条件,操作对象是二维表的行. 优化方式:选择操作下推 目的:尽量减少连接操作前的元租数,使得中间临时关系尽量少(元祖数少,连接得到的元组数就少) 好处:这样可能减少IO和CPU的消耗.节约内存空间 2.投影操作 对用的SELECT查询的目的列对象 优化方式:投影操作下推 目的:尽量减少连接操作前的列数,使得中间临时关系尽量小(选择操作是使元组的个数尽量少,投影操作是使一条元组尽量少) 好处:虽然不能减少IO(多数数据库存储方式是行存储,元组是读取的最基本

TP框架对数据库的基本操作

数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是对数据的增删改的操作,一步步的讲述一下框架对数据库的操作 想要操作数据库,第一步必然是要:链接数据库 一.链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编写config.php文件 我这里是这样的文件路径 (2)打开这个config.php文件,然后找到父类配置文件convention.php文件,将关于"数据库"的部分复制粘贴到config.php配置文件中 1 2 3 4 5 6 7 8 9 /

图形数据库Neo4J的基本操作

1.创建一个节点 1 语法:CREATE (node-name:label-name{Property1-name:Property1-Value,...Propertyn-name:Propertyn-Value}) 2 如: 3 create(江湖流派:明教{name:'张无忌',skill:'九阳真经'}) 2.为两个节点建立关系 1 语法:CREATE(node1:label1)-[relationship-name:relationship-label-name]->(node2:la