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)(求解花费的时间)


运行之后页面介绍(这里的运行界面并不是与上面的运行过程中出现界面一致,即并非来自于同一个程序运行出现)

第一行表示在经过457次迭代后得到局部最优解
第二行给出该局部最优解的具体值
下面给出取局部最优值时,x1 x2的具体取值

这里求解的是局部最优解,如果想求出全局最优解,可以进行页面设置:lingo --> option --> global solver --> 勾选use global solver
对于运行结果也可以另存为,格式一般为ldt,因为有时候对于求解一个问题,或许需要运行很久才可以得出结果,所以没必要每次为了看结果都运行,而是运行成功一次后便把结果保存下来



注意事项

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

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

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

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

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

语句必须以分号结尾;

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


例题:

[plain]  view plain  copy
  1. max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; !目标函数;  
  2.   
  3. !约束条件;  
  4. x1<=2*x2;  
  5. x1+x2<100;  
  6.   
  7. @gin(x1);@gin(x2); !x1 x2非负整数