首页>AMPL发行说明
AMPL 发行说明
20250901
- 更新至快照 0.1.6:默认情况下(或当包含 "solution" 时),与变量和约束相关的后缀会显示在快照中。在此之前,只有当问题求解完毕后才会显示,不论是否包含 "solution"。
- 省略有时在接收可变数量参数的函数名称前打印的初始空格。例如,
set I; param p{I};
data; param :I: p := b 3.7 c 2.9;
display min(p['b'], p['c']);
打印结果为 min(p['b'],p['c']) = 2.9。
20250805
- 修复在 for 循环中,当使用形如 {I, J} 的笛卡尔积且含有哑变量元组时出现的故障。
20250722
- 新增用于约束的内建后缀 .ctype,用于指示特定约束的类型:
0 ==> Algebraic constraint
1 ==> Logical constraint
2 ==> Complementarity constraint
- 更改内建后缀 .domain的取值。现在,原值“2”和“3”已合并为“2”。
0 ==> floating-point (double precision) 1 ==> integer 2 ==> in a discrete set or union of intervals
- 将选项 strict_ineq_warn的默认值更改为 0。严格不等式现被视为逻辑约束。此选项控制是否显示严格不等式的警告(先前默认值为 1)。
- 新增选项 ampl_debug(默认值为 0),用于控制是否显示致命错误信息。若需显示致命错误信息,请将此选项设为 1。
20250626
20250508
修复预求解中简化涉及 “and”、“or”、“exists” 及 “forall” 运算符的逻辑表达式时出现的错误。
新增选项 allow_Nan以影响涉及“小于”或“大于”比较的预求解简化过程。在上述示例中添加 allow_NaN=1选项后,输出将更改为:
subject to con:
!(20 <= x) || !(x <= 70);
var x{1..4};
subj to con: 0 <==> forall {a in 1..4} not(1 <= x[a] <= 2);
expand;
给定
subject to con:
0 /*FALSE*/ <==> ((!(1 <= x[1]) || !(x[1] <= 2)) && (!(1 <= x[2]) || !
(x[2] <= 2)));
遗漏了 x[3] 和 x[4],而不是
subject to con:
0 /*FALSE*/ <==> ((1 > x[1] || x[1] > 2) && (1 > x[2] || x[2] > 2) &&
(1 > x[3] || x[3] > 2) && (1 > x[4] || x[4] > 2));
修复在...中出现的一个故障
var x;
subj to con: 0 <==> exists{i in 0..3} i <= i*x <= i^2;
solexpand;
20250401
- 快照 (版本 0.1.5) 中的命令与 xor运算符不再是实验性功能,现已成为正式功能。
20250318
20250311
20241203
20241122
option presolve 0;
var x >= 0;
subject to c: x >= .5 <==> 1;
solve;
20240313
var x; var y;
var z = 4*y + y^4 - 6.38;
var w = 8*x + abs(y) + 18.635;
minimize O: 5*x + 8*z + 15;
s.t. C: -200 <= 205*x -17*x^3 - 3.8*w <= 403.2869;
solexpand;
option auxfiles rd;
write gfoo1;
20230124
在块模式下显示错误上下文(调用 “”).ampl -b ...
20221013
修复了版本 20220505 中引入的处理数据部分的错误。 例:
set A := 1..2; param p{A}; param q{A};
data;
param: p q :=
[*] 1 2.5 3 # erroneously complained about "."
2 4 5.6;
display p, q;
20221008
修复了 64 位 ARM 二进制文件中在某些情况下导致错误值的配置错误,比如某些要计算的内容。跟今天的 64 位 ARM 二进制文件“”将报告版本 20221008Normal01()ampl -vvq
20220927
修复由于变量的不当使用而导致的几条错误消息。以前的例子
var x >= 0 integer; var y >= 0 integer;
subj to con: x + y in {0,3,5};
solve;
收到令人惊讶的错误消息
presolve, constraint con:
Logical constraint is always false.
Infeasible constraints determined by presolve.
现在第二行引发错误消息
Cannot test whether a variable expression is in a set expression.
context: subj to con: x + y in >>> {0,3,5}; <<<
此示例可以重述为
var x >= 0 integer; var y >= 0 integer;
var z in {0,3,5};
s.t. con: x + y == z;
以前是小例子的第二行
var x >= 0;
subj to con: x in {0,3,5};
引发了令人惊讶的错误消息
continuous variable in tuple
context: subj to con: x in >>> {0,3,5}; <<<
不是它得到
Cannot test whether a variable is in a set expression.
context: subj to con: x in >>> {0,3,5}; <<<
该示例可以重写(无报错)为
对于 “” 声明,AMPL无声地生成二进制文件 由 SOS1 条件和定义 x 的约束var x in set_expr相关的变量。
20220812
修复20220730更改中的错误,该错误导致定义变量的某些使用出错 - 仅当20220730的更改相关时。
20220730
修复定义变量的错误:如果一个定义的变量非线性地使用了一个问题变量,另一个定义的变量线性地使用第一个问题变量,没有对问题变量进行其他使用,并且第二个定义的变量是非线性使用的,那么就不计算关于问题变量的导数。例:
set I = 1..3; var x{i in I} := i;
var v1 = x[1] + x[2]^2;
var v2 = v1 + x[3]^3;
minimize obj: v2^2;
由于 .nl 文件x[2]中的错误,未计算有关的导数。
20220703
修复版本 20220505 中引入的故障:在数据部分中,下标集的下标中未引号的“-”给出了错误消息。例:
set S; set T{S}; data;
set S := 2022-06-26_03;
set T[2022-06-26_03] := a b c;
display T;
将第三行更改为
set T['2022-06-26_03'] := a b c;
是一个变通办法。
20220621
修复控制台输入的故障:如果光标位于当前行的开头(可能是因为按了 HOME 键),则 DELETE 键不执行任何操作。
使用历史记录和向上和向下箭头键可以正确调用的最长行从 1000 个字符增加到 4000 个字符。
20220506
在数据部分中,当 x 是变量时,当 x 还没有当前值时,将 x.val 视为 x,当 c 是约束时,对于 c 和 c.dual ,同样。
在小例子中
var x; data; var x.dual := 3;
将错误消息从“dual 不是后缀”更改为“dual 不是可分配的后缀”。(当 x 是用 “” 声明的已定义变量时,x.dual 是隐含约束 “x = 表达式” 的对偶变量的值。定义的变量被替换出问题,因此求解器看不到它们,但有时希望看到它们的对偶变量值。var x = expression;
20220505
修复了 “” 命令中的一个错误,该错误未打印约束的默认值(双精度)。例:show
var x; s.t. cx default 1: x <= 4;
show cx;
允许后缀(关于变量、约束、目标、问题)出现在数据部分中。像通常的数据部分一样,约束、目标或问题的名称可以用“param”或“var”引入。例如
var x;
minimize o: (x-3)^2;
suffix foo;
data;
var o.foo 3.2; # or "var o := 3.2"; the ":=" is optional here.
# or "param o.foo 3.2", etc.
这是为了使“快照”更有效率;不会检查是否替换后缀值。
如果指定了 ,并且在预解后没有变量仍然使用,输出x[2] “# No .nl file written: no variables used.”"option show_write_files 2"
悄悄地减少 printf 格式中荒谬的大精度。例如,出错。现在它可以工作并静默减少到 ."%.410g""%.500g""%.415g"
在线留言
尊敬的客户朋友,如您有任何意见建议,请通过下表反馈给我们,我们会尽快与您联系。
|