Performs automatic creation of short forms of scales with an
ant colony optimization algorithm and a Tabu search. As implemented in the
package, the ant colony algorithm randomly selects items to build a model of
a specified length, then updates the probability of item selection according
to the fit of the best model within each set of searches. The algorithm
continues until the same items are selected by multiple ants a given number
of times in a row. On the other hand, the Tabu search changes one parameter at
a time to be either free, constrained, or fixed while keeping track of the
changes made and putting changes that result in worse fit in a "tabu" list
so that the algorithm does not revisit them for some number of searches.
See Leite, Huang, & Marcoulides (2008)

- This version introduces classes to each of the main function outputs (
`antcolony.lavaan`

== "antcolony",`simulatedAnnealing`

== "simulatedAnnealing",`tabuShortForm`

== "tabu") - This will allow for
`plot`

and`print`

methods for each of these functions

- The function
`antcolony_plot`

was replaced with`plot.antcolony`

(aka, a plot method)

- With the addition of classes, a plot method and accompanying documentation has been added.
- Future updates will expand S3 methods for
`print()`

and`summary()`

- Bugfixes to the main functions when using them to create shortforms of bifactor models.
- They should now produce actual bifactor shortforms (in v0.4.1, sometimes the item names would be cut off in later iterations [FIXED] and the relationship between latent variables would be changed when they should have been kept constant [FIXED]).

- Now, when using an interactive R session, a package message is printed out (with a little Penguin holding it all up)!

- The Simulated Annealing (SA) algorithm has been added to the package, with a single user-facing function
`simulatedAnnealing()`

. - SA can be used on anything lavaan can run, though the current implementation focuses on traditional confirmatory models using
`lavaan::cfa()`

. However, there are plans for more user control in the modelling process to allow for other model defaults.

- An adaptation of the Tabu search to short form creation has been added.

- The
`antcolony_lavaan()`

function has been modified so that it no longer will print a`summaryfile.txt`

. Rather, the function maintains the old summary file as an internal object and returns it after completion, - The new function
`antcolony_plot()`

takes the results from`antcolony_lavaan()`

and creates three graphs: (a) a plot showing how pheremone levels change as the algorithm progresses, (b) a plot showing how the mean value of the regression coefficients changes as the algorithm progresses, and (c) a plot showing how the mean variance explained changes as the algorithm progresses.

- Each of the short form functions utilizing lavaan (
`antcolony.lavaan()`

,`simulatedAnnealing()`

,`tabuShortForm()`

) are capable of handling bifactor models. - In theory, this means relatively arbitrary models can be specified as well, but the functions utilize the "~" and "~~" operators for the additional functionality as well as the
`bifactor`

logical option. No guarantee that an arbitrary model will work beyond those currently tested.

- The lavaan-based functions all have more controlled output to the R console. This is most noticeable with the
`antcolony.lavaan()`

function.

- The Tabu search has been added to the package, with user-facing functions
`tabu.sem()`

and`search.prep()`

for most of the heavy lifting and various helper and internal functions. The code was taken primarily from Carl Falk and Katerina Marcoulides (see Marcoulides, K. M., & Falk, C. F. (2018). Model Specification Searches in Structural Equation Modeling with R. Structural Equation Modeling: A Multidisciplinary Journal, 1-8.). These have been tested in limited circumstances, so please report any bugs as you find them!

- NEWS.md created.
- Description file updated.
- Authorship has been updated and URLs have been added to the ant colony functions.
- No bugs have been found in the package thus far, but just a reminder for any users that bug reports are helpful and welcome.