linny-r 1.7.4 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -10
- package/package.json +1 -1
- package/static/index.html +23 -16
- package/static/linny-r.css +11 -1
- package/static/scripts/linny-r-ctrl.js +2 -0
- package/static/scripts/linny-r-gui-controller.js +177 -123
- package/static/scripts/linny-r-gui-documentation-manager.js +1 -1
- package/static/scripts/linny-r-gui-expression-editor.js +10 -10
- package/static/scripts/linny-r-gui-paper.js +13 -6
- package/static/scripts/linny-r-milp.js +55 -17
- package/static/scripts/linny-r-model.js +7 -1
- package/static/scripts/linny-r-vm.js +102 -37
package/README.md
CHANGED
@@ -66,7 +66,7 @@ and then type at the command line prompt:
|
|
66
66
|
|
67
67
|
``npm install --prefix . linny-r``
|
68
68
|
|
69
|
-
>
|
69
|
+
> [!IMPORTANT]
|
70
70
|
> The spacing around the dot is essential. Type the command in lower case.
|
71
71
|
|
72
72
|
After installation has completed, `Linny-R` should have this directory tree structure:
|
@@ -98,7 +98,7 @@ on a Windows machine the batch script `linny-r.bat`. By default, this script fil
|
|
98
98
|
two commands: first change to the Linny-R directory and then tell Node.js to launch the
|
99
99
|
start the Linny-R server.
|
100
100
|
|
101
|
-
>
|
101
|
+
> [!NOTE]
|
102
102
|
> When configuring Linny-R for a network environment where individual users
|
103
103
|
> each have their personal work space (e.g., a virtual drive U:), you must edit this script file,
|
104
104
|
> adding the argument `workspace=path/to/workspace` to the `node` command.
|
@@ -129,7 +129,7 @@ version 1.4.0, open the CLI, change to your `Linny-R` directory, and then type:
|
|
129
129
|
|
130
130
|
``npm install linny-r@1.4.0``
|
131
131
|
|
132
|
-
>
|
132
|
+
> [!NOTE]
|
133
133
|
> This will overwrite the contents of the `node_modules` directory, but
|
134
134
|
> it will not affect the files in your user space.
|
135
135
|
|
@@ -139,7 +139,7 @@ directory and type:
|
|
139
139
|
|
140
140
|
``npm install --prefix . linny-r@1.4.0``
|
141
141
|
|
142
|
-
>
|
142
|
+
> [!NOTE]
|
143
143
|
> To run a specific version in your browser, you must start the server from
|
144
144
|
> the directory where you installed this version.
|
145
145
|
> Should you wish to run two different versions concurrently, you must use
|
@@ -152,7 +152,7 @@ Gurobi, MOSEK and CPLEX are _considerably_ more powerful than the open source so
|
|
152
152
|
but they require a license.
|
153
153
|
Academic licenses can be obtained by students and staff of eligible institutions.
|
154
154
|
|
155
|
-
>
|
155
|
+
> [!IMPORTANT]
|
156
156
|
> When installing a solver, it is advisable to accept the default file
|
157
157
|
> locations that are proposed by the installer.
|
158
158
|
> After installation, do **not** move files to some other directory,
|
@@ -262,7 +262,7 @@ while in the CLI you should see a long series of server log messages like:
|
|
262
262
|
... etc.
|
263
263
|
</pre>
|
264
264
|
|
265
|
-
>
|
265
|
+
> [!IMPORTANT]
|
266
266
|
> Do **not** close the CLI. If you do, the Linny-R GUI may still be
|
267
267
|
> visible in your browser, but you will be warned that it cannot connect
|
268
268
|
> to the server (at 127.0.0.1:5050). This means that you have to restart
|
@@ -348,7 +348,7 @@ The sub-directories of this directory `user` are used by Linny-R to store files.
|
|
348
348
|
* `solver` will contain the files that are exchanged with the Mixed Integer Linear Programming (MILP) solver
|
349
349
|
(the names of the files that will appear in this directory may vary, depending on the MILP-solver you use)
|
350
350
|
|
351
|
-
>
|
351
|
+
> [!NOTE]
|
352
352
|
> By default, the `user` directory is created in your `Linny-R` directory.
|
353
353
|
> You can overrule this by starting the server with the `workspace=[path]` option.
|
354
354
|
> This will create a new, empty workspace (the directories listed above) in the specified path.
|
@@ -381,7 +381,7 @@ Linny-R will automatically detect whether Inkscape is installed by searching
|
|
381
381
|
for it in the environment variable PATH on your computer. On a macOS computer,
|
382
382
|
Linny-R will look for Inkscape in `/Applications/Inkscape.app/Contents/MacOS`.
|
383
383
|
|
384
|
-
>
|
384
|
+
> [!NOTE]
|
385
385
|
> The installation wizard for Inkscape (version 1.3) may **not**
|
386
386
|
> add the application to the PATH variable. Please check whether you need to
|
387
387
|
> do this yourself.
|
@@ -396,7 +396,7 @@ If you open a CLI box, change to your `Linny-R` directory, and then type:
|
|
396
396
|
|
397
397
|
you will see the command line options that allow you to run models in various ways.
|
398
398
|
|
399
|
-
>
|
399
|
+
> [!NOTE]
|
400
400
|
> The console-only version is still in development, and does not provide all functions yet.
|
401
401
|
|
402
402
|
## Troubleshooting problems
|
@@ -405,7 +405,7 @@ If during any of the steps above you encounter problems, please try to diagnose
|
|
405
405
|
You can find a lot of useful information on the Linny-R user documentation website:
|
406
406
|
<a href="https://linny-r.info" target="_blank">https://linny-r.info</a>.
|
407
407
|
|
408
|
-
>
|
408
|
+
> [!IMPORTANT]
|
409
409
|
> To diagnose a problem, always look in the CLI box where Node.js is running,
|
410
410
|
> as informative server-side error messages will appear there.
|
411
411
|
|
package/package.json
CHANGED
package/static/index.html
CHANGED
@@ -375,7 +375,7 @@ and move the cursor over the status bar">
|
|
375
375
|
<img id="redo-btn" class="btn disab" src="images/redo.png"
|
376
376
|
title="Redo (Ctrl-Y)">
|
377
377
|
<img id="solve-btn" class="btn enab" src="images/solve.png"
|
378
|
-
title="Run simulation (Ctrl-R)">
|
378
|
+
title="Run simulation (Ctrl-R) – Alt-click to diagnose infeasible/unbounded problem (Alt-R)">
|
379
379
|
<img id="stop-btn" class="btn enab off" src="images/stop.png"
|
380
380
|
title="Stop solving (Ctrl-Q)">
|
381
381
|
<img id="reset-btn" class="btn enab off" src="images/reset.png"
|
@@ -576,11 +576,9 @@ and move the cursor over the status bar">
|
|
576
576
|
<table style="width:100%; white-space: nowrap">
|
577
577
|
<tr>
|
578
578
|
<td style="padding:0px">
|
579
|
-
<div id="settings-
|
580
|
-
</td>
|
581
|
-
<td style="padding-bottom:4px">
|
582
|
-
Use decimal <u>comma</u> when copying data to clipboard
|
579
|
+
<div id="settings-block-arrows" class="box clear"></div>
|
583
580
|
</td>
|
581
|
+
<td style="padding-bottom:4px">Show hidden flows as block arrows</td>
|
584
582
|
</tr>
|
585
583
|
<tr>
|
586
584
|
<td style="padding:0px">
|
@@ -632,25 +630,34 @@ and move the cursor over the status bar">
|
|
632
630
|
title="Set solver preferences">
|
633
631
|
</td>
|
634
632
|
</tr>
|
633
|
+
<tr title="When checked, finite process bounds and slack variables are always added">
|
634
|
+
<td style="padding:0px">
|
635
|
+
<div id="settings-diagnose" class="box clear"></div>
|
636
|
+
</td>
|
637
|
+
<td style="padding-bottom:4px">Diagnose infeasible/unbounded problems</td>
|
638
|
+
</td>
|
639
|
+
</tr>
|
635
640
|
<tr>
|
636
641
|
<td style="padding:0px">
|
637
642
|
<div id="settings-cost-prices" class="box clear"></div>
|
638
643
|
</td>
|
639
644
|
<td style="padding-bottom:4px">Infer and display cost prices</td>
|
640
645
|
</tr>
|
641
|
-
<tr
|
646
|
+
<tr>
|
642
647
|
<td style="padding:0px">
|
643
|
-
<div id="settings-
|
648
|
+
<div id="settings-decimal-comma" class="box clear"></div>
|
644
649
|
</td>
|
645
650
|
<td style="padding-bottom:4px">
|
646
|
-
|
651
|
+
Use decimal <u>comma</u> when copying data to clipboard
|
647
652
|
</td>
|
648
653
|
</tr>
|
649
|
-
<tr>
|
654
|
+
<tr title="Reports will be saved in user/reports/, and removed after 24 h">
|
650
655
|
<td style="padding:0px">
|
651
|
-
<div id="settings-
|
656
|
+
<div id="settings-report-results" class="box clear"></div>
|
657
|
+
</td>
|
658
|
+
<td style="padding-bottom:4px">
|
659
|
+
Report results after each run
|
652
660
|
</td>
|
653
|
-
<td style="padding-bottom:4px">Show hidden flows as block arrows</td>
|
654
661
|
</tr>
|
655
662
|
<tr>
|
656
663
|
<td style="padding:0px">
|
@@ -723,23 +730,23 @@ NOTE: Unit symbols are case-sensitive, so BTU ≠ Btu">
|
|
723
730
|
</div>
|
724
731
|
<table style="width: 100%">
|
725
732
|
<tr title="This solver will be used if it is installed">
|
726
|
-
<td>
|
733
|
+
<td colspan="2">
|
727
734
|
<label>Preferred solver:</label>
|
728
735
|
<select id="solver-preference">
|
729
736
|
</select>
|
730
737
|
</td>
|
731
738
|
</tr>
|
732
739
|
<tr title="Tolerance may range from 1e-9 to 0.1">
|
733
|
-
<td>
|
740
|
+
<td colspan="2">
|
734
741
|
<label>Integer feasibility tolerance:</label>
|
735
|
-
<input id="solver-int-feasibility" style="width:
|
742
|
+
<input id="solver-int-feasibility" style="width: 65px"
|
736
743
|
placeholder="5e-7" type="text" autocomplete="off">
|
737
744
|
</td>
|
738
745
|
</tr>
|
739
746
|
<tr title="Relative gap may range from 0 to 0.5">
|
740
|
-
<td>
|
747
|
+
<td colspan="2">
|
741
748
|
<label>Relative MIP gap:</label>
|
742
|
-
<input id="solver-mip-gap" style="width:
|
749
|
+
<input id="solver-mip-gap" style="width: 65px"
|
743
750
|
placeholder="1e-4" type="text" autocomplete="off">
|
744
751
|
</td>
|
745
752
|
</tr>
|
package/static/linny-r.css
CHANGED
@@ -313,6 +313,15 @@ img.sbtn.senab:hover {
|
|
313
313
|
filter: brightness(150%);
|
314
314
|
}
|
315
315
|
|
316
|
+
img.sgray {
|
317
|
+
width: 16px;
|
318
|
+
height: 16px;
|
319
|
+
margin: -1px;
|
320
|
+
vertical-align: middle;
|
321
|
+
filter: grayscale(100%);
|
322
|
+
}
|
323
|
+
|
324
|
+
|
316
325
|
/* Bounds button indicates whether LB = UB */
|
317
326
|
div.bbtn {
|
318
327
|
background-size: contain;
|
@@ -1002,7 +1011,7 @@ input.pws-5 {
|
|
1002
1011
|
}
|
1003
1012
|
|
1004
1013
|
#solver-dlg {
|
1005
|
-
width:
|
1014
|
+
width: 250px;
|
1006
1015
|
height: min-content;
|
1007
1016
|
}
|
1008
1017
|
|
@@ -2727,6 +2736,7 @@ td.equation-expression {
|
|
2727
2736
|
top: 134px;
|
2728
2737
|
left: 2px;
|
2729
2738
|
width: calc(100% - 5px);
|
2739
|
+
white-space: nowrap;
|
2730
2740
|
}
|
2731
2741
|
|
2732
2742
|
#series-clip {
|
@@ -572,6 +572,7 @@ class Controller {
|
|
572
572
|
VM.reset();
|
573
573
|
// Redraw model in the browser (GUI only).
|
574
574
|
MODEL.clearSelection();
|
575
|
+
this.clearStatusLine();
|
575
576
|
this.drawDiagram(MODEL);
|
576
577
|
}
|
577
578
|
|
@@ -605,6 +606,7 @@ class Controller {
|
|
605
606
|
setProgressNeedle() {}
|
606
607
|
updateTimeStep() {}
|
607
608
|
updateIssuePanel() {}
|
609
|
+
clearStatusLine() {}
|
608
610
|
updateDraggableDialogs() {}
|
609
611
|
logHeapSize() {}
|
610
612
|
|