chiark / gitweb /
summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Simon Tatham [Wed, 12 Mar 2014 20:51:41 +0000 (20:51 +0000)]
Report the bounds along with the search results.
Simon Tatham [Wed, 12 Mar 2014 20:46:11 +0000 (20:46 +0000)]
Python code to compute upper bounds on the solution.
Since I now know of two different ways to prove an upper bound, here's
a piece of code which tries both, picks the lowest, and explains which
one gave rise to the number it returns.
Simon Tatham [Wed, 12 Mar 2014 20:21:09 +0000 (20:21 +0000)]
Written a post-analyser for the search output.
This converts the floats into rationals by what I think is a more or
less sensible method (selecting the lowest possible denominator and
then double-checking afterwards that the result of rounding to
multiples of 1/d is still a legal dissection and doesn't decrease the
min frag by more than rounding error) and collapses the matrix
dissections into mere descriptions of how the sticks are cut up.
Simon Tatham [Tue, 11 Mar 2014 00:54:31 +0000 (00:54 +0000)]
Don't call set_best before setting m and n.
Fixes obvious goof if you run 'main 12 7 -b 2.9' - you get an
immediate termination quoting n_max_frags and m_max_frags as -1.
Simon Tatham [Mon, 10 Mar 2014 18:43:07 +0000 (18:43 +0000)]
Introduce a 'make clean' target.
While I'm faffing about with the Makefile anyway, it seemed like a
good idea.
Simon Tatham [Mon, 10 Mar 2014 18:40:54 +0000 (18:40 +0000)]
Introduce a 'make test' target.
This checks the expected results for all the easy cases, both in
single-core mode and repeatedly in multicore mode (to try to smoke out
intermittent errors like the negative-max-frags bug fixed a couple of
commits ago).
Simon Tatham [Mon, 10 Mar 2014 18:39:43 +0000 (18:39 +0000)]
Compare against n_max_frags with <=, not <.
It would be legal to use < if n_max_frags was exactly equal to n/best
(in that case we would know that dividing a stick into that many
pieces could at best equal the existing best score), but not if it's
merely floor(n/best) since then we might have previously seen an
_uneven_ dissection of a stick into that many pieces, which could be
beaten by an even one.
Reinstates the ability to do 7 into 4 with score 5/3 instead of the
3/2 reported by the previous version.
Simon Tatham [Sun, 9 Mar 2014 23:14:24 +0000 (23:14 +0000)]
Fix occasional 'min fragment 1.11022e-16' glitch.
Seems to happen in multicore mode when the first worker reports a
near-zero value of 'best', and then set_best reduces it to a negative
number when it applies the rounding fudge, leading to the max_frags
limits being set to negative things and all other workers' results
being thrown away in preconsider_ok().
Ian Jackson [Sun, 9 Mar 2014 19:47:09 +0000 (19:47 +0000)]
fix output reporting again
Ian Jackson [Sun, 9 Mar 2014 19:46:55 +0000 (19:46 +0000)]
make -b<startbest> more effective by moving initialisation of {n,m}_max_frags earlier
Ian Jackson [Sun, 9 Mar 2014 19:36:27 +0000 (19:36 +0000)]
multicore worker only print read matrix input every second
Ian Jackson [Sun, 9 Mar 2014 18:39:30 +0000 (18:39 +0000)]
actually parse -b option
Ian Jackson [Sun, 9 Mar 2014 18:39:23 +0000 (18:39 +0000)]
report something to stdout even if no answer
Ian Jackson [Sun, 9 Mar 2014 18:38:16 +0000 (18:38 +0000)]
report some more stuff in stderr output
Ian Jackson [Sun, 9 Mar 2014 18:35:18 +0000 (18:35 +0000)]
split up stdout heading output line printing (no functional change)
Ian Jackson [Sun, 9 Mar 2014 18:31:54 +0000 (18:31 +0000)]
report best_adjmatrix in that form
Ian Jackson [Sun, 9 Mar 2014 18:22:29 +0000 (18:22 +0000)]
option for starting best value
Ian Jackson [Sun, 9 Mar 2014 18:22:10 +0000 (18:22 +0000)]
document -j option in head comment
Ian Jackson [Sun, 9 Mar 2014 18:20:26 +0000 (18:20 +0000)]
fudge the {n,m}_max_frags to deal with rounding errors in glpk results
Ian Jackson [Sun, 9 Mar 2014 14:36:59 +0000 (14:36 +0000)]
use "git describe" not "git-describe"
Ian Jackson [Sun, 9 Mar 2014 13:18:09 +0000 (13:18 +0000)]
move minham check earlier; this avoids some printing etc
apparent speedup of -j4 9 7 on zealot is about 10%
Ian Jackson [Sun, 9 Mar 2014 12:29:12 +0000 (12:29 +0000)]
minimum output match hamming weight; enforce argument ordering
This seems to provide a very dramatic speedup.
Ian Jackson [Sun, 9 Mar 2014 12:23:25 +0000 (12:23 +0000)]
.gitignore: profiling output files
Ian Jackson [Sun, 9 Mar 2014 12:21:26 +0000 (12:21 +0000)]
commentary: document new criterion introduced in
ea5f3526c7c0
Ian Jackson [Sun, 9 Mar 2014 12:20:50 +0000 (12:20 +0000)]
commentary: clarify and fix input vs output confusion
Ian Jackson [Sun, 9 Mar 2014 12:05:51 +0000 (12:05 +0000)]
add one missing call to FOR_BITS (no functional change)
Ian Jackson [Sun, 9 Mar 2014 11:37:14 +0000 (11:37 +0000)]
{n,m}_max_frags: fix fencepost efficiency problem
fixes the bug discovered/exacerbated in
41013cb05383
Ian Jackson [Sun, 9 Mar 2014 11:29:12 +0000 (11:29 +0000)]
rename {n,m}_over_best to {n,m}_max_frags to reflect way used in most of the code
Ian Jackson [Sun, 9 Mar 2014 10:48:19 +0000 (10:48 +0000)]
introduce m_over_best and use it instead of computing maxminsize
XXX makes things slower, perhaps has bug ?!
Ian Jackson [Sun, 9 Mar 2014 10:46:32 +0000 (10:46 +0000)]
move had_max and totalfrags update later in loop body (no functional change)
Ian Jackson [Sun, 9 Mar 2014 10:44:12 +0000 (10:44 +0000)]
provide and use FOR_BITS
this seemed like it would make it faster but doesn't appear to have done so
Ian Jackson [Sun, 9 Mar 2014 10:43:18 +0000 (10:43 +0000)]
provide CMDLINE_CFLAGS feature
This can be used for profiling etc.
Ian Jackson [Sun, 9 Mar 2014 03:28:09 +0000 (03:28 +0000)]
remove some debugging newlines (mistakenly included in previous commit)
Ian Jackson [Sun, 9 Mar 2014 03:22:37 +0000 (03:22 +0000)]
multicore: in master, when collecting results, pay no attention to bus and look only at our own best
Ian Jackson [Sun, 9 Mar 2014 03:21:57 +0000 (03:21 +0000)]
only report "reporting" if we actually have something
Ian Jackson [Sun, 9 Mar 2014 02:45:08 +0000 (02:45 +0000)]
show git version in output
Ian Jackson [Sun, 9 Mar 2014 02:09:35 +0000 (02:09 +0000)]
pass weight array to workers (fix semantic conflict between horizontal weight elimination and multicore)
Ian Jackson [Sun, 9 Mar 2014 01:47:51 +0000 (01:47 +0000)]
move -lm to LDLIBS where it ought to be
Ian Jackson [Sat, 8 Mar 2014 22:17:53 +0000 (22:17 +0000)]
apply floor to n_over_best
Ian Jackson [Sat, 8 Mar 2014 22:17:37 +0000 (22:17 +0000)]
add <math.h> and -lm (no functional change)
Ian Jackson [Sat, 8 Mar 2014 22:11:59 +0000 (22:11 +0000)]
Merge remote-tracking branch 'sgt/master'
Changes made to the new code in sgt/master:
- use "-std=gnu99" not "--std=gnu99"
- n_over_best calculation is in set_best
- n_over_best initialised properly
style:
- use calloc, do not cast return value from int, better sizeof
- extra blank line
Conflicts:
Makefile
main.c
Ian Jackson [Sat, 8 Mar 2014 22:05:58 +0000 (22:05 +0000)]
break out set_best
Ian Jackson [Sat, 8 Mar 2014 19:42:59 +0000 (19:42 +0000)]
in multicore, generator periodically checks for new best to avoid generating many pointless suggestions
Ian Jackson [Sat, 8 Mar 2014 19:42:25 +0000 (19:42 +0000)]
in mc_iterate_worker, use maxhamweight_ok and preconsider_ok on incoming suggestions (for quicker elimination)
Ian Jackson [Sat, 8 Mar 2014 19:41:53 +0000 (19:41 +0000)]
break out maxhamweight_ok (no functional change)
Ian Jackson [Sat, 8 Mar 2014 19:40:57 +0000 (19:40 +0000)]
predeclare preconsider_ok and multicore_check_for_new_best (no functional change)
Ian Jackson [Sat, 8 Mar 2014 17:56:03 +0000 (17:56 +0000)]
tiresome portability fix for pread on squeeze
Ian Jackson [Sat, 8 Mar 2014 17:48:46 +0000 (17:48 +0000)]
multicore support seems to work
Ian Jackson [Sat, 8 Mar 2014 17:47:58 +0000 (17:47 +0000)]
.gitignore: core, t.*
Ian Jackson [Sat, 8 Mar 2014 17:47:06 +0000 (17:47 +0000)]
introduce progress_eol and make stderr line buffered
Ian Jackson [Sat, 8 Mar 2014 17:32:18 +0000 (17:32 +0000)]
in preconsider_ok, check for frags >= maxhamweight so we can force this to pass by setting maxhamweight
Ian Jackson [Sat, 8 Mar 2014 17:31:36 +0000 (17:31 +0000)]
break out preconsider_ok
Ian Jackson [Sat, 8 Mar 2014 17:28:54 +0000 (17:28 +0000)]
PRINTF is less bodgy now
Ian Jackson [Sat, 8 Mar 2014 17:27:23 +0000 (17:27 +0000)]
Add -std=gnu99 to Makefile
Ian Jackson [Sat, 8 Mar 2014 16:26:14 +0000 (16:26 +0000)]
break out report()
Ian Jackson [Sat, 8 Mar 2014 16:01:04 +0000 (16:01 +0000)]
wip multicore: add argument parsing; currently -j option is actually ignored
Simon Tatham [Sat, 8 Mar 2014 14:10:06 +0000 (14:10 +0000)]
Check max Hamming weight in the other direction.
Once we've already got a solution, we can further winnow the set of
possible adjacency matrices, by ensuring the same bit is not set in
too many entries of adjmatrix (since if it were, some length-n stick
would have to be divided into enough pieces to make one at most the
already-known best result). This adds complexity to each step of the
recursion over possible matrices, but by early pruning it seems to cut
down the number of steps by rather more; I estimate a factor of four
speedup in pursuit of (n,m)=(10,7).
Simon Tatham [Sat, 8 Mar 2014 00:19:41 +0000 (00:19 +0000)]
Prune by symmetry: constrain 1st adj row to all 1s at low end.
Simon Tatham [Sat, 8 Mar 2014 00:03:04 +0000 (00:03 +0000)]
Separate stdout from stderr.
Simon Tatham [Sat, 8 Mar 2014 00:00:29 +0000 (00:00 +0000)]
Output the actual dissection, as a matrix.
Ian Jackson [Fri, 7 Mar 2014 18:54:57 +0000 (18:54 +0000)]
commentary
Ian Jackson [Fri, 7 Mar 2014 18:45:51 +0000 (18:45 +0000)]
assert our arguments
Ian Jackson [Fri, 7 Mar 2014 18:43:49 +0000 (18:43 +0000)]
do not leak prob when retrying
Ian Jackson [Fri, 7 Mar 2014 18:09:46 +0000 (18:09 +0000)]
search in order by max hamming weight
Ian Jackson [Fri, 7 Mar 2014 17:48:30 +0000 (17:48 +0000)]
Revert "loop in reverse order - this is a better search path"
This reverts commit
35e60acecf2f2657a3fd53f89053de9e57a0d7fe.
Doesn't actually seem to help that much.
Ian Jackson [Fri, 7 Mar 2014 17:38:21 +0000 (17:38 +0000)]
loop in reverse order - this is a better search path
Ian Jackson [Fri, 7 Mar 2014 17:35:56 +0000 (17:35 +0000)]
Revert "mix up the order" and "mix up the order"
This is not correct; I think it doesn't in fact search all relevant
bit patterns.
Ian Jackson [Fri, 7 Mar 2014 17:31:29 +0000 (17:31 +0000)]
mix up the order, print better
Ian Jackson [Fri, 7 Mar 2014 17:24:49 +0000 (17:24 +0000)]
mix up the order
Ian Jackson [Fri, 7 Mar 2014 16:54:20 +0000 (16:54 +0000)]
error fixes; tried interior but doesn't work (EINSTAB) and docs say cannot cope with dense columns of which our X_minimum is one
Ian Jackson [Fri, 7 Mar 2014 16:50:18 +0000 (16:50 +0000)]
print best solution
Ian Jackson [Fri, 7 Mar 2014 16:37:47 +0000 (16:37 +0000)]
improve maxminsize thing
Ian Jackson [Fri, 7 Mar 2014 16:37:17 +0000 (16:37 +0000)]
fix printing more
Ian Jackson [Fri, 7 Mar 2014 16:28:26 +0000 (16:28 +0000)]
less printing, optimise
Ian Jackson [Fri, 7 Mar 2014 16:08:58 +0000 (16:08 +0000)]
output improvements
Ian Jackson [Fri, 7 Mar 2014 16:01:09 +0000 (16:01 +0000)]
wip lp seems to work so far...
Ian Jackson [Fri, 7 Mar 2014 15:32:54 +0000 (15:32 +0000)]
wip lp, results, compiles
Ian Jackson [Fri, 7 Mar 2014 14:55:30 +0000 (14:55 +0000)]
wip lp, problem setup compiles
Ian Jackson [Fri, 7 Mar 2014 14:52:13 +0000 (14:52 +0000)]
wip lp
Ian Jackson [Fri, 7 Mar 2014 13:44:10 +0000 (13:44 +0000)]
wip lp notes before condense
Ian Jackson [Fri, 7 Mar 2014 13:29:02 +0000 (13:29 +0000)]
wip, builds, before glpk
Ian Jackson [Fri, 7 Mar 2014 13:22:08 +0000 (13:22 +0000)]
wip