问题标签 [neos-server]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
variables - 在 NEOS 中使用 CBC MPS 输入显示变量
我正在尝试使用 NEOS 来解决使用 MPS 输入的线性程序。
MPS 文件很好,但显然您还需要一个“参数文件”来告诉求解器要做什么(最小/最大等)。但是,我在任何地方都找不到有关此在线的任何信息。
到目前为止,我已经让 NEOS 解决了一个最大化问题并显示了目标函数。但是我无法让它显示变量。
有谁知道我应该在参数文件中添加什么代码来告诉 NEOS/CBC 显示结果变量?
neos-server - 使用 NEOS 服务器变量求解 MILP 将不会显示
我已经向NEOS
服务器提交了一个混合整数线性程序来解决。我正在使用CBC
求解器AMPL commands
。我的命令文件包含两行:
当我使用一个小数据集进行测试时,结果通过电子邮件发送给我,并且变量x
显示正确。但是,当我使用更大的数据集时,我收到一封电子邮件,说工作已完成,但`x was not displayed in the email or when I logged in to the results page using my job
数字/密码可变。
我怎样才能获得解决方案?非常感谢您的帮助!
ampl - AMPL:当命令文件中不能包含数据和模型命令时,如何使用 NEOS Server 打印变量输出?
我正在使用一个模型进行一些优化,其约束和变量的数量超过了学生版的上限,比如 AMPL,所以我找到了一个网页 [ http://www.neos-server.org/neos/ solvers/milp:Gurobi/AMPL.html]可以解决我的模型类型。
然而,我发现当使用解算器时,您可以提供命令文件(我假设它与 .run 文件相同),NEOS 服务器的文档告诉您应该查看输入文件的文档。我正在使用 AMPL 输入,根据 [ http://www.neos-guide.org/content/FAQ#ampl_variables]应该能够使用具有以下外观的命令文件打印决策变量:
问题是 NEOS 声称您不能添加:
命令进入 .run 文件,导致编译器找不到变量。
有谁知道解决这个问题的方法?提前致谢!
编辑:如果其他人有这个问题(我相信很多人都有基于我的互联网搜索)。尝试删除任何最终重置;来自 .run 文件的命令!
python - AMPL:数据集和规范中的一个大集
我现在正在做一个模型,我需要进行很大的调整。基本上我需要扩展我当前的集合 V,它是一组城市,成为一组城市和时间。例如,V 中的元素 Kir 必须从简单的 "Kir" 扩展到 "Kir1"、"Kir2"、...、"Kir72" 以表示城市 Kir 以及由数字指定的时间范围。
我已经开始将其定义为(在 .mod 文件中): set V; 将 K 设置在 V 内;
在 .dat 文件中,我很不确定如何写这个。如果没有简单的方法在集合 K 中包含“字符串”Kir,我想我会写:
例如。我的问题是我该怎么做?我可以包括城市名称 Kir 吗?具体来说,我已经定义了原始 V 集中城市之间距离的数据透视表。例如,城市 Kir 和 Sto 之间的原始集合 V 中的距离必须与扩展集合中 Kir1 和 Sto1 之间的距离相同。Kir1 和 Sto72 之间的距离也必须相同。原始距离必须相同,即与它所处的时间范围无关。在 AMPL 中是否有一种简单的方法可以做到这一点?
编辑:添加了标签 Python。我想这也可以在 Python 中实现。我已经设法定义了新的集合,使用:
例如。我被困在距离矩阵上
ampl - AMPL:目的地城市内的模型终端
我遇到了一个问题,我没有找到任何解决方案来阅读集的 AMPL 文档。
我想建模的是,一个城市,比如 Kir,必须有来自另一个城市的例如 9 个交付,例如 Sto。但是,这些货物必须在某些特定的航站楼到达 Kir ,每个航站楼每天只开放一小段时间(大约 2 分钟)。源节点也必须如此。必须从特定终端指定来自 Sto 的路线(因此可以在结果中“遵循”路径)。
我已经开始对集合使用“在 K 中设置 V”操作进行建模,但这要求 V 必须是相同的集合,或者 K 的子集,其中 K 是表示“节点”的集合 - Kir、Sto 等on 和 V 是终端“Terminal1”、“Terminal2”等名称的集合。
我已经开始检查例如定义为例如“设置 K 维 4”:
其中集合 K 表示应该从哪个城市(例如 Sto)驱动交付(例如 Kir),其中 Sto 的出发终端是 Terminal1,Kir 的交付终端是 Terminal2。这样做的缺点是必须手动指定大量组合(仅 Kir 就有大约 22 个终端等)。我也不知道如何对约束进行建模。例如我之前的“一维”集:
其中 V 是单独的城市集,H 是车辆集,maxVisits 表示从城市 i 到城市 j 的最大交付量,如果使用车辆 k 从 i 到 j 进行交付,则 x 为 1。我不明白如何使用四维集 K 对其进行建模。
问候,
ampl - AMPL:下标超出范围
各位优化师您好!
我在以下约束方面遇到了一些问题:
这自然会导致此约束在第一次循环时提供错误,因为 t-1 未定义(对我来说, l[i,0,c] 未定义。在哪里
并设置 T;(在 .mod 中)是一组定义为:
我试过这样做:
这给了我一个语法错误。我还尝试为所有可能的组合包含“let l[1,0,1] := 0”,这让我出错了
我也试过
在哪里
在 .dat 文件中(并且仅设置 TT; 在 .mod 中),这也给出了错误。有人知道如何做到这一点吗?
ampl - 需要改造以避免不可行
我正在林业行业进行优化,其中一组公司 C 可能会从收获区域集 I 中的某个分类集 A 中扣除一些木材。参数 x[I,J,V,T,C,A ] 变量表示从采伐区 I 到锯木厂 J 的流量,使用车辆 V 在时间 T 用于公司 C 和分类 A。
我遇到的麻烦是每个锯木厂都必须满足最低需求,d_minus。这是在:
问题是车辆 V 具有特定容量,模型如下:
然而,这会导致编译器抱怨约束 2 的不可能边界。例如
我使用 4 辆车,每辆车的容量为 40(我也尝试使用 400 和 1000,但错误仍然存在)。d_minus 参数介于 500 和 1000 之间。
我认为参数不应该太窄。使用 1000 人的容量,他们应该满足我认为 3 人的车队的需要。我倾向于“所有人”的约束是限制解决方案的原因,从而导致错误。我已经尝试对 Constraint2 使用“for all t in T, j in J”,但是它找不到 d_minus 的那些下标。有人有任何线索吗?
问候
ampl - 使用 AMPL + Neos 服务器仅打印非零结果
我正在做一个相对较大模型的优化模型。我将在这个模型中使用 15 个时间步,但现在当我测试它时,我只使用了 4 个。然而,即使比预期少 11 个时间步,模型仍然会打印 22 000 行变量,其中可能只有 100 行与0。
有没有人看到过去的方法?即一种使用 NEOS 服务器仅在变量名称和对应值大于 0 时打印的方法。
我测试的是:
同时使用 omit_zero_rows 0; 或省略_zero_rows 1;仍然打印每个结果,而不是高于 0 的结果。
我也试过:
但它给了我语法错误。在我用于 NEOS 服务器的 .run 文件中测试了两个(或者实际上是三个)变体。
python - 使用 NEOS 服务器的奇怪错误
我尝试使用 NEOS 服务器,但出现以下错误:
我使用 MINTO 求解器和 Gurobi 求解器得到了这个。我在工作中进行优化时没有收到此错误,但我确实使用我的家用电脑。有谁知道如何以通常的方式接收错误?
问候,
set - NEOS 服务器的模型数据和脚本文件中的 setof
在将我的 AMPL 公式提交到 NEOS 服务器时,为什么下面使用“setof”运算符的代码行在模型文件中可以正常工作,但在数据文件中却不行?
NEOS 服务器要求将代码分别分离为 .mod 、 .dat 和脚本文件。我已经看到let
X := ...
在脚本文件中使用的引用。这些文件有什么区别,放在哪里?
示例 使用 AMPL 的 steelT.x 文件,这第一块 2 个文件有效
而以下不起作用:
它返回错误
预期的 ; ( : 或符号上下文: set PROD := setof >>> { <<< i in DUMMYPROD} i;
更广泛的问题
一般来说,模型文件、数据文件和脚本文件属于什么?(还有 forparam
和其他定义)处理这些的顺序是什么?当我阅读 AMPL 指南时,我可能会遗漏一些基础知识,但我没有找到这个(我从未参加过优化课程)。
关于 NEOS 服务器 “新” AMPL 中的 Constraint 编程逻辑的额外问题包括整个约束的条件和逻辑运算符。我不认为这些在 NEOS 中可用。还是他们(因为他们不为我工作)?有简单的解决方法吗?
谢谢!