source: trunk/omh/whats_new/whats_new_14.omh @ 3359

Last change on this file since 3359 was 3359, checked in by bradbell, 6 years ago

Fix bug in optimization with discrete functions.

opt_discrete.sh: test of the fix.
discrete.hpp: spelling error in comment.
hash_code.hpp: make discrete operator a special case.
optimize.hpp: handle discrete operator.
optimize.cpp: test of the fix.

  • Property svn:keywords set to Id
File size: 10.2 KB
Line 
1$Id: whats_new_14.omh 3359 2014-09-26 00:12:56Z bradbell $
2/* --------------------------------------------------------------------------
3CppAD: C++ Algorithmic Differentiation: Copyright (C) 2003-14 Bradley M. Bell
4
5CppAD is distributed under multiple licenses. This distribution is under
6the terms of the
7                    Eclipse Public License Version 1.0.
8
9A copy of this license is included in the COPYING file of this distribution.
10Please visit http://www.coin-or.org/CppAD/ for information on other licenses.
11-------------------------------------------------------------------------- */
12
13$begin whats_new_14$$
14$dollar @$$
15$spell
16        alloc
17        ifndef
18        asin
19        acos
20        uj
21        op
22        hpp
23        taylor
24        forwardzero
25        forwardone
26        forwardany
27        const
28        doxygen
29        ipopt
30        adolc
31        colpack
32        Jacobian
33        openmp
34        pthread
35        bthread
36        isnan
37        onetape
38        retape
39        fadbad
40        sacado
41        boolsparsity
42        cmake
43        docdir
44        CppAD
45        cppad
46        datadir
47$$
48
49$section CppAD Changes and Additions During 2014$$
50
51$head Introduction$$
52This section contains a list of the changes to CppAD during 2014
53(in reverse order by date).
54The purpose of this section is to
55assist you in learning about changes between various versions of CppAD.
56
57$head 09-25$$
58Fix a bug when
59$cref/f.optimize/optimize/$$ was used with a function $icode f$$
60that contained $cref discrete$$ functions.
61
62$head 09-21$$
63Fix a typo in documentation for
64$cref/any order reverse/reverse_any/$$.
65To be specific, $latex x^{(k)}$$ was changed to be $latex u^{(k)}$$.
66
67$head 05-28$$
68$list number$$
69Change the $cref/boolsparsity/speed_main/Sparsity Options/boolsparsity/$$
70so that it only affects the sparsity speed tests
71$cref/sparse_jacobian/link_sparse_jacobian/$$ and
72$cref/sparse_hessian/link_sparse_hessian/$$;
73i.e., it is now ignored by the other tests.
74$lnext
75Improve the $cref speed$$ documentation page.
76$lend
77
78$head 05-27$$
79$list number$$
80The $cref/cppad_colpack.cpp/colpack_prefix/cppad_colpack.cpp/$$
81file was not being copied to the specified directory.
82In addition, the specified directory was changed from an include
83directory to data directory
84($code cppad_colpack.cpp$$ is not an include file).
85$lnext
86If $cref colpack_prefix$$  was specified, the CppAD
87$cref pkgconfig$$ file was missing some information.
88This has been fixed.
89$lend
90
91$head 05-23$$
92The $cref speed$$ test instructions were converted from using
93the old auto-tools $cref/unix install/InstallUnix/$$ instructions
94to use the $cref cmake$$ install instructions.
95These instructions should work on any system, not just unix.
96
97$head 05-22$$
98$list number$$
99Add multiple direction for mode
100$cref forward_dir$$ and use it to speed up the forward
101version of $cref sparse_jacobian$$.
102Below is an example run of $cref cppad_sparse_jacobian.cpp$$ results
103before this change:
104$codep
105        cppad_sparse_jacobian_size = [ 100, 400, 900, 1600, 2500 ]
106        cppad_sparse_jacobian_rate = [ 2973, 431.94, 142.25, 78.64, 26.87 ]
107$$
108and after this change:
109$codep
110        cppad_sparse_jacobian_size = [ 100, 400, 900, 1600, 2500 ]
111        cppad_sparse_jacobian_rate = [ 6389, 954.26, 314.04, 180.06, 56.95 ]
112$$
113Due to the success of this change, other
114$cref/multiple direction/WishList/Multiple Directions/$$ items
115were added to the wish list.
116$lnext
117Improve the  forward mode tracing of arguments to,
118and results from, user defined $cref atomic$$ operations.
119$lend
120
121$head 05-20$$
122$list number$$
123Move $code speed/adolc/alloc_mat.hpp$$ to
124$code speed/adolc/adolc_alloc_mat.hpp$$ so it has the
125same name is its $code # ifndef$$ command.
126$lnext
127Fix $code # ifndef$$ command in
128$code cppad/ipopt/solve_callback.hpp$$.
129$lnext
130Add $code # ifndef$$ command to $code test_more/extern_value.hpp$$.
131$lend
132
133
134$head 05-19$$
135In the files
136$code cppad/local/asin_op.hpp$$ and $code cppad/local/acos_op.hpp$$
137there were assignments of the form $code uj = 0.$$ where $code u_j$$
138has type $cref/Base/glossary/Base Type/$$.
139These may have not be defined operations in certain cases and
140have been converted to $code uj = Base(0)$$.
141
142
143$head 05-16$$
144There was a mistake in printing the arguments for
145$code CSumOp$$ and $code CSkipOp$$ when using the undocumented
146$code TRACE$$ option during forward mode (available in files of the form
147$codei%cppad/local/%*%sweep.hpp/%$$).
148This has been fixed.
149
150$head 05-14$$
151$list number$$
152There were some global variables in the file
153$code cppad/local/op_code.hpp$$ that might have caused multiple definitions
154during link time for CppAD applications.
155These variables have been changed to be local so that this cannot happen.
156$lnext
157There was a mistaken assert that the number of arguments for the
158$code BeginOp$$ was zero that caused an abort when using the undocumented
159$code TRACE$$ option available in files of the form
160$codei%cppad/local/%*%sweep.hpp/%$$.
161This has been fixed.
162$lend
163
164$head 03-18$$
165$list number$$
166The
167$cref/size_taylor/FunDeprecated/size_taylor/$$
168and
169$cref/capacity_taylor/FunDeprecated/capacity_taylor/$$
170functions were deprecated;
171use $cref size_order$$ and $cref capacity_order$$ instead.
172$lnext
173The documentation for $cref forward$$ and the examples
174$cref forward.cpp$$, $cref forward_order.cpp$$, have been improved.
175To be more specific, $cref forward_order$$ now references the special
176cases $cref forward_zero$$, $cref forward_one$$ and the new case
177$cref forward_two$$.
178$lend
179
180$head 03-17$$
181The
182$cref/move semantics/CppAD_vector/Assignment/Move Semantics/$$
183version of the $code CppAD::vector$$ assignment statement
184was not checking vector sizes.
185This has been fixed so that things work the same with compilers
186that do not have move semantics.
187(Note that with move semantics, no extra memory allocation is done
188even if the target vector has a different size.)
189
190$head 03-09$$
191The documentation links
192$code forwardzero$$, $code forwardone$$, and $code forwardany$$
193have been changed to
194$cref forward_zero$$, $cref forward_one$$,
195and $cref forward_order$$ respectively.
196This may affect links from other web pages to the CppAD documentation.
197
198$head 03-05$$
199The names $icode p$$ and $icode q$$ in the
200$cref/forward/forward_order/$$,
201$cref/reverse/reverse_any/$$,
202$cref atomic_forward$$, and
203$cref atomic_reverse$$ functions
204were reverse so that $icode%p% <= %q%$$.
205This is only a notational change to make the arguments easier to remember.
206
207$head 03-02$$
208$list number$$
209In the output for the speed
210$cref/correct/speed_main/test/correct/$$ test,
211mention which tests are not available.
212Note that the set of available tests can depend on the
213$cref/list of options/speed_main/option_list/$$.
214$lnext
215In the documentation for
216$cref/n_sweep/sparse_jacobian/n_sweep/$$,
217mention that it is equal to the number of colors determined by the
218$cref/color_method/sparse_jacobian/work/color_method/$$.
219$lnext
220The $cref speed_cppad$$ tests were simplified by removing the printing
221of auxillary information related to the
222$cref/optimize/speed_main/option_list/optimize/$$ option.
223Future auxillary information will be passed back in a manner similar to
224$cref/n_sweep/link_sparse_jacobian/n_sweep/$$ for the sparse jacobian test.
225$lnext
226$cref/Move semantics/CppAD_vector/Assignment/Move Semantics/$$
227were added to the $code CppAD::vector$$ assignment operator.
228$lend
229
230$head 03-01$$
231$list number$$
232Change the prototype for $icode row$$ and $icode col$$ in the
233$cref link_sparse_jacobian$$ speed test to be $code const$$; i.e.,
234they are not changed.
235$lnext
236Move $icode x$$ near end of $cref link_sparse_hessian$$ speed test
237parameter list,
238(as is the case for $cref link_sparse_jacobian$$).
239$lend
240
241$head 02-28$$
242The $cref/data/CppAD_vector/data/$$ function was added to the
243$code CppAD::vector$$ template class.
244
245$head 02-27$$
246The CppAD developer documentation for the subdirectory
247$code cppad/ipopt$$ was not being built by the command
248$code bin/run_doxygen.sh$$.
249This has been fixed.
250
251$head 02-26$$
252$list number$$
253The
254$cref/adolc/speed_adolc/$$ and
255$cref/cppad/speed_cppad/$$ sparse jacobian speed tests now print out
256$cref/n_sweep/sparse_jacobian/n_sweep/$$.
257$lnext
258The size of some of the $cref speed$$ test cases has been increased
259to test behavior for larger problems.
260$lnext
261A link to $cref ode_evaluate$$ was missing in the
262$cref/Speed Utility Routines/speed_utility/Speed Utility Routines/$$ table.
263This has been fixed.
264$lend
265
266
267$head 02-23$$
268The $cref/color_method/sparse_jacobian/work/color_method/$$
269option was added to the sparse Jacobian calculations.
270This enables one to use $cref/ColPack/colpack_prefix/$$
271do color the rows or columns.
272The speed test $cref/colpack/speed_main/Sparsity Options/colpack/$$ option
273was also added (but not yet implemented for
274$cref/sparse_hessian/link_sparse_hessian/$$ speed tests).
275
276
277$head 02-22$$
278The program names in
279$cref  thread_test.cpp$$ where changes from
280$icode%threading%_test%$$ to $codei%multi_thread_%threading%$$
281where $icode threading$$ is $code openmp$$, $code pthread$$ or $code bthread$$.
282
283$head 02-17$$
284Fix ambiguous call to $cref/isnan/nan/isnan/$$
285during MS Visual Studio 2012 compilation.
286
287$head 02-15$$
288$list number$$
289The $cref/boolsparsity/speed_main/Sparsity Options/boolsparsity/$$ option
290was added to the $cref speed_main$$ program.
291$lnext
292The $code retape$$ option what changed to
293$cref/onetape/speed_main/option_list/onetape/$$ so that the default
294is to retape (option not present).
295This was done because
296$cref/fadbad/fadbad_prefix/$$ and
297$cref/sacado/sacado_prefix/$$ always retape.
298$lnext
299The documentation, and example source code, for all the speed
300$cref/options/speed_main/option_list/$$ was improved
301(made clearer).
302$lnext
303Improve the success rate for
304$cref speed_test.cpp$$ and $cref time_test.cpp$$.
305$lend
306
307$head 01-26$$
308The destination directory for the
309$cref/cppad documentation/cmake/cmake_install_docdir/$$
310is now set separately from the data directory
311using the $code cmake$$ option
312$codei%
313        -D cmake_install_docdir=%cmake_install_docdir%
314%$$
315This has increased the flexibility of the documentation installation
316and removed the need for the option
317$codei%
318        -D cppad_documentation=%yes_or_no%
319%$$
320which has been removed.
321       
322$head 01-21$$
323The destination directory for the
324cppad documentation
325used to be one of the following:
326$codei%
327        %prefix%/%datadir%/doc/cppad-%version%
328        %prefix%/%datadir%/doc/%postfix%cppad-%version%
329%$$
330This has been changed by dropping the $icode version$$ number
331at the end of the directory name.
332
333$head 01-10$$
334The change on $cref/2013-12-27/whats_new_13/12-27/$$
335caused a conversion error in $cref atan2$$ when it was used with
336$code AD< AD<double> >$$ arguments (and other similar cases).
337This has been fixed.
338
339$end
Note: See TracBrowser for help on using the repository browser.