示例#1
0
class MarketModel(object):
    def __init__(self, length_of_simulation, average_time_per_cus,
                 probability_of_new_arrival):
        self._probability_of_new_arrival = probability_of_new_arrival
        self._length_of_simulation = length_of_simulation
        self._average_time_per_cus = average_time_per_cus
        self._cashier = Cashier()

    def run_simulation(self):
        """运行时钟"""
        for current_time in range(self._length_of_simulation):
            # 1. 尝试生成一个customer
            customer = Customer.generate_customer(
                self._probability_of_new_arrival, current_time,
                self._average_time_per_cus)

            # 2. 发送顾客到收银员
            if customer != None:
                self._cashier.add_customer(customer)

            # 3. 告知收银员提供其他服务
            self._cashier.serve_customers(current_time)

    def __str__(self):
        return str(self._cashier)
示例#2
0
 def test_bill_01(self):
     self.pile_data= u"2013.11.11 | 0.7 | 电子\n1 * ipad : 2399.00\n1 * " \
             u"显示器 : 1799.00\n12 * 啤酒 : 25.00\n5 * 面包 : " \
             u"9.00\n2013.11.11\n2014.3.2 1000 200"
     cashier_obj = Cashier(self.pile_data)
     ret = cashier_obj.bill()
     self.assertEqual(ret, '3083.60')
示例#3
0
class MarketModel(object):

    def __init__(self, lengthOfSimulation, averageTimePerCus,
                 probabilityOfNewArrival):
        self._probabilityOfNewArrival = probabilityOfNewArrival
        self._lengthOfSimulation = lengthOfSimulation
        self._averageTimePerCus = averageTimePerCus
        self._cashier = Cashier()
   
    def runSimulation(self):
        """Run the clock for n ticks."""
        for currentTime in xrange(self._lengthOfSimulation):
            # Attempt to generate a new customer
            customer = Customer.generateCustomer(
                self._probabilityOfNewArrival,
                currentTime,
                self._averageTimePerCus)

            # Send customer to cashier if successfully generated
            if customer != None:
                self._cashier.addCustomer(customer)

            # Tell cashier to provide another unit of service
            self._cashier.serveCustomers(currentTime)
        return str(self._cashier)
示例#4
0
class MarketMode(object):
    def __init__(self, lengthOfSimulation, averageTimePerCus,
                 probabilityOfNewArrival):
        self._probabilityOfNewArrival = probabilityOfNewArrival
        self._lengthOfSimulation = lengthOfSimulation
        self._avarageTimePerCus = averageTimePerCus
        self._cashier = Cashier()

    def runSimulation(self):
        """Run the clock for n ticks."""
        for currentTime in range(self._lengthOfSimulation):
            # Attempt to generate a new customer
            customer = Customer.generateCustomer(self._probabilityOfNewArrival,
                                                 currentTime,
                                                 self._avarageTimePerCus)

            # Send customer to cashier if successfully
            # generated
            if customer != None:
                self._cashier.addCustomer(customer)

            # Tell cashier to provide another unit of service
            self._cashier.serveCustomers(currentTime)

    def __str__(self):
        return str(self._cashier)
示例#5
0
    def __init__(self, lengthOfSimulation, averageTimePerCus, probabilityOfNewArrival):
        """

        :param lengthOfSimulation:
        :type lengthOfSimulation:
        :param averageTimePerCus:
        :type averageTimePerCus:
        :param probabilityOfNewArrival:
        :type probabilityOfNewArrival:
        """
        self._probabilityOfNewArrival = probabilityOfNewArrival
        self._lengthOfSimulation = lengthOfSimulation
        self._averageTimePerCus = averageTimePerCus
        self._cashier = Cashier()
示例#6
0
 def login(self):
     '''前台:admin登陆'''
     in_num=input("请输入您的账号:").strip()
     cash=Basic.queryOneCashier(in_num)
     if not cash:
         print("不存在该账号.")
         return  False
     cashier=Cashier(cash)
     in_pwd=input("请输入您的密码:").strip()
     if cashier.getPwd()==in_pwd:
         self.admin=cashier
         print("登陆成功.")
         return True
     else:
         print("密码错误.")
         return False
示例#7
0
 def __init__(self, lengthOfSimulation, averageTimePerCus,
              probabilityOfNewArrival, numCashiers):
     self.numCashiers = numCashiers
     self._probabilityOfNewArrival = probabilityOfNewArrival
     self._lengthOfSimulation = lengthOfSimulation
     self._averageTimePerCus = averageTimePerCus
     self._cashiers = [Cashier(x) for x in range(1, numCashiers + 1)]
示例#8
0
 def create_new_cashier(cls,
                        shopping_cart=None,
                        credit_card=None,
                        merchant_processor=None):
     return Cashier(shopping_cart=shopping_cart or cls.create_cart(),
                    credit_card=credit_card or cls.create_new_credit_card(),
                    merchant_processor=merchant_processor
                    or cls.create_new_merchant_processor())
示例#9
0
 def __init__(self, lengthOfSimulation, averageTimePerCus,
              probabilityOfNewArrival, numCashiers):
     self._probabilityOfNewArrival = probabilityOfNewArrival
     self._lengthOfSimulation = lengthOfSimulation
     self._averageTimePerCus = averageTimePerCus
     self._cashiers = list()
     for count in range(numCashiers):
         self._cashiers.append(Cashier(count + 1))
示例#10
0
def generate_output():
    # Load JSON
    f = open('competition/test_cases.json')

    test_cases = json.load(f)
    myCashier = Cashier()
    userID = '5ea023be-b530-4816-8eda-5340cfabe9b0'
    output_paths = []
    for test_db in test_cases:
        print(test_db['name'])
        dbName = test_db['name']
        dbId = test_db['uuid']
        receipts = myCashier.process(dbName)
        # Generate output file
        path = "outputs/output-{}.json".format(dbName)
        output_paths.append(path)
        output_json(dbId, userID, receipts, path=path)
    return output_paths
示例#11
0
 def __init__(self, lengthOfSimulation, averageTimePerCus,
              probabilityOfNewArrival, cashierCount):
     self.probabilityOfNewArrival = probabilityOfNewArrival
     self.lengthOfSimulation = lengthOfSimulation
     self.averageTimePerCus = averageTimePerCus
     self.cashierCount = cashierCount
     self.cashier = []
     for count in range(0, self.cashierCount):
         self.cashier.append(Cashier(count + 1))
示例#12
0
 def __init__(self, lengthOfSimulation, averageTimePerCus,
              probabilityOfNewArrival, numberOfLines):
     self._probabilityOfNewArrival = probabilityOfNewArrival
     self._lengthOfSimulation = lengthOfSimulation
     self._averageTimePerCus = averageTimePerCus
     self._numberOfLines = numberOfLines
     self._cashiers = []  # create a list of that contains many cashiers
     for i in xrange(numberOfLines):
         cashier = Cashier(i)
         self._cashiers.append(cashier)
示例#13
0
def queryAllCashier():
    '''前台 查询所有cashier的信息'''
    info = Basic.queryAllCashier()
    # print(info)
    table = Cashier.getTableaHead()
    # print(table)
    for i in info:
        table.add_row(i)
    print(table)
    print("以上共{}条记录.".format(len(info)))
示例#14
0
def run():
    with open('input.txt', 'r') as f:
        simulationData = f.readlines()

    numberOfRegisters = int(simulationData[0].strip('\n'))
    del (simulationData[0])
    registers = []
    for i in range(numberOfRegisters):
        if i == numberOfRegisters - 1:
            trainee = Trainee(i)
            registers.append(Register(i, trainee))
        else:
            cashier = Cashier(i)
            registers.append(Register(i, cashier))
    print "Simulation starts with {register} registers; #{register} is a training register.".format(
        register=numberOfRegisters)

    CustomerNumber = 1
    for customerData in simulationData:
        customerEntry = customerData.strip('\n').split(' ')
        customerType = customerEntry[0]
        customerArrival = int(customerEntry[1])
        customerItems = int(customerEntry[2])
        if customerType == 'A':
            customer = CustomerA(customerType, customerArrival, customerItems,
                                 CustomerNumber)
        else:
            customer = CustomerB(customerType, customerArrival, customerItems,
                                 CustomerNumber)
        customer.enqueCustomer(registers)
        CustomerNumber = CustomerNumber + 1

    for register in registers:
        for item in range(register.queue.size()):
            if not register.queue.isEmpty():
                customer = register.queue.dequeue()
                ProcessingTime = register.customerProcessingTime(
                    register.cashier, customer)
示例#15
0
 def __init__(self, length_of_simulation, average_time_per_cus,
              probability_of_new_arrival):
     self._probability_of_new_arrival = probability_of_new_arrival
     self._length_of_simulation = length_of_simulation
     self._average_time_per_cus = average_time_per_cus
     self._cashier = Cashier()
示例#16
0
def evaluate_intenvory(dbs, gt_path):
    # Load JSON groundtruth
    with open(gt_path) as f:
        gt_data = json.load(f)

    gt_list = gt_data['lists']
    if not DEBUG:
        remove_putback_products(gt_list)
        # with open('gt_final.json', 'w') as outfile:
        #     json.dump(gt_data, outfile)

    # Metrics
    tp, fp, tn, fn = 0, 0, 0, 0
    overall_num_preds, overall_num_gt = 0, 0
    for i in range(len(dbs)):
        print("\n\nEvaluating database: ", dbs[i])
        # Metrics per database
        db_tp, db_fp, db_tn, db_fn = 0, 0, 0, 0
        db_pred_counts, db_gt_counts = 0, 0

        ########## Generate Prediction ##########
        dbName = dbs[i]
        myCashier = Cashier()
        receipts = myCashier.process(dbName)

        ########## Evaluate Ground truth ##########
        gt_entry = gt_list[i]
        # Find groundtruth entry for this database
        tmp_i = 0
        while (gt_entry['dataset'] != dbName):
            tmp_i += 1
            gt_entry = gt_list[tmp_i]
            assert (tmp_i < len(gt_list))
        assert (gt_entry['dataset'] == dbName)
        event_list = gt_entry['events']
        for event in event_list:
            gt_products = event['observation']['products']
            gt_customerID = event['observation']['target_id']
            # Find the corresponding customer receipts
            if (gt_customerID in receipts):
                # Find the corresponding products on the receipt
                customer_receipt = receipts[gt_customerID]
                for gt_product in gt_products:
                    gt_productID = gt_product['id']
                    for productID, entry in customer_receipt.purchaseList.items(
                    ):
                        if (gt_productID == productID):
                            product, quantity = entry
                            if (quantity > 0):
                                db_tp += 1
                                customer_receipt.purchaseList[productID] = (
                                    product, quantity - 1
                                )  # entry = (product, quantity)
                    db_gt_counts += 1
            else:
                # No such customer
                for gt_product in gt_products:
                    db_gt_counts += 1

        # Print False Items

        num_receipt = 0
        for id, customer_receipt in receipts.items():
            if VERBOSE:
                print("============== False Receipt {} ==============".format(
                    num_receipt))
                print("Customer ID: " + id)
                print("Purchase List: ")
            for _, entry in customer_receipt.purchaseList.items():
                product, quantity = entry
                if quantity != 0:
                    if VERBOSE:
                        print(
                            "*Name: " + product.name + ", Quantities: " +
                            str(quantity), product.thumbnail)
                    db_fp += quantity
            num_receipt += 1

        db_fn = db_gt_counts - db_tp
        db_pred_counts = db_tp + db_fp
        overall_num_preds += db_pred_counts
        overall_num_gt += db_gt_counts
        tp += db_tp
        fp += db_fp
        fn += db_fn

        # Display DB Evaluation
        print(
            "Database: {}, Correct Items on Receipts: {}/{}, Total GT items: {}"
            .format(dbName, db_tp, db_pred_counts, db_gt_counts))

    print("\n================== Evaluation Summary ==================")
    print("Databases: ", dbs)
    print("Ground truth version: ", gt_path)
    precision = 0.0 if tp + fp == 0 else tp * 100.0 / (tp + fp)
    print("Overall precision is: {:.1f}%".format(precision))
    recall = 0.0 if tp + fn == 0 else tp * 100.0 / (tp + fn)
    print("Overall recall is: {:.1f}%".format(recall))
    if (precision + recall == 0):
        f1 = 0
    else:
        f1 = 2 * precision * recall / (precision + recall)
    print("Overall F1 is: {:.1f}%".format(f1))
示例#17
0
 def __init__(self, lengthOfSimulation, averageTimePerCus,
              probabilityOfNewArrival):
     self._probabilityOfNewArrival = probabilityOfNewArrival
     self._lengthOfSimulation = lengthOfSimulation
     self._averageTimePerCus = averageTimePerCus
     self._cashier = Cashier()
示例#18
0
 def test_bill_02(self):
     self.pile_data = u"3 * 蔬菜 : 5.98\n8 * 餐巾纸 : 3.20\n2014.01.01 输出\n"
     cashier_obj = Cashier(self.pile_data)
     ret = cashier_obj.bill()
     self.assertEqual(ret, '43.54')
示例#19
0
    def printer_machine(cls):
        resource = Resource()

        while True:
            user_input = input(
                "\nWhat format would you like 'coloured' or 'greyscale'?\n")

            while user_input.lower() not in [
                    'coloured', 'greyscale', 'report', 'off'
            ]:
                user_input = input(
                    "Invalid!!!! Please put in 'coloured' or 'greyscale'\n")

            while user_input == 'report':
                print(resource.report())
                user_input = input(
                    "\nWhat format would you like 'coloured' or 'greyscale'?\n"
                )

            # This switch off the printer if 'off' is been typed
            if user_input == 'off':
                return 'Thanks for using our service Bye.....'

            number_of_pages = input("How many pages?\n")

            while number_of_pages.isnumeric() is not True:
                print("You've entered an invalid number")
                number_of_pages = input("How many pages?\n")

            # This checks if there is enough resource to print the pages the users want.
            # If No the printer tells the user no enough resources but if yes then the
            # monies(currencies) is being asked from users
            ink_and_price = resource.check_resource(user_input,
                                                    number_of_pages)
            if ink_and_price != True:
                print(ink_and_price)
            else:
                print(f'Your price is ₦{resource.calculate_bill()}')
                print("Please insert Monies.")

                # This catches an error if the user type in a string instead of a number
                try:
                    biyar = int(input('How many Biyar: '))
                    faiba = int(input('How many Faiba: '))
                    muri = int(input('How many Muri: '))
                    wazobia = int(input('How many Wazobia: '))
                except ValueError:
                    print("You've entered an invalid input")
                    Printer.printer_machine()

                # This add all the currencies payed by the user
                calculate_money = Cashier(biyar, faiba, muri, wazobia)
                calculate_money.get_total()

                # This confirm the payment if it is less than or greater than the actual cost
                print(calculate_money.confirming_payment(resource))

                # This update the resources after printing the pages
                resource.deduct_resource()
                print(
                    'Thanks for using our Printing service. Hope you enjoyed it!!'
                )
                print(
                    "==================================================================="
                )
示例#20
0
    print("Trying to kill find_person.py")
    p2.kill()
    print("find_person.py killed")

    sys.exit(0)


# Main function - the basic system logic for Baxter to run the shop - uses
# loops and managing variables where appropriate
if __name__ == '__main__':
    signal.signal(signal.SIGINT, signal_handler)
    release_robot()

    # Note that Cashier's constructor will ask for some commands from the
    # operator like to calibrate the hand above the first banknote etc.
    cashier = Cashier()

    p = subprocess.Popen(["rosrun", "perception", "find_colours.py"],
                         stdout=subprocess.PIPE)
    p2 = subprocess.Popen(["rosrun", "interaction", "find_person.py"],
                          stdout=subprocess.PIPE)

    # Initialise a baxter object, of shopkeeper class
    baxter = ShopKeeper()

    # Set up the communications with Baxter and other nodes
    comms = Communications(baxter)

    # Subscribe to the right gripper's state to detect torque changes
    rospy.Subscriber("/robot/end_effector/right_gripper/state",
                     EndEffectorState, baxter.gripperholding)
示例#21
0
from cashier import Cashier
dbName = "cps-test-01"
receipts = Cashier().process(dbName)
示例#22
0
文件: test.py 项目: vibster/cashier
import requests

from cashier import cache, Cashier
from time import time

c = Cashier(file_name="testing")
c.clear()

data = requests.get("https://news.ycombinator.com")
if data.status_code == 200:
    page = data.content
else:
    page = ""
    print "Failed to scrape test urls"
    exit()

urls = []


def getURL(page):
    start_link = page.find("a href")
    if start_link == -1:
        return None, 0
    start_quote = page.find('"', start_link)
    end_quote = page.find('"', start_quote + 1)
    url = page[start_quote + 1: end_quote]
    return url, end_quote


part_page = page
while True:
示例#23
0
 def setCashiers(self, cashiersAmount):
     return [
         Cashier(self.getNewBreakTime(0)) for i in range(cashiersAmount)
     ]
示例#24
0
 def __init__(self, lengthOfSimulation, averageTimePerCus,
              probabilityOfNewArrival):
     self._probabilityOfNewArrival = probabilityOfNewArrival
     self._lengthOfSimulation = lengthOfSimulation
     self._avarageTimePerCus = averageTimePerCus
     self._cashier = Cashier()