文档库 最新最全的文档下载
当前位置:文档库 › 选址问题LINGO代码

选址问题LINGO代码

选址问题LINGO代码
选址问题LINGO代码

求在一类选址中的lingo代码

MODEL:

SETS:

gd/1..4/:x,y,d;

lch/A,B/:px,py,e;

links(gd,lch):c;

endsets

DATA:

x=107.608962

107.6107498

107.6106479

107.6092428

;

y=26.60279846

26.60452137

26.60298162

26.60401729

;

d=8

6

15

11

;

e=20,20;

enddata

min=@sum(links(i,j):c(i,j)*((px(j)-x(i))^2+(py(j)-y(i))^2)^(0.5));

@for(gd(i):@sum(lch(j):c(i,j))=d(i));

@for(lch(j):@sum(gd(i):c(i,j))<=e(j));

END

选址问题概述:

该模型里设定有2个配送点,4个客户需求点,已知2个配送点的货物量分别为20,20,也知道客户需求点的坐标和需求量,现在使用LINGO求解当路费(路程和货物的乘积的总和)最小时的配送点的坐标。

LINGO软件简介

LINGO 软件简介 LINGO 软件是一个处理优化问题的专门软件,它尤其擅长求解线性规划、非线性规划、整 数规划等问题。 一个简单示例 有如下一个混合非线性规划问题: ?????≥≤≤+++---+为整数 213 212 13213 2 2212121,;0,,210022..15023.027798max x x x x x x x x x x t s x x x x x x x 。 LINGO 程序(模型): max =98*x1+277*x2-x1^*x1*x2-2*x2^2+150*x3; x1+2*x2+2*x3<=100; x1<=2*x2; @gin (x1);@gin (x2);! Lingo 默认变量非负 (注意:@bin(x)表示x 是0-1变量;@gin(x)表示x 是整数变量;@bnd(L,x,U)表示 限制LxU ;@free(x)表示取消对x 的符号限制,即可正、可负。) 结果: Global optimal solution found. Objective value: Extended solver steps: 0 Total solver iterations: 45 Variable Value Reduced Cost X1 X2 X3 Row Slack or Surplus Dual Price 1 2 3 ———————— 非常简单! 在LINGO 中使用集合 为了方便地表示大规模的规划问题,减少模型、数据表示的复杂程度,LINGO 引进了“集合”的用法,实现了变量、系数的数组化(下标)表示。 例如:对?? ? ??? ? ==-++-==≤++∑=.,,;10)0(;4,3,2,1),()())()1()(;4,3,2,1,20)(..)} (20)(450)(400{min 4 ,3,2,1均非负INV OP RP INV I I DEM I OP I RP I INV I INV I I RP t s I INV I OP I RP I 求解程序: model : sets : mark/1,2,3,4/:dem,rp,op,inv;!也可以vmark/1..4/:dem,rp,op,inv;

lingo教程 和MATLAB入门教程

LINGO 使用教程 LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。 §1 LINGO 快速入门 当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO 中求解如下的LP 问题: ,6002100 350. .32min 21211 212 1≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。产销单位运价如

model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end 然后点击工具条上的按钮即可。 为了能够使用LINGO的强大功能,接着第二节的学习吧。 §2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。

matlab、lingo程序代码23-线性规划问题及灵敏度分析

线性规划问题及灵敏度分析在LINGO软件中的实现 (龙少波李东阳罗添元) 一、问题的提出: 某公司饲养实验用的动物以出售给动物研究所,已知这些动物的生长对饲 料中3种营养成分(蛋白质、矿物质和维生素)特别敏感,每个动物每周至少需 要蛋白质60g,矿物质3g,维生素8mg,该公司能买到5种不同的饲料,每种饲 料1kg所含各种营养成分和成本如下表所示,如果每个小动物每周食用饲料不超 过52kg,才能满足动物生长需要。 A1 A2 A3 A4 A5 营养最 低 要求蛋白质(g) 0.3 2 1 0.6 1.8 60 矿物质(g) 0.1 0.05 0.02 0.2 0.05 3 维生素(mg) 0.05 0.1 0.02 0.2 0.08 8 成本(元/ kg)0.2 0.7 0.4 0.3 0.5 问题: 1.求使得总成本最低的饲料配方? 2.如果另一个动物研究对蛋白质的营养要求变为59单位, 但是要求动物的价格比现在的价格便宜0.3元,问该养殖所 值不值得接受? 3.由于市场因素的影响,X2的价格降为0.6元每千克, 问是否要改变饲料配方? 二、建立线性规划数学模型 解答: (1)设需要饲料A1, A2, A3, A4分别为X1, X2, X3, X4kg,则建立线 性规划数学模型如下: 目标函数:MinS=0.2X1+0.7X2+0.4X3+0.3X4+0.5X5 约束条件:0.3X1+2X2+X3+0.6X4+1.8X5>=60 0.1X1+0.05X2+0.02X3+0.2X4+0.05X5>=3 005X1+0.1X2+0.02X3+0.2X4+0.08X5>=8

LINGO11教程

LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。 §1 LINGO 快速入门 当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO 中求解如下的LP 问题: ,6002100 350. .32min 21211 212 1≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。产销单位运价如

model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end 然后点击工具条上的按钮即可。 为了能够使用LINGO的强大功能,接着第二节的学习吧。 §2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。 2.1 为什么使用集 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个

基于Lingo的旅游计划制定方法(含代码)

海南大学 《数学模型课程设计》论文 题目:基于Lingo的旅游计划制定方法班级:信息与计算科学 姓名:体贴的瑾色 学号: 指导教师: 日期:2017.06

目录 基于Lingo的旅游计划制定方法 (3) 摘要 (3) 一、问题描述 (3) 二、模型假设 (3) 三、问题分析 (3) 四、符号说明 (4) 五、模型建立 (4) 六、问题解决 (7) 七、回答问题 (9) 八、模型推广 (10) 九、心得体会 (11) 参考文献 (11) 程序附录 (11)

基于Lingo 的旅游计划制定方法 摘要 本文针对海南十八个城市制定旅游规划,在收集了大量的数据情况下,建立评价指标,找到最优的旅游路线。 对于问题一因为不要求求出具体的路程最小值,所以我们使用matlab 处理海南省的地图,找到每个城市在地图的相对坐标,从而得到城市之间的相对距离。以距离为权,以旅程的长度为评价标准建立模型,规划最优路线得到最小相对距离1488。11,注意这里的最小距离并不是实际上的最小距离。 对于问题二将最小费用矩阵代替距离矩阵,以旅程的总车费为评价标准建立模型,规划最优路线,得到最小费用为276元。 对于问题三,在一二问的基础上,综合考虑省时省钱,得到评价标准表达式 1488.11276 min 0.50.51488.11276 D M --=+,建立模型,规划最优路线。 一、问题描述 本题要求在不同的约束条件下规划出海南的最佳旅游路线,路线的基本要求是 必须从海口出发并回到海口,并且经过且经过海南的每个城市(包括县城)一次,并且每个市县玩两天。不同的问题约束条件是: (1)要求总路程最短。 (2)允许选择动车和大巴作为出行工具,规划的路线使得出行总交通费用最少。 (3)综合考虑一二问的条件,得到最优路线,设定出相应的评价准则和指标,修正模型。 二、模型假设 (1) 城市之间路程用城市的直线距离代替。 (2) 近期城市之间的动车价格和大巴价格视为定值。 (3) 城市之间路费取自动车价格和大巴价格的最小值。 (4) 假设不同城市之间的交通工具的速度均相差不大,即旅行时间由旅行 路程唯一决定。 三、问题分析 通过查询知道海南的市县数量总共是有18个(三沙市除外),那么显然这个问题是一个18个城市的TSP 问题。用图论的内容来等价话描述为:设(,,) G V E W =

常用错误提示

LINGO出错时错误代码含义: 在LINGO程序求解时,系统首先会对程序进行编译.系统在编译或执行其他命令 时,会因程序中的错误或运行错误,弹出一个出错报告窗口,显示其错误代码,并简要指出错误的原因.这些错误报告信息能够提示用户发现程序中的错误,以便能尽快修改.下 面我们给出出错信息的一个简要说明,仅供参考. LINGO错误编号及原因对照表 错误代码含义 0 LINGO模型生成器的内存已经用尽(可用“LINGO|Options"命令对General Solver 选项卡中的“Generator Memory Limit"选项进行内存大小的修改) 1 模型中的行数太多(对于有实际意义的模型,这个错误很少出现) 2 模型中的字符数太多(对于有实际意义的模型,这个错误很少出现) 3 模型中某行的字符数太多(每行不应该超过200个字符,否则应换行) 4 指定的行号超出了模型中实际具有的最大行号(这个错误通常在LOOK命令中指定 了非法的行号时出现) 5 当前内存中没有模型 6 脚本文件中TAKE命令的嵌套重数太多(LINGO中限定TAKE命令最多嵌套10次) 7 无法打开指定的文件(通常是指定的文件名拼写错误) 8 脚本文件中的错误太多,因此直接返回到命令模式(不再继续处理这个脚本文件) 9 (该错误编号目前没有使用) 10 (该错误编号目前没有使用) 11 模型中的语句出现了语法错误(不符合LINGO语法) 12 模型中的括号不匹配 13 在电子表格文件中找不到指定的单元范围名称 14 运算所需的,临时堆栈空间不够(这通常意味着模型中的表达式太长了) 15 找不到关系运算符(通常是丢了“<”,“=”或“>”) 16 输入输出时不同对象的大小不一样(使用集合循环方式输入输出时,集合大小应 相同) 17 集合元素的索引的内存堆栈空间不够 18 集合的内存堆栈空间不够 19 索引函数@INDEX使用不当 20 集合名使用不当 21 属性名使用不当 22 不等式或等式关系太多(例如,约束2

在LINGO中的逻辑符号

在LINGO中,逻辑运算符主要用于集循环函数的条件表达式中,来控制在函数中哪些集成员被包含,哪些被排斥。在创建稀疏集时用在成员资格过滤器中。 LINGO具有9种逻辑运算符: #not# 否定该操作数的逻辑值,#not#是一个一元运算符 #eq# 若两个运算数相等,则为true;否则为flase #ne# 若两个运算符不相等,则为true;否则为flase #gt# 若左边的运算符严格大于右边的运算符,则为true;否则为flase #ge# 若左边的运算符大于或等于右边的运算符,则为true;否则为flase #lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flase #le# 若左边的运算符小于或等于右边的运算符,则为true;否则为flase #and# 仅当两个参数都为true时,结果为true;否则为flase #or# 仅当两个参数都为false时,结果为false;否则为true 这些运算符的优先级由高到低为: 高#not# #eq# #ne# #gt# #ge# #lt# #le# 低#and# #or# 例4.2 逻辑运算符示例 2 #gt# 3 #and# 4 #gt# 2,其结果为假(0)。 4.1.3 关系运算符 在LINGO中,关系运算符主要是被用在模型中,来指定一个表达式的左边是否等于、小于等于、或者大于等于右边,形成模型的一个约束条件。关系运算符与逻辑运算符#eq#、#le#、#ge#截然不同,前者是模型中该关系运算符所指定关系的为真描述,而后者仅仅判断一个该关系是否被满足:满足为真,不满足为假。 LINGO有三种关系运算符:“=”、“<=”和“>=”。LINGO中还能用“<”表示小于等 11 于关系,“>”表示大于等于关系。LINGO并不支持严格小于和严格大于关系运算符。然而,如果需要严格小于和严格大于关系,比如让A严格小于B: A=

lingo软件使用教程

lingo软件使用教程 一般来说,一个优化模型将由以下三部分组成: 1. 目标函数(Objective Function):要达到的目标。 2. 决策变量(Decision variables):每组决策变量的值代表一种方案。在优化模型中需要确定决策变量的最优值,优化的目标就是找到决策变量的最优值使得目标函数取得最优。 3. 约束条件(Constraints):对于决策变量的一些约束,它限定决策变量可以取的值。 在写数学模型时,一般第一行是目标函数,接下来是约束条件,再接着是一些非负限制等。在模型窗口输入如下代码: Max = 2*x1+3*x2; X1+2*x2<=8; 4*x1<16; 4*x2<12; 注意:1.每一个lingo表达式最后要跟一个分号; 2.多数电脑中没有符号,lingo中<=代替;为了方便可以用<代替小于等于,用>代替大于等于。 3.我们可以添加一些注释,增加程序的可读性。注释以一个!(叹号必须在英文状态下输入,它会自动变为绿色)开始,以;(分号)结束。 4.Lingo中不区分变量名的大小写。变量名必须以字母(A-Z)开头,后面的字符可以是字母、数字、下划线。变量名不能超过32个字符。 Lingo程序的一些规则: 1. 在Lingo中最开始都是“MAX=”或者“MIN=”开始表示求目标函数的最大或者最小值。 2. 变量和它前面的系数之间要用“*”连接,中间可以有空格。 3. 变量名不区分大小写,但必须以字母开始,不超过32个字符。 4. 数学表达式结束时要用分号“;”表示结束。表达式可以写在多行上,但是表达式中间不能用分号。 5. 在电脑系统中一般没有“小于等于”符号,在Lingo采用“<=”来表示“小于等于”,用“>=”表示“大于等于”。小于等于也可以用更简单的“<”表示,大于等于用“>”表示。 集合段: 在我们已经得到的程序里有一些量没有定义,如WAREHOUSES( I),DEMAND( J), LINKS( I, J)。这些量将在Lingo中的集合段定义。 集合段以SETS:表示开始,以ENDSETS表示结束。 如果一个集合的元素都已经定义过,就可以用一些循环函数(如@for). 注:1. 集合的属性相当于以集合的元素为下标的数组。Lingo中没有数组的概念,只有定义在集合上的属性的概念。 2 集合的定义语法: set_name[/set_member/:][attribute_list]; 集合的名称在左边,右边是这个集合上的属性,他们之间用冒号“:”分割开,最后由分号表示结束。如果在同一个集合上有多个属性时,不同的属性之间用逗号“,”隔开,如本例的cost和volume属性。如果要特别列出集合的元素时,在集合的名称后把元素写在两条斜线之间,如本例中的仓库可以写为 WAREHOUSES/WH1, WH2, WH3, WH4, WH5, WH6/: CAPACITY;

Lingo软件的使用

第十八章LINGO软件的使用 18.1 LINGO入门 18.1.1 LINGO软件的安装过程 点击LINGO9.0 for Windows安装文件,出现 点击“Next”按钮,出现 此时需要接受安装协议。系统安装时默认的目录是C:\LINGO9。安装完成前,会出现下图所示的对话框:

这个对话框询问你希望采用的默认的建模(即编程)语言,系统推荐的是采用LINGO语法,也就是选项“LINGO(recommended)”;你也可以选择“LINDO”将LINDO语法作为默认的设置。当然,安装后你也可以通过“LINGO|Options|File Format命令来修改默认的建模(即编程)语言。在上图中按下“OK”按钮,系统就会完成LINGO的安装过程。 18.1.2 LINGO基础知识 LINGO有两种命令格式:一种是常用的Windows模式,通过下拉式菜单命令驱动LINGO 运行,界面是图形式的,使用起来也比较方便;另一种是命令行(Command-Line)模式,仅在命令窗口(Command Window)下操作,通过输入行命令驱动LINGO运行。由于其使用字符方式输入,初学者往往不太容易掌握。在这里,我们主要介绍在菜单驱动模式下LINGO的使用方法。 LINGO 9.0软件比以前的版本有了很大的改进,功能大大增强,性能更加稳定,计算的结果更加可靠。LINGO软件不仅可用于求解非线性规划问题,还可以用以求解非线性整数规划问题;LINGO包含了内置的建模语言,模型中所需的数据可以以一定格式保存在独立的文件中;LINGO允许以简练、直观的方式描述较大规模的优化问题。 注:LIGDO公司目前已将LINDO软件从其产品中删除了。事实上,LINDO软件的所有功能(包括LINDO语法格式)都在LINGO中得到了支持。 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。状态行最左边显示的是“Ready”表示“准备就绪”;右下角显示的是当前时间,时间前面是当前光标的位置“Ln1,Col1”(即1行1列)。将来,用户可以用选项命令(LINGO|Options菜单命令)决定是否需要显示工具栏和状态行。在LINGO 模型窗口中,选择菜单命令“File|Open(F3)”,可以看到下图所示的标准的“打开文件”对话框,我们看到有各种不同的“文件类型”:

单件作业排序问题的基于lingo软件解法(含代码)

海南大学 《数学模型》课程设计 题目:单件作业排序问题的基于lingo软件解法班级:信息与计算科学 姓名:体贴的瑾色 学号: 指导教师:舒兴明 日期:2017.05

单件作业排序问题的基于lingo软件解法 摘要 关键词:单件工件加工排序 lingo 本文针对一个8*5的单件作业排序问题,通过规定加工顺序,后将不满足这个顺序的工件‘拆分’为不同的工件,然后将问题变成了更为简单的流水作业排序问题。通过引入0-1变量,约束本来同属与一个工件的‘工件’加工顺序建立一个数学规划模型,利用lingo 软件进行模型的求解,得到了使得所有工件都加工完成所需时间最少的排序。最后针对模型做了一个中肯的评价,并将模型推广到m n的单件作业排序问题。 解决*

一、问题分析 该问题是一个单件作业排序问题,这是一般的工件排序问题,也是最复杂的工件排序问题,即每一个工件都有自己独特的加工路线,工件没有一定的流向,这类排序问题暂时还没有一种很好的解决方案。而与之区别的一种工件排序问题是流水作业排序问题,最大的不同就是流水作业排序中在不同的工件在多个机床上的加工顺序是一致的情况下也能够找到最优解或者近似最优解,这类问题往往能得到比较好的解决。本问题对工件在不同机床上加工的顺序做了限制,而且一个工件可能多次在同一个机床上加工,使得问题比较复杂,而如果我们规定工件在机床上加工的顺序只能为A-B-C-D-E,且若某个工件不满足这个顺序就将其看为多个符合顺序的工件组合。比如问题中的工件1加工顺序为A-B-A-C-D-E,在第三道工序不满足规定的顺序,那么就将其拆分为加工顺序为A-B—C-D-E和A-B-C-D-E的两个工件1.1和1.2,其中工件1.2必须在工件1.1全部加工完成后才可以进行加工,并且工件1.1的CDE三道工序加工时间都为0,工件1.2的工序B加工时间为0。如此该问题就变成了一个20个工件在5个机床上加工的流水作业排序问题。变换后的加工时间表为(为了方便处理,将变换后的零件仍然以自然数编号,单位为h): 这样只要决定了每个工件在每个机床的初始时刻,顺序一旦确定,每个工件在每

lingo错误代码汇总

lingo 错误代码大全 LINGO 出错时错误代码含义: 在LINGO 程序求解时,系统首先会对程序进行编译.系统在编译或执 行其他命令 时,会因程序中的错误或运行错误,弹出一个出错报告窗口,显示其 错误代码,并简要指 出错误的原因.这些错误报告信息能够提示用户发现程序中的错误, 以便能尽快修改.下面我们给出出错信息的一个简要说明,仅供参 考.LINGO 错误编号及原因对照表。 错误代码 含义 0 LINGO 模型生成器的内存已经用尽(可用“ LINGOQptions"命 令对 General Solver 选项卡中的“ Generator Memory Limit" 选项进行内存大小的修改 ) 1 模型中的行数太多 (对于有实际意义的模型,这个错误很少出 现) 2 模型中的字符数太多 (对于有实际意义的模型,这个错误很少 出现) 3 模型中某行的字符数太多 (每行不应该超过 200个字符,否则 应换行) 4 指定的行号超出了模型中实际具有的最大行号 (这个错误通常 在LOOK 命令中指定了非法的行号时出现) 5 当前内存中没有模型 6 脚本文件中TAKE 命令的嵌套重数太多(LINGO 中限定TAKE 命 令最多嵌套 10次) 7 无法打开指定的文件 ( 通常是指定的文件名拼写错误 ) 8 脚本文件中的错误太多,因此直接返回到命令模式 (不再继续 处理这个脚本文件 ) 9 ( 该错误编号目前没有使用 ) 10 ( 该错误编号目前没有使用 ) 11 模型中的语句出现了语法错误(不符合LINGO 语法) 模型中的括号不匹配 在电子表格文件中找不到指定的单元范围名称 12 13

lingo求解

Lingo超经典案例大全网址 https://www.wendangku.net/doc/dd11691146.html,/view/2184e18ca58da0116d174904.html lingo只能得出一个解 【1】 Extended solver steps 特殊求解程序当前运行步数: 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序) 【2】 Total solver iterations 目前为止的迭代次数 【3】Row 对照lingo--generate--display中每行 【4】Slack or Surplus 各种原料的剩余 【5】Dual Price 影子价格

求改lingo程序,用sets:endsets 2012-08-15 08:55 _楓零|分类:其他编程语言|浏览207次 min=1020*2-(48.7*(x11+x12)+52.0*(x21+x22)+61.3*(x31+x32)+72.0*(x41+x4 2)+48.7*(x51+x52)+52.0*(x61+x62)+64.0*(x71+x72)); 2*x11+3*x21+x31+0.5*x41+4*x51+2*x61+x71<=40; 2*x12+3*x22+x32+0.5*x42+4*x52+2*x62+x72<=40; 48.7*x11+52.0*x21+61.3*x31+72.0*x41+48.7*x51+52.0*x61+64.0*x71<=1020; 48.7*x12+52.0*x22+61.3*x32+72.0*x42+48.7*x52+52.0*x62+64.0*x72<=1020; x11+x12<=8; x21+x22<=7; x31+x32<=9; x41+x42<=6; x51+x52<=6; x61+x62<=4; x71+x72<=8; 48.7*x51+52.0*x61+64.0*x71<=302.7; 48.7*x52+52.0*x62+64.0*x72<=302.7; x11>=0;x21>=0;x31>=0;x41>=0;x51>=0;x61>=0;x71>=0; x12>=0;x22>=0;x32>=0;x42>=0;x52>=0;x62>=0;x72>=0; @gin(x11); @gin(x21); @gin(x31); @gin(x41); @gin(x51); @gin(x61); @gin(x71); @gin(x12); @gin(x22); @gin(x32); @gin(x42);

LINGO调试-最全Lingo错误代码

最全LINGO错误编号及原因对照表错误代码含义 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 LINGO模型生成器的内存已经用尽(可用“LINGO|Options"命令对General Solver选项卡中的“Generator Memory Limit"选项进行内存大小的修改) 模型中的行数太多(对于有实际意义的模型,这个错误很少出现) 模型中的字符数太多(对于有实际意义的模型,这个错误很少出现) 模型中某行的字符数太多(每行不应该超过200个字符,否则应换行) 指定的行号超出了模型中实际具有的最大行号(这个错误通常在LOOK命令中指定了非法的行号时出现) 当前内存中没有模型 脚本文件中TAKE命令的嵌套重数太多(LINGO中限定TAKE命令最多嵌套10次) 无法打开指定的文件(通常是指定的文件名拼写错误) 脚本文件中的错误太多,因此直接返回到命令模式(不再继续处理这个脚本文件) (该错误编号目前没有使用) (该错误编号目前没有使用) 模型中的语句出现了语法错误(不符合LINGO语法) 模型中的括号不匹配 在电子表格文件中找不到指定的单元范围名称 运算所需的,临时堆栈空间不够(这通常意味着模型中的表达式太长了) 找不到关系运算符(通常是丢了“<”,“=”或“>”) 输入输出时不同对象的大小不一样(使用集合循环方式输入输出时,集合大小应相同) 集合元素的索引的内存堆栈空间不够 集合的内存堆栈空间不够 索引函数@INDEX使用不当 集合名使用不当 属性名使用不当 不等式或等式关系太多(例如,约束2

基于投资风险决策的分析

淮阴工学院专业实践周 (2) 班级: 姓名: 学号: 选题: A 组第 30 题 教师:

基于投资风险决策的分析 摘要 本文是对开放式基金投资项目问题的研究,开放式基金投资项目问题在现实生活中有着广泛的应用前景。 本文主要采用运筹学的知识,同时采用了MATLAB的知识,采用整数线性规划建立模型,并进行优化,将实际问题数学化。对于本题,我们层层递进,考虑到了各项目之间的相互影响、风险等这些因素,综合考虑现实市场因素和股票的影响因素,对资金的投入和最终的利润进行比较,然后对各种方法得到的投资方案进行对比,优选出更合理的方案,最后采用数学软件(如:LinGo、MATLAB)进行模型求解。 关键词:整数线性规划LinGo MATLAB 风险率利润

一、问题重述 某开放式基金现有总额为15亿元的资金可用于投资,目前共有8个项目可供投资者选择,每个项目可重复投资。根据专家经验,对每个项目投资总额不能太高,应有上限。这些项目所需要的投资额已知,一般情况下投资一年后各项目所得利润也可估算出来,如表1所示。 表1 项目投资额及其利润单位:万元 请帮该公司解决以下问题: (1)就表1提供的数据,应该投资哪些项目,使得第一年所得利润最高? (2)在具体投资这些项目时,实际还会出现项目之间互相影响的情况。公司咨询有关专家后,得到以下可靠信息:同时投资项目A1,A3,它们的年利润分别是1005万元,1018.5万元;同时投资项目A4,A5,它们的年利润分别是1045万元,1276万元;同时投资项目A2,A6,A7,A8,它们的年利润分别是1353万元,840万元,1610万元,1350万元,该基金应如何投资? (3)如果考虑投资风险,则应如何投资,使收益尽可能大,而风险尽可能小。投资项目总体风险可用投资项目中最大的一个风险来衡量。专家预测出各项目的风险率,如表2所示。 表2 二、问题的假设 1. 不考虑投资所需的投资费,交易费; 2. 假设投资项目利润,投资风险率不受外界因素影响; 3. 不考虑保留资金以存款的形式获得的利润; 4. 在投资过程中,不考虑政策,政府条件对投资的影响; 5. 在利润相同的情况下,投资人对于每个项目的投资偏好是一样; 三、符号说明 x:第i个项目的投资股数 i

LINGO出错时错误代码含义

LINGO出错时错误代码含义 LINGO出错时错误代码含义: 在LINGO程序求解时,系统首先会对程序进行编译.系统在编译或执行其他命令 时,会因程序中的错误或运行错误,弹出一个出错报告窗口,显示其错误代码,并简要指出错误的原因.这些错误报告信息能够提示用户发现程序中的错误,以便能尽快修改.下 面我们给出出错信息的一个简要说明,仅供参考. LINGO错误编号及原因对照表 错误代码含义 0 LINGO模型生成器的内存已经用尽(可用“LINGO|Options"命令对General Solver 选项卡中的“Generator Memory Limit"选项进行内存大小的修改) 1 模型中的行数太多(对于有实际意义的模型,这个错误很少出现) 2 模型中的字符数太多(对于有实际意义的模型,这个错误很少出现) 3 模型中某行的字符数太多(每行不应该超过200个字符,否则应换行) 4 指定的行号超出了模型中实际具有的最大行号(这个错误通常在LOOK命令中指定 了非法的行号时出现) 5 当前内存中没有模型 6 脚本文件中TAKE命令的嵌套重数太多(LINGO中限定TAKE命令最多嵌套10次) 7 无法打开指定的文件(通常是指定的文件名拼写错误) 8 脚本文件中的错误太多,因此直接返回到命令模式(不再继续处理这个脚本文件) 9 (该错误编号目前没有使用) 10 (该错误编号目前没有使用) 11 模型中的语句出现了语法错误(不符合LINGO语法) 12 模型中的括号不匹配 13 在电子表格文件中找不到指定的单元范围名称 14 运算所需的,临时堆栈空间不够(这通常意味着模型中的表达式太长了) 15 找不到关系运算符(通常是丢了“<”,“=”或“>”) 16 输入输出时不同对象的大小不一样(使用集合循环方式输入输出时,集合大小应 相同) 17 集合元素的索引的内存堆栈空间不够 18 集合的内存堆栈空间不够 19 索引函数@INDEX使用不当 20 集合名使用不当

lingo教程_和matlab入门教程

lingo 使用教程 LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。 §1 LINGO 快速入门 当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1 如何在LINGO 中求解如下的LP 问题: ,6002100 350. .32min 21211 212 1≥≤+≥≥++x x x x x x x t s x x 在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。

model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据; data: capacity=60 55 51 43 41 52; demand=35 37 22 32 41 32 43 38; cost=6 2 6 7 4 2 9 5 4 9 5 3 8 5 8 2 5 2 1 9 7 4 3 3 7 6 7 3 9 2 7 1 2 3 9 5 7 2 6 5 5 5 2 2 8 1 4 3; enddata end 然后点击工具条上的按钮即可。 为了能够使用LINGO的强大功能,接着第二节的学习吧。 §2 LINGO中的集 对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。LINGO允许把这些相联系的对象聚合成集(sets)。一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。 现在我们将深入介绍如何创建集,并用数据初始化集的属性。学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。 2.1 为什么使用集 集是LINGO建模语言的基础,是程序设计最强有力的基本构件。借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。

LINGO 教程 教材

LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例1.1如何在LINGO中求解如下的LP问题:

在模型窗口中输入如下代码:min=2*x1+3*x2; x1+x2>=350; x1>=100; 2*x1+x2<=600; 然后点击工具条上的按钮 即可。 例1.2使用LINGO软件计算6个发点8个收点的最小费用运输问题。产销单位运价如下表。

使用LINGO软件,编制程序如下: model: !6发点8收点运输问题; sets: warehouses/wh1..wh6/: capacity; vendors/v1..v8/: demand; links(warehouses,vendors): cost, volume; endsets !目标函数; min=@sum(links: cost*volume); !需求约束; @for(vendors(J): @sum(warehouses(I): volume(I,J))=demand(J)); !产量约束; @for(warehouses(I): @sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据;

Lingo错误代码完整版

LINGO错误编号及原因对照表 错误含选项卡中General Solve甥?挱??籏灏楴湯LING模型生成器的内存已经用0可命令) 选项进行内存大小的修甥?挱敇敮慲潴?敍潭祲?浩 ) 对于有实际意义的模型,这个错误很少出模型中的行数太1 ) 模型中的字符数太对于有实际意义的模型,这个错误很少出2 ) 模型中某行的字符数太20个字符,否则应换每行不应该超3 命令中指定了非法的行号LOO这个错误通常指定的行号超出了模型中实际具有的最大行4) 出5当前内存中没有模6)命令最多嵌1TAKTAK脚本文件命令的嵌套重数太(LING中限7) 通常是指定的文件名拼写错无法打开指定的文8)不再继续处理这个脚本文脚本文件中的错误太多,因此直接返回到命令模9)该错误编号目前没有使10) 该错误编号目前没有使11)LING模型中的语句出现了语法错不符语12模型中的括号不匹13在电子表格文件中找不到指定的单元范围名14)运算所需的,临时堆栈空间不这通常意味着模型中的表达式太长15“<找不到关系运算通常是丢“>”16)输入输出时不同对象的大小不一使用集合循环方式输入输出时,集合大小应相同17 集合元素的索引的内存堆栈空间不够18 集合的内存堆栈空间不够19 使用不当@INDEX索引函数. 20集合名使用不 属性名使用不21 不等式或等式关系太例如,约2<是不允许出现在同一个语句中>22 参数个数不23 集合名不合24 函@WKX(的参数非注:LING09.25中已经没有函@WKX()) 集合的索引变量的个数不26 在电子表格文件中指定的单元范围不连27 行名不合28 数据段或初始段的数据个数不29 链接Exce时出现错30 使@TEX31函数时参数不合 使用了空的集合成员32 使@OLE函数时参数不合33 用电子表格文件中指定的多个单元范围生成派生集合时,单元范围的大小应该一34 输出时用到了不可识别的变量35 基本集合的元素名不合36 集合名已经被使用37 ODB服务返回了错误信38 派生集合的分量元39下不再原来的父集合 派生集合的索引元素的个数不40 定义派生集合时所使用的基本集合的个数太多(41 一般不会出现这个错误) 集合过滤条件的表达式中出现了取值不固定的变量42 43集合过滤条件的表达式运算出

用LINDO、LINGO 解运筹学问题

用LINDO、LINGO 解运筹学问题 一、 软件简介 LINDO是一种专门用于求解数学规划问题的软件包。由于LINDO执行速度很快、易于方便输入、求解和分析数学规划问题。因此在数学、科研和工业界得到广泛应用。LINDO主要用于解线性规划、非线性规划、二次规划和整数规划等问题。也可以用于一些非线性和线性方程组的求解以及代数方程求根等。LINDO中包含了一种建模语言和许多常用的数学函数(包括大量概论函数),可供使用者建立规划问题时调用。 一般用LINDO(Linear Interactive and Discrete Optimizer)解决线性规划(LP—Linear Programming)。整数规划(IP—Integer Programming)问题。其中LINDO 6 .1 学生版至多可求解多达300个变量和150个约束的规划问题。其正式版(标准版)则可求解的变量和约束在1量级以上。 LINGO则用于求解非线性规划(NLP—NON—LINEAR PROGRAMMING)和二次规则(QP—QUARATIC PROGRAMING)其中LINGO 6.0学生版最多可版最多达300个变量和150个约束的规则问题,其标准版的求解能力亦再10^4量级以上。虽然LINDO和LINGO不能直接求解目标规划问题,但用序贯式算法可分解成一个个LINDO和LINGO能解决的规划问题。 要学好用这两个软件最好的办法就是学习他们自带的HELP文件。 二、下面拟举数例以说明这两个软件的最基本用法。(例子均选自张莹《运筹学基础》)

例1.(选自《运筹学基础》P54.汽油混合问题,线性规划问题) 一种汽油的特性可用两个指标描述:其点火性用“辛烷数”描述,其挥发性用“蒸汽压力”描述。某炼油厂有四种标准汽油,设其标号分别为1,2,3,4,其特性及库存量列于下表1中,将上述标准汽油适量混合,可得两种飞机汽油,某标号为1,2,这两种飞机汽油的性能指标及产量需求列于表2中。问应如何根据库存情况适量混合各种标准汽油,使既满足飞机汽油的性能指标,而产量又为最高。 表1 标准汽油 辛烷数 蒸汽压力(g/cm^2) 库存量 1 107.5 7.11*10^(-2) 380000 2 93.0 11.38*10^(-2) 262200 3 87.0 5.69*10^(-2) 408100 4 108.0 28.45*10^(-2) 130100 (1 g/cm^2=98Pa) 表2 飞机汽油 辛烷数 蒸汽压力(g/cm^2) 产量需求(L) 1 >=91 <=9.96*10^(-2) 越多越好 2 >=100 <=9.96*10^(-2) >=250000 建模过程略(详见《运筹学基础》P54—55) 目标函数:max z=x1+x2+x3+x4

相关文档