lingo对于一些线性或者非线性的规划,优化问题非常有效
首先介绍一下,在lingo中运行程序时出现的页面(在工具栏点击类似靶子一样的图标便可运行)
Solver status:求解器(求解程序)状态框
Model Class:当前模型的类型:LP,QP,ILP,IQP,PILP,PIQP,NLP,INLP,PINLP(以I开头表示IP,以PI开头表示PIP)
State:当前解的状态: "Global Optimum", "LocalOptimum", "Feasible", "Infeasible“(不可行), "Unbounded“(无界), "Interrupted“(中断), "Undetermined“(未确定)
Object:解的目标函数值
Infeasibility:当前约束不满足的总量(不是不满足的约束的个数):实数(即使该值=0,当前解也可能不可行,因为这个量中没有考虑用上下界命令形式给出的约束)
Iteration:目前为止的迭代次数
Extend solverstatus:扩展的求解器(求解程序)状态框
Solver type:使用的特殊求解程序:
Bestobj :目前为止找到的可行解的最佳目标函数值
Objbound:目标函数值的界
Steps:特殊求解程序当前运行步数:
Active:有效步数
Variables(变量数量):
变量总数(Total)、
非线性变量数(Nonlinear)、
整数变量数(Integer)。
Constraints(约束数量):
约束总数(Total)、
非线性约束个数(Nonlinear)。
Nonzeros(非零系数数量):
总数(Total)、
非线性项系数个数(Nonlinear)。
GeneratorMemory Used (K) (内存使用量)
ElapsedRuntime (hh:mm:ss)(求解花费的时间)
注意事项
LINGO总是根据“MAX=”或“MIN=”寻找目标函数;
程序语句的顺序一般不重要,既可以随意调换;
程序运用函数时都是以@开头;
程序中的变量默认为非负数,想要改变变量类型必须有相应函数调整
程序中变量不区分大小写;
语句必须以分号结尾;
注释以!开始,且注释语句后面必须也有分号,注释默认注释到第一个分号处,意思是分号前面会全部被注释掉。
例题:
- max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; !目标函数;
- !约束条件;
- x1<=2*x2;
- x1+x2<100;
- @gin(x1);@gin(x2); !x1 x2非负整数