用Lingo软件求解非线性规划建立0-1规划模型,请教一下最后一行怎么写
要建立0-1规划模型,最后一行约束条件应该类似于:
BinaryVarA + BinaryVarB + BinaryVarC <= 1
其中BinaryVarA、BinaryVarB和BinaryVarC是0-1变量,表示对应的决策变量是否被选择。这个式子的意思是只能选择其中的一个决策变量,不能同时选择。
在Lingo软件中建立0-1规划模型,最后一行需要添加如下约束:
0 <= 变量 <= 1
这确保所有的0-1规划变量只能取0或1两个值。
一个简单的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,则吻合程度越低。于是我们将
作为目标函数求解最大值得到系数最优解。
目标函数:
约束条件:
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
求解结果如下表:
0.8402766 | |
0.1795222 | |
8.208418 |
由于lingo不方便做图,采用Rstudio做出回归曲线: