Advertisement
MatsGranvik

Constraints giving the von Mangoldt function matrix

Jun 29th, 2019
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.87 KB | None | 0 0
  1. (*mathematica*)nn = 12;
  2. TableForm[A = Table[Table[a[n, k], {k, 1, nn}], {n, 1, nn}]]
  3. "Constraints"
  4. TableForm[
  5. RowSums =
  6. Table[Table[
  7. Sum[A[[r, m]], {m, k, k + r - 1}] == If[r == 1, 1, 0], {k, 1,
  8. nn - (r - 1)}], {r, 1, nn}]]
  9. TableForm[
  10. ColumnSums =
  11. Table[Table[
  12. Sum[A[[m, r]], {m, k, k + r - 1}] == If[r == 1, 1, 0], {k, 1,
  13. nn - (r - 1)}], {r, 1, nn}]]
  14. Constraints = Flatten[{RowSums, ColumnSums}];
  15. Constraints1 =
  16. StringJoin[
  17. Table[StringJoin[ToString[Constraints[[n]]], " && "], {n, 1,
  18. Length[Constraints]}]];
  19. Variables1 = Flatten[A];
  20. Variables2 = ToString[Flatten[A]];
  21. VariablesAreIntegers =
  22. StringJoin[
  23. Table[StringJoin[ToString[Variables1[[n]]],
  24. " \[Element] Integers ",
  25. If[n == Length[Variables1], "", " && "]], {n, 1,
  26. Length[Variables1]}]];
  27. "KnapsackConstraint"
  28. KnapsackConstraint =
  29. ToString[Total[
  30. Total[Table[
  31. Sum[Table[
  32. StringJoin[ToString[If[n >= k, A[[n, k]], 0]]], {k, 1,
  33. nn}], {n, 1, mm}], {mm, nn, nn}]]]];
  34. KnapsackConstraint = StringJoin[ToString[KnapsackConstraint], "==1"]
  35. "VariableBounds"
  36. "ObjectiveFunction"
  37. ObjectiveFunction =
  38. ToString[Total[
  39. Total[Table[
  40. Sum[Table[
  41. StringJoin[ToString[If[n >= k, A[[n, k]], 0]], "/",
  42. ToString[k]], {k, 1, nn}], {n, 1, mm}], {mm, nn, nn}]]]]
  43. TableForm[
  44. Table[Sum[
  45. Table[If[n >= k, A[[n, k]], 0]/k, {k, 1, nn}], {n, 1, mm}], {mm,
  46. nn, nn}]]
  47. ab = StringJoin["FindMaximum[{", ObjectiveFunction, " , ",
  48. KnapsackConstraint, Constraints1, VariablesAreIntegers, "},",
  49. Variables2, "]"];
  50. "Solution"
  51. Solution =
  52. ReleaseHold[MakeExpression[RowBox[{ab}], StandardForm]][[2]];
  53. TableForm[
  54. Table[Table[Solution[[n]], {n, (k - 1)*nn + 1, k*nn}], {k, 1, nn}]];
  55. TableForm[
  56. Table[Table[
  57. First[Solution[[n]]] /. Solution[[n]], {n, (k - 1)*nn + 1,
  58. k*nn}], {k, 1, nn}]]
  59. (*end*)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement