Using ampl to calculate the best possible soylent recipe from a database of possible ingredients
Go to file
Wurzelkoch d505ff812a Mehr Zutaten
Die Änderung im Rezept ist wirklich spannend - auf einmal brauch ich Erbsenprotein. Wird leichter und geringfügig teurer
2020-02-21 16:21:51 +01:00
ampl-folien.pdf ampl Anleitung 2019-11-28 21:44:09 +01:00
config.dat reconstructing units 2020-02-19 23:05:41 +01:00
data_brands.csv Initial commit 2019-04-29 10:42:59 +02:00
data_raw.csv Initial commit 2019-04-29 10:42:59 +02:00
grenzen-orig.dat reconstructing units 2020-02-19 23:05:41 +01:00
grenzen-slightly-randomized.dat Mehr Zutaten 2020-02-21 16:21:51 +01:00
grenzen-working.dat OR skaliert 2019-12-06 22:59:30 +01:00
grenzen.dat Interessantes Rezept 2020-02-19 23:22:22 +01:00
main.ampl reconstructing units 2020-02-19 23:05:41 +01:00
preise.csv aufräumen 2019-12-03 10:20:52 +01:00
preise.dat reconstructing units 2020-02-19 23:05:41 +01:00
Preisliste_raw.csv Initial commit 2019-04-29 10:42:59 +02:00
README.md Andere penalty Gewichtung 2019-12-11 10:37:28 +01:00
ref.dat Altes Rezept als Vergleichswert (ref) 2019-12-15 11:21:03 +01:00
Rezept-ampl.csv läuft mit Alnatura 2019-11-28 20:13:25 +01:00
Rezept-b3yond.csv Dateinamen geändert 2019-05-21 13:32:59 +02:00
Rezept-pool.ods OR skaliert 2019-12-06 22:59:30 +01:00
Rezept.dat Altes Rezept als Vergleichswert (ref) 2019-12-15 11:21:03 +01:00
Rezept.mod reconstructing units 2020-02-19 23:05:41 +01:00
Soll.csv läuft mit Alnatura 2019-11-28 20:13:25 +01:00
Soll.ods Initial commit 2019-04-29 10:42:59 +02:00
title.csv Initial commit 2019-04-29 10:42:59 +02:00
werte.csv OR skaliert 2019-12-06 22:59:30 +01:00
werte.dat OR skaliert 2019-12-06 22:59:30 +01:00
zutaten.csv läuft mit Alnatura 2019-11-28 20:13:25 +01:00
zutaten.dat Mehr Zutaten 2020-02-21 16:21:51 +01:00

SoylentCalculator

run

  1. Besorge dir ampl von: https://ampl.com/try-ampl/download-a-free-demo/#linux
  2. Starte in der Konsole ampl.linux64/ampl
  3. Eingabe include main.ampl;
  4. Es werden die Einkaufsmengen in g bzw. Stück (bei Vitaminpillen), die Gesamtmasse in g und der Kaufpreis in Euro jeweiln für eine Tagesration angezeigt. Andere berechnete Werte können mit display variable; angezeigt werden.

neue Zutaten eintragen

  1. Es wird immer die Datei Rezept-pool.ods geändert.
  • neue Zutaten müssen manuell mit exakt gleichem Namen in die Tabellen "data_raw" und "preise", sowie in die Datei "zutaten.dat" eingetragen werden.
  • Nährwerte manuell in "data_raw" eintragen, sie werden automatisch in "Nährwerte bereinigt" übertragen.
  • evtl. muss die Anzahl von übertragenen Zeilen in letzterer Tabelle angepasst werden.
  1. Die Tabelle "Nährwerte bereinigt" als "werte.csv" abspeichern, mit Leerzeichen als Spaltentrenner. Ebenso die Tabelle "Preise" als "preise.csv".
  2. Entferne in den genannten csv-Dateien die erste Zeile und ändere die Dateiendung in .dat
  3. Führe "sed -i -r -e s/<[0-9.]*/0/g werte.dat" aus
  4. Jetzt müsste das Programm wie oben laufen.

Neue Constraints, zu berücksichtigende Nährwerte

Passiert über Änderungen in verschiedenen Dateien, u.a. Rezept.mod. Nicht ganz trivial, werde ich vielleicht später weiter ausführen.

rumspielen

  • Andere Zutaten berücksichtigen: Kommentiere Zeilen in zutaten.dat aus.
  • Andere Nährwerte: Zeilen in grenzen-working.dat auskommentieren und sicherstellen, dass in grenzen.dat die entsprechende Zeile aktiv ist. Die Datei grenzen-orig.dat sollte nicht verändert werden.
  • Wenn die Datei grenzen-orig.dat aktiv ist und in zutaten.dat nur die Zeilen mit *OR aktiv sind, erhält das Programm genau die Eingabedaten des ursprünglichen Rezepts.
  • Für diverse Strafkosten: in config.dat rumspielen. Dort die Kommentare beachten.