yhkn.net
当前位置:首页 >> lingo求CCr >>

lingo求CCr

lingo只能求小规模的TSP问题的最优解 大规模的仍然算不出来 这个小规模也就是不到10

打个比方,定义:sets:a/1..5/; b/1..6/; c/1..7/; link1(a,b):r; link(a,b,c):x; endsets 先一维求和再二维:@sum(link1(i,j):r(i,j)*@sum(c(k):x(i,j,k))); 意思是关于c(k)求和后得到一个二维数组y(i,j)再和 r(i,j)相乘; 三维求和:@sum(link:x); 它只是一个数字

这段程序是关于13个城市的tsp问题的程序,一般解决更多城市的tsp问题,有蚁群,神经网络,和模拟退火等方法,这里给出lingo的程序,算作抛砖引玉吧.MODEL:SETS:city/A1..A13/:U;!U(i)=cicy No;links(city,city):distance,!

用LINGO求解多目标规划的基本方法是先确定一个目标函数,求出它的最优解,然后把此最优值作为约束条件,求其它目标函数的最优解,如果将所有的目标函数都改成约束条件,则此时的优化问题退化为一个含等式或不等式的方程组(混合组

这是最小二乘法的计算公式,只要知道了自变量和因变量的数据 使用LINGO的min求该式的最小值即可,不过因为是二次函数,需要调用全局求解器.LINGO中求解最小值的代码是,min=@sum(set:b*x);调用全局求解器即可.

你把方程写出来在lingo里面算就行了 但是用lingo解应该不是一个很好的选择 最好自己写数值的算法

你可以用@log()把比例关系转化为减法关系,然后用@abs()把它限定在log2之内.

直接这样就可以了:min = v1+v2+v3+……+vn;a*c^n/(v1+c)*(v2+c)*……*(vn+c)当然,你可以用循环来写这些a1~an,手写太累了.

一般来说可以替代lingo,虽然matlab优化工具箱不如lingo强大,但是对付竞赛这样的应用层次足够了.

数据部分按顺序罗列.三维数组有三个角标,比如x(i,j,k),在赋值时按照角标的顺序从左往右循环罗列.比如lingo语句:x=1,2,3,4,5,6,7,8;它表示x(1,1,1)=1,x(1,1,2)=2,x(1,2,1)=3,x(1,2,2)=4,x(2,1,1)=5,x(2,1,2)=6,x(2,2,1)=7,x(2,2,2)=8.核心就是按照指标顺序罗列.

网站首页 | 网站地图
All rights reserved Powered by www.yhkn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com