lingo记录

这篇教程详细介绍了Lingo软件在解决线性规划、二次规划和部分非线性规划问题中的应用。内容涵盖Lingo的基本语法,如目标函数和约束条件的设定,以及集合的定义和使用。此外,教程还强调了Lingo在处理无界解、无可行解及多重解的情况,并提供了多个实例演示,包括错误示例和正确做法,帮助学习者掌握模型构建和数据输入的技巧。
摘要由CSDN通过智能技术生成

视频链接

lingo 零基础学习系列教程 初识LINGO_哔哩哔哩_bilibili

1.x1>1与x1>=1等价,不存在严格大于

2.求解线性规划,二次规划,部分非线性规划

二次规划定义如下 

3.利用lingo,可以建立简单模型/基于集合的模型

4.集合的表示和运用是lingo的重点

5.lingo可以求出线性规划的解,发现无界解、无可行解,对于多重解只能给出一个解,无法提示该解释该解是多重解的一个。

6.简单模型,两部分:目标函数和约束条件

目标函数:min/max=表达式,不要写z

约束条件:变量的非负约束是默认约束,如果某些变量是负数约束,要显式写出来

注:乘号*不能省略;目标函数和约束条件的顺序没有要求

 不写默认约束

 不区分大小写

ctrl +滚轮向上,字号变大

 注释以!开头

重点:基于集合的专业模型

三部分组成集合的专业模型

第一部分:集合定义部分

第二部分:数据定义部分

第三部分:目标函数与约束条件定义部分

!注释;

model:

sets:

endsets

data:

enddata

end

线性规划的三种形式

模型的一般形式:写到论文上的形式

向量形式--》矩阵形式

 

 

 约束条件多,变量多

集合的运用表示

 

 

 

 

 

 

 

 

 

 

 

 错误示例:

 正确:

 

 

 

 

 

 

 非线性规划采用全局求解器

 

 数学函数

 

 

 

 

 

 

 

 

 

 

 

 

 原始集合

 

 

 

 

 

 

 此处集合有顺序

 

model:

sets:
item/1..10/:weight,profit,x;

endsets

data:
weight=6 3 4 5 1 2 3 5 4 2;
profit=540 200 180 350 60 150 280 450 320 120;
enddata

max=@sum(item(i):profit(i)*x(i));

@sum(item(i):weight(i)*x(i))<=30;
@for(item(i):@bin(x(i)));
end

 

起始只能从1开始

 

 

集合元素放到数据段中赋值

 

 

集合遍历函数

 

 

 

 

 练习

 

model:

sets:
item:weight,profit,x;

endsets

data:
item weight profit=
1 6 540
2 3 200
3 4 180
4 5 350
5 1 60
6 2 150
7 3 280
8 5 450
9 4 320
10 2 120
;

enddata

max=@sum(item(i):profit(i)*x(i));

@sum(item(i):weight(i)*x(i))<=30;
@for(item(i):@bin(x(i)));

totalw=@sum(item:weight);
totalp=@sum(item:profit);

sigma_x=@sum(item:x);
sigma_w=@sum(item:weight*x);
p=@prod(item:weight);

max_w=@max(item:weight);
min_w=@min(item:weight);

max_p=@max(item:profit);
min_p=@min(item:profit);
end

 

model:
sets:
A/1..10/:x;
endsets
@for(A(i)|i#le#5:x(i)=i^2);
@for(A(i)|i#gt#5:x(i)=@sqrt(i));
end

 

model:
sets:
A/1..10/:x;
endsets
@for(A(i)|i#le#5:x(i)=i^2);
@for(A(i)|i#gt#5:x(i)=@sqrt(i));
p = @prod(A(i)|i#le#5:x(i));
s = @sum(A(i)|i#gt#5:x(i)^2);
end

 

 逻辑表达式,不能用大于小于号,要用逻辑符号表示,逻辑表达式仅用于集合遍历和操作函数

 

 

 ​​​​​​​

 

 ​​​​​​​

 

lingo可以直接接收来自txt、excel的复制的数据

 

 

 

 右键,定义名称

 

 定义名称的数据是单个数据、向量、矩阵,分别选中即可,右键选择定义名称

 

 另一种

 以上是读取

下面包括写

 读和写的数据块都要在excel中事先定义好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值