Transcript
Page 1: Ultimate Recommender

Introduction

Chapter 1

IntroductionWhen users browse through a web site they are usually looking for items they find

interesting. Interest items can consist of a number of things.

For example, textual information can be considered as interest items or an index on a certain

topic could be the item a user is looking for.

Another example, applicable for a web vendor, is to consider purchased products as

interest items. Whatever the items consist of, a website can be seen as a collection of these

interest items. Recommender systems are widely implemented in e-commerce websites to

assist customers in finding the items they need.

A recommender system should also be able to provide users with useful information

about the item that interest them. The ability of promptly responding to the changes in user’s

preference is a valuable asset for such systems.

With the explosion of network in the past decades, internet has become the major

source of retrieving multimedia information such as video, books, and music etc. People have

considered that music is an important aspect of their lives and they listen to music, an activity

they engaged in frequently. Previous research has also indicated that participants listened to

music more often than any of the other activities (i.e. watching television, reading books, and

watching movies). Music, as a powerful communication and self-expression approach,

therefore, has appealed a wealth of research.

Page 2: Ultimate Recommender

However, the problem now is to organise and manage the millions of music titles

produced by society. MIR(Music Information Retrieval) techniques have been developed to

solve problems such as genre classification, artist identification, and instrument recognition.

Additionally, music recommender is to help users filter and discover songs according to their

tastes. A good music recommender system should be able to automatically detect preferences

and generate playlists accordingly. Meanwhile, the development of recommender systems

provides a great opportunity for industry to aggregate the users who are interested in music.

More importantly, it raises challenges for us to better understand and model users’

preferences in music.

Currently, based on users’ listening behaviour and historical ratings, collaborative

filtering algorithm has been found to perform well. Combined with the use of content-based

model, the user can get a list of similar songs by low-level acoustic features such as rhythm,

pitch or high-level features like genre, instrument etc.

1.1 AIM AND OBJECTIVESUsing this idea we propose a method to automatically recommend music in a user’s

device as the next song to be played. In order to keep small the computation time for

calculating recommendation, the method is based on user behavior and high-level features but

not on content analysis. Which song should be played next can be determined based on

various factors.

1.2 PROJECT PROBLEM & RELEVANT KNOWLEDGEA Recommender system for music data is proposed which assists customers in searching

music data and provides result with items resulting in own user preference. This system first

extracts unique properties of music like pitch, chord, and tempo from the music file using a

CLAM annotator software tool. This extracted data is then stored on the database. Each stored

property is analysed using content Based filtering and interactive genetic algorithm. After

acquiring records, the system recommends items Appropriate to user’s own favourite.

High recommendation accuracy

Rich variety of artists

Prompt responses and adaptation to changing preferences

Page 3: Ultimate Recommender

Enriched user interface

Improved overall music listening experience

As users accumulate digital music in their digital devices, the problem arises for them to

manage the large number of tracks in their devices. If a device contains thousands of tracks, it

is difficult, painful, and even impractical for a user to pick suitable tracks to listen to without

using pre-determined organization such as playlists. The topic of this project is

computationally generated recommendations. Music recommendation is significantly

different from other types of recommendations, such as those for movies, books and

electronics. Because a same song can be recommended to a same users many times if we

successfully keep from him/her bored with it.

A main purpose of a music recommendation system is to minimize user’s effort to provide

feedback and simultaneously to maximize the user’s satisfaction by playing appropriate song

at the right time. Reducing the amount of feedback is an important point in designing

recommendation systems, since users are in general lazy. We can evaluate user’s attitude

towards a song by examining whether the user listens to the song entirely, and if not, how

large a fraction he/she does.

In particular, we assume that if the user skips a recommended song, it is a bad

recommendation, regardless of the reason behind it. If the recommended song is played

completed, we infer that the user likes the song and it is a satisfying recommendation. On the

other hand, if the song is skipped while just lasting a few seconds, we conclude that the user

dislikes the song at that time and the recommendation is less effective.

Using this idea we propose a method to automatically recommend music in a user’s

device as the next song to be played. In order to keep small the computation time for

calculating recommendation, the method is based on user behaviour and high-level features

but not on content analysis. Which song should be played next can be determined based on

various factors.

1.3 PROPOSED SYSTEMWe propose a system to recommend songs to the user based on the user’s preference.

The user will login to his/her account in the system, and listen to songs and give rating to

these songs. Once the user clicks the submit button, the system selects two songs with the

highest ratings and submits these as input to the genetic algorithm which computes the songs

Page 4: Ultimate Recommender

most similar to the songs given as input. These songs are then provided to the user as

recommendations.

1.4 SCOPE OF THE PROJECT More than half the music now-a-days is downloaded

The trend is bound to rise exponentially

Virtually impossible to go through the heap of data and choose

Recommendations from primary sources are too narrow

They amount to a bulk of online sales across sectors

These systems are attracting huge attention and investments from e-commerce sites

The proposed system based on concrete analysis and thus is way better than any other

conventional methods

We propose a real-time genetic recommendation method for music data in order to

overcome the shortfalls of existing recommendation systems based on content based filtering

and other such techniques that fail in reflecting in the current user preferences.

1.5 ORGANIZATION OF REPORTIn Chapter 2 we have introduced and described existing systems for music

recommendation system using genetic algorithms.

Chapter 3 deals with object oriented analysis and design.

Chapter 4 deals with the implementation of the system, the software and hardware

requirements of the system, analysis of the system and the risks associated with developing

the system.

Chapter 5 includes the project schedule which consists of the timeline chart along with

the task sheet.

Chapter 6 includes the algorithms and flowcharts used in the system along with system

snapshots.

Chapter 7 deals with the testing of the system and consists of test cases.

Chapter 8 evaluates the project and discusses the applications of the project and last

but not the least publications and references are mentioned at the end.

Page 5: Ultimate Recommender

Chapter 2

REVIEW OF LITERATUREIntroduction

Many different approaches have been applied to the basic problem of making accurate and

efficient recommender and data mining systems. Many of the technologies used in the actual

recommender systems studied are fairly simple database queries.

Automatic recommender systems, however, use a wide range of techniques, ranging from

nearest neighbour algorithms to Bayesian analysis. The worst-case performance of many of

these algorithms is known to be poor. However, many of the algorithms have been tuned to

use heuristics that are particularly efficient on the types of data that occur in practice.

2.1 Study of Existing Systems

2.1.1 Collaborative Recommender Systems

The earliest recommenders used nearest-neighbour collaborative filtering algorithms. The

nearest neighbour algorithms are based on computing the distance based on their preference

history. Predictions of how much a consumer will like a product are computed by taking the

weighted average of the opinions of a set of nearest neighbours for that product. Neighbours

who have expressed no opinion on the product in question are ignored. Opinions should be

scaled to adjust for differences in ratings tendencies between users. Nearest neighbour

algorithms have the advantage of being able to rapidly incorporate the most up-to-date

information, but the search for neighbours is slow in large databases. Practical algorithms use

heuristics to search for good neighbours and may use opportunistic sampling when faced with

very large populations.

Collaborative recommender systems, as presented by Xerox PARC’s researchers consisted on

the simple idea that the system would take user-defined news filter rules, compare them, and

propose new rules to users. This proposal, however, required a significant amount of user’s

attention and involvement since the new filters had to be added manually by the system users.

An alternative method for building a Music Recommender System that combined information

Page 6: Ultimate Recommender

about preferences submitted by users to generate automatically filtering rules that were

applied on objects in the database, without user explicit intervention.

Preferences Elicitation

Recommended items Recommended items

Figure 2.1: Collaborative Recommender Systems

These early collaborative filtering systems were designed to explicitly provide users with

information about items. That is, users visited a website for the purpose of receiving

recommendations from the CF system. Later, websites began to use CF systems behind the

scenes to adapt their content to users, such as choosing which news articles a website should

be presenting prominently to a user. Providers of information on the web must deal with

limited user attention and limited screen space. Collaborative filtering can predict what

information users are likely to want to see, enabling providers to select subsets of information

to display in the limited screen space. By placing that information prominently, it enables the

user to maximize their limited attention. In this way, collaborative filtering enables the web to

adapt to each individual user’s needs.

Prediction Computation

Revealed Preferences

Predicted ratings

UserUser

Preferences Preferences

Predicted ratings

Page 7: Ultimate Recommender

2.1.2 Bayesian networks

Bayesian networks create a model based on a training set with a decision tree at each node

and edges representing consumer information. The model can be built off-line over a matter

of hours or days.

Figure 2.2: Bayesian Network [2]

The resulting model is very small, very fast, and essentially as accurate as nearest neighbour

methods. Bayesian networks may prove practical for environments in which knowledge of

consumer preferences changes slowly with respect to the time needed to build the model but

are not suitable for environments in which consumer preference models must be updated

rapidly or frequently.

Page 8: Ultimate Recommender

2.1.3 Clustering

Clustering techniques work by identifying groups of consumers who appear to have similar

preferences. Once the clusters are created, predictions for an individual can be made by

averaging the opinions of the other consumers in that cluster. Some clustering techniques

represent each consumer with partial participation in several clusters. The prediction is then

an average across the clusters, weighted by degree of participation. Clustering techniques

usually produce less-personal recommendations than other methods, and in some cases, the

clusters have worse accuracy than nearest neighbour algorithms. Once the clustering is

complete, however, performance can be very good, since the size of the group that must be

analyzed is much smaller.

Figure 2.3: Clustering Technique

Page 9: Ultimate Recommender

Clustering techniques can also be applied as a “first step” for shrinking the candidate set in a

nearest neighbour algorithm or for distributing nearest-neighbour computation across several

recommender engines. While dividing the population into clusters may hurt the accuracy or

recommendations to users near the fringes of their assigned cluster, pre-clustering may be a

worthwhile trade-off between accuracy and throughput.

2.1.4 Content Based Filtering

A content-based filtering system selects items based on the correlation between the content of the items and the user’s preferences. It makes recommendations by comparing a user profile with the content of each document in the collection. The content of a document can be represented with a set of terms. Terms are extracted from documents by running through a number of parsing steps. First all HTML tags and stop words (words that occur very often and cannot be used as discriminators) are removed. The remaining words are reduced to their stem by removing prefixes and suffixes. For instance the words “computer”, “computers” and “computing” could all be reduced to compute.

The user profile is represented with the same terms and built up by analyzing the content of documents that the user found interesting. Which documents the user found interesting can be determined by using either explicit or implicit feedback. Explicit feedback requires the user to evaluate examined documents on a scale. In implicit feedback the user’s interests are inferred by observing the user’s actions, which is more convenient for the user but more difficult to implement.

Page 10: Ultimate Recommender

Figure 2.4: Content Based Filtering Technique

Page 11: Ultimate Recommender

Recommender system

User data model

Items

User ratings

Item Attributes

Recommended items

2.1.5 Context Based Filtering

As an alternative to both content-based and collaborative recommender systems, context

based recommender systems have recently appeared. This approach, much like collaborative

recommender systems, abstracts the music object, and describes its context. This context

refers to the time, the people who crafted it or the impressions it caused on the listeners.

In fact, we can see collaborative filtering as a concrete case of context-based recommender

systems. Context-based recommendation basic assumption is that given a set of observation of

user preference for objects with a given set of context features, objects with similar features

should also satisfy user information needs.

Figure 2.5: Context Based Filtering Technique

The emergence of the World Wide Web as an enormous repository of information publicly

available has inspired some researchers to design web crawling agents that harvest contextual

information about items from the Web. This information can be either structured or

unstructured. Structured information is rare, but as the Semantic Web becomes more of a

reality it should be expected to increase with availability. Unstructured information, mainly

text describing a song or reviewing an album or an artist biography, require specialized

Natural Language Processing applications measures in order to become usable as item

surrogates. The nature of this approach to defining item surrogates limits the range of

recommendation algorithms.

Page 12: Ultimate Recommender

2.1.6 Genetic algorithm

A Genetic Algorithm (GA) is a procedure used to find approximate solutions to search

problems through application of the principles of evolutionary biology. Genetic algorithms

use biologically inspired techniques such as genetic inheritance, natural selection, mutation,

and reproduction (recombination, or crossover). Along with genetic programming (GP), they

are one of the main classes of genetic and evolutionary computation (GEC) methodologies.

Genetic algorithms are typically implemented using computer simulations in which an

optimization problem is specified. For this problem, members of a space of candidate

solutions, called individuals, are represented using abstract representations called

chromosomes. The GA consists of an iterative process that evolves a working set of

individuals called a population toward an objective function, or fitness function. Traditionally,

solutions are represented using fixed length strings, especially binary strings, but alternative

encodings have been developed.

The evolutionary process of a GA is a highly simplified and stylized simulation of the

biological version. It starts from a population of individuals randomly generated according to

some probability distribution, usually uniform and updates this population in steps called

generations. Each generation, multiple individuals are randomly selected from the current

population based upon some application of fitness, bred using crossover, and modified

through mutation to form a new population .

• Crossover – exchange of genetic material (substrings) denoting rules, structural

components, features of a machine learning, search, or optimization problem.

• Selection – the application of the fitness criterion to choose which individuals from a

population will go on to reproduce.

• Replication – the propagation of individuals from one generation to the next

• Mutation – the modification of chromosomes for single

Page 13: Ultimate Recommender

Figure 2.6: Genetic Algorithm

Page 14: Ultimate Recommender

2.5 Comparison of existing systems

Recommender

system

Content based Collaborative Context based Genetic

algorithm

Method Content-based

filtering-selects

information based on

semantic content.

Collaborative

filtering

combines the

opinions of

other users to

make a

prediction for a

target user

This system

abstracts the

music object, and

describes its

context. This

context refers to

the time, the

people who

crafted it or the

impressions it

caused on the

listeners.

This applies

concept of

genetic algorithm

by extracting

features of items

and applying

genetic algorithm

operators over

them and

recommend

similar items.

User profile Not required Required Not required May require

Advantages These techniques

might prove highly

suitable

for users who have

specific interests and

who are looking for

related

recommendations.

The pool will

also include

items that other

users have rated

highly.

The System

would benefit

those users who

have to use

search engines to

locate relevant

content.

It solves

problems with

multiple

solutions. These

are easy to

understand and

do not demand

extra knowledge.

Limitation No new topics are

explored; only those

that are similar to

topics already in the

user’s profile. This

leads to over-

specialization: one is

restricted to seeing

items similar to those

New user

problem. If a

user has not

made any rating

the system

cannot predict

effectively the

ratings of

Context-based

recommender

systems share the

same limitations

as content-based

recommenders.

The genetic

algorithm cannot

assure constant

optimization

response times.

Page 15: Ultimate Recommender

that have already been

rated highly.

unrated items.

New item

problem

Implementatio

n

These are difficult to

apply to situations

where the desirability

of an item, for

example a web page,

is determined in part

by multimedia content

or aesthetic qualities.

These are generally

incompatible with the

type of content

analysis that these

techniques require in

order to make further

recommendations

The system

constructs rating

profiles of its

users, locates

other users with

similar rating

profiles and

returns items

that the similar

users rated

highly.

This approach,

abstracts the

music object, and

describes its

context. This

context refers to

the time, the

people who

crafted it or the

impressions it

caused on the

listeners.

This system first

extracts unique

properties. Each

stored property is

analyzed using

genetic

algorithm. the

system

recommends

items appropriate

to user’s own

favorite.

Table 2.1: Comparison of Existing Systems

Page 16: Ultimate Recommender

Chapter 3

REQUIREMENT ANALYSIS3.1 FEASIBILITY ANALYSIS The very first phase in any system developing life cycle is preliminary investigation.

The feasibility study is a major part of this phase. A measure of how beneficial or practical

the development of any information system would be to the organization is the feasibility

study.

The feasibility of the development software can be studied in terms of the following

aspects:

1. Operational Feasibility.

2. Technical Feasibility.

3. Economical feasibility.

4. Motivational Feasibility.

5. Legal Feasibility

OPERATIONAL FEASIBILITY The site will reduce the time consumed to maintain manual records and is not tiresome

and cumbersome to maintain the records. Hence operational feasibility is assured.

TECHNICAL FEASIBILITY Minimum hardware requirements:

At least 166 MHz Pentium Processor or Intel compatible processor.

At least 256 MB RAM.

14.4 kbps or higher modem.

A video graphics card.

A mouse or other pointing device.

At least 1 GB free hard disk space.

Microsoft Internet Explorer 4.0 or higher.

Page 17: Ultimate Recommender

ECONOMICAL FEASIBILTY Once the hardware and software requirements get fulfilled, there is no need for the

user of our system to spend for any additional overhead.

For the user, the web site will be economically feasible in the following aspects:

The web site will reduce a lot of paper work. Hence the cost will be reduced.

Our web site will reduce the time that is wasted in manual processes.

The storage and handling problems of the registers will be solved.

MOTIVATIONAL FEASIBILITY The users of our system need no additional training. Visitors do not require entering

password and are shown the appropriate information.

LEGAL FEASIBILITY The licensed copy of the required software is quite cheap and easy to get. So from legal

point of view the proposed system is legally feasible. Software Development Model Used:

Software process model deals with the model which we are going to use for the

development of the project. There are many software process models available but while

choosing it we should choose it according to the project size that is whether it is industry scale

project or big scale project or medium scale project.

3.2 REQUIREMENT ANALYSIS

Requirements analysis in systems engineering and software engineering, encompasses those

tasks that go into determining the needs or conditions to meet for a new or altered product,

taking account of the possibly conflicting requirements of the various stakeholders, analysing,

documenting, validating and managing software or system requirements.

Requirements analysis is critical to the success of a systems or software project.  The

requirements should be documented, actionable, measurable, testable, traceable, related to

identified business needs or opportunities, and defined to a level of detail sufficient for system

design.

Page 18: Ultimate Recommender

Fig 3.1: Requirement Analysis

Types of Requirements

Requirements are categorized in several ways. The following are common categorizations of

requirements that relate to technical management:

Customer Requirements:

Statements of fact and assumptions that define the expectations of the system are in

terms of mission objectives, environment, constraints, and measures of effectiveness

and suitability. The customers are those that perform the eight primary functions of

systems engineering, with special emphasis on the operator as the key customer.

Operational requirements will define the basic need and, at a minimum, answer the

questions posed in the following listing:

Operational distribution or deployment: Where will the system be used?

Mission profile or scenario: How will the system accomplish its mission

objective?

Performance and related parameters: What are the critical system parameters to

accomplish the mission?

Utilization environments: How are the various system components to be used?

Page 19: Ultimate Recommender

Effectiveness requirements: How effective or efficient must the system be in

performing its mission?

Operational life cycle: How long will the system be in use by the user?

Environment: What environments will the system are expected to operate in an

effective manner?

Architectural Requirements

Architectural requirements explain what has to be done by identifying the

necessary system architecture of a system.

Structural Requirements

Structural requirements explain what has to be done by identifying the

necessary structure of a system.

Behavioural Requirements

Behavioural requirements explain what has to be done by identifying the

necessary behaviour of a system.

Functional Requirements

Functional requirements explain what has to be done by identifying the necessary task,

action or activity that must be accomplished. Functional requirements analysis will be

used as the top-level functions for functional analysis.

Non-functional Requirements

Non-functional requirements are requirements that specify criteria that can be used to

judge the operation of a system, rather than specific behaviours.

Performance Requirements

The extent to which a mission or function must be executed; generally measured in

terms of quantity, quality, coverage, timeliness or readiness. During requirements

analysis, performance (how well does it have to be done) requirements will be

interactively developed across all identified functions based on system life cycle

factors; and characterized in terms of the degree of certainty in their estimate, the

degree of criticality to system success, and their relationship to other requirements.

Design Requirements

The “build to,” “code to,” and “buy to” requirements for products and “how to

execute” requirements for processes expressed in technical data packages and

technical manuals.

Derived Requirements

Page 20: Ultimate Recommender

Requirements that are implied or transformed from higher-level requirement. For

example, a requirement for long range or high speed may result in a design

requirement for low weight.

Allocated Requirements

A requirement which is established by dividing or otherwise allocating a high-level

requirement into multiple lower-level requirements.

Example: A 100-pound item that consists of two subsystems might result in weight

requirements of 70 pounds and 30 pounds for the two lower-level items.

3.2.1 Functional requirement

In software engineering (and System Engineering), a functional requirement defines a

function of a system or its component. A function is described as a set of inputs, the

behaviour, and outputs. Functional requirements may be calculations, technical details, data

manipulation and processing and other specific functionality that define what a system is

supposed to accomplish. Behavioural requirements describing all the cases where the system

uses the functional requirements are captured in use cases. Generally, functional requirements

are expressed in the form "system must do <requirement>".

As defined in requirements engineering, functional requirements specify particular results of a

system. Functional requirements drive the application architecture of a system

In some cases a requirements analyst generates use cases after gathering and validating a set

of functional requirements. The hierarchy of functional requirements is: user/stakeholder

request → feature → use case → business rule. Each use case illustrates behavioural scenarios

through one or more functional requirements. Often, though, an analyst will begin by eliciting

a set of use cases, from which the analyst can derive the functional requirements that must be

implemented to allow auser to perform each use case

Page 21: Ultimate Recommender

Fig 3.2 : System use case diagram

3.2.2 Non-functional requirement

In systems engineering and requirements engineering, a non-functional requirement is

a requirement that specifies criteria that can be used to judge the operation of a system, rather

than specific behaviours. The plan for implementing non-functional requirements is detailed

in the system architecture.

Non-functional requirements define how a system is supposed to be. Non-functional

requirements are in the form of "system shall be <requirement>", an overall property of the

system as a whole or of a particular aspect and not a specific function. The systems' overall

properties commonly mark the difference between whether the development project has

succeeded or failed.

Non-functional requirements are often called qualities of a system. Other terms for non-

functional requirements are "constraints", "quality attributes", "quality goals", "quality of

service requirements" and "non-behavioural requirements”. Informally these are sometimes

called the "ileitis", from attributes like stability and portability. Qualities, that are non-

functional requirements, can be divided into two main categories:

Page 22: Ultimate Recommender

1. Execution qualities, such as security and usability, which are observable at run time.

2. Evolution qualities, such as testability, maintainability, extensibility and scalability,

which are embodied in the static structure of the software system.

3.3 SYSTEM ANALYSIS

After analyzing the requirements of the task to be performed, the next step is to analyze the

problem and understand its context. The first activity in the phase is studying the existing

system and other is to understand the requirements and domain of the new system. Both the

activities are equally important, but the first activity serves as a basis of giving the functional

specifications and then successful design of the proposed system. Understanding the

properties and requirements of a new system is more difficult and requires creative thinking

and understanding of the existing running system is also difficult, improper understanding of

present system can lead diversion from solution.

3.4 RISK ANALYSISRisk Management plan tackles risk through Risk Assessment and Risk Control. Risk

Assessment involves Risk Identification, Risk Analysis and Risk Prioritization. While Risk

Control involves Risk Management Planning, Risk Resolution and Risk Monitoring.

Purpose: The Risk Management plan outlines the risk management strategy adopted. We

adopt a proactive approach to tackle risks and thus reduce the performance schedule and cost

overruns, which we may incur due to occurrence of unexpected problems.

This “Risk Management Plan” identifies the risks associated with our project. In addition to

project risk and technical risks, business risks are also identified, analyzed and documented.

This document outlines the strategy that we have adopted to avoid these risks. A contingency

plan is also prepared for each risk, in case it becomes a reality. Only those risks have been

treated whose probability and impact are relatively high i.e. above a referent level.

Risk Table

Impact levels: The risks are categorized on the basis of their probability of occurrence and the

impact that they would have, if they do occur. Their impact is rated as follows:

Catastrophic 1

Critical 2

Marginal 3

Page 23: Ultimate Recommender

Negligible 4

No. Risk Category Probability Impact

1 Increase of work load Personal 20% 3

2Inexperience in Project

software environmentTechnical 25% 3

3Overly optimistic

schedulesProject 20% 3

4 Lack of sufficient research Technical 50% 3

5

Modules require more

testing and further

implementation work

Project 50% 2

6 Inconsistency in Input Project 30% 3

7Inexperience of Data

Entry ClerkPersonal 20% 3

Table 3.1: Risk Analysis

3.5 HARDWARE AND SOFTWARE REQUIREMENTSHardware

1. 256 MB RAM.

2. 80 GB HDD.

Page 24: Ultimate Recommender

3. Intel 1.66 GHz Processor Pentium 4

Software

1. Visual Studio 2008(.Net framework)

2. MS SQL Server 2005

Chapter 4

SYSTEM DESIGNA design detail is the process of defining the architecture, components, modules, interfaces,

and data for a system to satisfy specified requirements. One could see it as the application of

systems theory to product development. Object-oriented analysis and design methods are

Page 25: Ultimate Recommender

becoming the most widely used methods for computer systems design. The UML has become

the standard language in object-oriented analysis and design. It is widely used for modeling

software systems and is increasingly used for high designing non-software systems and

organizations

4.1 OVERALL SYSTEM OVERVIEW

The Recommender system first extracts unique properties of music like pitch, chord, and

tempo from the music file using a CLAM annotator software tool.

This extracted data is then stored on the database. The user logs in to his/her account on the

recommender system site and listens to songs and provides ratings to these songs. Two songs

with the maximum ratings are selected and the genetic algorithm is applied to them.

PHASES OF GENETIC ALGORITHM IN RECOMMENDER SYSTEM:

Fig 4.1: The process of Interactive GA phase

The following are phases of genetic algorithm:

1. Selection phase – Music features are extracted using CLAM software. The items

which are rated above threshold value are selected rest other items are ignored.

Page 26: Ultimate Recommender

2. Crossover phase – The BLX – alpha crossover algorithm is used since extracted

features are real numbers. Hence crossover is performed with this algorithm resulting

in new generation

BLX-a:

1. Select two parents X(t) and Y(t) from a parent pool2. Create two offspring X(t+1) and Y(t+1) as follows:3. for i = 1 to n do4. di=|xi(t)-yi(t)|5. Choose a uniform random real number u from6. interval <min(xi(t),yi(t))-adi,7. max(xi(t),yi(t))+adi>8. xi(t+1)=u9. Choose a uniform random real number u from10. interval11. <min(xi(t),yi(t))-adi, max(xi(t),yi(t))+adi>12. yi(t+1)=u13. end do14. where: a – positive real parameter

3. Matching phase- This phase finds the similar items stored in database to the newly

generated music features. Once similarity is found those items are recommended to

the User. This phase uses Euclidean distance between two offspring and distance

between Each feature of the two offspring is calculated, resulting value is used to

match the records stored in the database those records are compared with the resulting

value which the user has given highest rating to the tracks.

Euclidean Formula:

dij=√∑k−1

n

( x ik−x jk )2

Where i and j are two items and k is the length of each music property.

Display recommended items

The final step after applying genetic algorithm is displaying the items that are closest to the

items which the user has given the highest rating. Using Euclidean distance formula the

nearest possible music features which are matching with the one generated by crossover step

of genetic algorithm are matched and given as out for recommended items.

Here a separate recommendation page is displayed where the top ten similar records matching

which the two off springs generated is displayed.

Page 27: Ultimate Recommender

4.2 PROPOSED SYSTEM DESIGN/ARCHITECTUREWORKING:

Apply genetic algorithm to music recommendation system.

The system can detect and recommend appropriate songs which are suitable for user’s

musical preference.

And, the system requires pre-processing which is feature (i,e. tempo, chord, pitch, etc.)

extraction from music. It based on shuffle operation. (i.e, play song randomly)

At first time, the system recommends songs randomly and user cans judge’s song’s

preference by controlling their devices or program. Just click the next song button.

Fig 4.2: System Architecture

4.3 ANALYSIS MODEL

4.3.1 Data Flow DiagramData flow diagrams are the most commonly used way of documenting the process of

current and required systems. As their name suggests they are a pictorial way of showing

the flow of data into/within the system, around the system and out of a system. It is a

graphical representation of flow of data within a system. Unlike, flowcharts, DFDs do not

give detailed descriptions of modules but graphically describe data and how the data

Page 28: Ultimate Recommender

interact with the system. The DFD enable us to visualize how the system operates, its final

output and the implementation of the system as a whole including modification if any.

Components of DFD

DFDs are constructed using four major components

1. external entries

2. data stores

3. processes and

4. data flows

External entities represent the source of data as input to the system. They are also the

destination of system data. External entities can be called data stores outside the system.

These are represented by squares.

Data stores represent stores of data within the system, for example, computer files or

databases. An open-ended box represents a data, which implies store data at rest or a

temporary repository of data.

Processes represent activities in which data is manipulated by being stored or retrieved or

transferred in some way. In other words, we can say that process transforms the input data

into output data. Circles stand for a process that converts data into information.

Data flow represents the movement of data from one component to the other. An arrow

(→) identifies data flow, i.e. data in motion. It is a pipeline through which information

flows. Data flows are generally shown as one-way only. Data flows between external

entities are shown as dotted lines (------›).

Fig 4.3: System DFD

Page 29: Ultimate Recommender

Fig 4.4: User login DFD

Fig 4.5: Resources DFD

Fig 4.6: Admin login DFD

4.3.2 CLASS DIAGRAMIn software engineering, a class diagram in the Unified Modelling Language (UML) is a

type of static structure diagram that describes the structure of a system by showing the

Page 30: Ultimate Recommender

system's classes, their attributes, operations (or methods), and the relationships among

objects.

The class diagram is the main building block of object oriented modelling. It is used both

for general conceptual modelling of the application, and for detailed modelling translating

the models into programming code. In the diagram, classes are represented with boxes

which contain three parts:

The middle part contains the attributes of the class

The bottom part gives the methods or operations the class can take or undertake. In

the design of a system, a number of classes are identified and grouped together in a

class diagram which helps to determine the static relations between those objects

Fig 4.7: Class Diagram

4.3.3 Use Case DiagramA use case diagram at its simplest is a representation of a user's interaction with the

system and depicting the specifications of a use case. A use case diagram can portray the

Page 31: Ultimate Recommender

different types of users of a system and the various ways that they interact with the

system.

While a use case itself might drill into a lot of detail about every possibility, a use-case

diagram can help provide a higher-level view of the system. It has been said before that

"Use case diagrams are the blueprints for your system". They provide the simplified and

graphical representation of what the system must actually do.

Fig 4.8 : System use case diagram

4.3.4 Sequence DiagramA sequence diagram is a kind of interaction diagram that shows how processes operate

with one another and in what order. It is a construct of a Message Sequence Chart.

A sequence diagram shows object interactions arranged in time sequence. It depicts the

objects and classes involved in the scenario and the sequence of messages exchanged

between the objects needed to carry out the functionality of the scenario.

Sequence diagrams are typically associated with use case realizations in the Logical View

of the system under development. Sequence diagrams are sometimes called event

diagrams, event scenarios

Page 32: Ultimate Recommender

A sequence diagram shows, as parallel vertical lines (lifelines), different processes or

objects that live simultaneously, and, as horizontal arrows, the messages exchanged

between them, in the order in which they occur. This allows the specification of simple

runtime scenarios in a graphical manner.

Fig 4.9: Sequence Diagram

Page 33: Ultimate Recommender

Chapter 5

Project Planning And Scheduling

5.1 Timeline ChartThe Time Chart Shows planned and actual progress for a number of tasks displayed against a

horizontal time scale.

It is effective and easy-to-read method of indicating the actual current status for each of set of

tasks compared to planned progress for each activity of the set.

Time Charts provide a clear picture of the current state of the project.

FIRST PHASE:

Table 5.1: Timeline Table

Months AUGUST SEPTEMBE

R

OCTOBER NOVEMBER

Particulars ↓

W

1

W

2

W

3

W

4

W

1

W

2

W

3

W

4

W

1

W

2

W

3

W

4

W

1

W

2

W

3

W

4

1)Gathering

initial

requirement

Meet internal

guide

Identify needs

and constraints

Determine goals

and scope

Establish

specification

2) Feasibility

Phase

Page 34: Ultimate Recommender

Technical (s/w

h/w) feasibility

Economic

feasibility

Application

(code) feasibility

Operational

feasibility

3) Requirement

determination

phase

Determine inputs

Determine

outputs

Process control

Synopsis

SECOND PHASE:

Table 5.2: Timeline Table

Months JANUARY FEBRUARY MARCH APRIL

Particulars ↓

W

1

W

2

W

3

W

4

W

1

W

2

W

3

W

4

W

1

W

2

W

3

W

4

W

1

W

2

W

3

W

4

Project Design

Class Diagram

Sequence

Diagram

Activity Diagram

Dataflow

Diagram

Implementation

Page 35: Ultimate Recommender

Implementing

Test Module

Database

Connectivity

Admin Module

User Module

Designing UI

Testing

5.2 Task SheetThe following table gives the project plan for the Phase 1 & 2 of our project:

Table 5.3: Work Distribution Table

Page 36: Ultimate Recommender

Work task sheet Planned Start

Actual start

Planned End

Actual End

Assigned Start Effort Allocated

1.Conceptualization &

InitializationWk1,d1 Wk1,d1 Wk1, d4 Wk1, d4

Amit Dahiya,

Dan Mathews,

Manoj Jaiswal,

Justin Ebby

4-days

2.Literature Survey Wk1,d1 Wk1,d1 Wk1, d4 Wk1, d4

Amit Dahiya,

Dan Mathews,

Manoj Jaiswal,

Justin Ebby

4-days

3.Propsed system Wk1,d1 Wk1,d3 Wk1,d4 Wk1,d6 5-days

4.Methodology Wk1,d1 Wk1,d3 Wk1,d4 Wk1,d6Amit Dahiya,

Dan Mathews5-days

5.Alogorithm

DevelopmentWk2,d1 Wk2,d1 Wk2,d5 Wk1,d5

Dan Mathews,

Manoj Jaiswal, 6-days

6.Feasibility System Wk2,d1 Wk2,d2 Wk3,d5 Wk3,d6Manoj Jaiswal,

Justin Ebby4-days

7.Requirement

AnalysisWk3,d1 Wk3,d2 Wk3,d5 Wk3,d6

Amit Dahiya,

Justin Ebby4-days

8.Risk analysis Wk3,d1 Wk3,d3 Wk4,d5 Wk4,d7Amit Dahiya,

Manoj Jaiswal3-days

9.Design Details Wk4,d1 Wk4,d1 Wk5,d5 Wk5,d5Dan Mathews,

Justin Ebby6-days

10. Flow Chart Wk5,d1 Wk5,d3 Wk5,d5 Wk5,d7

Amit Dahiya,

Manoj Jaiswal, 2-days

11. Implementation W6,d1 W6,d2 W7,d1 W7,d3Dan Mathews,

Justin Ebby9-days

12.Designing UI W7,d4 W7,d6 W8,d1 W8,d5Dan Mathews,

Justin Ebby5-days

13.Testing W8,d6 W8,d7 W9,d2 W9,d7Amit Dahiya,

Manoj Jaiswal,7-days

Page 37: Ultimate Recommender

Chapter 6

IMPLEMENTATION6.1 Algorithms and Flowcharts

6.1.1 Algorithm for System Flow

Load Music files Extract music properties Store the music properties and attributes in the database Extract the records of songs which user has rated Implement Genetic Algorithm and analyze the user rated songs Display recommendations which are similar to user’s best rated songs

6.1.2 Flowchart for System Flow

6.1.3 Algorithm for BLX-a Crossover

Page 38: Ultimate Recommender

15. Select two parents X(t) and Y(t) from a parent pool16. Create two offspring X(t+1) and Y(t+1) as follows:17. for i = 1 to n do18. di=|xi(t)-yi(t)|19. Choose a uniform random real number u from20. interval <min(xi(t),yi(t))-adi,21. max(xi(t),yi(t))+adi>22. xi(t+1)=u23. Choose a uniform random real number u from24. interval25. <min(xi(t),yi(t))-adi, max(xi(t),yi(t))+adi>26. yi(t+1)=u27. end do28. where: a – positive real parameter

BLX α CROSS OVER ALGORITHM FLOWCHART

Select two parents X(t) and Y(t) from a population of randomly

generated individuals.

Create two offspring X(t+1) and Y(t+1) as follows:

For(i=1; i<=n; i++)

di=|Xi(t)-yi(t)|

. Choose a uniform random real number u from interval for

chromosome X<min(Xi(t),Yi(t))-a*di, max(Xi(t),Yi(t))+a*di>

.  Xi(t+1)=u

Choose a uniform random real number u from interval for

chromosome Y<min(Xi(t),Yi(t))-a*di, max(Xi(t),Yi(t))+a*di>

Yi(t+1)=u

True

False

Page 39: Ultimate Recommender

6.2 Output Screens

Fig 6.3: Admin Login

End

Page 40: Ultimate Recommender

Fig 6.4: Default Admin Page

Fig 6.5: Change Password

Page 41: Ultimate Recommender

Fig 6.6: Manage songs

Fig 6.7: Add new song

Page 42: Ultimate Recommender

Fig 6.8: User login

Fig 6.9: Default home page

Page 43: Ultimate Recommender

Fig 6.10: Songs page for user

Fig 6.11: Favorites

Page 44: Ultimate Recommender

Fig 6.12: Profile

Page 45: Ultimate Recommender

Fig 6.13: Recommend

Fig 6.14: Email Validation at registration page

Page 46: Ultimate Recommender

Fig 6.15: Validation and verification at registration page

Fig 6.16a:

Page 47: Ultimate Recommender

Fig 6.16b: Login page validation verification

Fig 6.17a:

Page 48: Ultimate Recommender

Fig 6.17b: Manage songs verification-validation

Page 49: Ultimate Recommender

Chapter 6

Testing

Software testing is an investigation conducted to provide stakeholders with information about

the quality of the product or service under test. Software testing can also provide an objective,

independent view of the software to allow the business to appreciate and understand the risks

of software implementation. Test techniques include, but are not limited to the process of

executing a program or application with the intent of finding software (errors or other

defects).

Software testing can be stated as the process of validating and verifying that a computer

program/application/product:

Meets the requirements that guided its design and development,

Works as expected,

Satisfies the needs of stakeholders.

6.1 Test Cases

Page 50: Ultimate Recommender

Software testing is an investigation conducted to provide stakeholders with information about

the quality of the product or service under test. Software testing can also provide an objective,

independent view of the software to allow the business to appreciate and understand the risks

of software implementation. Test techniques include, but are not limited to the process of

executing a program or application with the intent of finding software (errors or other

defects).

Software testing can be stated as the process of validating and verifying that a computer

program/application/product:

meets the requirements that guided its design and development,

works as expected,

Satisfies the needs of stakeholders.

Page 51: Ultimate Recommender

Table 6.1:Test cases Test Case Id: 01Test Case Objective: To test Login Module

Table 1: Login Test case

Test Case No.

Test Case Description Test Input Expected Output Actual

Output Result

1 To check valid User name & password

User name: admin Password : 123

Home Page Should be displayed

Home Page is displayed

Success

2 To check empty user name field & click on login button

User namePassword:22323

Message should be displayed "Username cannot be blank"

Message is displayed "Username cannot be blank"

Success

3 Checking empty Password field click on login button

User name: admin Password:

Message should be displayed “Password cannot be left blank!"

Message is displayed "Password cannot be left blank!"

Success

4 To check if invalid user name

User name : 105 password :gag

Message should be displayed “Invalid username”

Message is displayed “Invalid username”

Success

5 To check if invalid password

User name:102 Password : test

Message should be displayed “ invalid password ”

Message is display “ invalid password ”

Success

Page 52: Ultimate Recommender

Test Case Id: 02Test Case Objective: To test Displaying of songs Module

Test Case No.

Test Case Description

Test Input Expected Output Actual Output Result

1 Displaying initial page of the web application

Users starts the application

Home Page should be displayed with 10 items using uniform distribution

Home Page is displayed with 10 items on each page

Success

2 User Rating User gives ratings to 10 items

Display the selected items with average rating

A music item with average rating is displayed.

Success

3 User submits rating for new items to be recommended

User rates the items

Using Genetic algorithm 10 items should be displayed

Using Genetic algorithm 10 items are displayed on the next successive page.

Success

4 User checks on category

User selects the checkbox and selects the song of the respective category

It should direct to recommendation page

It directs to recommendation page and displays the songs with selected category

Success

Table 2: Displaying of Songs

Page 53: Ultimate Recommender

Test Case Id: 03Test Case Objective: To test Displaying of songs Module

Test Case No.

Test Case Description

Test Input Expected Output Actual Output Result

1 To check empty fields and check on save button

Name:Address:Country:State:Zip Code:400067Phone number:Contact number:

It should display error message

Error message is displayed “Field is required”

Success

2 To check the length of zip code

40006 Message should be displayed “Invalid zip code”

Error message is displayed“Invalid zip code”

Success

3 To check the length of mobile number and contact number

89888822 Message should be displayed “Invalid mobile number”

Error message is displayed“Invalid mobile number”

Success

4 To check whether change of password works properly

Current password:New password:Confirm password:

Message should be displayed “It cannot be left blank”

Message is displayed “It cannot be left blank”

Success

5 Checking save option

Click on save button

Message should displayed “Information saved successfully”

Message is displayed “Information saved successfully”

Success

6 Checking cancel option

Click on cancel button

It should reset the textboxes

It resets the textboxes

Success

7 Checking reset option

Click on reset button

It should reset the textboxes

It resets the textboxes

Success

Table 3: Profile Page Test Case

Page 54: Ultimate Recommender

Test Case Id: 04Test Case Objective: To test Admin Login PAGE

Table 4: Admin Login Test Case

Test Case No.

Test Case Description Test Input Expected Output Actual

Output Result

1 To check valid User name & password

User name:admin Password : admin

Manage Page Should be displayed

Manage Page is displayed

Success

2 To check empty user name field & click on login button

User namePassword:22323

Message should be displayed "Username cannot be blank"

Message is displayed "Username cannot be blank"

Success

3 Checking empty Password field click on login button

User name:admin Password:

Message should be displayed “Password cannot be left blank!"

Message is displayed "Password cannot be left blank!"

Success

4 To check if invalid user name

User name : 105 password :gdg

Message should be displayed “Invalid username”

Message is displayed “Invalid username”

Success

5 To check if invalid password

User name:102 Password : test

Message should be displayed “ invalid password ”

Message is display “ invalid password ”

Success

Page 55: Ultimate Recommender

Chapter 8

Conclusion and Future Work

8.1 CONCLUSION

The “Recommender System Using Genetic Algorithm for music data” satisfies all proposed requirements. The system is highly scalable and user friendly. The system has been tested under all criteria. The system will prove to be an efficient replacement to existing Music Recommender Systems. The User Interface is user friendly. It is an efficient companion for people who do not have time to manually search for songs they like to listen to. This algorithm simply needs ratings for a few songs from the user, and then it will automatically recommend similar songs to the user.

The recommender system that was able to accurately recognize the trend of a user’s preference and adaptively provide an appropriate recommendation in a time efficient manner. To this end, the proposed system combined the strengths of content-based filtering and interactive genetic algorithm.

The proposed system initially extracts the unique features of each item using the content-based filtering. As inputs to genetic algorithm, the individuals are composed of the extracted features of the data set. The system then requests the user to evaluate the fitness of each item. Next, genetic algorithm operates on the evaluated items to discover the most appropriate items for recommendation while the data grouping technique is applied to search for the candidate items more rapidly.

8.2 FUTURE WORK

The recommender system provides with user profile and asks the user to provide rating and then display the recommendations of music files as output. Further it can be extended which would concentrate on user behavior and capture the behavior in terms of user preferences. It would store the date, time and user session during that duration which songs user is listening to and recommend those music files only.

One growing area of research in the area of recommender systems is mobile recommender systems. With the increasing ubiquity of internet-accessing smart phones, it is now possible to offer personalized, context-sensitive recommendations. This is a particularly difficult area of research as mobile data is more complex than recommender systems often have to deal with (it is heterogeneous, noisy, requires spatial and temporal auto-correlation, and has validation and generality problems ). Additionally, mobile recommender systems suffer from a transplantation problem - recommendations may not apply in all regions (for instance, it would be unwise to recommend a recipe in an area where all of the ingredients may not be available).

Page 56: Ultimate Recommender

Appendix I

User Login PageImports System.Data.SqlClientPartial Class Admin_Login Inherits System.Web.UI.Page Dim conn As SqlConnection Dim comm As SqlCommand Public ds As Data.DataSet Public da As SqlDataAdapter Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public username As String Public user_id As Integer Public first_name As String Public last_name As String

Protected Sub btnLogin_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogin.Click Dim u As String = txtUsername.Text Dim p As String = txtPassword.Text conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "user_login" da.SelectCommand.CommandType = Data.CommandType.StoredProcedure da.SelectCommand.Parameters.AddWithValue("@username", u) da.SelectCommand.Parameters.AddWithValue("@password", p)

Page 57: Ultimate Recommender

ds = New Data.DataSet() da.Fill(ds, "user_login") If ds.Tables("user_login").Rows.Count = 0 Then lblshow.Text = "Invalid Login Information" txtUsername.Text = "" txtPassword.Text = "" ElseIf ds.Tables("user_login").Rows.Count > 0 Then username = ds.Tables("user_login").Rows(0).Item("username") user_id = ds.Tables("user_login").Rows(0).Item("user_id") first_name = ds.Tables("user_login").Rows(0).Item("first_name") last_name = ds.Tables("user_login").Rows(0).Item("last_name")

'custid = ds.Tables("admin_login").Rows(0).Item("admin_id") Session("uid") = user_id Session("name") = first_name + " " + last_name 'Session("username") = username Response.Redirect("Default.aspx") Exit Sub End If

End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Request.QueryString("msg") = "logout" Then lblshow.Text = "You are Logout Successfully" Session("uid") = 0 Session("name") = "" ElseIf Request.QueryString("msg") = "register" Then lblshow.Text = "You are Registred Successfully..Please Login.." End If End SubEnd ClassAdmin Login PageImports System.Data.SqlClientPartial Class Admin_Login Inherits System.Web.UI.Page Public conn As SqlConnection Public comm As SqlCommand Public ds As Data.DataSet Public da As SqlDataAdapter Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public username As String Public user_id As Integer Protected Sub btnLogin_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnLogin.Click Dim u As String = txtUsername.Text Dim p As String = txtPassword.Text conn = New SqlConnection(cs)

Page 58: Ultimate Recommender

conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "admin_login" da.SelectCommand.CommandType = Data.CommandType.StoredProcedure da.SelectCommand.Parameters.AddWithValue("@username", u) da.SelectCommand.Parameters.AddWithValue("@password", p) ds = New Data.DataSet() da.Fill(ds, "admin_login") If ds.Tables("admin_login").Rows.Count = 0 Then lblshow.Text = "Invalid Login Information" txtUsername.Text = "" txtPassword.Text = "" txtUsername.Focus() ElseIf ds.Tables("admin_login").Rows.Count > 0 Then username = ds.Tables("admin_login").Rows(0).Item("username") user_id = ds.Tables("admin_login").Rows(0).Item("user_id") 'custid = ds.Tables("admin_login").Rows(0).Item("admin_id") Session("aid") = user_id Session("uname") = username 'Session("username") = username Response.Redirect("Default.aspx") Exit Sub End If

End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load user_id = CType(Session("aid"), Integer) If Request.QueryString("msg") = "logout" Then lblshow.Text = "You are Logout Successfully" Session("aid") = 0 Session("uname") = "" ElseIf Request.QueryString("msg") = "register" Then lblshow.Text = "You are Registred Successfully..Please Login.." ElseIf user_id <> 0 Then Response.Redirect("Default.aspx") End If End SubEnd Class

Admin-Add new songImports System.Data.SqlClientImports System.IO.PathPartial Class add_new_song Inherits System.Web.UI.Page Dim conn As SqlConnection Dim comm As SqlCommand

Page 59: Ultimate Recommender

Public ds As Data.DataSet Public da As SqlDataAdapter Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public filename As String Public filepath As String Public song_id As Integer Public title As String Public Artist As String Public Category As String Public tempo As Double Public pitch As Double Public octav As Double Public root As Double Public mode As Double Public user_id As Integer

Protected Sub btnreg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnreg.Click If fuimg.HasFile Then filename = fuimg.FileName End If If Request.QueryString("action") = "edit" Then song_id = Request.QueryString("song_id") conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "song_update" da.SelectCommand.CommandType = Data.CommandType.StoredProcedure da.SelectCommand.Parameters.AddWithValue("@song_id", song_id) da.SelectCommand.Parameters.AddWithValue("@Title", Trim(txtname.Text)) da.SelectCommand.Parameters.AddWithValue("@Artist", Trim(txtartist.Text)) da.SelectCommand.Parameters.AddWithValue("@category", ddlcategory.SelectedValue) da.SelectCommand.Parameters.AddWithValue("@Tempo", Trim(txttempo.Text)) da.SelectCommand.Parameters.AddWithValue("@pitch", Trim(txtpitch.Text)) da.SelectCommand.Parameters.AddWithValue("@Octav", Trim(txtoctav.Text)) da.SelectCommand.Parameters.AddWithValue("@Root", Trim(txtroot.Text)) da.SelectCommand.Parameters.AddWithValue("@Mode", Trim(txtmode.Text)) da.SelectCommand.ExecuteNonQuery() Response.Redirect("manage_songs.aspx?msg=update") Else fuimg.SaveAs(Server.MapPath("songs/" + filename)) conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn

Page 60: Ultimate Recommender

da.SelectCommand.CommandText = "song_insert" da.SelectCommand.CommandType = Data.CommandType.StoredProcedure da.SelectCommand.Parameters.AddWithValue("@Title", Trim(txtname.Text)) da.SelectCommand.Parameters.AddWithValue("@Artist", Trim(txtartist.Text)) da.SelectCommand.Parameters.AddWithValue("@category", ddlcategory.SelectedValue) da.SelectCommand.Parameters.AddWithValue("@song_path", "/genetic/Admin/songs/" + filename) da.SelectCommand.Parameters.AddWithValue("@Tempo", Trim(txttempo.Text)) da.SelectCommand.Parameters.AddWithValue("@pitch", Trim(txtpitch.Text)) da.SelectCommand.Parameters.AddWithValue("@Octav", Trim(txtoctav.Text)) da.SelectCommand.Parameters.AddWithValue("@Root", Trim(txtroot.Text)) da.SelectCommand.Parameters.AddWithValue("@Mode", Trim(txtmode.Text)) da.SelectCommand.ExecuteNonQuery() Response.Redirect("manage_songs.aspx?msg=save") End If End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load btlDelete.Visible = False If Request.QueryString("action") = "edit" And Me.IsPostBack = False Then fuimg.Enabled = False btlDelete.Visible = True song_id = Request.QueryString("song_id") conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "song_select" da.SelectCommand.CommandType = Data.CommandType.StoredProcedure da.SelectCommand.Parameters.AddWithValue("@song_id", song_id) ds = New Data.DataSet da.Fill(ds, "song_select") title = ds.Tables("song_select").Rows(0).Item("Title") Artist = ds.Tables("song_select").Rows(0).Item("Artist") Category = ds.Tables("song_select").Rows(0).Item("Category") tempo = ds.Tables("song_select").Rows(0).Item("tempo") pitch = ds.Tables("song_select").Rows(0).Item("pitch") octav = ds.Tables("song_select").Rows(0).Item("octav") root = ds.Tables("song_select").Rows(0).Item("root") mode = ds.Tables("song_select").Rows(0).Item("mode") txtname.Text = title txtartist.Text = Artist ddlcategory.SelectedValue = Category txttempo.Text = tempo txtpitch.Text = pitch txtoctav.Text = octav txtroot.Text = root

Page 61: Ultimate Recommender

txtmode.Text = mode End If End Sub

Protected Sub btlDelete_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btlDelete.Click conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "delete from Songs where Title=@Title" da.SelectCommand.CommandType = Data.CommandType.Text da.SelectCommand.Parameters.AddWithValue("@Title", txtname.Text) da.SelectCommand.ExecuteNonQuery() Response.Redirect("manage_songs.aspx?msg=Delete") End SubEnd Class

Admin-Change PasswordImports System.Data.SqlClientPartial Class change_password Inherits System.Web.UI.Page Dim conn As SqlConnection Dim comm As SqlCommand Public da As SqlDataAdapter Public ds As Data.DataSet Public dr As SqlDataReader Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public msg As String Public user_id As Integer Public password As String

Protected Sub btnreg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnreg.Click user_id = CType(Session("aid"), Integer) If user_id = Nothing Then Response.Redirect("Login.aspx") End If conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "select * from admin where user_id = " & user_id & "" da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.Fill(ds, "MUser")

Page 62: Ultimate Recommender

password = ds.Tables("Muser").Rows(0).Item("password") If txtopass.Text <> password Then lblshow.Text = "Invalid current Password" Else conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "update admin set password = '" & txtnpass.Text & "' where user_id = " & user_id & "" da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.SelectCommand.ExecuteNonQuery() lblshow.Text = "Password has been reset Succsessfully"

End If End SubEnd Class

Admin-DefaultPartial Class _Default Inherits System.Web.UI.Page Public user_id As Integer Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load user_id = CType(Session("aid"), Integer) If user_id = 0 Then Response.Redirect("Login.aspx") End If End SubEnd Class

Admin-Manage SongsImports System.Data.SqlClientImports System.IOImports System.IO.PathPartial Class manage_img_base Inherits System.Web.UI.Page Dim conn As SqlConnection Dim comm As SqlCommand Public ds As Data.DataSet Public da As SqlDataAdapter Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public filetodelete As String Public img_id As Integer Public user_id As Integer

Page 63: Ultimate Recommender

Protected Sub SqlDataSource1_Deleted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Deleted If e.AffectedRows <> 0 Then lblshow.Text = " Record deleted Successfully" End If End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load user_id = CType(Session("aid"), Integer) If user_id = 0 Then Response.Redirect("Login.aspx") End If If Request.QueryString("msg") = "save" Then lblshow.Text = "Record Saved Successfully" ElseIf Request.QueryString("msg") = "update" Then lblshow.Text = "Record Updated Successfully" ElseIf Request.QueryString("msg") = "delete" Then lblshow.Text = "Record Delete Successfully" End If

End Sub

Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting img_id = GridView1.DataKeys(e.RowIndex).Value conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "select img_path from image_base where img_id = " & img_id & "" da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.Fill(ds, "image_base") filetodelete = ds.Tables("image_base").Rows(0).Item("img_path") File.Delete(Server.MapPath(filetodelete)) End SubEnd Class

User-About usPartial Class about_us Inherits System.Web.UI.Page

End Class

User-Change PasswordImports System.Data.SqlClient

Page 64: Ultimate Recommender

Partial Class change_password Inherits System.Web.UI.Page Dim conn As SqlConnection Dim comm As SqlCommand Public da As SqlDataAdapter Public ds As Data.DataSet Public dr As SqlDataReader Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public msg As String Public user_id As Integer Public password As String

Protected Sub btnreg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnreg.Click user_id = CType(Session("uid"), Integer) If user_id = Nothing Then Response.Redirect("Login.aspx") End If conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "select * from MUser where user_id = " & user_id & "" da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.Fill(ds, "MUser") password = ds.Tables("Muser").Rows(0).Item("password") If txtopass.Text <> password Then lblshow.Text = "Invalid current Password" Else conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "update Muser set password = '" & txtnpass.Text & "' where user_id = " & user_id & "" da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.SelectCommand.ExecuteNonQuery() lblshow.Text = "Password has been reset Succsessfully"

End If End SubEnd Class

User-Contact us

Page 65: Ultimate Recommender

Partial Class contact_us Inherits System.Web.UI.Page

End Class

User- DefaultPartial Class Admin_Default Inherits System.Web.UI.Page

End ClassUser- Default 2Partial Class Default2 Inherits System.Web.UI.Page

End Class

User- Favourites Songs Public filetodelete As String Public img_id As Integer Public user_id As Integer

Protected Sub SqlDataSource1_Deleted(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.SqlDataSourceStatusEventArgs) Handles SqlDataSource1.Deleted If e.AffectedRows <> 0 Then lblshow.Text = " Record deleted Successfully" End If End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load user_id = CType(Session("uid"), Integer) 'If user_id = 0 Then ' Response.Redirect("Login.aspx") 'End If If Request.QueryString("msg") = "save" Then lblshow.Text = "Record Saved Successfully" ElseIf Request.QueryString("msg") = "update" Then lblshow.Text = "Record Updated Successfully" End If

End Sub

Protected Sub GridView1_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles GridView1.RowDeleting 'img_id = GridView1.DataKeys(e.RowIndex).Value 'conn = New SqlConnection(cs) 'conn.Open() 'da = New SqlDataAdapter

Page 66: Ultimate Recommender

'da.SelectCommand = New SqlCommand 'da.SelectCommand.Connection = conn 'da.SelectCommand.CommandText = "select img_path from image_base where img_id = " & img_id & "" 'da.SelectCommand.CommandType = Data.CommandType.Text 'ds = New Data.DataSet 'da.Fill(ds, "image_base") 'filetodelete = ds.Tables("image_base").Rows(0).Item("img_path") 'File.Delete(Server.MapPath(filetodelete)) End SubEnd Class

User ProfileImports System.Data.SqlClientPartial Class profile Inherits System.Web.UI.Page Dim conn As SqlConnection Dim comm As SqlCommand Public da As SqlDataAdapter Public ds As Data.DataSet Public dr As SqlDataReader Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public msg As String Public user_id As Integer Public first_name As String Public middle_name As String Public last_name As String Public address As String Public state As String Public country As String Public zipcode As String Public mob_no As String Public contact_no As String

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Me.IsPostBack = False Then user_id = CType(Session("uid"), Integer) conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "user_select" da.SelectCommand.CommandType = Data.CommandType.StoredProcedure da.SelectCommand.Parameters.AddWithValue("@user_id", user_id)

Page 67: Ultimate Recommender

ds = New Data.DataSet da.Fill(ds, "user_select") first_name = ds.Tables("user_select").Rows(0).Item("first_name") middle_name = ds.Tables("user_select").Rows(0).Item("middle_name") last_name = ds.Tables("user_select").Rows(0).Item("last_name") address = ds.Tables("user_select").Rows(0).Item("address") state = ds.Tables("user_select").Rows(0).Item("state") country = ds.Tables("user_select").Rows(0).Item("country") zipcode = ds.Tables("user_select").Rows(0).Item("zipcode") mob_no = ds.Tables("user_select").Rows(0).Item("mobile_no") contact_no = ds.Tables("user_select").Rows(0).Item("contact_no") txtfirstname.Text = first_name txtmiddlename.Text = middle_name txtlastname.Text = last_name txtaddress.Text = address txtstate.Text = state txtcountry.Text = country txtzip.Text = zipcode txtmob.Text = mob_no txtcontact1.Text = contact_no End If

End Sub

Protected Sub btnreg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnreg.Click user_id = CType(Session("aid"), Integer) conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "user_update" da.SelectCommand.CommandType = Data.CommandType.StoredProcedure da.SelectCommand.Parameters.AddWithValue("@user_id", user_id) da.SelectCommand.Parameters.AddWithValue("@first_name", Trim(txtfirstname.Text)) da.SelectCommand.Parameters.AddWithValue("@middle_name", Trim(txtmiddlename.Text)) da.SelectCommand.Parameters.AddWithValue("@last_name", Trim(txtlastname.Text)) da.SelectCommand.Parameters.AddWithValue("@address", txtaddress.Text) da.SelectCommand.Parameters.AddWithValue("@state", txtstate.Text) da.SelectCommand.Parameters.AddWithValue("@country", txtcountry.Text) da.SelectCommand.Parameters.AddWithValue("@zipcode", txtzip.Text) da.SelectCommand.Parameters.AddWithValue("@mobile_no", txtmob.Text) da.SelectCommand.Parameters.AddWithValue("@contact_no", Trim(txtcontact1.Text)) da.SelectCommand.ExecuteNonQuery() lblshow.Text = "Information Saved Successfully" End SubEnd Class

Page 68: Ultimate Recommender

User- RecommendImports System.Data.SqlClient

Partial Class recommend Inherits System.Web.UI.Page

Dim conn As SqlConnection Dim comm As SqlCommand Public ds As Data.DataSet Public ds1 As Data.DataSet Public da As SqlDataAdapter Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public username As String Public song_id As Integer Public user_id As Integer Public crating As Integer Public trating As Integer Public gr As GridViewRow Public usercount As Integer Public rating As Integer Public line_no As String Public songs As String = "" Public collection(9000) As String Public Xt_tem As Double Public Xt_pic As Double Public Xt_oct As Double Public Xt_root As Double Public Xt_mod As Double Public Yt_tem As Double Public Yt_pic As Double Public Yt_oct As Double Public Yt_root As Double Public Yt_mod As Double Public Di_tem As Double Public Di_pic As Double Public Di_oct As Double Public Di_root As Double Public Di_mod As Double Public min_tem As Double Public min_pic As Double Public min_oct As Double Public min_root As Double Public min_mod As Double Public max_tem As Double Public max_pic As Double Public max_oct As Double Public max_root As Double Public max_mod As Double

Page 69: Ultimate Recommender

Public X_offsprings_tem As Double Public X_offsprings_pic As Double Public X_offsprings_oct As Double Public X_offsprings_root As Double Public X_offsprings_mod As Double Public Y_offsprings_tem As Double Public Y_offsprings_pic As Double Public Y_offsprings_oct As Double Public Y_offsprings_root As Double Public Y_offsprings_mod As Double Public tem_dist As Double Public pic_dist As Double Public oct_dist As Double Public root_dist As Double Public mod_dist As Double Public tempo As Double Public pitch As Double Public octav As Double Public root As Double Public mode As Double Public tem_diff As Double Public pic_diff As Double Public oct_diff As Double Public root_diff As Double Public mod_diff As Double Public total_diff As Double Public alpha As Double = 0.5 Public RandomNumGen As New System.Random

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim req, req1 As String req = Request.QueryString("cat") req1 = Request.QueryString("flag")

End Sub

'Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click 'Dim i As Integer = 0 'collection(i) = "s" 'conn = New SqlConnection(cs) 'conn.Open() 'da = New SqlDataAdapter 'da.SelectCommand = New SqlCommand 'da.SelectCommand.Connection = conn 'da.SelectCommand.CommandText = "select distinct song_id from rating_temp"

Page 70: Ultimate Recommender

'da.SelectCommand.CommandType = Data.CommandType.Text 'ds = New Data.DataSet 'da.Fill(ds, "rating_temp") 'For Each row As Data.DataRow In ds.Tables("rating_temp").Rows ' songs = songs + row.Item("song_id").ToString + "," 'Next 'Dim len As Integer = songs.Length 'songs = songs.Remove(len - 1) 'conn = New SqlConnection(cs) 'conn.Open() 'da = New SqlDataAdapter 'da.SelectCommand = New SqlCommand 'da.SelectCommand.Connection = conn 'da.SelectCommand.CommandText = "Select distinct song_id,rating,id from rating_temp where song_id in (" + songs + ") order by id desc" 'da.SelectCommand.CommandType = Data.CommandType.Text 'ds = New Data.DataSet 'da.Fill(ds, "rating_temp1")

'For Each row As Data.DataRow In ds.Tables("rating_temp1").Rows ' 'Dim t As Int16 = ds.Tables("rating_temp1").Rows.Count ' song_id = ds.Tables("rating_temp1").Rows(i).Item("song_id") ' crating = ds.Tables("rating_temp1").Rows(i).Item("rating") ' If collection.Contains(song_id.ToString) Then ' Else ' user_id = CType(Me.Session("uid"), Integer) ' conn = New SqlConnection(cs) ' conn.Open() ' da = New SqlDataAdapter ' da.SelectCommand = New SqlCommand ' da.SelectCommand.Connection = conn ' da.SelectCommand.CommandText = "insert into favorites (song_id,user_id) Values(" & song_id & "," & user_id & ")" ' da.SelectCommand.CommandType = Data.CommandType.Text ' da.SelectCommand.ExecuteNonQuery() ' conn = New SqlConnection(cs) ' conn.Open() ' da = New SqlDataAdapter ' da.SelectCommand = New SqlCommand ' da.SelectCommand.Connection = conn ' da.SelectCommand.CommandText = "Select trating,UserCount from Songs where song_id = " & song_id & "" ' da.SelectCommand.CommandType = Data.CommandType.Text ' ds1 = New Data.DataSet ' da.Fill(ds1, "Songs") ' trating = ds1.Tables("Songs").Rows(0).Item("trating") ' usercount = ds1.Tables("Songs").Rows(0).Item("UserCount") ' usercount = usercount + 1 ' rating = (crating + trating) \ usercount ' trating = (crating + trating)

Page 71: Ultimate Recommender

' conn = New SqlConnection(cs) ' conn.Open() ' da = New SqlDataAdapter ' da.SelectCommand = New SqlCommand ' da.SelectCommand.Connection = conn ' da.SelectCommand.CommandText = "update Songs set Rating = " & rating & ", UserCount = " & usercount & ", trating = " & trating & ", crating = " & crating & " where song_id= " & song_id & "" ' da.SelectCommand.CommandType = Data.CommandType.Text ' da.SelectCommand.ExecuteNonQuery() ' collection(i) = song_id.ToString ' End If ' i = i + 1 'Next ''------------------------------------------------------------------------------------------------------------------------------------------------------------Crossover Begins Here------------------------------------------------------------------------------------------------------------------------------------------------------------------- 'conn = New SqlConnection(cs) 'conn.Open() 'da = New SqlDataAdapter 'da.SelectCommand = New SqlCommand 'da.SelectCommand.Connection = conn 'da.SelectCommand.CommandText = "Select Top 2(crating),song_id,Title,Tempo,Pitch,Octav,Root,Mode from Songs order by crating desc" 'Query for selecting 2 highest rating songs 'da.SelectCommand.CommandType = Data.CommandType.Text 'ds = New Data.DataSet 'da.Fill(ds, "songs1") 'Dim j As Integer = 0 'For Each row As Data.DataRow In ds.Tables("songs1").Rows ' If j = 0 Then ' Xt_tem = ds.Tables("songs1").Rows(0).Item("Tempo") 'X-Tempo ' Xt_pic = ds.Tables("songs1").Rows(0).Item("Pitch") 'X-Pitch ' Xt_oct = ds.Tables("songs1").Rows(0).Item("Octav") 'X-Octav ' Xt_root = ds.Tables("songs1").Rows(0).Item("Root") 'X-Root ' Xt_mod = ds.Tables("songs1").Rows(0).Item("Mode") 'X-Mode ' j = 1 ' ElseIf j = 1 Then ' Yt_tem = ds.Tables("songs1").Rows(1).Item("Tempo") 'Y-Tempo ' Yt_pic = ds.Tables("songs1").Rows(1).Item("Pitch") 'Y-Pitch ' Yt_oct = ds.Tables("songs1").Rows(1).Item("Octav") 'Y-Octav ' Yt_root = ds.Tables("songs1").Rows(1).Item("Root") 'Y-Root ' Yt_mod = ds.Tables("songs1").Rows(1).Item("Mode") 'Y-Mode ' End If 'Next ''---------------------Distance Calculation Between Xt and Yt------------------------------------------- 'Di_tem = Math.Abs(Xt_tem - Yt_tem) 'Distance Between Xt_tem and Yt_tem

Page 72: Ultimate Recommender

'Di_pic = Math.Abs(Xt_pic - Yt_pic) 'Distance Between Xt_pic and Yt_pic 'Di_oct = Math.Abs(Xt_oct - Yt_oct) 'Distance Between Xt_oct and Yt_oct 'Di_root = Math.Abs(Xt_root - Yt_root) 'Distance Between Xt_root and Yt_root 'Di_mod = Math.Abs(Xt_mod - Yt_mod) 'Distance Between Xt_mod and Yt_mod ''------------------------------------------------------------------------------------------------------- ''----------------------Calculating Intervals------------------------------------------------------------ 'min_tem = (Math.Min(Xt_tem, Yt_tem) - (alpha * Di_tem)) 'interval Between Xt_tem and Yt_tem (Min) 'min_pic = (Math.Min(Xt_pic, Yt_pic) - (alpha * Di_pic)) 'interval Between Xt_pic and Yt_pic (Min) 'min_oct = (Math.Min(Xt_oct, Yt_oct) - (alpha * Di_oct)) 'interval Between Between Xt_oct and Yt_oct (Min) 'min_root = (Math.Min(Xt_root, Yt_root) - (alpha * Di_root)) 'interval Between Xt_root and Yt_root (Min) 'min_mod = (Math.Min(Xt_mod, Yt_mod) - (alpha * Di_mod)) 'interval Between Xt_mod and Yt_mod (Min) 'max_tem = (Math.Max(Xt_tem, Yt_tem) - (alpha * Di_tem)) 'interval Between Xt_tem and Yt_tem (Max) 'max_pic = (Math.Max(Xt_oct, Yt_oct) - (alpha * Di_oct)) 'interval Between Xt_pic and Yt_pic (Max) 'max_oct = (Math.Max(Xt_tem, Yt_tem) - (alpha * Di_tem)) 'interval Between Xt_oct and Yt_oct (Max) 'max_root = (Math.Max(Xt_root, Yt_root) - (alpha * Di_root)) 'interval Between Xt_root and Yt_root (Max) 'max_mod = (Math.Max(Xt_mod, Yt_mod) - (alpha * Di_mod)) 'interval Between Xt_mod and Yt_mod (Max) ''------------------------------------------------------------------------------------------------------- ''--------------------Generating Offsprings of each chromosome Randomly---------------------------------- 'Randomize() 'X_offsprings_tem = CDbl((max_tem * Rnd()) + min_tem) 'X offsprings of Tempo 'X_offsprings_pic = CDbl((max_pic * Rnd()) + min_pic) 'X offsprings of Pitch 'X_offsprings_oct = CDbl((max_oct * Rnd()) + min_oct) 'X offsprings of Octav 'X_offsprings_root = CDbl((max_root * Rnd()) + min_root) 'X offsprings of Root 'X_offsprings_mod = CDbl((max_mod * Rnd()) + min_mod) 'X offsprings of Mode 'Y_offsprings_tem = CDbl((max_tem * Rnd()) + min_tem) 'Y offsprings of Tempo 'Y_offsprings_pic = CDbl((max_pic * Rnd()) + min_pic) 'Y offsprings of Picth 'Y_offsprings_oct = CDbl((max_oct * Rnd()) + min_oct) 'Y offsprings of Octav 'Y_offsprings_root = CDbl((max_root * Rnd()) + min_root) 'Y offsprings of Root 'Y_offsprings_mod = CDbl((max_mod * Rnd()) + min_mod) 'Y offsprings of Mode ''------------------------------------------------------------------------------------------------------------------------------------------------------------Crossover Ends Here--------------------------------------------------------------------------------------------------------------------------------------------------------------

''---------------------------------Euclidean Distance Formula----------------------- 'tem_dist = Math.Sqrt((X_offsprings_tem - Y_offsprings_tem) ^ 2) 'pic_dist = Math.Sqrt((X_offsprings_pic - Y_offsprings_pic) ^ 2) 'oct_dist = Math.Sqrt((X_offsprings_oct - Y_offsprings_oct) ^ 2)

Page 73: Ultimate Recommender

'root_dist = Math.Sqrt((X_offsprings_root - Y_offsprings_root) ^ 2) 'mod_dist = Math.Sqrt((X_offsprings_mod - Y_offsprings_mod) ^ 2)

'conn = New SqlConnection(cs) 'conn.Open() 'da = New SqlDataAdapter 'da.SelectCommand = New SqlCommand 'da.SelectCommand.Connection = conn 'If CheckBox1.Checked Then ' ' da.SelectCommand.CommandText = "Select song_id,category,Tempo,Pitch,Octav,Root,Mode from Songs where category='" & ddlcategory.SelectedValue & "'" 'Else ' da.SelectCommand.CommandText = "Select song_id,category,Tempo,Pitch,Octav,Root,Mode from Songs" 'End If 'da.SelectCommand.CommandType = Data.CommandType.Text 'ds = New Data.DataSet 'da.Fill(ds, "songs_master") 'For Each row As Data.DataRow In ds.Tables("songs_master").Rows ' song_id = row.Item("song_id") ' tempo = row.Item("Tempo") ' pitch = row.Item("Pitch") ' octav = row.Item("Octav") ' root = row.Item("Root") ' mode = row.Item("Mode") ' tem_diff = Math.Abs(tem_dist - tempo) ' pic_diff = Math.Abs(pic_dist - pitch) ' oct_diff = Math.Abs(oct_dist - octav) ' root_diff = Math.Abs(root_dist - root) ' mod_diff = Math.Abs(mod_dist - mode)

' total_diff = tem_diff + pic_diff + oct_diff + root_diff + mod_diff

' conn = New SqlConnection(cs) ' conn.Open() ' da = New SqlDataAdapter ' da.SelectCommand = New SqlCommand ' da.SelectCommand.Connection = conn ' da.SelectCommand.CommandText = "update Songs set diff = " & total_diff & " where song_id = " & song_id & "" ' da.SelectCommand.CommandType = Data.CommandType.Text ' da.SelectCommand.ExecuteNonQuery() 'Next

'SqlDataSource1.SelectCommand = "" 'SqlDataSource1.SelectCommand = "SELECT [song_id], [Artist], [Title], [Category], [Tempo], [Pitch], [Octav], [Root], [Mode], [UserCount], [Rating], [song_path],[diff] FROM [Songs] order by [diff]" 'SqlDataSource1.DataBind()

Page 74: Ultimate Recommender

'GridView1.DataBind() ' End Sub End Class

RegisterImports System.Data.SqlClientPartial Class register Inherits System.Web.UI.Page Dim conn As SqlConnection Dim comm As SqlCommand Public da As SqlDataAdapter Public ds As Data.DataSet Public dr As SqlDataReader Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public msg As String

Protected Sub btnreg_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnreg.Click conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "Select * from MUser where username = '" & txtemail.Text & "'" da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.Fill(ds, "MUser") If ds.Tables("MUser").Rows.Count > 0 Then lblshow.Text = "There is Already registration done with this Email ID..Kindly Try with another one." Else conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "user_insert" da.SelectCommand.CommandType = Data.CommandType.StoredProcedure da.SelectCommand.Parameters.AddWithValue("@username", Trim(txtemail.Text)) da.SelectCommand.Parameters.AddWithValue("@password", txtpass.Text) da.SelectCommand.Parameters.AddWithValue("@first_name", Trim(txtfirstname.Text)) da.SelectCommand.Parameters.AddWithValue("@middle_name", Trim(txtmiddlename.Text)) da.SelectCommand.Parameters.AddWithValue("@last_name", Trim(txtlastname.Text))

Page 75: Ultimate Recommender

da.SelectCommand.Parameters.AddWithValue("@address", txtaddress.Text) da.SelectCommand.Parameters.AddWithValue("@state", txtstate.Text) da.SelectCommand.Parameters.AddWithValue("@country", txtcountry.Text) da.SelectCommand.Parameters.AddWithValue("@zipcode", txtzip.Text) da.SelectCommand.Parameters.AddWithValue("@mobile_no", txtmob.Text) da.SelectCommand.Parameters.AddWithValue("@contact_no", Trim(txtcontact1.Text)) da.SelectCommand.ExecuteNonQuery() 'ds = New Data.DataSet 'da.Fill(ds, "student_insert") Response.Redirect("Login.aspx?msg=register") End If

End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

End SubEnd Class SongsImports System.Data.SqlClientPartial Class Songs Inherits System.Web.UI.Page Dim conn As SqlConnection Dim comm As SqlCommand Public ds As Data.DataSet Public ds1 As Data.DataSet Public da As SqlDataAdapter Public cs As String = System.Configuration.ConfigurationSettings.AppSettings.Item("connection_string") Public username As String Public song_id As Integer Public user_id As Integer Public crating As Integer Public trating As Integer Public gr As GridViewRow Public usercount As Integer Public rating As Integer Public line_no As String Public songs As String = "" Public collection(9000) As String Public Xt_tem As Double

Page 76: Ultimate Recommender

Public Xt_pic As Double Public Xt_oct As Double Public Xt_root As Double Public Xt_mod As Double Public Yt_tem As Double Public Yt_pic As Double Public Yt_oct As Double Public Yt_root As Double Public Yt_mod As Double Public Di_tem As Double Public Di_pic As Double Public Di_oct As Double Public Di_root As Double Public Di_mod As Double Public min_tem As Double Public min_pic As Double Public min_oct As Double Public min_root As Double Public min_mod As Double Public max_tem As Double Public max_pic As Double Public max_oct As Double Public max_root As Double Public max_mod As Double Public X_offsprings_tem As Double Public X_offsprings_pic As Double Public X_offsprings_oct As Double Public X_offsprings_root As Double Public X_offsprings_mod As Double Public Y_offsprings_tem As Double Public Y_offsprings_pic As Double Public Y_offsprings_oct As Double Public Y_offsprings_root As Double Public Y_offsprings_mod As Double Public tem_dist As Double Public pic_dist As Double Public oct_dist As Double Public root_dist As Double Public mod_dist As Double Public tempo As Double Public pitch As Double Public octav As Double Public root As Double Public mode As Double Public tem_diff As Double Public pic_diff As Double Public oct_diff As Double Public root_diff As Double Public mod_diff As Double Public total_diff As Double

Page 77: Ultimate Recommender

Public alpha As Double = 0.5 Public RandomNumGen As New System.Random

Protected Sub Rating1_Changed(ByVal sender As Object, ByVal e As AjaxControlToolkit.RatingEventArgs) Handles Rating1.Changed

Dim myrating As AjaxControlToolkit.Rating = DirectCast(sender, AjaxControlToolkit.Rating) Dim row As GridViewRow = DirectCast(myrating.NamingContainer, GridViewRow)

If row IsNot Nothing Then Dim x As Integer = row.DataItemIndex Dim p As Integer = GridView1.PageIndex * 10 x = x - p song_id = GridView1.DataKeys(x).Value myrating = DirectCast(sender, AjaxControlToolkit.Rating) crating = Integer.Parse(e.Value) End If conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "insert into rating_temp (song_id,rating) Values(" & song_id & "," & crating & ")" da.SelectCommand.CommandType = Data.CommandType.Text da.SelectCommand.ExecuteNonQuery()

End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If CheckBox1.Checked Then ddlcategory.Enabled = True Else ddlcategory.Enabled = False End If If Me.IsPostBack = False Then conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "Truncate Table rating_temp" da.SelectCommand.CommandType = Data.CommandType.Text da.SelectCommand.ExecuteNonQuery() End If GridView1.DataBind() End Sub

Page 78: Ultimate Recommender

Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click Dim i As Integer = 0 collection(i) = "s" conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "select distinct song_id from rating_temp" da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.Fill(ds, "rating_temp") For Each row As Data.DataRow In ds.Tables("rating_temp").Rows songs = songs + row.Item("song_id").ToString + "," Next Dim len As Integer = songs.Length songs = songs.Remove(len - 1) conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "Select distinct song_id,rating,id from rating_temp where song_id in (" + songs + ") order by id desc" da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.Fill(ds, "rating_temp1") For Each row As Data.DataRow In ds.Tables("rating_temp1").Rows 'Dim t As Int16 = ds.Tables("rating_temp1").Rows.Count song_id = ds.Tables("rating_temp1").Rows(i).Item("song_id") crating = ds.Tables("rating_temp1").Rows(i).Item("rating") If collection.Contains(song_id.ToString) Then Else user_id = CType(Me.Session("uid"), Integer) conn = New SqlConnection(cs) conn.Open() If crating >= 3 Then da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "insert into favorites (song_id,user_id) Values(" & song_id & "," & user_id & ")" da.SelectCommand.CommandType = Data.CommandType.Text da.SelectCommand.ExecuteNonQuery() End If conn = New SqlConnection(cs) conn.Open()

Page 79: Ultimate Recommender

da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "Select trating,UserCount from Songs where song_id = " & song_id & "" da.SelectCommand.CommandType = Data.CommandType.Text ds1 = New Data.DataSet da.Fill(ds1, "Songs") trating = ds1.Tables("Songs").Rows(0).Item("trating") usercount = ds1.Tables("Songs").Rows(0).Item("UserCount") usercount = usercount + 1 rating = (crating + trating) \ usercount trating = (crating + trating) conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "update Songs set Rating = " & rating & ", UserCount = " & usercount & ", trating = " & trating & ", crating = " & crating & " where song_id= " & song_id & "" da.SelectCommand.CommandType = Data.CommandType.Text da.SelectCommand.ExecuteNonQuery() collection(i) = song_id.ToString End If i = i + 1 Next'------------------------------------------------------------------------------------------------------------------------------------------------------------Crossover Begins Here------------------------------------------------------------------------------------------------------------------------------------------------------------------- conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn 'OLD_Query 31_5_12 'da.SelectCommand.CommandText = "Select Top 2(crating),song_id,Title,Tempo,Pitch,Octav,Root,Mode from Songs order by crating desc" 'Query for selecting 2 highest rating songs

'New_Query da.SelectCommand.CommandText = "Select crating,song_id,Title,Tempo,Pitch,Octav,Root,Mode from Songs where song_id in (select top 2(song_id) from rating_temp ORDER BY rating desc ) " 'Query for selecting 2 highest rating songs da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.Fill(ds, "songs1") Dim j As Integer = 0

Page 80: Ultimate Recommender

For Each row As Data.DataRow In ds.Tables("songs1").Rows If j = 0 Then Xt_tem = ds.Tables("songs1").Rows(0).Item("Tempo") 'X-Tempo Xt_pic = ds.Tables("songs1").Rows(0).Item("Pitch") 'X-Pitch Xt_oct = ds.Tables("songs1").Rows(0).Item("Octav") 'X-Octav Xt_root = ds.Tables("songs1").Rows(0).Item("Root") 'X-Root Xt_mod = ds.Tables("songs1").Rows(0).Item("Mode") 'X-Mode j = 1 ElseIf j = 1 Then Yt_tem = ds.Tables("songs1").Rows(1).Item("Tempo") 'Y-Tempo Yt_pic = ds.Tables("songs1").Rows(1).Item("Pitch") 'Y-Pitch Yt_oct = ds.Tables("songs1").Rows(1).Item("Octav") 'Y-Octav Yt_root = ds.Tables("songs1").Rows(1).Item("Root") 'Y-Root Yt_mod = ds.Tables("songs1").Rows(1).Item("Mode") 'Y-Mode End If Next '---------------------Distance Calculation Between Xt and Yt------------------------------------------- Di_tem = Math.Abs(Xt_tem - Yt_tem) 'Distance Between Xt_tem and Yt_tem Di_pic = Math.Abs(Xt_pic - Yt_pic) 'Distance Between Xt_pic and Yt_pic Di_oct = Math.Abs(Xt_oct - Yt_oct) 'Distance Between Xt_oct and Yt_oct Di_root = Math.Abs(Xt_root - Yt_root) 'Distance Between Xt_root and Yt_root Di_mod = Math.Abs(Xt_mod - Yt_mod) 'Distance Between Xt_mod and Yt_mod '------------------------------------------------------------------------------------------------------- '----------------------Calculating Intervals------------------------------------------------------------ min_tem = (Math.Min(Xt_tem, Yt_tem) - (alpha * Di_tem)) 'interval Between Xt_tem and Yt_tem (Min) min_pic = (Math.Min(Xt_pic, Yt_pic) - (alpha * Di_pic)) 'interval Between Xt_pic and Yt_pic (Min) min_oct = (Math.Min(Xt_oct, Yt_oct) - (alpha * Di_oct)) 'interval Between Between Xt_oct and Yt_oct (Min) min_root = (Math.Min(Xt_root, Yt_root) - (alpha * Di_root)) 'interval Between Xt_root and Yt_root (Min) min_mod = (Math.Min(Xt_mod, Yt_mod) - (alpha * Di_mod)) 'interval Between Xt_mod and Yt_mod (Min) max_tem = (Math.Max(Xt_tem, Yt_tem) - (alpha * Di_tem)) 'interval Between Xt_tem and Yt_tem (Max) max_pic = (Math.Max(Xt_oct, Yt_oct) - (alpha * Di_oct)) 'interval Between Xt_pic and Yt_pic (Max) max_oct = (Math.Max(Xt_tem, Yt_tem) - (alpha * Di_tem)) 'interval Between Xt_oct and Yt_oct (Max) max_root = (Math.Max(Xt_root, Yt_root) - (alpha * Di_root)) 'interval Between Xt_root and Yt_root (Max) max_mod = (Math.Max(Xt_mod, Yt_mod) - (alpha * Di_mod)) 'interval Between Xt_mod and Yt_mod (Max) '------------------------------------------------------------------------------------------------------- '--------------------Generating Offsprings of each chromosome Randomly---------------------------------- Randomize()

Page 81: Ultimate Recommender

X_offsprings_tem = CDbl((max_tem * Rnd()) + min_tem) 'X offsprings of Tempo X_offsprings_pic = CDbl((max_pic * Rnd()) + min_pic) 'X offsprings of Pitch X_offsprings_oct = CDbl((max_oct * Rnd()) + min_oct) 'X offsprings of Octav X_offsprings_root = CDbl((max_root * Rnd()) + min_root) 'X offsprings of Root X_offsprings_mod = CDbl((max_mod * Rnd()) + min_mod) 'X offsprings of Mode Y_offsprings_tem = CDbl((max_tem * Rnd()) + min_tem) 'Y offsprings of Tempo Y_offsprings_pic = CDbl((max_pic * Rnd()) + min_pic) 'Y offsprings of Picth Y_offsprings_oct = CDbl((max_oct * Rnd()) + min_oct) 'Y offsprings of Octav Y_offsprings_root = CDbl((max_root * Rnd()) + min_root) 'Y offsprings of Root Y_offsprings_mod = CDbl((max_mod * Rnd()) + min_mod) 'Y offsprings of Mode

'------------------------------------------------------------------------------------------------------------------------------------------------------------Crossover Ends Here--------------------------------------------------------------------------------------------------------------------------------------------------------------

'---------------------------------Euclidean Distance Formula----------------------- tem_dist = Math.Sqrt((X_offsprings_tem - Y_offsprings_tem) ^ 2) pic_dist = Math.Sqrt((X_offsprings_pic - Y_offsprings_pic) ^ 2) oct_dist = Math.Sqrt((X_offsprings_oct - Y_offsprings_oct) ^ 2) root_dist = Math.Sqrt((X_offsprings_root - Y_offsprings_root) ^ 2) mod_dist = Math.Sqrt((X_offsprings_mod - Y_offsprings_mod) ^ 2)

conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn If CheckBox1.Checked Then da.SelectCommand.CommandText = "Select song_id,category,Tempo,Pitch,Octav,Root,Mode from Songs where category='" & ddlcategory.SelectedValue & "'" Else da.SelectCommand.CommandText = "Select song_id,category,Tempo,Pitch,Octav,Root,Mode from Songs" End If da.SelectCommand.CommandType = Data.CommandType.Text ds = New Data.DataSet da.Fill(ds, "songs_master") For Each row As Data.DataRow In ds.Tables("songs_master").Rows song_id = row.Item("song_id") tempo = row.Item("Tempo") pitch = row.Item("Pitch") octav = row.Item("Octav") root = row.Item("Root") mode = row.Item("Mode")

Page 82: Ultimate Recommender

tem_diff = Math.Abs(tem_dist - tempo) pic_diff = Math.Abs(pic_dist - pitch) oct_diff = Math.Abs(oct_dist - octav) root_diff = Math.Abs(root_dist - root) mod_diff = Math.Abs(mod_dist - mode)

total_diff = tem_diff + pic_diff + oct_diff + root_diff + mod_diff

conn = New SqlConnection(cs) conn.Open() da = New SqlDataAdapter da.SelectCommand = New SqlCommand da.SelectCommand.Connection = conn da.SelectCommand.CommandText = "update Songs set diff = " & total_diff & " where song_id = " & song_id & "" da.SelectCommand.CommandType = Data.CommandType.Text da.SelectCommand.ExecuteNonQuery() Next

SqlDataSource1.SelectCommand = "" SqlDataSource1.SelectCommand = "SELECT [song_id], [Artist], [Title], [Category], [Tempo], [Pitch], [Octav], [Root], [Mode], [UserCount], [Rating], [song_path],[diff] FROM [Songs] order by [diff] " SqlDataSource1.DataBind() GridView1.DataBind() If CheckBox1.Checked Then Response.Redirect("recommend.aspx?cat=" & ddlcategory.SelectedValue & "&flag=" & CheckBox1.Checked) Else Response.Redirect("recommend.aspx?cat=" & ddlcategory.SelectedValue & "&flag=" & CheckBox1.Checked) End If End Sub

Protected Sub GridView1_RowCreated(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowCreated If (e.Row.RowType = DataControlRowType.DataRow) Then

e.Row.Attributes.Add("onmouseover", "this.className='OnOver'") e.Row.Attributes.Add("onmouseout", "this.className='OnOut'")

End If End SubEnd ClassWeb.config<?xml version="1.0"?><!-- Note: As an alternative to hand editing this file you can use the web admin tool to configure settings for your application. Use the Website->Asp.Net Configuration option in Visual Studio.

Page 83: Ultimate Recommender

A full list of settings and comments can be found in machine.config.comments usually located in \Windows\Microsoft.Net\Framework\v2.x\Config --><configuration>

<configSections><sectionGroup name="system.web.extensions"

type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>

<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>

<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>

<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>

<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>

</sectionGroup></sectionGroup>

</sectionGroup></configSections><appSettings>

<add key="connection_string" value="Initial Catalog=genetic1_db;Data Source=Justin-PC;Integrated Security=SSPI;pooling=false;Trusted_Connection=true"/>

</appSettings><connectionStrings>

Page 84: Ultimate Recommender

<add name="genetic_dbConnectionString" connectionString="Data Source=Justin-PC;Initial Catalog=genetic1_db;Integrated Security=True" providerName="System.Data.SqlClient"/>

</connectionStrings><system.web>

<httpRuntime executionTimeout="240" maxRequestLength="20480"/><!--

Set compilation debug="true" to insert debugging symbols into the compiled page. Because this affects performance, set this value to true only during development.

Visual Basic options: Set strict="true" to disallow all data type conversions where data loss can occur. Set explicit="true" to force declaration of all variables. -->

<compilation debug="true" strict="false" explicit="true"><assemblies>

<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

<add assembly="System.Web.Extensions.Design, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

<add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>

<add assembly="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies>

</compilation><pages>

<namespaces><clear/><add namespace="System"/><add namespace="System.Collections"/><add namespace="System.Collections.Generic"/><add namespace="System.Collections.Specialized"/><add namespace="System.Configuration"/><add namespace="System.Text"/><add namespace="System.Text.RegularExpressions"/><add namespace="System.Linq"/><add namespace="System.Xml.Linq"/><add namespace="System.Web"/><add namespace="System.Web.Caching"/><add namespace="System.Web.SessionState"/><add namespace="System.Web.Security"/>

Page 85: Ultimate Recommender

<add namespace="System.Web.Profile"/><add namespace="System.Web.UI"/><add namespace="System.Web.UI.WebControls"/><add namespace="System.Web.UI.WebControls.WebParts"/><add namespace="System.Web.UI.HtmlControls"/>

</namespaces><controls>

<add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

<add tagPrefix="asp" namespace="System.Web.UI.WebControls" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

<add tagPrefix="ajaxtoolkit" namespace="AjaxControlToolkit" assembly="AjaxControlToolKit"/>

</controls></pages><!--

The <authentication> section enables configuration of the security authentication mode used by ASP.NET to identify an incoming user. -->

<authentication mode="Windows"/><!--

The <customErrors> section enables configuration of what to do if/when an unhandled error occurs during the execution of a request. Specifically, it enables developers to configure html error pages to be displayed in place of a error stack trace.

<customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm"> <error statusCode="403" redirect="NoAccess.htm" /> <error statusCode="404" redirect="FileNotFound.htm" /> </customErrors> -->

<httpHandlers><remove verb="*" path="*.asmx"/><add verb="*" path="*.asmx" validate="false"

type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>

</httpHandlers><httpModules>

Page 86: Ultimate Recommender

<add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

</httpModules></system.web><system.codedom>

<compilers><compiler language="c#;cs;csharp" extension=".cs" warningLevel="4"

type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

<providerOption name="CompilerVersion" value="v3.5"/><providerOption name="WarnAsError" value="false"/>

</compiler><compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"

warningLevel="4" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

<providerOption name="CompilerVersion" value="v3.5"/><providerOption name="OptionInfer" value="true"/><providerOption name="WarnAsError" value="false"/>

</compiler></compilers>

</system.codedom><!--

The system.webServer section is required for running ASP.NET AJAX under Internet Information Services 7.0. It is not necessary for previous version of IIS. -->

<system.webServer><validation validateIntegratedModeConfiguration="false"/><modules>

<remove name="ScriptModule"/><add name="ScriptModule" preCondition="managedHandler"

type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

</modules><handlers>

<remove name="WebServiceHandlerFactory-Integrated"/><remove name="ScriptHandlerFactory"/><remove name="ScriptHandlerFactoryAppServices"/><remove name="ScriptResource"/><add name="ScriptHandlerFactory" verb="*" path="*.asmx"

preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

<add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd"

Page 87: Ultimate Recommender

type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

</handlers></system.webServer><runtime>

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1" appliesTo="v2.0.50727"><dependentAssembly>

<assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35"/>

<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>

</dependentAssembly><dependentAssembly>

<assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35"/>

<bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="3.5.0.0"/>

</dependentAssembly></assemblyBinding></runtime>

</configuration>

Page 88: Ultimate Recommender

References

Books

Journal Papers

[2] Christos K. Datsikas, George S. Tombras,“A Framework for dynamic car and taxipoolswith the use of Positioning Systems”, 2009.

[3] Chi-Chung Tao, Dynamic Taxi-Sharing Service Using Intelligent Transportation System Technologies, Dept. of Transp. Manage., Tamkang Univ., Taipei; Wireless Communications, Networking and Mobile Computing, 2007/ WiCom 2007.

[4]HC Chiu, WR Lee, YP Chao, "The development of 3G in Japan and Taiwan" - International Journal of Mobile Communications, 2006

[5] Petros Lalos, G. S. Tombras, “Introducing JOUNBO - A new advanced online Journal and Newspaper Browser”, Journal of Multimedia, Academy Publisher, 4/2008.

Websites

[13] Clam (2011). C++ library for audio and music.URL: http://clam-project.org. [14] Cohen WW, Fan W (2000). Web-collaborative filtering: recommending music by crawling the web. Comput. Networks, 33(1): 685-698. URL: http://www9.org/w9cdrom/266/266.html


Top Related