我反复检查了相同的Node.js版本v12.10.0,相同的npm包版本(javascript-lp-solver 0.4.5),相同的输入,我们得到了不同的结果。
场景A
场景B
从
main.js中克隆的var formulador = require("./src/solver.js");
var modelo = {
optimize: "custo",
opType: "min",
constraints: {
N: {
min: 18000.0,
max: 18800.0
},
PCNA: {
min: 5000.0,
max: 5800.0
},
K: {
min: 24000.0,
max: 24800.0
},
"I::100268_100328": {
max: 1.0
},
"I::100268_100328_D1": {
min: 0.0
},
"I::100268_100328_D2": {
min: 0.0
},
peso: {
equal: 1000.0
}
},
variables: {
"100194": {
CA: 12.0,
S: 1.5,
MG: 6.0,
peso: 1.0,
custo: 446.19,
preco: 446.19
},
"100249": {
K: 60.0,
peso: 1.0,
custo: 1964.49,
preco: 1964.49
},
"100268": {
PCNA: 21.0,
CA: 18.0,
S: 10.0,
PH2O: 16.0,
peso: 1.0,
custo: 1192.33,
preco: 1192.33,
"I::100268_100328_D1": 1.0,
"I::100268_100328_D2": -1.0
},
"100287": {
N: 3.0,
PCNA: 17.0,
CA: 16.0,
S: 11.0,
peso: 1.0,
custo: 1444.68,
preco: 1444.68
},
"100302": {
N: 11.0,
PCNA: 52.0,
PH2O: 44.0,
peso: 1.0,
custo: 2537.45,
preco: 2537.45
},
"100328": {
N: 34.0,
peso: 1.0,
custo: 1428.98,
preco: 1428.98,
"I::100268_100328_D1": 1.0,
"I::100268_100328_D2": -1.0
},
D100268: {
"I::100268_100328_D1": -1.0,
"I::100268_100328": 1.0,
"I::100268_100328_D2": 1000.0
},
D100328: {
"I::100268_100328_D1": -1.0,
"I::100268_100328": 1.0,
"I::100268_100328_D2": 1000.0
}
},
ints: {
"100194": 1,
"100249": 1,
"100268": 1,
"100287": 1,
"100302": 1,
"100328": 1
},
binaries: {
D100268: 1,
D100328: 1
}
};
var resultado = formulador.Solve(modelo);
console.table(resultado);注意,这是相同的输入。
在场景A中,结果是
┌──────────┬────────────┐
│ (index) │ Values │
├──────────┼────────────┤
│ 100194 │ 4 │
│ 100249 │ 400 │
│ 100268 │ -0 │
│ 100287 │ 1 │
│ 100302 │ 96 │
│ 100328 │ 499 │
│ feasible │ true │
│ result │ 1745681.66 │
│ bounded │ true │
│ D100268 │ 1 │
└──────────┴────────────┘在场景B中,结果是:
┌──────────┬────────────┐
│ (index) │ Values │
├──────────┼────────────┤
│ 100194 │ 3 │
│ 100249 │ 400 │
│ 100268 │ 3 │
│ 100302 │ 95 │
│ 100328 │ 499 │
│ feasible │ true │
│ result │ 1744830.33 │
│ bounded │ true │
│ D100268 │ 1 │
└──────────┴────────────┘那么,为什么会发生这种情况?我需要从runkit.com返回相同的本地代码。
发布于 2019-09-25 17:33:39
最后发现:0.4.5存储库没有版本0.4.5的版本,而且Github中的当前代码不包含以版本0.4.5的形式交付给npm的一些更改。以你为耻,以你为耻.
我是怎么发现的?我使用来自版本Node.js的npm包创建了一个0.4.5项目,并使用了相同的数据输入。结果和预期的一样,与在runkit.com上得到的结果相同。因此,我将node_modules (来自npm包)和jsLPSolver (来自WinMerge )文件夹的内容与WinMerge进行了比较,他向我指出了不同的文件。
实现从Github获得的代码中的差异,一切都变得清晰起来,并返回到相同的解决方案。
https://stackoverflow.com/questions/58085792
复制相似问题