zoukankan      html  css  js  c++  java
  • 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
    ;
  • 相关阅读:
    AFNetworking 3.0迁移指南
    富文本常用封装(NSAttributedString浅析)
    如何在 Objective-C 的环境下实现 defer
    iOS之深入了解控制器View的加载
    10+年程序员总结的20+条经验教训
    Foundation: NSNotificationCenter
    做一款仿映客的直播App?看我就够了
    AFNetworking源码分析
    WWDC2016 Session笔记 – Xcode 8 Auto Layout新特性
    iOS页面间传值的一些方式总结
  • 原文地址:https://www.cnblogs.com/ashleyhuo/p/3085096.html
Copyright © 2011-2022 走看看