<!-- Under Construction --> ---+<a name="top"></a> Displaying and Printing in AMPL 1 [[#dp][How many decimal places?]] 1 [[#display][Displaying Information]] 1 [[#print][Printing Information]] 1 [[#file][Printing to a File]] <a name="dp"></a>How many decimal places? ??? Up to here ??? When solving mathematical programming problems, the accuracy of your solutions should **never** be more than the accuracy of your data. You can set the precision that AMPL displays values via the {\tt display_precision} option. For example, if your inputs are specified to 4 significant digits, e.g., {\tt 0.013}, you can use <p>\begin{verbatim} option display_precision 4; \end{verbatim}<p> to get your solution values to the same number of significant digits. <p><img src="four_dp.jpg" /><p> Note that AMPL still keeps its numbers at full precision, so you need to be careful with your objective function values. <p><img src="five_dp.jpg" /><p> When we change the {\tt display_precision} to 5 significant digits, the displayed {\tt TotalCost} and the cost calculated by using the displayed {\tt Amount} values differ. If you are using rounded solution values, make sure to **check** the **objective value** before quoting your solution. <a name="display"><h3>Displaying Information</h3></a> You have already seen how to display a variable using the {\tt display} command. We can also display {a href="Expressioins in AMPL">AMPL expressions</a> the same way, e.g., we might want to see how supply we are using in a transportation problem. <p><img src="display.jpg" /><p> Often when we display something (like variable values) many of the resulting numbers are 0 and we are only interested in the non-zero numbers. To stop any rows of zeros being displayed you can set the {\tt omit_zero_rows} option: <p>\begin{verbatim} option omit_zero_rows 1; \end{verbatim}<p> To stop any columns of zeros being displayed you can set the {\tt omit_zero_cols} option: <p>\begin{verbatim} option omit_zero_cols 1; \end{verbatim}<p> <p><img src="omit.jpg" /><p> You can also force {\tt display} to use either tables or a single column by using the {\tt display_1col} option. This option will use one column if the number of values to display is less than {\tt display_1col}. The initial value of {\tt display_1col} is 20, so any {\tt display} command that shows less than 20 values will be displayed as a column. Setting {\tt display_1col} to 0 forces {\tt display} to use tables whenever possible. <p><img src="display_1col.jpg" /><p> <a name="print"><h3>Printing Information</h3></a> By playing with the {\tt display} options we can get the {\tt display} command to format output in a nice way. However, we can also decide exactly what is displayed by using {\tt print} and {\tt printf}. <p<img src="print.jpg" /><p> The {\tt print} command only writes strings to the output. The {\tt printf} command allows you to print text and values together in a format you can control. It uses the same <a href="https://www.cppreference.com/stdio/printf.html">{\tt printf} format</a> as C and Matlab. <p><img src="printf.jpg" /> <p> You can print over <a href="Sets in AMPL">sets</a> or <a href="Sets in AMPL">set expressions</a> as well <p><img src="printf_set.jpg" /><p> <a name="file"><h3>Printing to a File</h3></a> All the output commands can be directed to a file. Adding {\tt > <filename>} to the end of an output command creates the file with the given name and writes to it. Subsequent output commands append output to the file by adding {\tt >> <filename>} to the commands. You should close your file when done so you can open it with another program. This is very useful for saving your solutions (in a useful format with {\tt printf}), for example <h4>brewery.run</h4> <p>\begin{verbatim} # brewery.run reset; model transportation.mod; data brewery.dat; option solver cplex; solve; print 'TRANSPORTATION SOLUTION -- Non-zero shipments' > brewery.out; display TotalCost >> brewery.out; printf {s in SUPPLY_NODES, d in DEMAND_NODES : Flow[s, d] > 0} 'Ship %d crates of beer from warehouse %s to pub %s\n', Flow[s, d], s, d >> brewery.out; close brewery.out; \end{verbatim}<p> Running {\tt brewery.run} in AMPL creates a file {\tt brewery.out}. <h4>brewery.out</h4> <p>\begin{verbatim} TRANSPORTATION SOLUTION -- Non-zero shipments TotalCost = 8600 Ship 300 crates of beer from warehouse A to pub 1 Ship 700 crates of beer from warehouse A to pub 5 Ship 200 crates of beer from warehouse B to pub 1 Ship 900 crates of beer from warehouse B to pub 2 Ship 1800 crates of beer from warehouse B to pub 3 Ship 200 crates of beer from warehouse B to pub 4 \end{verbatim}<p> -- Main.MichaelOSullivan - 02 Mar 2008
This topic: OpsRes
>
WebHome
>
AMPLGuide
>
AMPLSyntax
>
PrintingInAMPL
Topic revision: r2 - 2008-03-02 - MichaelOSullivan
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback