lingo求解.docx
- 文档编号:29293737
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:16
- 大小:23.65KB
lingo求解.docx
《lingo求解.docx》由会员分享,可在线阅读,更多相关《lingo求解.docx(16页珍藏版)》请在冰豆网上搜索。
lingo求解
Lingo超经典案例大全网址
lingo只能得出一个解
【1】
Extendedsolversteps
特殊求解程序当前运行步数:
分枝数(对B-and-B程序);
子问题数(对Global程序);
初始点数(对Multistart程序)
【2】
Totalsolveriterations
目前为止的迭代次数
【3】Row
对照lingo--generate--display中每行
【4】SlackorSurplus
各种原料的剩余
【5】DualPrice
影子价格
求改lingo程序,用sets:
endsets
2012-08-1508:
55_楓零|分类:
其他编程语言|浏览207次
min=1020*2-(48.7*(x11+x12)+52.0*(x21+x22)+61.3*(x31+x32)+72.0*(x41+x42)+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);
@gin(x52);
@gin(x62);
@gin(x72);
end
sets:
r/1..7/:
d1,d2,d3;
c/1..2/:
;
link(r,c):
x;
endsets
data:
d1=48.752.061.372.048.752.064.0;
d2=2310.5421;
d3=8796648;
enddata
min=1020*2-@sum(link(i,j):
d1(i)*x(i,j));
@for(c(j):
@sum(r(i):
d2(i)*x(i,j))<=40);
@for(c(j):
@sum(r(i):
d1(i)*x(i,j))<=1020);
@for(r:
@sum(c:
x)<=d3);
@for(c(j):
@sum(r(i)|i#ge#5:
d1(i)*x(i,j))<=302.7);
@for(link:
@gin(x));
end
在lingo中怎么输入数组
lingo用的是集没有数组的概念
首先需要在sets段定义集
sets:
setname/1..4/:
x;
endsets
然后在data段写数据
data:
x=1234;
enddata
LINGO中/M#EQ#N是什么意思
表示逻辑关系的#eq#若两个运算数相等,则为true;否则为flase
同类的还有gtgeltlene这些gt就是greaterthan大于ge是greaterthanorequalto表示大于等于类推ltle是小于和小于等于ne是notequalto不等于
常用在集合里面用来筛选集合中元素的指标
比如在循环里@for(s1(i)|i#gt#1:
....)表示对集s1中指标大于1的进行循环
在集定义里面比如下面的表示一个由students和students得到的派生集里面第一个集中sex满足等于1第二个满足sex等于2的元素的派生
linkmf(students,students)|sex(&1)#eq#1#and#sex(&2)#eq#0:
friend;
Globaloptimalsolutionfound.
Objectivevalue:
3.050000
Extendedsolversteps:
0
Totalsolveriterations:
37
VariableValueReducedCost
U
(1)3.0000000.000000
U
(2)0.0000000.000000
U(3)1.0000000.000000
U(4)2.0000000.000000
D(1,1)0.0000000.000000
D(1,2)0.42000000.000000
D(1,3)0.91000000.000000
D(1,4)1.2900000.000000
D(2,1)0.42000000.000000
D(2,2)0.0000000.000000
D(2,3)0.57000000.000000
D(2,4)1.1600000.000000
D(3,1)0.91000000.000000
D(3,2)0.57000000.000000
D(3,3)0.0000000.000000
D(3,4)0.77000000.000000
D(4,1)1.2900000.000000
D(4,2)1.1600000.000000
D(4,3)0.77000000.000000
D(4,4)0.0000000.000000
X(1,1)0.0000000.000000
X(1,2)1.0000000.4200000
X(1,3)0.0000000.9100000
X(1,4)0.0000001.290000
X(2,1)0.0000000.4200000
X(2,2)0.0000000.000000
X(2,3)1.0000000.5700000
X(2,4)0.0000001.160000
X(3,1)0.0000000.9100000
X(3,2)0.0000000.5700000
X(3,3)0.0000000.000000
X(3,4)1.0000000.7700000
X(4,1)1.0000001.290000
X(4,2)0.0000001.160000
X(4,3)0.0000000.7700000
X(4,4)0.0000000.000000
RowSlackorSurplusDualPrice
13.050000-1.000000
20.0000000.000000
30.0000000.000000
40.0000000.000000
50.0000000.000000
60.0000000.000000
70.0000000.000000
80.0000000.000000
90.0000000.000000
106.0000000.000000
110.0000000.000000
125.0000000.000000
135.0000000.000000
142.0000000.000000
150.0000000.000000
160.0000000.000000
171.0000000.000000
182.0000000.000000
LINGO1.1出错时错误代码含义
LINGO出错时错误代码含义:
在LINGO程序求解时,系统首先会对程序进行编译.系统在编译或执行其他命令
时,会因程序中的错误或运行错误,弹出一个出错报告窗口,显示其错误代码,并简要指
出错误的原因.这些错误报告信息能够提示用户发现程序中的错误,以便能尽快修改.下
面我们给出出错信息的一个简要说明,仅供参考.
LINGO错误编号及原因对照表
错误代码 含义
0 LINGO模型生成器的内存已经用尽(可用“LINGO|Options"命令对GeneralSolver
选项卡中的“GeneratorMemoryLimit"选项进行内存大小的修改)
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 23 参数个数不符 24 集合名不合法 25 函数@WKX()的参数非法(注: 在LING09.0中已经没有函数@WKX()) 26 集合的索引变量的个数不符 27 在电子表格文件中指定的单元范围不连续 28 行名不合法 29 数据段或初始段的数据个数不符 30 链接到Excel时出现错误 31 使用@TEXT函数时参数不合法 32 使用了空的集合成员名 33 使用@OLET函数时参数不合法 34 用电子表格文件中指定的多个单元范围生成派生集合时,单元范围的大小应该一 致 35 输出时用到了不可识别的变量名 36 基本集合的元素名不合法 37 集合名已经被使用过 38 ODBC服务返回了错误信息 39 派生集合的分量元素(下标)不再原来的父集合中 40 派生集合的索引元素的个数不符 41 定义派生集合时所使用的基本集合的个数太多(一般不会出现这个错误) 42 集合过滤条件的表达式中出现了取值不固定的变量 43 集合过滤条件的表达式运算出错 44 过滤条件的表达式没有结束(即没有“: ”标志) 45 @ODBC函数的参数列表错误 46 文件名不合法 47 打开的文件太多 48 不能打开文件 49 读文件时发生错误 50 @FOR函数使用不合法 51 编译时LINGO模型生成器的内存不足 52 @IN函数使用不当 53 在电子表格文件中找不到指定的单元范围名称(似乎与出错代码“13”含义类似) 54 读取电子表格文件时出现错误 55 @TEXT函数不能打开文件 56 @TEXT函数读文件时发生错误 57 @TEXT函数读文件时出现了非法输入数据 58 @TEXT函数读文件时出现发现输入数据比实际所需要的少 59 @TEXT函数读文件时出现发现输入数据比实际所需要的多 60 用@TEXT函数输入数据时,没有指定文件名 61 行命令拼写错误 62 LINGO生成模型时工作内存不足 63 模型的定义不正确 64 @FOR函数嵌套太多 65 @WARN函数使用不当 66 警告: 固定变量取值不唯一(例如: 任意正数都是约束@SIGN(X)=l的解) 67 模型中非零系数过多导致内存耗尽 68 对字符串进行非法的算术运算 69 约束中的运算符非法 70 属性的下标越界 71 变量定界函数(@GIN,@BIN,@FREE,@BND)使用错误 72 不能从固定约束(只含有固定变量的约束)中求出固定变量的值(相当于方程无解 ,或者LINGO的算法解不出来,如迭代求解算法不收敛) 73 在LINGO生成模型(对模型进行结构分析)时,用户中断了模型生成过程 74 变量越界,超出了1032 75 对变量的定界相互冲突(例如: 一个模型中同时指定@BND(-6,X,6)和@BND(-5,X ,5)是允许的,但同时指定@BND(-6,X,6)和@BND(7,X,9)则是冲突的.) 76 LINGO生成模型时出现错误,不能将模型转交给优化求解程序 77 无定义的算术运算(例如除数为0) 78 (该错误编号目前没有使用) 79 (该错误编号目前没有使用) 80 生成LINGO模型时系统内存已经用尽 81 找不到可行解 82 最优值无界 83 (该错误编号目前没有使用) 84 模型中非零系数过多 85 表达式过于复杂导致堆栈溢出 86 算术运算错误(如1/0或@LOG(-1)等) 87 @IN函数使用不当(似乎与错误代码“52”相同) 88 当前内存中没有存放任何解 89 LINGO运行时出现了意想不到的错误(请与LINGO公司联系解决问题) 90 在LINGO生成模型时,用户中断了模型生成过程 91 当在数据段有“变量=? ”语句时,LINGO运行中将要求用户输人这个变量的值, 如果这个值输入错误,将显示这个错误代码 92 警告: 当前解可能不是可行的/最优的 93 命令行中的转换修饰词错误 94 (该错误编号目前没有使用) 95 模型求解完成前,用户中断了求解过程 96 (该错误编号目前没有使用) 97 用TAKE命令输入模型时,出现了不可识别的语法 98 用TAKE命令输入模型时,出现了语法错误 99 语法错误,缺少变量 100 语法错误,缺少常量 101 (该错误编号目前没有使用) 102 指定的输出变量名不存在 103 (该错误编号目前没有使用) 104 模型还没有被求解,或者模型是空的 105 (该错误编号目前没有使用) 106 行宽的最小最大值分别为68和200 107 函数@POINTER指定的索引值无效 108 模型的规模超出了当前LINGO版本的限制 109 达到了迭代上限,所以LINGO停止继续求解模型(迭代上限可以通过 “LING0|0ptions”命令对GeneralSolver选项卡中的“Iteration”选项进行修改) 110 HIDE(隐藏)命令指定的密码超出了8个字符的限制 111 模型是隐藏的,所以当前命令不能使用 112 恢复隐藏模型时输入的密码错误 113 因为一行内容太长,导致LOOK或SAVE命令失败 114 HIDE(隐藏)命令指定的两次密码不一致,命令失败 115 参数列表过长 116 文件名(包括路径名)太长 117 无效的命令 118 命令不明确(例如,可能输入的是命令的缩写名,而这一缩写可有多个命令与之 对应) 119 命令脚本文件中的错误太多,LINGO放弃对它继续处翠 120 LINGO无法将配置文件(LINGO.CNF)写入启动目录或工作目录(可能是权限问题) 121 整数规划没有敏感性分析 122 敏感性分析选项没有激活,敏感性分析不能进行(可通过“LINGO|Options”命令 对GeneralSolver选项卡中的“DualComputation”选项进行修改) 123 调试(Debug)命令只对线性模型、且模型不可行或无界时才能使用 124 对一个空集合的属性进行初始化 125 集合中没有元素 126 使用ODBC连接输出时,发现制定的输出变量名不存在 127 使用ODBC连接输出时,同时输出的变量的维数必须相同 128 使用SET命令时指定的参数索弓I无效 129 使用SET命令时指定的参数的取值无效 130 使用SET命令时指定的参数名无效 131 FREEZE命令无法保存配置文件LINGO.CNF(可能是权限问题) 132 LINGO读配置文件(LINGO.CNF)时发生错误 133 LINGO无法通过OLE连接电子表格文件(如: 当其他人正在编辑这个文件时) 134 输出时出现错误,不能完成所有输出操作 135 求解时间超出了限制(可通过“LING0|0ptions”命令对GeneralSolver选项卡中 的“Time”选项进行修改) 136 使用@TEXT函数输出时出现错误操作 137 (该错误编号目前没有使用) 138 DIVERT(输出重新定向)命令的嵌套次数太多(最多不能超过10次嵌套) 139 DIVERT(输出重新定向)命令不能打开指定文件 140 只求原始最优解时无法给出敏感性分析信息(可通过“LING0|0ptions”命令对 GeneralSolver选项卡中的“DualComputation”选项进行修改) 141 对某行约束的敏感性分析无法进行,因为这一行已经是固定约束(即该约束中所 有变量都已经在直接求解程序进行预处理时被固定下来了) 142 出现了意想不到的错误(请与LINDO公司联系解决这个问题) 143 使用接口函数输出时,同时输出的对象的维数必须相同 144 @POINTER函数的参数列表无效 145 @POINTER函数出错: 2-输出变量无效;3-内存耗尽;4-只求原始最优解时无法给 出敏感性分析信息;5-对固定行无法给出敏感性分析信息;6-意想不到的错误. 146 基本集合的元素名与模型中的变量名重名(当前版本的LINGO中这本来是允许的, 但如果通过“LING0|0ptions”命令在“GeneralSolver”选项卡选择“Checkfor duplicatesnamesindataandmodel”,则会检查重名,这主要是为了与以前的LINGO 版本兼容) 147 @WARN函数中的条件表达式中只能包含固定变量 148 @OLE函数在当前操作系统下不能使用(只在Windows操作系统下可以使用) 149 (该错误编号目前没有使用) 150 @ODBC函数在当前操作系统下不能使用(只在Windows操作系统下可以使用) 151
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- lingo 求解
![提示](https://static.bdocx.com/images/bang_tan.gif)