lingo入门教程之一 --- 初识lingo

lingo对于一些线性或者非线性的规划,优化问题非常有效

首先介绍一下,在lingo中运行程序时出现的页面(在工具栏点击类似靶子一样的图标便可运行)

lingo入门教程之一 --- 初识lingo_第1张图片

 

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入门教程之一 --- 初识lingo_第2张图片

 

第一行表示在经过457次迭代后得到局部最优解

第二行给出该局部最优解的具体值

下面给出取局部最优值时,x1 x2的具体取值

 

这里求解的是局部最优解,如果想求出全局最优解,可以进行页面设置:lingo --> option --> global solver --> 勾选use global solver

对于运行结果也可以另存为,格式一般为ldt,因为有时候对于求解一个问题,或许需要运行很久才可以得出结果,所以没必要每次为了看结果都运行,而是运行成功一次后便把结果保存下来

 

注意事项

LINGO总是根据“MAX=”或“MIN=”寻找目标函数;

程序语句的顺序一般不重要,既可以随意调换;

程序运用函数时都是以@开头;

程序中的变量默认为非负数,想要改变变量类型必须有相应函数调整

程序中变量不区分大小写;

语句必须以分号结尾;

注释以!开始,且注释语句后面必须也有分号,注释默认注释到第一个分号处,意思是分号前面会全部被注释掉。

 

例题:

lingo入门教程之一 --- 初识lingo_第3张图片

 

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非负整数

 

 

 

 

 

你可能感兴趣的:(lingo)