경대생협 식당 메뉴의 가장 적합한 해답을 탐색하다

개시하다


교토 대학에는'메르 시스템'이라는 악마 시스템이 있다.
간단하게 설명하면 식당판 정기권 같다.
무심코 등록하면 비 오는 날, 바람, 눈, 여름 더위를 견디고 휴일에도 돈을 벌기 위해 학교에 가서 밥을 먹는 이른바'고기노예'다.
(저는 적게 먹고 어느 정도 혼자 밥을 합니다. 식당과 아파트의 거리가 그렇게 가깝지 않으면 육계에 대한 증오가 극단적일 수 있으니 탓하지 마세요.)
기본적으로'매일 균형 잡힌 식사를 한다'는 대의명분이 있지만, 학생식 정기권만 발급받았다고 해서 자동으로 균형 잡힌 식사를 할 수는 없다.
그래서 이번에는 불쌍한 밀 노예들을 구하기 위해 식당 메뉴의 가장 적합한 해결 방법을 조사했다.

데이터


지난해에는 온라인 수업으로 학교에 거의 가지 않아 눈치채지 못했지만, 생협은 언제쯤 온라인으로 식당 메뉴를 확인할 수 있을 것 같다.(츄보즈 같은 시스템을 사용한 것 같은데?)
http://west2-univ.jp/sp/kyoto-univ.php
여기서부터 도장이 시작됐다.

학교 식당을 사면 메뉴 이미지에 따라 빨간색, 녹색, 노란색으로 점수를 계산한다.
이번에는 가장 적합한 해결 방안을 찾는 토대에서 한 끼의 기준을 참고하여 메뉴를 최적화시켰다.
결과의 예는 카페 메뉴의 표입니다.

코드


방침.


Solver, PuLP 같은 아주 간단한 문제를 설정하고 최적화하기 때문에 이걸 이용하고 싶어요.
최적화의 문제로 삼다

제약조건

  • 가격>550엔
  • 적색 포인트 >2.7
  • 그린 포인트 >1.0
  • 노란색 포인트 >5.7
  • 가격은 한 끼 식사 가격 550엔, 빨간색, 녹색, 노란색 점수는 영수증의 기준 점수(내가 남자이기 때문에 남성의 기준 점수)를 참고하여 조건을 설정한다.

    문제.


    가격과 적록황의 기준 점수의 차이를 합계하여 최소화하다

    코드


    위의 표를 데이터 프레임으로 읽습니다
    우선 문제 설정의 사전 준비입니다.
    #最小化問題の設定
    problem = pulp.LpProblem("Shokudo")
    
    #注文する個数を表す変数、上限は適当に設定した
    df['order_num'] = [pulp.LpVariable(f'{i}ko', 0, 100, "Integer") for i in df.index]
    
    합계 금액과 분수의 합계는 내적을 통해 계산할 수 있으며, 목적 함수는 다음과 같이 설정한다.
    # 目的関数
        problem += pulp.lpDot(df['price'], df['order_num'])+ (
            pulp.lpDot(df['red_score'], df['order_num'])) + (
                       pulp.lpDot(df['green_score'], df['order_num'])) + (
                       pulp.lpDot(df['yellow_score'], df['order_num']))
    
    위에서 설명한 대로 제약 조건을 기술하다
    # 制約条件
        problem += pulp.lpDot(df['red_score'], df['order_num']) >= 2.7
        problem += pulp.lpDot(df['green_score'], df['order_num']) >= 1.0
        problem += pulp.lpDot(df['yellow_score'], df['order_num']) >= 5.7
        problem += pulp.lpDot(df['price'], df['order_num']) >= 550
    
    최적화 시작
    problem.solve()
    
    df['result'] = df['order_num'].apply(lambda x: pulp.value(x))
    print(df[['name', 'price',  "result"]])
    

    결실


    교토 대학생 협회 문예 식당 데이터 결과
             name  price  result
    12  オクラ巣ごもり玉子     88     2.0
    18        味噌汁     33     2.0
    23  ショコラモンブラン    220     1.0
    25        大学芋     88     1.0
    
    다음은 각 식당의 가장 좋은 메뉴를 소개합니다.
    (이미지 크기 조절)

    교토 시



    해바라기 계란 2컵
    미증탕 2잔
    초콜릿 브라운: 1잔
    대학 토란
    합계 금액
    550엔
    빨간색: 2.8
    녹색: 1.0
    노랑: 5.8
    미증탕 두 잔에 초콜릿 브라운이요...

    교토 시



    닭간찜: 1컵
    가지:1컵
    새우 크림 콜라 케이크: 1컵
    시금치 무침: 1컵
    온천계란: 1컵
    낫토
    대학 토란
    합계 금액
    550엔
    빨간색: 2.7
    그린:1.1
    노랑: 5.8
    수량은 많지만 모두 작은 대야여서 만족감이 없을 수도 있다

    교토 시



    백숙: 1컵
    새우 크림 콜라 케이크: 2컵
    국물롤:1컵
    합계 금액
    550엔
    빨간색: 3.7
    녹색
    노랑: 6.6
    돈 없어요?

    교토 시



    닭고기 남만: 1잔
    삶은 양서채:2컵
    호박 샐러드
    대학 토란
    합계 금액
    550엔
    빨간색: 2.7
    그린:1.5
    노랑:5.7
    오랜만에 고기가 왔다.고기만 있으면 외관에 만족감을 줄 수 있어요.

    교토 시



    등심 돈까스 참깨 소스: 1컵
    겨자 유채 무침: 1컵
    미증탕 2잔
    대학 토란
    합계 금액
    550엔
    빨간색: 2.7
    녹색: 1.0
    노랑:5.7
    돈가스만 있으면 만족감을 얻을 수 있기 때문에 찌개 두 그릇이 있어도 개의치 않는다

    교토 시


    넣는 것을 잊어버렸어, 북부 식당의 밥이 맞지 않아.

    닭가슴살 치즈 돈가스:264엔:1컵
    시금치:66엔:1컵
    황금빛 우엉: 66엔: 1컵
    호박 샐러드:66엔:1컵
    온천계란:44엔:2컵
    합계 금액
    550엔
    빨강
    녹색: 1.0
    노랑:5.7
    정말 인기 있는 북식 답네요. 주식이 없는 것 외에는 웬만하면 다 좋은 것 같아요.

    고찰하다.


    대부분의 메뉴에는 대학 토란이 포함되어 있다.적록황의 점수는 칼로리를 바탕으로 계산되기 때문이다.

    여기서 말한 바와 같이 대학 토란은 채소 양이 0g이지만 칼로리가 높아 녹색 점수로 0.8을 벌 수 있고 많은 메뉴가 통과되었다.
    추기: 댓글에 따르면 녹색 분류는 채소류가 아니라'몸 상태를 개선할 수 있는 식재료'를 가리키기 때문에 녹색에도 토란이 함유되어 있다.
    정말 균형 잡힌 식사를 하려면 여러 가지 파라미터를 종합적으로 판단해야 한다.균형 잡힌 식사는 쉽지 않다

    좋은 웹페이지 즐겨찾기