我遇到了AMPL的问题.我使用的是32位版本的Linux操作系统.我正在尝试解决一个简单的线性programmin问题,但我无法理解有什么问题......这里也是模型,数据文件和会话脚本.命令"解决"的答案是:找不到"minos".但解算器目前在我的文件夹中!更改解算器没有帮助.有什么建议?
问题模型:
param n;
param t;
param p{i in 1..n};
param r{i in 1..n};
param m{i in 1..n};
#Declaration of variables
var x {i in 1..n} >=0;
#Objective Function
maximize revenues: sum {i in 1..n} p[i]*x[i] ;
#Constraints
subject to Aval_Time: sum{i in 1..n} x[i]/r[i]<=t;
subject to Max_Flavor {i in 1..n}: x[i]<=m[i];
Run Code Online (Sandbox Code Playgroud)
问题数据:
param n := 4;# No of Flavors
param t := 40; # Total labor hour in a week
param p := 1 1 2 1.5 3 1 …
Run Code Online (Sandbox Code Playgroud) 我是AMPL用户,试图使用Python(我的第一个Python代码)编写线性编程优化模型.我试图找到如何在复合集上声明索引参数.例如,在AMPL中,我会说:Set A Set B Set C param x {A,B,C} param y {A,B,C} param z {A,B,C}上述设置和参数可以是通过AMPL轻松读取数据库.
我从数据库中读取的表有六个字段,即A,B,C,x,y,z.其中三个是主键(A,B,C),其余(x,y,z)是在主键上索引的值.
PYTHON PART:我正在使用PYODBC模块连接SQL Server.我试过"dict"但它只能索引一个键.我不知道它是由Python功能,我应该用声明的前三个领域的复合组和X,Y和Z为索引在复合设定值.
import pyodbc
con = pyodbc.connect('Trusted_Connection=yes', driver = '{SQL Server Native Client 10.0}', server = 'Server', database='db')
cur = con.cursor()
cur.execute("execute dbo.SP @Param =%d" %Param)
result = cur.fetchall()
Comp_Key, x, y, z= dict((A, B, C, [x,y,z]) for A, B, C, x, y, z in result)
Run Code Online (Sandbox Code Playgroud)
当然,这是不正确的.我想不出办法做到这一点.
请帮帮我:)提前致谢!
我希望这对某人来说是显而易见的.我只使用了GLPK/MathProg.我无法弄清楚GNU MathProg(在GLPK中)的语法来执行以下操作,例如:
set PartsOfWeek;
set WeekDays;
data;
set PartsOfWeek := WorkWeek WeekEnd;
set WorkWeek := Mon Tue Wed Thu Fri;
set WeekEnd := Sat Sun;
set WeekDays := setof{d in (WorkWeek union WeekEnd)}(d);
Run Code Online (Sandbox Code Playgroud)
问题是MathProg拒绝了这个问题.
一般来说,我只希望能够: - 声明一个Partition(这里是PartsOfWeek)和一个set(这里是Weekdays) - 从数据构建分区 - 用分区中的集合元素填充集合.
一个更好的例子可能是季节和月份.
我正在使用 CPLEX 12.8 为我的论文项目建模,但我遇到了无法解决的问题。我得到以下输出:
CPLEX 12.8.0.0: integer infeasible.
1828 MIP simplex iterations
316 branch-and-bound nodes
No basis.
Run Code Online (Sandbox Code Playgroud)
有没有办法知道哪些约束相互矛盾?
我上了一堂关于"智能决策"(主要是问题优化课程)的课程.在课堂上我们学习了AMPL以及如何扩展求解器.我最近没有听到太多关于它的消息,也没有看到它的工作清单.
我的问题是:AMPL还在继续使用吗?如果是这样,它用于什么?
是的,我确实理解AMPL可以用Matlab替换,但是AMPL是免费的,Matlab甚至不是很接近.
我有一个用autotools构建的C++软件系统.对于其功能的一小部分,我的系统使用闭源预构建二进制文件:AMPL.我是他们软件的免费学生版.假设我在C++代码中调用的AMPL二进制文件的名称是ampl-student
.我通过system(...)
调用在我的代码中运行它.
当运行"make install"时,我想与我编译的C++代码的二进制文件一起ampl-student
移动/usr/bin
.我应该在Makefile.am中添加哪些内容ampl-student
.我应该将它添加到bin_PROGRAMS
变量吗?
一个相关的问题是我应该甚至把ampl-student
在/usr/bin
.是否有更适合"辅助二进制"的地方?
我认为这通常是一个坏主意,因为将预先构建的二进制文件与代码一起分发并不能保证二进制文件将在最终用户的计算机上运行.但在这种情况下,用户群非常小,我碰巧知道他们都使用相同的系统配置.因此,我们实际上使用deb软件包来保持每个人都对软件系统的新版本进行更新.
编辑1:我应该强调,问题首先是要求ampl-student
在autotools使用的Makefile.am文件中指定的位置.
我正在尝试使用Pyomo解决非线性优化问题。最初,我尝试了Ipopt求解器,然后一切正常运行。然后,我想尝试求解器Scip尝试进行全局优化,因为Ipopt是本地求解器。但是,出现一个我无法理解的错误。
与Pyomo一起使用Scip并不是一件容易的事,但是通过Internet上的一些帮助以及一些反复试验,我可以从这里获取适用于Windows的scip可执行文件。我将可执行文件命名为scipampl并将其添加到我的PATH中。
当我运行以下命令时,Pyomo能够看到求解器,它返回True。
SolverFactory('scip').available()
Run Code Online (Sandbox Code Playgroud)
确信自己已使一切正常,然后尝试运行代码。我将我的Solverfactory设置如下:
solver = 'scip'
solver_io = 'nl'
opt = SolverFactory(solver, solver_io = solver_io)
Run Code Online (Sandbox Code Playgroud)
但令我失望的是,最终我收到以下错误消息:
[Errno 2] No such file or directory: 'C:\\Users\\NITINN~1.SIN\\AppData\\Local\\Temp\\tmpc0hzo5_7.pyomo.sol'
Run Code Online (Sandbox Code Playgroud)
我试图在互联网上了解这是什么意思,但到目前为止我还很走运。如果有人可以提出一些可能的原因,我将不胜感激。
谢谢。