<!-- 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? When solving mathematical programming problems, the accuracy of your solutions should *%RED%never%ENDCOLOR%* be more than the accuracy of your data. You can set the precision that AMPL displays values via the =display_precision= option. For example, if your inputs are specified to 4 significant digits, e.g., =0.013=, you can use <pre> option display_precision 4; </pre> to get your solution values to the same number of significant digits. src="four_dp.jpg" Note that AMPL still keeps its numbers at full precision, so you need to be careful with your objective function values. src="five_dp.jpg" When we change the =display_precision= to 5 significant digits, the displayed =TotalCost= and the cost calculated by using the displayed =Amount= values differ. If you are using rounded solution values, make sure to *%RED%check the objective value%ENDCOLOR%* before quoting your solution. ??? Up to here ??? <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 * four_dp.jpg: <br /> <img src="%ATTACHURLPATH%/four_dp.jpg" alt="four_dp.jpg" width='669' height='290' /> * five_dp.jpg: <br /> <img src="%ATTACHURLPATH%/five_dp.jpg" alt="five_dp.jpg" width='669' height='290' />
This topic: OpsRes
>
WebHome
>
AMPLGuide
>
AMPLSyntax
>
PrintingInAMPL
Topic revision: r3 - 2008-03-04 - 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