From 4d9e7c442ccd54f94f8fc0c30e1cc39e67b871c6 Mon Sep 17 00:00:00 2001 From: Wurzelkoch Date: Mon, 29 Apr 2019 10:42:59 +0200 Subject: [PATCH] Initial commit --- Preisliste_raw.csv | 1 + Rezept-ampl.csv | 9 + Rezept.csv | 10 + Rezept.dat | 92 ++++ Rezept.mod | 25 ++ Rezept.ods | Bin 0 -> 14217 bytes Soll.csv | 43 ++ Soll.ods | Bin 0 -> 14827 bytes data_brands.csv | 81 ++++ data_raw.csv | 1021 ++++++++++++++++++++++++++++++++++++++++++++ title.csv | 42 ++ 11 files changed, 1324 insertions(+) create mode 100644 Preisliste_raw.csv create mode 100644 Rezept-ampl.csv create mode 100644 Rezept.csv create mode 100644 Rezept.dat create mode 100644 Rezept.mod create mode 100644 Rezept.ods create mode 100644 Soll.csv create mode 100644 Soll.ods create mode 100755 data_brands.csv create mode 100755 data_raw.csv create mode 100644 title.csv diff --git a/Preisliste_raw.csv b/Preisliste_raw.csv new file mode 100644 index 0000000..555240c --- /dev/null +++ b/Preisliste_raw.csv @@ -0,0 +1 @@ +"47" "Trinkwasser (Mittelwert Schweiz)" "" "per 100ml food volume" "198" "Haferflocken" "" "per 100g edible portion" "203" "Weizenmehl, Ruch, Typ 1100" "" "per 100g edible portion" "204" "Weizenmehl (Backmehl), Typ 550" "" "per 100g edible portion" "205" "Weizenmehl, weiss, Typ 400" "" "per 100g edible portion" "206" "Weizenmehl, Vollkorn, Typ 1700" "" "per 100g edible portion" "207" "Weizenmehl, halbweiss, Typ 720" "" "per 100g edible portion" "208" "Margarine" "" "per 100g edible portion" "270" "Haselnuss" "" "per 100g edible portion" "271" "Baumnuss" "Walnuss" "per 100g edible portion" "272" "Edelkastanie, roh" "Marroni" "per 100g edible portion" "273" "Mandel" "" "per 100g edible portion" "274" "Pistazie" "" "per 100g edible portion" "275" "Cashewnuss" "Cashewkern" "per 100g edible portion" "276" "Kürbiskerne" "" "per 100g edible portion" "277" "Leinsamen" "" "per 100g edible portion" "279" "Paranuss" "" "per 100g edible portion" "280" "Sesamsamen ungeschält" "" "per 100g edible portion" "281" "Sonnenblumenkerne" "" "per 100g edible portion" "282" "Erdnuss" "" "per 100g edible portion" "283" "Pinienkerne" "" "per 100g edible portion" "284" "Kokosnuss" "" "per 100g edible portion" "348" "Tomate, roh" "" "per 100g edible portion" "349" "Aubergine, roh" "Eierfrucht" "per 100g edible portion" "350" "Blumenkohl, roh" "" "per 100g edible portion" "351" "Broccoli, roh" "" "per 100g edible portion" "352" "Fenchel, roh" "" "per 100g edible portion" "353" "Bohne, grün, roh" "Gartenbohne" "per 100g edible portion" "354" "Gurke, roh" "Salatgurke" "per 100g edible portion" "355" "Karotte, roh" "Rüebli" "per 100g edible portion" "356" "Knoblauch, roh" "" "per 100g edible portion" "357" "Knollensellerie, roh" "" "per 100g edible portion" "358" "Lauch, roh" "" "per 100g edible portion" "359" "Peperoni, grün, roh" "" "per 100g edible portion" "360" "Peperoni, rot, roh" "" "per 100g edible portion" "361" "Rettich, roh" "" "per 100g edible portion" "362" "Rhabarber, roh" "" "per 100g edible portion" "363" "Rosenkohl, roh" "" "per 100g edible portion" "364" "Rotkohl, roh" "Rotkraut;Blaukraut" "per 100g edible portion" "365" "Spinat, roh" "" "per 100g edible portion" "366" "Stangensellerie, roh" "" "per 100g edible portion" "367" "Zucchetti, roh" "Zucchini" "per 100g edible portion" "368" "Zwiebel, roh" "" "per 100g edible portion" "369" "Erbse, grün, roh" "" "per 100g edible portion" "370" "Linse, ganz, getrocknet" "" "per 100g edible portion" "371" "Brunnenkresse, roh" "" "per 100g edible portion" "372" "Nüsslisalat, roh" "Feldsalat;Rapunzelsalat" "per 100g edible portion" "373" "Petersilie, roh" "Peterli" "per 100g edible portion" "374" "Schnittlauch, roh" "" "per 100g edible portion" "375" "Champignon, roh" "" "per 100g edible portion" "376" "Eierschwamm, roh" "Pfifferling" "per 100g edible portion" "377" "Ananas, roh" "" "per 100g edible portion" "378" "Apfel, roh" "" "per 100g edible portion" "379" "Aprikose, roh" "Marille" "per 100g edible portion" "380" "Avocado, roh" "" "per 100g edible portion" "381" "Banane, roh" "" "per 100g edible portion" "382" "Birne, roh" "" "per 100g edible portion" "383" "Brombeere, roh" "" "per 100g edible portion" "384" "Dattel, getrocknet" "" "per 100g edible portion" "385" "Erdbeere, roh" "" "per 100g edible portion" "386" "Feige, roh" "" "per 100g edible portion" "387" "Feige, getrocknet" "Dörrfeige" "per 100g edible portion" "388" "Grapefruit (weiss oder rot), roh" "Pampelmuse" "per 100g edible portion" "389" "Heidelbeere, roh" "" "per 100g edible portion" "390" "Himbeere, roh" "" "per 100g edible portion" "391" "Johannisbeere, rot, roh" "" "per 100g edible portion" "392" "Johannisbeere, schwarz, roh" "" "per 100g edible portion" "393" "Kaki, roh" "" "per 100g edible portion" "394" "Kirsche, roh" "" "per 100g edible portion" "395" "Kiwi, roh" "" "per 100g edible portion" "396" "Mango, roh" "" "per 100g edible portion" "397" "Mandarine, roh" "" "per 100g edible portion" "398" "Zitrone, roh" "" "per 100g edible portion" "399" "Honigmelone, roh" "Zuckermelone" "per 100g edible portion" "400" "Stachelbeere, roh" "" "per 100g edible portion" "401" "Pfirsich, roh" "" "per 100g edible portion" "402" "Wassermelone, roh" "" "per 100g edible portion" "403" "Mirabelle, roh" "" "per 100g edible portion" "404" "Nektarine, roh" "" "per 100g edible portion" "405" "Orange, roh" "Apfelsine" "per 100g edible portion" "407" "Erdnuss, geröstet" "" "per 100g edible portion" "412" "Maiskeimöl" "" "per 100ml food volume" "419" "Reis parboiled, trocken" "" "per 100g edible portion" "420" "Buchweizenmehl" "" "per 100g edible portion" "421" "Buchweizen, Korn geschält" "" "per 100g edible portion" "422" "Hirse, Korn geschält" "" "per 100g edible portion" "423" "Hartweizengriess, trocken" "" "per 100g edible portion" "425" "Maisgriess, trocken" "Polenta" "per 100g edible portion" "426" "Maisstärke" "" "per 100g edible portion" "427" "Reis poliert, trocken" "" "per 100g edible portion" "428" "Reis unpoliert, trocken" "Vollkornreis" "per 100g edible portion" "429" "Rollgerste" "Gerstengraupen" "per 100g edible portion" "430" "Weizenkeime" "" "per 100g edible portion" "431" "Weizenkleie" "Speisekleie" "per 100g edible portion" "432" "Mais, roh" "Zuckermais;Gemüsemais" "per 100g edible portion" "433" "Birne, getrocknet" "Dörrbirne;Trockenbirne" "per 100g edible portion" "435" "Apfel, geschält, getrocknet" "Dörrapfel" "per 100g edible portion" "436" "Holunderbeere, schwarz, roh" "" "per 100g edible portion" "437" "Chinakohl, roh" "Pekingkohl;Selleriekohl;Japankohl" "per 100g edible portion" "438" "Kefe, roh" "Kiefelerbse;Zuckerschote" "per 100g edible portion" "439" "Kichererbse, getrocknet" "" "per 100g edible portion" "441" "Lattich, roh" "" "per 100g edible portion" "442" "Sojabohne, getrocknet" "" "per 100g edible portion" "443" "Spargel, roh" "" "per 100g edible portion" "447" "Chicorée, roh" "Brüsseler Endivie" "per 100g edible portion" "448" "Kopfsalat, roh" "" "per 100g edible portion" "449" "Kohlrabi, roh" "Rübkohl" "per 100g edible portion" "450" "Mangold, roh" "Krautstiel" "per 100g edible portion" "451" "Rande, roh" "Rote Beete" "per 100g edible portion" "452" "Schwarzwurzel, roh" "" "per 100g edible portion" "453" "Weisskohl, roh" "" "per 100g edible portion" "454" "Wirz, roh" "Wirsingkohl" "per 100g edible portion" "455" "Steinpilz, roh" "" "per 100g edible portion" "456" "Radieschen, roh" "" "per 100g edible portion" "457" "Morchel, roh" "" "per 100g edible portion" "458" "Cicorino rot, roh" "" "per 100g edible portion" "459" "Eisbergsalat, roh" "" "per 100g edible portion" "460" "Thymian, roh" "" "per 100g edible portion" "461" "Salbei, roh" "" "per 100g edible portion" "462" "Rosmarin, roh" "" "per 100g edible portion" "463" "Pfefferminze, roh" "" "per 100g edible portion" "464" "Basilikum, roh" "" "per 100g edible portion" "465" "Zuckerhutsalat, roh" "" "per 100g edible portion" "466" "Sojasprossen, roh" "Sojakeime" "per 100g edible portion" "467" "Endivie, roh" "Frisée Salat" "per 100g edible portion" "469" "Aprikose, getrocknet" "Dörraprikose;Marille" "per 100g edible portion" "470" "Zucker, weiss" "Saccharose;Kristallzucker" "per 100g edible portion" "471" "Zucker, braun" "" "per 100g edible portion" "473" "Bohne, grün, getrocknet" "Dörrbohne" "per 100g edible portion" "474" "Pflaume, roh" "" "per 100g edible portion" "475" "Pflaume, getrocknet" "Dörrpflaume;Backpflaume" "per 100g edible portion" "476" "Quitte, roh" "" "per 100g edible portion" "477" "Rosine, getrocknet" "Weinbeere;Sultanine" "per 100g edible portion" "478" "Traube, roh" "Weintraube" "per 100g edible portion" "479" "Zwetschge, roh" "" "per 100g edible portion" "480" "Kürbis, roh" "Riesenkürbis" "per 100g edible portion" "490" "Tofu" "" "per 100g edible portion" "491" "Gurke, in Essig eingelegt" "Essiggurke;Cornichon" "per 100g edible portion" "492" "Olive, grün" "" "per 100g edible portion" "493" "Olive, schwarz" "" "per 100g edible portion" "494" "Silberzwiebel, in Essig eingelegt" "" "per 100g edible portion" "497" "Kartoffelstärke" "" "per 100g edible portion" "562" "Birnensaft" "" "per 100ml food volume" "564" "Tomatensaft" "" "per 100ml food volume" "566" "Karottensaft" "Rüeblisaft" "per 100ml food volume" "568" "Apfelsaft" "Süssmost" "per 100ml food volume" "569" "Sirup unverdünnt" "" "per 100ml food volume" "572" "Orangennektar" "" "per 100ml food volume" "573" "Traubensaft" "" "per 100ml food volume" "576" "Orangensaft" "" "per 100ml food volume" "577" "Orangensaft, angereichert mit Vitamin C" "" "per 100ml food volume" "583" "Kakaobutter" "" "per 100g edible portion" "589" "Distelöl" "" "per 100ml food volume" "591" "Olivenöl" "" "per 100ml food volume" "592" "Traubenkernöl" "" "per 100ml food volume" "593" "Weizenkeimöl" "" "per 100ml food volume" "596" "Erdnussöl" "" "per 100ml food volume" "598" "Sonnenblumenöl" "" "per 100ml food volume" "600" "Rapsöl" "" "per 100ml food volume" "601" "Kokosfett" "" "per 100g edible portion" "603" "Sojaöl" "" "per 100ml food volume" "605" "Zitronensaft" "" "per 100ml food volume" "618" "Ananas, ungezuckert (Konserve)" "" "per 100g edible portion" "623" "Aprikose, ungezuckert (Konserve)" "Marille" "per 100g edible portion" "625" "Pfirsich, ungezuckert (Konserve)" "" "per 100g edible portion" "626" "Birne, ungezuckert (Konserve)" "" "per 100g edible portion" "628" "Apfelmus, ungezuckert (Konserve)" "" "per 100g edible portion" "629" "Champignon (Konserve)" "" "per 100g edible portion" "630" "Erbse (Konserve) " "" "per 100g edible portion" "632" "Zuckermais (Konserve)" "" "per 100g edible portion" "633" "Maiskölbchen, in Essig eingelegt" "" "per 100g edible portion" "634" "Kochsalz ohne Jod und Fluor" "Speisesalz" "per 100g edible portion" "636" "Tomatenpüree" "Tomatenmark" "per 100g edible portion" "637" "Tomate, geschält (Konserve)" "Pelati" "per 100g edible portion" "647" "Sauerkraut, in Essig eingelegt" "Sauerkohl" "per 100g edible portion" "663" "Paprika (Gewürz)" "" "per 100g edible portion" "734" "Weizen (Weichweizen), ganzes Korn" "" "per 100g edible portion" "739" "Gerstenflocken" "" "per 100g edible portion" "740" "Banane, gedörrt" "Bananenchips" "per 100g edible portion" "741" "Banane, getrocknet" "" "per 100g edible portion" "742" "Kokosnuss, getrocknet (Kokosrapseln, Kokosflocken)" "" "per 100g edible portion" "748" "Roggenmehl, halbweiss, Typ 815" "" "per 100g edible portion" "749" "Roggenmehl, Vollkorn, Schrot, Typ 1800" "" "per 100g edible portion" "750" "Paniermehl" "Semmelmehl" "per 100g edible portion" "752" "Roggenmehl, Ruch, Typ 1050" "" "per 100g edible portion" "762" "Kochsalz mit Jod" "" "per 100g edible portion" "763" "Bäckerhefe, gepresst" "Bierhefe" "per 100g edible portion" "768" "Traubenzucker" "Glukose;Dextrose" "per 100g edible portion" "769" "Haferkleie" "" "per 100g edible portion" "800" "Teigwaren ohne Ei, trocken" "" "per 100g edible portion" "801" "Teigwaren ohne Ei, Vollkorn, trocken" "" "per 100g edible portion" "813" "Kartoffel, geschält, roh" "" "per 100g edible portion" "815" "Erbsen und Karotten (Konserve)" "Rüebli" "per 100g edible portion" "818" "Ofen-Frites, tiefgekühlt" "Ofen-Pommes" "per 100g edible portion" "839" "Bierhefe, getrocknet" "Bäckerhefe;Trockenhefe;Hefepulver" "per 100g edible portion" "858" "Rösti, Fertigprodukt" "" "per 100g edible portion" "860" "Kartoffelflocken, mit Milchpulver und Salz (Instant-Kartoffelstock)" "Instant-Kartoffelstock" "per 100g edible portion" "863" "Kartoffelstock, zubereitet (mit Vollmilch und Butter)" "" "per 100g edible portion" "866" "Instant-Kartoffelstock, zubereitet (mit Wasser und Butter)" "" "per 100g edible portion" "897" "Weizenstärke" "" "per 100g edible portion" "938" "Hirseflocken, Vollkorn" "" "per 100g edible portion" "939" "Weizenflocken, Vollkorn" "" "per 100g edible portion" "940" "Cornflakes" "" "per 100g edible portion" "987" "Preiselbeere, roh" "Moosbeere" "per 100g edible portion" "995" "Sojamehl, vollfett" "" "per 100g edible portion" "996" "Sojamehl, entfettet" "" "per 100g edible portion" "1002" "Karotte, gedämpft (ohne Zugabe von Salz)" "Rüebli" "per 100g edible portion" "1003" "Aubergine, gedünstet (ohne Zugabe von Fett und Salz)" "Eierfrucht" "per 100g edible portion" "1004" "Blumenkohl, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1005" "Broccoli, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1006" "Chicorée, gedämpft (ohne Zugabe von Salz)" "Brüsseler Endivie" "per 100g edible portion" "1007" "Chinakohl, gedünstet (ohne Zugabe von Fett und Salz)" "Pekingkohl;Selleriekohl;Japankohl" "per 100g edible portion" "1008" "Fenchel, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1009" "Bohne, grün, gedämpft (ohne Zugabe von Salz)" "Gartenbohne" "per 100g edible portion" "1010" "Erbse, grün, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1011" "Erbse (Konserve), aufgewärmt (ohne Zugabe von Salz)" "" "per 100g edible portion" "1012" "Kefe, gedämpft (ohne Zugabe von Salz)" "Kiefelerbse;Zuckerschote" "per 100g edible portion" "1013" "Knollensellerie, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1014" "Kohlrabi, gedämpft (ohne Zugabe von Salz)" "Rübkohl" "per 100g edible portion" "1015" "Lauch, gedünstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1016" "Mangold, gedämpft (ohne Zugabe von Salz)" "Krautstiel" "per 100g edible portion" "1017" "Peperoni, grün, gedünstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1018" "Peperoni, rot, gedünstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1019" "Rande, gedämpft (ohne Zugabe von Salz)" "Rote Beete" "per 100g edible portion" "1020" "Kürbis, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1021" "Rosenkohl, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1022" "Rotkohl, gedünstet (ohne Zugabe von Fett und Salz)" "Rotkraut;Blaukraut" "per 100g edible portion" "1023" "Schwarzwurzel, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1024" "Spargel, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1025" "Spinat, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1026" "Stangensellerie, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1027" "Tomate, gedünstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1028" "Weisskohl, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "1029" "Weisskohl, gedünstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1030" "Wirz, gedämpft (ohne Zugabe von Salz)" "Wirsingkohl" "per 100g edible portion" "1031" "Zucchetti, gedünstet (ohne Zugabe von Fett und Salz)" "Zucchini" "per 100g edible portion" "1032" "Mais, gedämpft (ohne Zugabe von Salz)" "Zuckermais;Gemüsemais" "per 100g edible portion" "1033" "Zuckermais (Konserve), aufgewärmt (ohne Zugabe von Salz)" "" "per 100g edible portion" "1034" "Erbsen und Karotten (Konserve), aufgewärmt (ohne Zugabe von Salz)" "Rüebli" "per 100g edible portion" "1035" "Zwiebel, gedünstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1036" "Zwiebel, geröstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1037" "Champignon, gedünstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1038" "Eierschwamm, gedünstet (ohne Zugabe von Fett und Salz)" "Pfifferling" "per 100g edible portion" "1039" "Morchel, gedünstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1040" "Steinpilz, gedünstet (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1041" "Dinkelmehl, Ruch, Typ 1100" "" "per 100g edible portion" "1042" "Dinkelmehl, Vollkorn, Typ 1900" "" "per 100g edible portion" "1043" "Dinkelmehl, weiss, Typ 550" "" "per 100g edible portion" "1049" "Apfel, gedünstet, abgetropft (ohne Zugabe von Zucker)" "" "per 100g edible portion" "1050" "Birne, gedünstet, abgetropft (ohne Zugabe von Zucker)" "" "per 100g edible portion" "1051" "Aprikose, gedünstet, abgetropft (ohne Zugabe von Zucker)" "Marille" "per 100g edible portion" "1052" "Kirsche, gedünstet, abgetropft (ohne Zugabe von Zucker)" "" "per 100g edible portion" "1053" "Mirabelle, gedünstet, abgetropft (ohne Zugabe von Zucker)" "" "per 100g edible portion" "1054" "Pflaume, gedünstet, abgetropft (ohne Zugabe von Zucker)" "" "per 100g edible portion" "1055" "Quitte, gekocht, abgetropft (ohne Zugabe von Zucker)" "" "per 100g edible portion" "1056" "Zwetschge, gedünstet, abgetropft (ohne Zugabe von Zucker)" "" "per 100g edible portion" "1057" "Kartoffel, geschält, gedämpft (ohne Zugabe von Salz)" "Gschwellti" "per 100g edible portion" "1059" "Kichererbse, gekocht (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1060" "Linse, ganz, gekocht (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1061" "Sojabohne, gekocht (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "1063" "Teigwaren ohne Ei, gekocht im Salzwasser (unjodiert)" "" "per 100g edible portion" "1064" "Teigwaren ohne Ei, Vollkorn, gekocht im Salzwasser (unjodiert)" "" "per 100g edible portion" "1065" "Reis parboiled, gekocht in Salzwasser (unjodiert)" "" "per 100g edible portion" "1066" "Reis poliert, gekocht in Salzwasser (unjodiert)" "" "per 100g edible portion" "1067" "Reis unpoliert, gekocht in Salzwasser (unjodiert)" "Vollkornreis" "per 100g edible portion" "1068" "Sonnenblumenöl HO (high oleic), raffiniert" "" "per 100ml food volume" "1069" "Rapsöl HOLL (high oleic, low linolenic)" "" "per 100ml food volume" "1399" "Knöpflimehl" "Spätzlimehl" "per 100g edible portion" "1518" "Kartoffelstock, zubereitet (mit teilentrahmter Milch und Butter)" "" "per 100g edible portion" "1519" "Kartoffelstock, zubereitet (mit Rahm und Butter)" "" "per 100g edible portion" "1584" "Risotto ohne Käse, gekocht" "" "per 100g edible portion" "1586" "Hirsotto, gekocht" "" "per 100g edible portion" "1587" "Gerstotto, gekocht" "" "per 100g edible portion" "1619" "Maisgriess, gekocht" "Polenta" "per 100g edible portion" "1655" "Selleriescheiben, paniert, zubereitet" "" "per 100g edible portion" "1665" "Ratatouille, zubereitet" "" "per 100g edible portion" "1693" "Essig" "" "per 100ml food volume" "10449" "Pommes Frites (in HO Sonnenblumenöl fritiert), ungesalzen" "" "per 100g edible portion" "10450" "Pommes Frites (im Ofen gebacken), ungesalzen" "Ofen-Pommes" "per 100g edible portion" "10457" "Kochsalz mit Jod und Fluor" "Speisesalz" "per 100g edible portion" "10533" "Agar Agar" "" "per 100g edible portion" "10536" "Agavensirup" "Agavendicksaft" "per 100g edible portion" "10546" "Polenta nera (aus Maisgriess und Buchweizenmehl), gekocht" "" "per 100g edible portion" "13385" "Linse, geschält, getrocknet" "" "per 100g edible portion" "13386" "Linse, geschält, gekocht (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "13387" "Bohne (alle Arten), getrocknet" "Weisse Bohne;Rote Bohne;Borlotti Bohne" "per 100g edible portion" "13388" "Bohne (alle Arten), gekocht (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "13389" "Erbse, reif, getrocknet" "Erbse, geschält, getrocknet" "per 100g edible portion" "13390" "Erbse, reif, getrocknet, gekocht (ohne Zusatz von Fett und Salz)" "" "per 100g edible portion" "13394" "Quinoa, roh" "" "per 100g edible portion" "13396" "Quinoa, gekocht (ohne Zugabe von Salz und Fett)" "" "per 100g edible portion" "13397" "Amaranth, Samen, roh" "" "per 100g edible portion" "13398" "Amaranth, Samen, gekocht (ohne Zugabe von Fett und Salz)" "" "per 100g edible portion" "13400" "Federkohl, roh" "Grünkohl" "per 100g edible portion" "13401" "Federkohl, gedünstet (ohne Zugabe von Salz und Fett)" "Grünkohl" "per 100g edible portion" "13402" "Baumnussöl" "" "per 100g edible portion" "13404" "Kürbiskernöl" "" "per 100g edible portion" "13405" "Leinöl, kaltgepresst" "" "per 100g edible portion" "13406" "Süsskartoffel, roh" "" "per 100g edible portion" "13407" "Süsskartoffel, gedämpft (ohne Zugabe von Salz)" "" "per 100g edible portion" "13427" "" "" "" \ No newline at end of file diff --git a/Rezept-ampl.csv b/Rezept-ampl.csv new file mode 100644 index 0000000..79333a7 --- /dev/null +++ b/Rezept-ampl.csv @@ -0,0 +1,9 @@ +Ingredient Calories(kcal) Carbs(g) Protein(g) Fat(g) Sodium(g) Potassium(g) Chloride(g) Fiber(g) Calcium(g) Iron(mg) Phosphorus(g Iodine(mcg) Magnesium(mg) Zinc(mg) Selinium(mcg) Copper(mg) Manganese(mg) Chromium(mcg) Molybdenum(mcg) VitaminA(IU) VitaminB7(mg) VitaminB12(mcg) VitaminC(mg) VitaminD(IU) VitaminE(IU) VitaminK(mcg) Thiamin(mg) Riboflavin(mg) Niacin(mg) Folate(mcg) Biotin(mcg) PantothenicAcid(mg) s Sulfur(g) Cholesterol Omega-3 Omega-6 +feingemahleneHaferflocken 558 88.05 20.25 10.5 0.03 0.6435 0 15 81 7.08 0.7845 0 265.5 5955 51 0.9390000000000001 6 0 0 0 0.1785 0 0 0 0 0 1.1445 0.20850000000000002 1.4415 84 0 2.0235 48.3 1.08 0 0.16649999999999998 3.6359999999999997 +Sojaflocken 437.8 3.41 44.88 22.66 0.0022 2.7665 0 20.35 0.2266 7.007000000000001 0.5434 0 471.9 4312 8.25 3.2119999999999997 2.5025 0 198 132 0.5071 0 0 0 2145 77 0.6391 1276 4.752000000000001 379.5 0 1749 209.66 1.1242 0 1.5157999999999998 11308 +Jodsalz 0 0 0 0 1.5512000000000001 0 2.4 0 0 0 0 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Multivitamine 3 0.30000000000000004 0 0 0 0 0 0 0.30000000000000004 0 0.1875 150 150 3375 37.5 0 0 60 75 1999995 2.0999999999999996 3.75 120 300 0.026999999999999996 112.5 1.6500000000000001 2.0999999999999996 24 300 75 9 0 0 0 0 0 +Sonnenblumenöl 248.1 0 0 27.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21744 0 0 0 0 0 0 0 0 0 0 0.3 19.5 +Puderzucker 600 150 0 0 3 3 0 0 0.0015 0.09 0 0 0 15 0.9 0.0105 6 0 0 0 0 0 0 0 0 0 0 0.0285 0 0 0 0 0 0 0 0 0 +Erbsenprotein 198.33333333333334 5.333333333333333 41 1.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Weizenmehl 240.8 50.61 7 0.7 0 0 0 1.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 diff --git a/Rezept.csv b/Rezept.csv new file mode 100644 index 0000000..3b35066 --- /dev/null +++ b/Rezept.csv @@ -0,0 +1,10 @@ +#;Ingredient;Amount;Unit;Form;Source;Container Size;Item Cost;Daily Cost;Days / Unit;Calories (kcal);Carbs (g);Protein (g);Fat (g);Sodium (g);Potassium (g);Chloride (g);Fiber (g);Calcium (g);Iron (mg);Phosphorus (g;Iodine (mcg);Magnesium (mg);Zinc (mg);Selinium (mcg);Copper (mg);Manganese (mg);Chromium (mcg);Molybdenum (mcg);Vitamin A (IU);Vitamin B6 (mg);Vitamin B12 (mcg);Vitamin C (mg);Vitamin D (IU);Vitamin E (IU);Vitamin K (mcg);Thiamin (mg);Riboflavin (mg);Niacin (mg);Folate (mcg);Biotin (mcg);Pantothenic Acid (mg);Choline (mg);Sulfur (g);Cholesterol;Omega-3;Omega-6 +1;feingemahleneHaferflocken;150;g;Powder;Marktkauf;500;0.39;117;3.3333333333333335;558;88.05;20.25;10.5;0.03;0.6435;0;15;81;7.08;0.7845;0;265.5;5955;51;0.9390000000000001;6;0;0;0;0.1785;0;0;0;0;0;1.1445;0.20850000000000002;1.4415;84;0;2.0235;48.3;1.08;0;0.16649999999999998;3.6359999999999997 +2;Sojaflocken;110;g;Powder;DM;500;2.15;473;4.545454545454546;437.8;3.41;44.88;22.66;0.0022;2.7665;0;20.35;0.2266;7.007000000000001;0.5434;0;471.9;4312;8.25;3.2119999999999997;2.5025;0;198;132;0.5071;0;0;0;2145;77;0.6391;1276;4.752000000000001;379.5;0;1749;209.66;1.1242;0;1.5157999999999998;11308 +3;Jodsalz;4;g;Powder;Aldi;500;0.11;0.00088;125;0;0;0;0;1.5512000000000001;0;2.4;0;0;0;0;80;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +4;Multivitamine;1.5;pill;Pill;DM;143;3.45;0.0361888111888112;95.33333333333333;3;0.30000000000000004;0;0;0;0;0;0;0.30000000000000004;0;0.1875;150;150;3375;37.5;0;0;60;75;1999995;2.0999999999999996;3.75;120;300;0.026999999999999996;112.5;1.6500000000000001;2.0999999999999996;24;300;75;9;0;0;0;0;0 +5;Sonnenblumenöl;30;ml;Liquid;ALDI;1000;3.38;0.10139999999999999;33.333333333333336;248.1;0;0;27.6;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;21744;0;0;0;0;0;0;0;0;0;0;0.3;19.5 +6;Puderzucker;150;g;Powder;Supermarket;1000;0.65;0.0975;6.666666666666667;600;150;0;0;3;3;0;0;0.0015;0.09;0;0;0;15;0.9;0.0105;6;0;0;0;0;0;0;0;0;0;0;0.0285;0;0;0;0;0;0;0;0;0 +7;Erbsenprotein;50;g;Powder;myProtein;2500;24.19;0.4838;50;198.33333333333334;5.333333333333333;41;1.5;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +8;Weizenmehl;70;g;Powder;Supermarket;1000;0.35;0.0245;14.285714285714286;240.8;50.61;7;0.7;0;0;0;1.96;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0 +;Total;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/Rezept.dat b/Rezept.dat new file mode 100644 index 0000000..81886c9 --- /dev/null +++ b/Rezept.dat @@ -0,0 +1,92 @@ +set ZUTATEN := feingemahleneHaferflocken Sojaflocken Jodsalz Multivitamine Sonnenblumenöl Puderzucker Erbsenprotein Weizenmehl; + +set STOFFE:=Calories Carbs Protein Fat Sodium Potassium Chloride Fiber Calcium Iron Phosphorus Magnesium Zinc Selenium Copper Manganese Chromium Molybdenum VitaminA VitaminB6 VitaminB12 VitaminC VitaminD VitaminE VitaminK Thiamin Riboflavin Niacin Folate Biotin PantothenicAcid Choline Sulfur Cholesterol Omega-3 Omega-6 Iodine; + +set INDEX:=1 2; + +param bezugsmenge:= +Multivitamine 1; + +param preis:= +feingemahleneHaferflocken 0.078 +Sojaflocken 0.43 +Jodsalz 0.022 +Multivitamine 0.0241258741258741 +Sonnenblumenöl 0.338 +Puderzucker 0.065 +Erbsenprotein 0.9676 +Weizenmehl 0.035; + +param minwert:= +Calories 2751 +Carbs 344 +Protein 138 +Fat 92 +Omega-3 5.67 +Omega-6 17 +Fiber 30 +Cholesterol 0 +VitaminA 3333 +VitaminB6 1.5 +VitaminB12 3 +VitaminC 100 +VitaminD 800 +VitaminE 20.86 +VitaminK 120 +Thiamin 1.2 +Riboflavin 1.4 +Niacin 16 +Folate 400 +PantothenicAcid 6 +Biotin 50 +Choline 1220 +Calcium 1 +Chloride 2.3 +Chromium 65 +Copper 1.25 +Iodine 200 +Iron 14 +Magnesium 420 +Manganese 3.5 +Molybdenum 75 +Phosphorus 0.7 +Potassium 3.5 +Selenium 55 +Sodium 1.5 +Sulfur 2 +Zinc 11; + +param maxwert:= +VitaminA 10000 +VitaminB6 100 +VitaminC 2000 +VitaminD 4000 +VitaminE 1000 +Omega-3 20 +Niacin 35 +Folate 1000 +Choline 3500 +Calcium 2.5 +Chloride 3.6 +Copper 10 +Iodine 1100 +Iron 45 +Manganese 11 +Molybdenum 2000 +Phosphorus 4 +Selenium 400 +Sodium 2.3 +Zinc 40; + +param pill_penalty: 1 2:= +Multivitamine 1 1; + +param werte: Calories Carbs Protein Fat Sodium Potassium Chloride Fiber Calcium Iron Phosphorus Iodine Magnesium Zinc Selenium Copper Manganese Chromium Molybdenum VitaminA VitaminB6 VitaminB12 VitaminC VitaminD VitaminE VitaminK Thiamin Riboflavin Niacin Folate Biotin PantothenicAcid Choline Sulfur Cholesterol Omega-3 Omega-6 := +feingemahleneHaferflocken 558 88.05 20.25 10.5 0.03 0.6435 0 15 81 7.08 0.7845 0 265.5 5955 51 0.9390000000000001 6 0 0 0 0.1785 0 0 0 0 0 1.1445 0.20850000000000002 1.4415 84 0 2.0235 48.3 1.08 0 0.16649999999999998 3.6359999999999997 +Sojaflocken 437.8 3.41 44.88 22.66 0.0022 2.7665 0 20.35 0.2266 7.007000000000001 0.5434 0 471.9 4312 8.25 3.2119999999999997 2.5025 0 198 132 0.5071 0 0 0 2145 77 0.6391 1276 4.752000000000001 379.5 0 1749 209.66 1.1242 0 1.5157999999999998 11308 +Jodsalz 0 0 0 0 1.5512000000000001 0 2.4 0 0 0 0 80 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Multivitamine 3 0.30000000000000004 0 0 0 0 0 0 0.30000000000000004 0 0.1875 150 150 3375 37.5 0 0 60 75 1999995 2.0999999999999996 3.75 120 300 0.026999999999999996 112.5 1.6500000000000001 2.0999999999999996 24 300 75 9 0 0 0 0 0 +Sonnenblumenöl 248.1 0 0 27.6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 21744 0 0 0 0 0 0 0 0 0 0 0.3 19.5 +Puderzucker 600 150 0 0 3 3 0 0 0.0015 0.09 0 0 0 15 0.9 0.0105 6 0 0 0 0 0 0 0 0 0 0 0.0285 0 0 0 0 0 0 0 0 0 +Erbsenprotein 198.33333333333334 5.333333333333333 41 1.5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 +Weizenmehl 240.8 50.61 7 0.7 0 0 0 1.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0; diff --git a/Rezept.mod b/Rezept.mod new file mode 100644 index 0000000..caa450f --- /dev/null +++ b/Rezept.mod @@ -0,0 +1,25 @@ +set ZUTATEN; +set STOFFE; +set INDEX; #Indexmenge +param preis {z in ZUTATEN} >= 0; +param werte {z in ZUTATEN, s in STOFFE} >= 0; +param minwert {s in STOFFE} >= 0 default 0; +param maxwert {s in STOFFE} >= 0 default Infinity; +var menge {z in ZUTATEN} >= 0; + +param bezugsmenge {z in ZUTATEN} default 100; #nicht immer ist menge in 100g, teilweise in Stück +param weight_penalty >= 0 default 0.05; #Transportkosten je 100g +param pill_penalty {z in ZUTATEN, i in INDEX} default 0;#für einzelne Zutaten können Strafkosten bei Überschreiten einer Höchstmenge verhängt werden + +var kaufpreis = sum {z in ZUTATEN} preis[z]*menge[z]; +var omega_ratio = sum{z in ZUTATEN} menge[z]*werte[z,"Omega-6"]/sum{y in ZUTATEN} menge[y]*werte[z,"Omega-3"]; +var rezeptwert {s in STOFFE} = sum {z in ZUTATEN} menge[z]*werte[z,s]; +var total_weight_penalty = sum {z in ZUTATEN} menge[z]*weight_penalty*bezugsmenge[z]/100; #je 100g +var total_pill_penalty = sum {z in ZUTATEN} max(menge[z]-pill_penalty[z,1],0)*pill_penalty[z,2]; +#Wenn die zutatenweise Obergrenze in pill_penalty[z,1] überschritten ist, werden Strafkosten für die Überschussmenge berechnet. + +minimize gesamtpreis: kaufpreis + total_weight_penalty + total_pill_penalty; +subject to ugrenze {s in STOFFE}: rezeptwert[s] >= minwert[s]; +#subject to ogrenze {s in STOFFE}: rezeptwert[s] <= maxwert[s]; +subject to omega_ratio_constraint: omega_ratio <= 6; + diff --git a/Rezept.ods b/Rezept.ods new file mode 100644 index 0000000000000000000000000000000000000000..050c70ba4a1bccce03d864a675a3cf8e0f2b7e62 GIT binary patch literal 14217 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