用Lingo软件求解非线性规划建立0-1规划模型,请教一下最后一行怎么写

img

用Lingo软件求解非线性规划建立0-1规划模型,请教一下最后一行怎么写

要建立0-1规划模型,最后一行约束条件应该类似于:

BinaryVarA + BinaryVarB + BinaryVarC <= 1

其中BinaryVarA、BinaryVarB和BinaryVarC是0-1变量,表示对应的决策变量是否被选择。这个式子的意思是只能选择其中的一个决策变量,不能同时选择。

在Lingo软件中建立0-1规划模型,最后一行需要添加如下约束:

0 <= 变量 <= 1
这确保所有的0-1规划变量只能取01两个值。
一个简单的0-1规划模型示例如下:
Sets:
产品={产品1,产品2,产品3};
变量:
x(产品) 生产变量;
最大化目标函数: 
3*x(产品1) + 2*x(产品2) + x(产品3); 
约束:
x(产品1) + x(产品2) <= 5   资源1限制
x(产品2) + x(产品3) <= 3   资源2限制
0 <= x(产品) <= 1;        0-1规划变量约束
End
在模型最后添加0-1规划变量约束:
0 <= x(产品) <= 1;  


即可确保x(产品1)、x(产品2)、x(产品3)这三个变量只能取0或1。
关于Lingo软件的0-1规划建模,这里给出一些其他提示:

  1. 定义0-1规划变量时,类型选择“Binary”
  2. 目标函数和约束需使用线性表达式
  3. 可以使用Lingo提供的求解器Solve来求解模型,并输出解
  4. 可以使用@函数输出结果,如:@GINDEX(x(产品))输出决策变量的值
  5. 复杂模型可使用Genetic算法Honer-RT求更好解
  • 这篇博客: 基于lingo的线性回归和非线性回归中的 2.1线性回归 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  •         对于一般线性回归 y=ax+b, 我们引入相关系数R^{2}作为评价指标,R^{2}越接近于1,吻合程度越高,越接近0,则吻合程度越低。于是我们将R^{2}作为目标函数求解最大值得到系数最优解

    目标函数

    \large max=R^{2}

    约束条件:

    \large \hat{y}=ax+b

    \large R^2=1-\frac{\sum (y-\hat{y})^{2}}{ \sum (y-\bar{y})^{2} }

    lingo程序:

    model:
    sets:
    data/1..21/:x,y,y_fit;!创建x,y,x_fit的原数据和回归矩阵;
    endsets
    data:
    x=13,15,16,21,22,23,25,29,30,31,36,40,42,55,60,62,64,70,72,100,130;!读入x,y数据;
    y=11,10,11,12,12,13,13,12,14,16,17,13,14,22,14,21,21,24,17,23,34;
    enddata
    max=R_square;!目标函数为R^2最大;
    R_square=1-@sum(data:((y-y_fit)^2))/@sum(data:((y-y_meanvalue)^2));!计算R^2;
    @for(data:y_fit=a*x+b);!线性回归函数;
    y_meanvalue=@sum(data:y)/@size(data);!求y的均值;
    @free(a);!释放a,b的取值范围;
    @free(b);
    end

    求解结果如下表:

    R^{2}0.8402766
    a0.1795222
    b8.208418

    由于lingo不方便做图,采用Rstudio做出回归曲线: