Lingo是一款求解最优化问题的软件,可以用于求解非线性规划,也可以用于一些线性和非线性方程组的求解等,功能十分强大,是求解优化模型的最佳选择。
首先介绍一下什么是最优化问题。
最优化问题,即在所有可行的方案中选出使得目标最优的方案的实际问题。
优化问题的三要素是:
根据决策变量取值情况不同,分为连续型和离散型。
根据有无约束条件分为无约束优化和带约束优化。
根据处理思想方法不同,分为数学规划(函数优化问题)、组合优化、图论与网络流、动态规划、目标优化、模糊优化、随机优化、对策与决策……
求解这样一个问题,只需直接输入如下代码,写法基本与数学公式一直,不用改写成标准形式
min=2*x1+3*x2;
x1+x2>=350;
x1>=100;
2*x1+x2<=600;
点击 图标运行:
可以看到直接识别出了问题类型,并找到了全局最优解。
@free: 可正可负(默认大于等于0)
@gin:整数
?一定要在Lingo选项->求解非线性菜单中勾选二次规划识别!!否则会按照INLP问题求解,只能得出局部最优解。
max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2;
x1+x2<=100;
x1<2*x2;
@gin(x1);@gin(x2);
Lingo变量默认是非负的
@IF(logical_condition,true_result,false_result)
例:分段函数
f\\left( x \\right)=\\begin{cases}100,x>0\\ 2x, x\\le 0\\ \\end{cases}
fx=@if(x #gt# 0,100,2*x)
例:产生序列{1,4,9,16,25}
model: sets: number/1..5/:x; endsets @for(number(i):x(i)=i^2); end
例:
matlab s=@sum(number(i)|i#le# 5: x); !前5个求和 m=@min(number(i)|i#ge# 5: x); !5个之后的最小值
@status()
原文地址:
最优化问题求解及Lingo教程ps. 知乎的markdown支持也太差了吧,公式识别不了,图片屡屡上传失败,这点真该跟隔壁csdn学学
Copyright © 2002-2022 盛煌-盛煌娱乐-盛煌全球注册认证站 版权所有