SciTE AMPL配置问题

最近研究下整数规划问题,采用AMPL进行建模,研究过程中,发现有很多学者推荐使用SciTE进行编辑并运行。 如:

http://blog.csdn.net/mathsoperator/article/details/4699328

http://archive.ite.journal.informs.org/Vol7No1/LeeRaffensperger/scite/amplhelp.html

但都没有给出具体的配置方法,经过两天的研究,环境终于配置成功。

下面介绍一下我的配置步骤:

(1)AMPL下载:http://www.ampl.com/NEW/TABLES/amplcml.zip,

SciTE下载:http://jltt.onlinedown.net/down/ha-scite221.rar


配置好环境变量以后,按http://blog.csdn.net/mathsoperator/article/details/4699328里运行test1.mod:
set vec:=1..4;
 param x{vec};
 data;
 param x:=1 1
                2 5
                3 6
                4 8;
 
 display x;
 display sum {i in vec} x[i];
你会发现选项里运行为灰色,因此此时还没有将AMPL的解析器加载到SciTE中去。参考google的论坛,下面给出步骤。
(2)从http://archive.ite.journal.informs.org/Vol7No1/LeeRaffensperger/scite/ampl.properties下载ampl.properties文件,放在SciTE的根目录下:如“E:\……\wSciTE”。
(3)修改SciTE的全局设置文件“SciTEGlobal.properties”,在文件最后加“import ampl”。
(4)此时mod能够运行,但发生错误:>ampl test1.mod>系统找不到指定的文件。”原因是得在“ampl.properties"文件中配置ampl的路径,找到:
”command.go.$(file.patterns.ampl)=ampl $(FileName).$(FileExt)“
将其修改为:command.go.$(file.patterns.ampl)="E:\……\ampl" $(FileName).$(FileExt)(你ampl所在的路径)保存。
此时再运行test1.mod,已经成功!
文件road.mod
set INTER;
param entr symbolic in INTER;
param exit symbolic in INTER, <> entr ;
set ROADS within (INTER diff {exit}) cross (INTER diff {entr});
param cap {ROADS} >= 0;
var Traff {( i,j) in ROADS} >= 0, <= cap[i,j];
param distance {ROADS} >=    0;
var use {(i,j) in ROADS} >=    0;
minimize Total_distance: sum {(i,j) in ROADS} distance[i,j] * use[i,j];
subject to Start: sum{(entr,j) in ROADS} use[entr,j]=1;
subject to Balance {k in INTER diff {entr,exit}}:
sum {(i,k) in ROADS} use[i,k]    =    sum {(k,j) in ROADS} use[k,j];
 
文件road.dat
set INTER := a b c d e f g ;
param entr := a;
param exit := g;
param:    ROADS:    distance :=
a d          50,    a c        100
b d          40,    b e          20
c d          60,    c f          20
d e          50,    d f          60
e g          70,    f g          70;
 
文件road.run
model road.mod;
data road.dat;
solve;
display use;
 
运行road.run,发生”Cannot invoke minos: no such program.“错误。
原因是solve需要查找求解器,但不知道为什么此时找不到minos.exe,但是在单独运行ampl.exe,问题是可以求解的。
 
(5)查阅了一晚上资料,终于在google论坛中找到解决方法,最简单的方法是修改road.run:
model road.mod;
data road.dat;
option solver 'E:/amplcml/minos';
solve;
display use;
 
通过”option solver 'E:/amplcml/minos'“设置解析器的地址,再运行road.run,成功!
MINOS 5.5: optimal solution found.
2 iterations, objective 170
use :=
a c   0
a d   1
b d   0
b e   0
c d   0
c f   0
d e   1
d f   0
e g   1
f g   0
;
posted @ 2013-05-18 11:03  一米阳光_huo  阅读(919)  评论(0编辑  收藏  举报