• LINGO基础知识


    LINGO用于构建和求解线性、非线性及整数最优化模型,方便灵活,执行速度快,能与EXCEL等其他软件交换数据。
    2.1 LINGO窗口介绍
    2.1.1 LINGO文件菜单(File Menu)
    2.1.2 LINGO编辑菜单(Edit Mene)
    2.1.3 LINGO模型求解菜单
    灵敏性分析:产生当前模型的灵敏度分析报告:研究当前目标函数的费用系数和约束右端项在什么范围(此时假定其他系数不变)时,最优基保持不变。
    默认不激活,激活:LINGO | Options ->General Solver Tab -> Dual Computations -> Prices and Ranges
    2.1.4 窗口菜单(Windows Menu)
    (1) 命令行窗口(Open Command Window)
    (2)状态窗口(Status Window)
    2.1.5 LINGO的命令行命令
    共有9类,可在命令行窗口中输入COM查询。
    2.2 LINGO 中的集
    集的内容是一群或多群相联系的对象
    2.2.1 定义原始集
    setname[/menber_list/] [: attribute_list]; 集成员可显式罗列或隐式罗列。
    2.3 LINGO基本运算符
    基本运算符包括算术运算符、逻辑运算符和关系运算符。
    2.3.1 算术运算符
    二元运算符:+、-、*、/、^
    一元运算符:~(取反)
    2.3.2 逻辑运算符
    主要用于集循环函数的条件表达式中,来控制在函数中哪些集成员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中,共9种。
    #not#:一元,否定该操作数的逻辑值。
    #eq#:==
    #ne#:!=
    #gt#:>
    #ge#:>=
    #lt#:<
    #le#:<=
    #and#:&&
    #or#:||
    2.3.3 关系运算符
    =, <=, >= 形成模型的一个约束条件
    LINGO不支持严格小于或严格大于运算符,可用如下表达式实现:
    A + ε <= B
    2.4 数学函数
    (1)@abs(x):返回x的绝对值
    (2)@sin(x):返回x的正弦值,x采用弧度制
    (3)@cos(x) (4)@tan(x)
    (5)@exp(x):返回e的x次方
    (6)@log(x):返回x 的自然对数
    (7)@lgm(x): 返回x的gamma函数的自然对数
    (8)@sign(x):若x < 0, 返回-1, 或者,返回1;
    (9)@floor(x):返回x的整数部分,x > 0时,返回不低于x的最大整数,x < 0时,返回不超过x的最大整数。
    (10)@smax(x1, x2,……xn):返回其中最大值
    (11)@smin(x1,x2, ……xn):返回其中最小值
    2.5 变量界定函数
    LINGO默认变量非负, bnd和free可取消该约束,如下四种可对变量的取值范围加以限制。
    @bin(x):限制x为0或1
    @bnd(L, x, U):限制L <= x <= U;
    @free(x):取消对变量x的默认下界为0的限制,即x可以取任意实数;
    @gin(x):限制x为整数。
    2.6 集操作函数
    (1)@in(set_name, primitive_index_1, [, primitive_index_2, ...]);
    如果元素在指定集中,返回1, 否则返回0;索引用"&1", "&2"或@INDEX函数等形似给出,“&1”表示对应于第一个父集合的所有元素的索引值。
    (2)@index([set_name,]primitive_set_element)
    返回集set_name中原始集成员primitive_set_element的索引。
    2.7 集循环函数
    集循环函数遍历整个集进行操作,其LINGO语法为:
    @function(setname[(set_index_list)[ | conditional_qualifier]] : expression_list);
    函数 要遍历的集 集索引列表 表达式列表,@for时,可有多个表达式,用逗号隔开,作为约束添加到模型中。
    conditional_qualifier:限制function范围,当遍历每个成员时,LINGO都要评价,为真则执行函数,否则跳过。
    (1)for
    (2)text 用在数据部分,用来把解输出至文本文件中,位于语句左边,后边跟集名(输出所有成员名)或集属性名(输出该集属性的值)。
    @text(['filename']),忽略文件名则输出至标准输出,大多为屏幕。
    (3)@ole 从EXCEL中引入或输出数据的接口函数,可以在数据部分和初始部分引入数据。
    @OLE('XLSDEVELOP.XLS') = BUILD, SQ_FEET; 将右端输出到相应的左端
    x = @ole('D:cost.xls', f) x是你想要得到值得表达式,即名字,括号中的文件是数据,f是在EXCEL文件中选中并命名的部分。
    命名:公式 -> 名称管理器 -> 新建
    (4)@dual 返回对偶价格
    Reduced cost:表示当变量有微小变动时,目标函数的变化率;
    Dual Price:表示当对应约束有微小变动时,目标函数的变化率,为正表增,为负则减。
    2.8 辅助函数
    (1)@if(logical_condition, true_result, false_result)
    @if函数将评价一个逻辑表达式logical_condition, 若为真,返回true_result, 否则,返回false_result.
    (2)warn('text', logical_condition)
    若logical_condition为真,则产生一个内容为'text'的信息框。
    2.9 LINGO求解器设置
    LINGO求解器是解决一切问题的关键。

  • 相关阅读:
    7-11
    7-9
    7-8
    7-7
    7-6
    7-5
    7-4
    7-3
    第08次:升级《陋习手记》完善主从UI
    第07次:升级《陋习手记》显示多条数据
  • 原文地址:https://www.cnblogs.com/zyr001/p/11373075.html
Copyright © 2020-2023  润新知