GTx1 la master · olivierzachGTx1 · GitHub
GitHub găzduiește peste 50 de milioane de dezvoltatori care lucrează împreună pentru a găzdui și a revizui codul, pentru a gestiona proiecte și pentru a construi software împreună.

GitHub este locul în care lumea construiește software
Milioane de dezvoltatori și companii își construiesc, livrează și își întrețin software-ul pe GitHub - cea mai mare și mai avansată platformă de dezvoltare din lume.
GTx_6501/Temele 7/diet_optimization_part2.py /
Nu s-au găsit definiții în acest fișier.
- Mergeți la fișierul T
- Mergeți la linia L
- Mergeți la definiția R
- Copiați calea
| " " |
| ISYE6501 - Modelare analitică avansată |
| Întrebarea 15.2 |
| În videoclipuri, am văzut „problema dietei”. |
| (Problema dietei este una dintre primele probleme de optimizare la scară largă |
| studiat în practică. În anii 1930 și 40, armata dorea să cunoască |
| cerințele nutriționale ale soldaților săi, reducând în același timp costurile.) |
| În aceste teme veți putea rezolva o problemă de dietă cu date reale. |
| Datele sunt date în fișierul diet.xls. |
| 1. Formulează un model de optimizare (un program liniar) pentru a găsi |
| cea mai ieftină dietă care satisface nutriția zilnică maximă și minimă |
| constrângeri și rezolvați-o folosind PuLP. Introduceți codul și soluția. |
| (Soluția optimă ar trebui să fie o dietă de popcorn, ouă pocate, |
| portocale, salată iceberg crudă, țelină crudă și broccoli congelat. UGH!) |
| 2. Vă rugăm să adăugați la modelul dvs. următoarele constrângeri |
| (care ar putea necesita adăugarea mai multor variabile) și rezolvarea noului model: |
| A. Dacă este selectat un aliment, atunci trebuie aleasă o portie minimă de 1/10. |
| (Sugestie: acum veți avea nevoie de două variabile pentru fiecare aliment i: |
| dacă este ales și cât de mult face parte din dietă. |
| De asemenea, va trebui să scrieți o constrângere pentru a le conecta.) |
| b. Mulți oameni nu le plac țelina și broccoli înghețat. |
| Deci, cel mult unul, dar nu ambele, pot fi selectate. |
| c. Pentru a obține o varietate de zi cu zi în proteine, |
| trebuie selectate cel puțin 3 tipuri de carne/carne de pasăre/pește/ouă. |
| [Dacă ceva este ambiguu (de exemplu, ar trebui luată în considerare supa de fasole și slănină) |
| Creat pe Luni 2 Iulie 19:29:56 2018 |
| @autor: zacholivier |
| Partea 2 |
| " " |
| # încărcați bibliotecile necesare |
| #! pip instalează pulpa |
| din importul de celuloză * |
| import panda ca pd |
| # încărcați datele dietei |
| df = pd. read_excel ( |
| deschis ( |
| „/ Users/zacholivier/Desktop/GTX/Homework 7/dietSummer2018.xls”, |
| „rb” |
| ), |
| sheet_name = 'Sheet1' |
| ) |
| # uită-te la date |
| df. cap () |
| # date curate - luați primele 64 de rânduri, fără a include datele de jos |
| date = df [0: 64] |
| # convertiți în listă "listă într-o listă" |
| date = date. valori. a lista () |
| # creați un dicționar principal de alimente |
| alimente = [x [0] pentru x în date] |
| calorii = dict ([(x [0], float (x [3])) pentru x în date]) |
| colesterol = dict ([(x [0], float (x [4])) pentru x în date]) |
| totalFat = dict ([(x [0], float (x [5])) pentru x în date]) |
| sodiu = dict ([(x [0], float (x [6])) pentru x în date]) |
| carbohidrați = dict ([(x [0], float (x [7])) pentru x în date]) |
| fibra = dict ([(x [0], float (x [8])) pentru x în date]) |
| protien = dict ([(x [0], float (x [9])) pentru x în date]) |
| vitaminaA = dict ([(x [0], float (x [10])) pentru x în date]) |
| vitamina C = dict ([(x [0], float (x [11])) pentru x în date]) |
| calciu = dict ([(x [0], float (x [12])) pentru x în date]) |
| iron = dict ([(x [0], float (x [13])) pentru x în date]) |
| # creați o listă pentru minute și maxime (toate alimentele) |
| amin = [1500, 30, 20, 800, 130, 125, 60, 1000, 400, 700, 10] |
| amax = [2500, 240, 70, 2000, 450, 250, 100, 10000, 5000, 1500, 40] |
| # adăugați colecția de contraindicații pentru fiecare coloană |
| B = [] |
| pentru j în intervalul (0, 11): |
| B. adăugați (dict ([(x [0], float (x [j + 3])) pentru x în date])) |
| # definiți dicționarul de costuri |
| cost = dict ([(x [0], float (x [1])) pentru x în date]) |
| # creați cadrul de problemă de optimizare - problema de minimizare |
| problem2 = LpProblem ('PuLPTutorial', LpMinimize) |
| # definiți variabilele - continuu |
| foodVars = LpVariable. hrană („alimente”, alimente, 0) |
| # definiți variabilele - binare |
| selectedVars = LpVariable. mici („Alese”, alimente, 0, 1, „Binare”) |
| # dicționar de variabile lp |
| x = LpVariable. grămezi („x”, alimente, 0) |
| # definiți funcția obiectivă |
| problem2 + = lpSum ([cost [f] * foodVars [f] pentru f în alimente]) |
| # adăugați contraindic cantitate mai mare de .1 sau mai mică decât o cantitate mare - dacă este ales |
| pentru f în alimente: |
| problem2 + = foodVars [f] 10000 * alesVars [f] |
| problem2 + = foodVars [f]> = .1 * alesVars [f] |
| # adăugați constrângeri pentru toate alimentele |
| pentru i în intervalul (0, 11): |
| dot_B_x = pulpă. lpSum ([B [i] [j] * foodVars [j] pentru j în alimente]) |
| condiție1 = amin [i] + dot_B_x |
| problema2 + = condiția1 |
| pentru i în intervalul (0, 11): |
| dot_B_x = pulpă. lpSum ([B [i] [j] * foodVars [j] pentru j în alimente]) |
| condition2 = amax [i]> = + dot_B_x |
| problema2 + = condiția2 |
| # adăugați contraindicatii pentru a mânca cel mult unul dintr-un grup de alimente |
| problem2 + = selectedVars ['Frozen Broccoli'] + \ |
| selectedVars ['Țelină, Raw'] 1, "Cel mult un Broccoli/Țelină" |
| # adăugați contraindicări care spun că trebuie să mâncăm cel puțin 1 dintr-un grup de alimente |
| problem2 + = selectedVars ['Pui prăjit'] + selectedVars ['Ouă pocate'] + \ |
| selectedVars ['Scrambled Eggs'] + selectedVars ['Frankfurter, Beef'] + \ |
| selectedVars ['Kielbasa, Prk'] + selectedVars ['Hamburger W/Toppings'] + \ |
| selectedVars ['Hotdog, Plain'] + selectedVars ['Pork'] + \ |
| selectedVars ['Bologna, Turcia'] + selectedVars ['Ham, Sliced, Extralean'] + \ |
| selectedVars ['Ton alb în apă'] \ |
| > = 3, „Cel puțin trei proteine” |
| # rezolvați problema de optimizare! |
| problema2. solve () |
| # imprimați alimentele unei diete optime |
| print („Soluție de optimizare:”) |
| pentru var în problem2. variabile (): |
| dacă var. varValue> 0: |
| dacă str (var). găsi („ales”): |
| print (str (var. varValue) + "unități de" + str (var)) |
| # tipăriți costurile dietei optime |
| print („Costul total al alimentelor =% $. 2f”% valoare (problema2. obiectiv)) |
- Copiați liniile
- Copiați legătura permanentă
- Vezi git blame
- Referință în noul număr
Nu puteți efectua acțiunea în acest moment.
V-ați conectat cu o altă filă sau fereastră. Reîncărcați pentru a reîmprospăta sesiunea. V-ați deconectat într-o altă filă sau fereastră. Reîncărcați pentru a reîmprospăta sesiunea.