Exemplo n.º 1
0
def plot():
    if request.method == "POST":
        data = request.get_json()
        if data['product'] == "Example Product":
            header = ['IIP', 'INI', 'D', 'FIP',
                      'FNI', 'LS', 'AVG', 'ORD', 'LT']
            df_A = DataFrame(index=np.arange(52), columns=header).fillna(1)
            price = 18
            order_cost = 200
        else:
            product_A = ProductDB.get_product(data['product'])
            policy = data['policy']
            periods = int(data['periods'])
            p1 = int(data['p1'])
            p2 = int(data['p2'])

            df_A = make_data(product_A,
                             policy={'method': policy,
                                     'param1': p1,
                                     'param2': p2},
                             periods=periods)
            price = product_A.price
            order_cost = product_A.order_cost

        carrying_costs = int(df_A['AVG'].sum() * price * (0.21/52))
        stock_out_costs = int(df_A['LS'].sum() * price)
        ordering_costs = int(df_A.ORD[df_A.ORD > 0].count() * order_cost)
        step_data = [{"PERIOD": int(x), "FIP": int(y)} for x, y in zip(df_A.index, df_A["FIP"])]

        pie_data = [{"TipoCosto": "Carrying", "Costo": carrying_costs},
                    {"TipoCosto": "Stock-Out", "Costo": stock_out_costs},
                    {"TipoCosto": "Ordering", "Costo": ordering_costs}]

        data = [step_data, pie_data]
        return json.dumps(data)
Exemplo n.º 2
0
import unittest
import pandas as pd
import numpy as np
from functions import make_data, Product, make_distribution


# Product with constants distributions
product_A = Product(name="Product_A", demand_dist=8000, lead_time_dist=1, initial_inventory=24000, price=18)

df_A = make_data(product_A, policy={"method": "Qs", "param1": 20000, "param2": 10000}, periods=52)

# Product with a normal demand and triangular lead_time
# Set the seed so we can get the same sequence of number
np.random.seed(42)

product_B = Product(
    name="Product_B",
    demand_dist=make_distribution(np.random.normal, 8082, 783),
    lead_time_dist=make_distribution(np.random.triangular, 1, 1, 2),
    initial_inventory=24000,
    price=18,
)

df_B = make_data(product_B, policy={"method": "Qs", "param1": 20000, "param2": 10000}, periods=52)


class TestDataframe(unittest.TestCase):
    def test_dataframeA_type(self):
        "make_data() return a dataframe"
        self.assertEqual(type(df_A), pd.DataFrame)