<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Data Mining the City - Medium]]></title>
        <description><![CDATA[Graduate course at Columbia University GSAPP, taught by Violet Whitney and TA Zeid Ghawi - Medium]]></description>
        <link>https://medium.com/data-mining-the-city?source=rss----83d0ee56d2e1---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Data Mining the City - Medium</title>
            <link>https://medium.com/data-mining-the-city?source=rss----83d0ee56d2e1---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 09:19:28 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/data-mining-the-city" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[The New Domestic]]></title>
            <link>https://medium.com/data-mining-the-city/the-new-domestic-5fde4f13cd94?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/5fde4f13cd94</guid>
            <category><![CDATA[unity]]></category>
            <category><![CDATA[dataminingthecity]]></category>
            <dc:creator><![CDATA[Thoughts.Ideas.You]]></dc:creator>
            <pubDate>Thu, 19 Dec 2019 01:33:14 GMT</pubDate>
            <atom:updated>2019-12-19T01:33:14.269Z</atom:updated>
            <content:encoded><![CDATA[<p><em>by Shailee Kothari and Sritoma Bhattacharjee</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*F55agTDvPlnfoTJlFIOLfw.gif" /></figure><blockquote>“When one looks at the floor plan, it is supposed to describe human relationships, in which the addition of windows, doors, walls, and stairs are utilized to first divide the space, then selectively reunite the inhabited space.” Architecture is designed to provide a format for social life, and the dynamic interactions that happen in constantly pacing time. — Robin Evans in Figures, doors &amp; passages.</blockquote><p><strong>The Hypothesis — Background</strong></p><p>The project aims to rethink the design of future neighborhoods in order to improve the quality of life, while tackling the challenges of rising inequality, densification, increasing costs and globalization in cities today.</p><p>Due to rapid urbanization, there has been a resurgence of co-living all over the world. The high prices of real estate and an increasingly solitary lifestyle are leading people to seek new ways of living.</p><p>Cities that we inhabit now are the result of the huge transformation in our lives with the arrival of industrialization, the separation of the place of living and the place of work, and the idea that you leave the home to work However, our houses and neighborhoods should be changing in relation to the fact that 80 per cent of young professionals are working from their beds (wall street journal article).</p><p>Now workers coordinating across different time zones are returning to a flexible sleep schedule, in order to make conference calls with offices on the other side of the world. Shifting attitudes to sleep are already creating new typologies of urban architecture such as new hotels that have sleeping pods, are very reminiscent of the Archigram designs of the 1960s,”</p><p>Community living also brings into question the relationship of men, women and children in today’s world as theorized by Dolores Hayden in The Grand Domestic Revolution through domestic reorganization and creating community services.</p><p>The combination of smart-phone technology, the flexible and un-tethered nature of work, the sharing economy, and the rise of co-living has given the “horizontal architecture” of the bed a new significance, claims Architectural Historian Beatriz Colomina.</p><h4><strong>What are we doing — a new way of organizing apartments.</strong></h4><p>The co-living models being tried out today concern themselves only with space optimization. The potential, instead, it seems would lie in being able to optimize space through<em> time</em>. It thus presents itself as a spatial as well as a temporal problem. An agent based scheduling and space organization simulation has been attempted to unlock the potential of such an approach.</p><p><strong>Ownership</strong></p><p>Historically, certain sects of people have been treated in inhuman ways. When it comes to ownership of land and space, they fall into a great disadvantage as ownership of land and space is very much a factor of time. It is an asset that builds through generations and can be used to build other assets. The implications thus multiply significantly. With this ever widening chasm between the rich and the poor, cities are becoming increasingly polarized. With a belief that space shouldn’t be a commodity to be owned by people, the project explores the possibility of housing with zero ownership and tests it against varying levels of privacy.</p><p><strong>Privacy</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8BLTEFX6hMqPbq4aA6XTAQ.jpeg" /></figure><p>The simulation looks at the use of space in flux based on contemporary variable lifestyle and its inefficiency in occupation of space over different time cycles. Leading to a layered privacy concept where the owner would be able to regulate the sharing ratio of the apartment. Four scenarios are considered:</p><ol><li>100% Ownership and 100% Privacy — each person has their own apartment</li><li>100% Ownership and 0% Privacy — current co-living model</li><li>0% Ownership and 100% Privacy — each room is always occupied by 1 person</li><li>0% Ownership and 0% Privacy — each room is always occupied as per the room limit.</li></ol><p>Living: 4 persons</p><p>Kitchen and Dining: 2 persons</p><p>Study: 2 persons</p><p>Bedroom: 2 persons</p><p>Bathroom: 1 person</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nvLnjo1cdcTninjXSHiJAg.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*slBP_DK58HSKjQTj2HIEog.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1JSodHkD-wwVEVfKHhWSBQ.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*n1XqxDeZwP-YrbHytjKXiQ.gif" /></figure><p><strong>Schedule</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*LmtjkEyNvNx3wayVz8QLsw.gif" /></figure><p>A hypothetical schedule is created for a nurse who has night shifts, an accountant with a 9–5 job, an architecture student who spends sleepless nights at school, a retiree who spends most of his/her time at home and a techie who works from home. These schedules are then multiplied to get 20 schedules for twenty people.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hVMsWS-vtK0pMn0tvD26aQ.jpeg" /></figure><p><strong>Adjacency</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tF_rzH3KXT5tlc-VUH9ThA.jpeg" /></figure><p>We outlined different rules for generating floor plans based on the privacy and sharedness level and using the transitions from space to space in the schedule. The corridor is always generated first followed by the living room and the bedroom, the bathroom and the kitchen and then the study. In the model where there is no ownership and no sharedness, the corridor is the seed which connects to the living area or bedroom area. This scenario led to the some of the entries being from the bathroom where people freshen up before entering their living room or bedroom. The kitchen is connected to the living room and bedroom, and the study is connected to the bedroom and living room. The bathroom turns out to be the key in all spaces and they all benefit from being connected to the bathroom. Another model was created where all spaces get accessed from the corridor and thus the corridor becomes the space of encounter.</p><p>Since the normal rules for housing such as light/ventilation or efficiency of vertical circulation of services were not the concern here, they were not considered in generating the floor plan.</p><p><strong>Simulation Vignettes</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*slBP_DK58HSKjQTj2HIEog.gif" /><figcaption><strong>SCENARIO 1</strong>: 100% PRIVACY &amp; 100% OWNERSHIP</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*1JSodHkD-wwVEVfKHhWSBQ.gif" /><figcaption>SCENARIO 2: 100% PRIVACY &amp; 0% OWNERSHIP</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wHUcnEfGtysQTTMlngcKIQ.gif" /><figcaption>SCENARIO 2 Modified Floor Plan: 100% PRIVACY &amp; 0% OWNERSHIP</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*n1XqxDeZwP-YrbHytjKXiQ.gif" /><figcaption>SCENARIO 3: 0% PRIVACY &amp; 0% OWNERSHIP</figcaption></figure><p><strong>How It Works</strong></p><p>The schedules of the different people that are going to live in the apartment are input into an excel sheet. A csv file is created from it which is then turned into arrays in c#. An app can be used by people to input their schedules into the system and generate floor plans in real time.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sU7t8l5ESsMWN-zj6j2oPw.jpeg" /></figure><p>For the sake of simplicity, hours of the day are taken in two hour intervals. Each array contains the spaces that are being used at that hour. The simulation starts from 8 AM and generates all the spaces required at that time. It then goes onto 10 AM and generates only those spaces which are not in the previous array.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9OMGp7CRsmADNLENvNNLfg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*sHUMorR8qWohFGnQKSuMHw.jpeg" /><figcaption>SCHEDULE AS EXCEL</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/841/1*rs9z5-k8rI4SeAmoHt96GQ.jpeg" /><figcaption>SCHEDULE AS CSV INPUT — INTERACTIVE</figcaption></figure><p><strong>People Per Square Foot</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WFcQUKMD--kGsRfRYQp61Q.png" /><figcaption>AVERAGE RENT IN MANHATTAN source <a href="https://www.rentcafe.com/average-rent-market-trends/us/ny/manhattan/">https://www.rentcafe.com/average-rent-market-trends/us/ny/manhattan/</a></figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*On3MfrWm3QBA8MCz9KGGIA.gif" /></figure><p><strong>CAPITALIST VS COMMUNIST LIVING</strong></p><p>The project, through a changed ownership model, proposes a more affordable way of living. One would thus only be paying for the space that they occupy for that specific period of time. People would move from space to space while their phone detects the change in space at the threshold (door) and charges them for it and registers it in the system. The varying affordability allows us to create a society where all are allowed equal access to space vs today’s capitalist rental market.</p><p>Even though the proposed designs focus on creating reasonable cost and density, they create opportunities for intellectual conglomeration by means of this density through spaces that can force or stimulate interactions. Through such a controlled system, the owners can control the interactions people have in space.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7gHQIo-r-ujor4oBovYt-g.gif" /><figcaption>DESIGN SOCIAL INTERACTIONS BASED ON NEEDS</figcaption></figure><p><strong>What Do We Learn</strong></p><p>By controlling the privacy and ownership, we create varying floor plans, each which can accommodate a different density of residents. The same number of residents occupy a considerably more area when there is ownership and no sharedness, compared to where there is no ownership and no sharedness. This area occupied reduces even further when there is no ownership and no sharedness. It was thus found that the quality of life can be made better by scheduling the occupancy of the different spaces instead of cramming multiple residents into one space or making the space itself smaller.</p><p><strong>Further Thoughts</strong></p><p>The traditional notion of a “living room” or a “bedroom” cannot be used to design housing in the future. The way people use these spaces is going to be drastically different in a zero ownership model and it thus lends itself to a lot more experimentation and thought.</p><p>Implications of such a project would be an equilibrium of work timings where the population in a city works for different third of the day.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*SElOkK3EQlPp4VLk-xdQ3A.gif" /><figcaption>NEIGHBORHOODS BASED ON EQUALITY INSTEAD OF SEGREGATION</figcaption></figure><p>The system can begin as a equal living neighborhood instead of mirroring the current power segregation in society.</p><p>This model of living could lead to a reduction in the contemporary social isolation epidemic.</p><p>Finally this shared concept can be extended for the reuse of other objects like cellphones,clothes, furniture, etc.</p><h4>Script Vignettes</h4><p><strong>Scenario 3 Function</strong></p><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>public class RoomSpawning : MonoBehaviour</pre><pre>{</pre><pre>public GameObject LivingRoom;</pre><pre>public GameObject KitchenDiningRoom;</pre><pre>public GameObject StudyRoom;</pre><pre>public GameObject BathRoom;</pre><pre>public GameObject BedRoom;</pre><pre>public GameObject Corridor;</pre><pre>string[] eightAM = { &quot;Living&quot;, &quot;Bedroom&quot;, &quot;Bathroom&quot;, &quot;Bathroom&quot;, &quot;Study&quot; , &quot;Living&quot;, &quot;Bedroom&quot;, &quot;Bathroom&quot;, &quot;Bathroom&quot;, &quot;Study&quot; , &quot;Living&quot;, &quot;Bedroom&quot;, &quot;Bathroom&quot;, &quot;Bathroom&quot;, &quot;Study&quot; ,&quot;Living&quot;, &quot;Bedroom&quot;, &quot;Bathroom&quot;, &quot;Bathroom&quot;, &quot;Study&quot; };</pre><pre>string[] tenAM = { &quot;Living&quot;, &quot;Bed&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; , &quot;Living&quot;, &quot;Bed&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; ,&quot;Living&quot;, &quot;Bed&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot;, &quot;Living&quot;, &quot;Bed&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; , &quot;Living&quot;, &quot;Bed&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; };</pre><pre>string[] twelvePM = { &quot;Bath&quot;, &quot;Bath&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; , &quot;Bath&quot;, &quot;Bath&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; , &quot;Bath&quot;, &quot;Bath&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot;, &quot;Bath&quot;, &quot;Bath&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot;  };</pre><pre>string[] twoPM = { &quot;Study&quot;, &quot;Kitchen&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; , &quot;Study&quot;, &quot;Kitchen&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; , &quot;Study&quot;, &quot;Kitchen&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot;, &quot;Study&quot;, &quot;Kitchen&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; };</pre><pre>string[] fourPM = { &quot;Living&quot;, &quot;Study&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot; ,&quot;Living&quot;, &quot;Study&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot;, &quot;Living&quot;, &quot;Study&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot;, &quot;Living&quot;, &quot;Study&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Out&quot;  };</pre><pre>string[] sixPM = { &quot;Bath&quot;, &quot;Study&quot;, &quot;Bath&quot;, &quot;Kitchen&quot;, &quot;Out&quot; , &quot;Bath&quot;, &quot;Study&quot;, &quot;Bath&quot;, &quot;Kitchen&quot;, &quot;Out&quot; , &quot;Bath&quot;, &quot;Study&quot;, &quot;Bath&quot;, &quot;Kitchen&quot;, &quot;Out&quot;, &quot;Bath&quot;, &quot;Study&quot;, &quot;Bath&quot;, &quot;Kitchen&quot;, &quot;Out&quot; };</pre><pre>string[] eightPM = { &quot;Bed&quot;, &quot;Study&quot;, &quot;Kitchen&quot;, &quot;Living&quot;, &quot;Out&quot; ,&quot;Bed&quot;, &quot;Study&quot;, &quot;Kitchen&quot;, &quot;Living&quot;, &quot;Out&quot; , &quot;Bed&quot;, &quot;Study&quot;, &quot;Kitchen&quot;, &quot;Living&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Study&quot;, &quot;Kitchen&quot;, &quot;Living&quot;, &quot;Out&quot;  };</pre><pre>string[] tenPM = { &quot;Bed&quot;, &quot;Study&quot;, &quot;Out&quot;, &quot;Bath&quot;, &quot;Out&quot; , &quot;Bed&quot;, &quot;Study&quot;, &quot;Out&quot;, &quot;Bath&quot;, &quot;Out&quot; , &quot;Bed&quot;, &quot;Study&quot;, &quot;Out&quot;, &quot;Bath&quot;, &quot;Out&quot; , &quot;Bed&quot;, &quot;Study&quot;, &quot;Out&quot;, &quot;Bath&quot;, &quot;Out&quot;  };</pre><pre>string[] twelveAM = { &quot;Bed&quot;, &quot;Bath&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Out&quot; , &quot;Bed&quot;, &quot;Bath&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Out&quot; , &quot;Bed&quot;, &quot;Bath&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Out&quot; , &quot;Bed&quot;, &quot;Bath&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Out&quot; };</pre><pre>string[] twoAM = { &quot;Bed&quot;, &quot;Living&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bath&quot; , &quot;Bed&quot;, &quot;Living&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bath&quot;, &quot;Bed&quot;, &quot;Living&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bath&quot;, &quot;Bed&quot;, &quot;Living&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bath&quot; };</pre><pre>string[] fourAM = { &quot;Bath&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bed&quot; , &quot;Bath&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bed&quot;, &quot;Bath&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bed&quot; , &quot;Bath&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bed&quot;  };</pre><pre>string[] sixAM = { &quot;Kitchen&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bath&quot; ,&quot;Kitchen&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bath&quot; , &quot;Kitchen&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bath&quot; , &quot;Kitchen&quot;, &quot;Bed&quot;, &quot;Out&quot;, &quot;Bed&quot;, &quot;Bath&quot;   };</pre><pre>int LivingBuilt = 0;</pre><pre>int LivingNeed = 0;</pre><pre>int KitchenBuilt = 0;</pre><pre>int KitchenNeed = 0;</pre><pre>int BedBuilt = 0;</pre><pre>int BedNeed = 0;</pre><pre>int BathBuilt = 0;</pre><pre>int BathNeed = 0;</pre><pre>int StudyBuilt = 0;</pre><pre>int StudyNeed = 0;</pre><pre>// Start is called before the first frame update</pre><pre>void Start()</pre><pre>{}</pre><pre>// Update is called once per frame</pre><pre>void FixedUpdate()</pre><pre>{</pre><pre>List&lt;string&gt; schedule = new List&lt;string&gt;();</pre><pre>//eightAM Array adding spaces to the List</pre><pre>foreach (string Living in eightAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>LivingBuilt++;</pre><pre>break;</pre><pre>}</pre><pre>foreach (string Bedroom in eightAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>break;</pre><pre>}</pre><pre>foreach (string Bathroom in eightAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>break;</pre><pre>}</pre><pre>foreach (string Study in eightAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>break;</pre><pre>}</pre><pre>foreach (string Kitchen in eightAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>break;</pre><pre>}</pre><pre>foreach (string Living in tenAM)</pre><pre>{</pre><pre>if schedule.Count &quot;Living&quot; &gt;= LivingBuilt</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>LivingBuilt++</pre><pre>else don&#39;t do anything</pre><pre>}</pre><pre>foreach (string Bedroom in tenAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in tenAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in tenAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in tenAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in twelvePM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in twelvePM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in twelvePM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in twelvePM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in twelvePM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in twoPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in twoPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in twoPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in twoPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in twoPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in fourPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in fourPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in fourPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in fourPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in fourPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in sixPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in sixPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in sixPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in sixPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in sixPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in eightPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in eightPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in eightPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in eightPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in eightPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in tenPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in tenPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in tenPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in tenPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in tenPM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in twelveAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in twelveAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in twelveAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in twelveAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in twelveAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in twoAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in twoAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in twoAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in twoAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in twoAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in fourAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in fourAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in fourAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in fourAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in fourAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>foreach (string Living in sixAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Living&quot;);</pre><pre>}</pre><pre>foreach (string Bedroom in sixAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bedroom&quot;);</pre><pre>}</pre><pre>foreach (string Bathroom in sixAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Bathroom&quot;);</pre><pre>}</pre><pre>foreach (string Study in sixAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Study&quot;);</pre><pre>}</pre><pre>foreach (string Kitchen in sixAM)</pre><pre>{</pre><pre>schedule.Add(&quot;Kitchen&quot;);</pre><pre>}</pre><pre>var CorridorPosition = new Vector3(10, 0, 0);</pre><pre>var LivingPosition = CorridorPosition + new Vector3(10, 0, 0);</pre><pre>var BedPosition = CorridorPosition + new Vector3(10, 0, 10);</pre><pre>Vector3 BathPosition = LivingPosition + BedPosition ;</pre><pre>var StudyPosition</pre><pre>var KitchenPosition</pre><pre>var NewLivingPosition = CorridorPosition + new Vector3(10, 0, 0);</pre><pre>var NewBedPosition = CorridorPosition + new Vector3(10, 0, 0);</pre><pre>var NewStudyPosition</pre><pre>var NewBathPosition</pre><pre>var NewKitchenPosition</pre><pre>Instantiate(Corridor, CorridorPosition, Quaternion.identity);</pre><pre>foreach (string Living in schedule)</pre><pre>{</pre><pre>Instantiate(LivingRoom, LivingPosition, Quaternion.identity);</pre><pre>break;</pre><pre>}</pre><pre>foreach (string Bedroom in schedule)</pre><pre>{</pre><pre>Instantiate(BedRoom, BedPosition, Quaternion.identity);</pre><pre>break;</pre><pre>}</pre><pre>foreach (string Bathroom in schedule)</pre><pre>{</pre><pre>Instantiate(BathRoom, BathPosition, Quaternion.identity);</pre><pre>break;</pre><pre>}</pre><pre>foreach (string Kitchen in schedule)</pre><pre>{</pre><pre>Instantiate(KitchenDiningRoom, new Vector3(0, 0, 0), Quaternion.identity);</pre><pre>break;</pre><pre>}</pre><pre>foreach (string Study in schedule)</pre><pre>{</pre><pre>Instantiate(StudyRoom, new Vector3(0, 0, 0), Quaternion.identity);</pre><pre>break;</pre><pre>}</pre><pre>schedule.Clear();</pre><pre>}</pre><pre><strong>}</strong></pre><p><strong>Linking CSV file Function</strong></p><pre>for (int i = 0; i &lt; data.Length - 1; i++)</pre><pre>{</pre><pre>string[] row = data[i].Split(new char[] { &#39;,&#39; });</pre><pre>if (row[1] != &quot;&quot;)</pre><pre>{</pre><pre>Schedule s = new Schedule();</pre><pre>int.TryParse(row[0], out s.id);</pre><pre>s.name = row[1];</pre><pre>s.room = row[2];</pre><pre>s.room = row[3];</pre><pre>s.room = row[4];</pre><pre>s.room = row[5];</pre><pre>schedules.Add(s);</pre><pre>}</pre><h4>References</h4><p>Evans, R. (1997). <em>Translations from drawing to building</em>. Cambridge, MA: MIT Press.</p><p>https://steemit.com/architecture/@twotoedsloth/domesticspaceasfiguresdoorsandpassagesbyrobinevans-uw0rl7v1ny</p><p>http://work.antonandirene.com/onesharedhouse/2/</p><p>https://emthesis.files.wordpress.com/2008/11/evans-figures-doors-and-passages.pdf</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5fde4f13cd94" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/the-new-domestic-5fde4f13cd94">The New Domestic</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Connected Living — Shared Economies]]></title>
            <link>https://medium.com/data-mining-the-city/connected-living-shared-economies-502cb57b4203?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/502cb57b4203</guid>
            <category><![CDATA[dataminingthecity]]></category>
            <category><![CDATA[2019-time]]></category>
            <dc:creator><![CDATA[Thoughts.Ideas.You]]></dc:creator>
            <pubDate>Thu, 19 Dec 2019 01:30:30 GMT</pubDate>
            <atom:updated>2019-12-19T01:30:30.849Z</atom:updated>
            <content:encoded><![CDATA[<h3>Connected Living — Shared Economies</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tUKg-7qavozJw1wbbXn-iw.gif" /><figcaption>Social isolation is a fast growing epidemic today, it has been recognized to have physical, mental and consequences.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uTP2k_8I2esgg6is1T5VSA.jpeg" /></figure><p><strong>ARGUMENT :</strong> To Manipulate and optimize the spatial qualities of residential towers in order to improve the social environment while reducing the cost of living.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6wQNq-Lqa8k_jB8nOsLLcQ.gif" /><figcaption><strong>CREATING A COMMUNITY BASED ON MATCHING NEEDS</strong></figcaption></figure><p><strong>SYSTEM A</strong> : Optimized Coop living to allow for people to meet neighbors. The neighbors would be optimized by matching needs and tasks. Allowing for a shared convenience and growing familiarity.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*H1RoRcUrC2bBmYbMm3G9oA.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rkfrbkE4fwZ7Psqbai-96A.gif" /><figcaption>DECREASE IN THE PERSONAL COST OF LIVING AND ISOLATION</figcaption></figure><p><strong>SYSTEM B:</strong> This system would lead to lower personal costs due to shared living and occupants would pay per sm per hour of spaces used.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Yinmi4fXXdTJIBXcB9B4yA.gif" /><figcaption>NEIGHBORHOODS BASED ON EQUALITY INSTEAD OF SEGREGATION</figcaption></figure><p><strong>SYSTEM C:</strong> The system can begin as a equal living neighborhood instead of mirroring the current power segregation in society.</p><p><strong>UNITY SNIPPET VIGNETTES:</strong> The simulation shows random spawning of multiple rooms around a central room based on the door location of the previous room. The intent is to develop the random spawning into a spawning based on user needs to eventually become a residential floor plan.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*7rk_Z-SMUinc4b4JqSDwfw.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*la5qcsdIS00k47dtHmaW5g.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*sN4M7NeJEDSJSycuAU8y1g.gif" /></figure><p>ROOM SPAWNING SCRIPT</p><pre>/* Based on code from Random Dungeon Genrator Tutorial -<a href="https://youtu.be/eR74EjkA_4s">https://youtu.be/eR74EjkA_4s</a> */</pre><pre>using System.Collections;<br>using System.Collections.Generic;<br>using UnityEngine;<br><br>public class RoomSpawner : MonoBehaviour {<br><br> public int openingDirection;<br> // 1 --&gt; need bottom door<br> // 2 --&gt; need top door<br> // 3 --&gt; need left door<br> // 4 --&gt; need right door<br><br><br> private RoomTemplates templates;<br> private int rand;<br> public bool spawned = false;<br><br> public float waitTime = 4f;<br><br> void Start(){<br>  Destroy(gameObject, waitTime);<br>  templates = GameObject.FindGameObjectWithTag(&quot;Rooms&quot;).GetComponent&lt;RoomTemplates&gt;();<br>  Invoke(&quot;Spawn&quot;, 0.1f);<br> }<br><br><br> void Spawn(){<br>  if(spawned == false){<br>   if(openingDirection == 1){<br>    // Need to spawn a room with a BOTTOM door.<br>    rand = Random.Range(0, templates.bottomRooms.Length);<br>    Instantiate(templates.bottomRooms[rand], transform.position, templates.bottomRooms[rand].transform.rotation);<br>   } else if(openingDirection == 2){<br>    // Need to spawn a room with a TOP door.<br>    rand = Random.Range(0, templates.topRooms.Length);<br>    Instantiate(templates.topRooms[rand], transform.position, templates.topRooms[rand].transform.rotation);<br>   } else if(openingDirection == 3){<br>    // Need to spawn a room with a LEFT door.<br>    rand = Random.Range(0, templates.leftRooms.Length);<br>    Instantiate(templates.leftRooms[rand], transform.position, templates.leftRooms[rand].transform.rotation);<br>   } else if(openingDirection == 4){<br>    // Need to spawn a room with a RIGHT door.<br>    rand = Random.Range(0, templates.rightRooms.Length);<br>    Instantiate(templates.rightRooms[rand], transform.position, templates.rightRooms[rand].transform.rotation);<br>   }<br>   spawned = true;<br>  }<br> }<br><br> void OnTriggerEnter2D(Collider2D other){<br>  if(other.CompareTag(&quot;SpawnPoint&quot;)){<br>   if(other.GetComponent&lt;RoomSpawner&gt;().spawned == false &amp;&amp; spawned == false){<br>    Instantiate(templates.closedRoom, transform.position, Quaternion.identity);<br>    Destroy(gameObject);<br>   } <br>   spawned = true;<br>  }<br> }<br>}</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=502cb57b4203" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/connected-living-shared-economies-502cb57b4203">Connected Living — Shared Economies</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Final Project: Travel Greener]]></title>
            <link>https://medium.com/data-mining-the-city/final-project-travel-greener-40b0b3cfef31?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/40b0b3cfef31</guid>
            <category><![CDATA[dataminingthecity]]></category>
            <dc:creator><![CDATA[Haoran Zhang]]></dc:creator>
            <pubDate>Thu, 19 Dec 2019 01:29:45 GMT</pubDate>
            <atom:updated>2019-12-19T01:29:45.764Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Authors: Haoran Zhang, Qi(David) Lin, Xiyu Chen, Yao Yao</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*YOoQFUhtvSGPpYefx2X1uw.gif" /><figcaption>Busy Traffic in New York City</figcaption></figure><h3><strong>Background</strong></h3><p>In today’s world, transportation is an integral part of us. However, current transportation systems are accompanied by a variety of issues, including global warming, environmental degradation, health effects, and greenhouse gas emissions. In fact, the transport sector will account for 23% of global greenhouse gas emissions from burning fossil fuels. Road transport accounts for the largest share of total greenhouse gas emissions at 75%, and this trend is expected to increase in the future.</p><p>Green transportation is critical because it can reduce the burden on the natural resources of fossil fuels such as oil, natural gas, and petroleum on the planet. Another reason why green transportation is essential is that the use of fossil fuels poses a considerable threat to the environment and humanity itself. When the smoke from a moving vehicle is inhaled by humans, it increases the risk of people suffering from diseases such as asthma. Green transportation can alleviate this problem. Also, green transit can save a lot of money we spend on gasoline.</p><h3>Simulation Ideas</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*rV04t0Ae8raU8tAdSkxNoA.gif" /><figcaption>Increasing Oil Prices</figcaption></figure><p>In the final project, we simulate how policy changes (1. oil tax, 2. Citi bike membership discount, 3. bus monthly card, 4.subway price) will influence the use of transportation modes (car, bike, bus, and subway) of citizens in a specific area. This simulation can be used as a helpful tool to help policymakers better predict the changes in people’s travel patterns after changing one or more transportation policies. Policymakers can use this tool to develop sound policies to enable people in this region to travel more efficiently and encourage people to use more environmentally friendly travel methods.</p><h4>Parameters (Input):</h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AcznyknuBTzaTQ2AbBV8BA.jpeg" /><figcaption>Different Transportation Modes in NYC</figcaption></figure><ul><li>Changes in oil tax</li><li>Citi Bike membership discount</li><li>Bus monthly card discount</li><li>Subway discount</li></ul><h4>Result (Output):</h4><p>The number of people using bicycles, buses, subways, and cars (different transportation mode)</p><h4><strong>Diagram</strong></h4><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*eXDKGmu6XEnuEnGK" /><figcaption>Diagram Methodology, Drawn by the Author</figcaption></figure><h4><strong>Simulation examples</strong></h4><p>The following is one of the simulation examples of how we use our tool to predict the results.</p><ul><li>In the first group, firstly, we set the discount of bike membership, bus monthly card and subway ticket at the lowest level (0%), and set the oil tax at 5% to see the simulation result.</li><li>Then we change the oil tax from 5% to 20% to see the change of transportation users.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Wj3GXVPE8KyfUAV3icpSZQ.png" /><figcaption>Processing in Unity</figcaption></figure><h3>Method</h3><h4><strong>Literature Review</strong></h4><p>Investigate the impact of different transportation policies on the use of transportation modes.</p><h4><strong>Multiple linear regression</strong></h4><p>For each transportation mode, we conduct multiple linear regression to get their regression formula. To better achieve the reality of simulation, we add random number function in Unity. The formulas are as follows:</p><p>Bike = 1.08a+3.21b-1.32c-1.90d+e1+σ</p><p>Bus = 1.33a-1.31b+3.51c-1.02d+e2+σ</p><p>Subway = 1.09a-1.82b-1.50c+4.02d+e3+σ</p><p>Car = -3.34a -1.52b-1.87c-1.49d+e4+σ</p><p>a: oil tax [1%, 15%]</p><p>b: bicycle membership discount [1%, 20%]</p><p>c: monthly bus card discount [1%, 20%]</p><p>d: subway discount [1%, 20%]</p><p>e1-e4: constant</p><p>σ: random number</p><p>Illustration of the multiple linear regression process</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/579/0*u0NQj3N9x878FXgx" /></figure><h4><strong>Visualization in Unity</strong></h4><p>We visualize our ideas in Unity. There are four “destination”: car, bike, bus, and subway. People are produced based on our regression model. Every time people arrive at the destination, we add one number.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FBZMwYjytk0M%3Ffeature%3Doembed&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DBZMwYjytk0M&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FBZMwYjytk0M%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/1eb6a41324d949d4b5ff43dcd76f0fe2/href">https://medium.com/media/1eb6a41324d949d4b5ff43dcd76f0fe2/href</a></iframe><h3>Evaluation of our tools</h3><p>Advantage:</p><p>By using this tool, policymakers can easily accurately predict the changes in people’s travel modes after changing one or more transportation policies.</p><p>Disadvantage:</p><p>The simulation system is based on the New York City transportation system. New York City has a relatively developed public transportation system. It may not be suitable for other cities.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*cPe2lms-yu2mhkZSP4sspw.gif" /></figure><h4><strong>Reference</strong></h4><p>Fernández L., J. E., de Cea Ch., J., &amp; de Grange C., L. (2005). Production costs, congestion, scope and scale economies in urban bus transportation corridors. <em>Transportation Research Part A: Policy and Practice</em>, <em>39</em>(5), 383–403. <a href="https://doi.org/10.1016/j.tra.2004.08.003">https://doi.org/10.1016/j.tra.2004.08.003</a></p><p>Frankena, M. W. (1981). The effects of alternative urban transit subsidy formulas. <em>Journal of Public Economics</em>, <em>15</em>(3), 337–348. <a href="https://doi.org/10.1016/0047-2727(81)90015-3">https://doi.org/10.1016/0047-2727(81)90015-3</a></p><p>Gaudry, M. J. I. (1980). A study of aggregate bi-modal urban travel supply, demand and network behavior using simultaneous equations with autoregressive residuals. <em>Transportation Research Part B: Methodological</em>, <em>14</em>(1–2), 29–58. <a href="https://doi.org/10.1016/0191-2615(80)90031-4">https://doi.org/10.1016/0191-2615(80)90031-4</a></p><p>Glaister, S., &amp; Lewis, D. (1978). An integrated fares policy for transport in London. <em>Journal of Public Economics</em>, <em>9</em>(3), 341–355. <a href="https://doi.org/10.1016/0047-2727(78)90015-4">https://doi.org/10.1016/0047-2727(78)90015-4</a></p><p>MTA. (2018). <em>Ridership Trends</em>.</p><p>Saggar, R. K. (2009). Economies of scale in bus transport: An indian case study*: bus transport in india. <em>Bulletin of the Oxford University Institute of Economics &amp; Statistics</em>, <em>30</em>(4), 341–346. <a href="https://doi.org/10.1111/j.1468-0084.1968.mp30004005.x">https://doi.org/10.1111/j.1468-0084.1968.mp30004005.x</a></p><p>Modes and benefits of green transportation. (2013, April 29). Retrieved December 16, 2019, from Conserve Energy Future website: <a href="https://www.conserve-energy-future.com/name=modes-and-benefits-of-green-transportation">https://www.conserve-energy-future.com/name=modes-and-benefits-of-green-transportation</a></p><p>Green transportation. (2017, October 25). Retrieved December 16, 2019, from Ierek news website: <a href="https://www.ierek.com/news/index.php/2017/10/25/green-transportation/">https://www.ierek.com/news/index.php/2017/10/25/green-transportation/</a></p><p>Final energy consumption in Europe by mode of transport [Indicator Assessment]. (n.d.). Retrieved December 16, 2019, from European Environment Agency website: <a href="https://www.eea.europa.eu/data-and-maps/indicators/transport-final-energy-consumption-by-mode/assessment-9">https://www.eea.europa.eu/data-and-maps/indicators/transport-final-energy-consumption-by-mode/assessment-9</a></p><pre>// UI/UX <br>// Slider<br>// SliderValueToText<br>// </pre><pre>using UnityEngine;</pre><pre>using System.Collections;</pre><pre>using UnityEngine.UI;</pre><pre>public class SliderValueToText : MonoBehaviour</pre><pre>{</pre><pre>public Slider sliderUI;</pre><pre>private Text textSliderValue;</pre><pre>void Start()</pre><pre>{</pre><pre>textSliderValue = GetComponent&lt;Text&gt;();</pre><pre>ShowSliderValue();</pre><pre>}</pre><pre>public void ShowSliderValue()</pre><pre>{</pre><pre>string sliderMessage = sliderUI.value + “%”;</pre><pre>textSliderValue.text = sliderMessage;</pre><pre>}</pre><pre>}</pre><pre>------------------------------------------------------------------</pre><pre>// MonoBehaviour</pre><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>using UnityEngine.UI;</pre><pre>public class bike_receiver : MonoBehaviour</pre><pre>{</pre><pre>// Start is called before the first frame update</pre><pre>public Text countText;</pre><pre>private Rigidbody rb;</pre><pre>private int count;</pre><pre>void Start()</pre><pre>{</pre><pre>rb = GetComponent&lt;Rigidbody&gt;();</pre><pre>count = 0;</pre><pre>SetCountText();</pre><pre>}</pre><pre>//void FixedUpdate()</pre><pre>//{</pre><pre>//}</pre><pre>void OnTriggerEnter(Collider other)</pre><pre>{</pre><pre>if (other.gameObject.CompareTag(&quot;Pick Up&quot;))</pre><pre>{</pre><pre>other.gameObject.SetActive(false);</pre><pre>count = count + 1;</pre><pre>SetCountText();</pre><pre>}</pre><pre>}</pre><pre>void SetCountText()</pre><pre>{</pre><pre>countText.text = &quot;Bike User Number Count:&quot; + count.ToString();</pre><pre>}</pre><pre>}</pre><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>public class bike : MonoBehaviour</pre><pre>{</pre><pre>public GameObject wall;</pre><pre>// Start is called before the first frame update</pre><pre>void Start()</pre><pre>{</pre><pre>}</pre><pre>// Update is called once per frame</pre><pre>void Update()</pre><pre>{</pre><pre>float speed = 10;</pre><pre>wall.transform.localPosition = Vector3.MoveTowards(gameObject.transform.localPosition, new Vector3(-7, 0, 30), speed * Time.deltaTime);</pre><pre>}</pre><pre>}</pre><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>using UnityEngine.UI;</pre><pre>public class PlayerController : MonoBehaviour</pre><pre>{</pre><pre>// Start is called before the first frame update</pre><pre>public Text countText;</pre><pre>private Rigidbody rb;</pre><pre>private int count;</pre><pre>void Start()</pre><pre>{</pre><pre>rb = GetComponent&lt;Rigidbody&gt;();</pre><pre>count = 0;</pre><pre>SetCountText();</pre><pre>}</pre><pre>//void FixedUpdate()</pre><pre>//{</pre><pre>//}</pre><pre>void OnTriggerEnter(Collider other)</pre><pre>{</pre><pre>if (other.gameObject.CompareTag(&quot;Pick Up&quot;))</pre><pre>{</pre><pre>other.gameObject.SetActive(false);</pre><pre>count = count + 1;</pre><pre>SetCountText();</pre><pre>}</pre><pre>}</pre><pre>void SetCountText()</pre><pre>{</pre><pre>countText.text = &quot;Count:&quot; + count.ToString();</pre><pre>}</pre><pre>}</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=40b0b3cfef31" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/final-project-travel-greener-40b0b3cfef31">Final Project: Travel Greener</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Home Cooked Recipes]]></title>
            <link>https://medium.com/data-mining-the-city/home-cooked-recipes-d605949d2b52?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/d605949d2b52</guid>
            <category><![CDATA[dataminingthecity]]></category>
            <dc:creator><![CDATA[Katherine Xiong]]></dc:creator>
            <pubDate>Thu, 19 Dec 2019 01:29:33 GMT</pubDate>
            <atom:updated>2019-12-19T01:29:33.665Z</atom:updated>
            <content:encoded><![CDATA[<p>Hajir Al Khusaibi, Sirenia Kim, Katherine Ye Xiong</p><p>As the decade comes to a close, we are battling two very important problems.</p><p>#1. A staggering accumulation of landfill that is <strong>unable</strong> to be<strong> recycled</strong>, <strong>composted</strong>, or <strong>destroyed through energy recovery</strong>.</p><p>#2. The overwhelming<em> </em>percentage of the global population <strong>lacking basic human needs</strong>: namely, houses to call homes (nearly, half a million people in the US).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CUAZue8thliH9nbHtPPDhQ.png" /></figure><p><em>Could we harness the better parts of one crisis to alleviate another?</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/828/1*nVyDwLl5laE7SSXJ8nkiKg.png" /><figcaption>Gregory Kloehn is an Oakland artist and creator of the <a href="http://www.homelesshomesproject.org/">Homeless Homes Project</a>. He uses found materials (including illegally dumped items) to build unique structures at a cost of less than $100.</figcaption></figure><p><strong>Our proposal: </strong>to create a recipe generator that will present a new way of recycling landfill materials.</p><p>First, we identified different categories of material, according to the EPA:</p><blockquote>“EPA refers to trash, or municipal solid waste (MSW), as various items consumers throw away after they are used. These items include <strong><em>bottles</em></strong><em> and </em><strong><em>corrugated boxes, food, grass clippings, sofas, computers, tires</em></strong> <em>and </em><strong><em>refrigerators</em></strong>. However, MSW does not include everything that is landfilled in <a href="https://www.epa.gov/landfills/municipal-solid-waste-landfills#whatis">MSW, or nonhazardous, landfills</a>, such as construction and demolition (C&amp;D) debris, municipal wastewater sludge, and other non-hazardous industrial wastes.”</blockquote><p>Second, we organized each material type to correspond to its ability to be an architecture component.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Md2lDmwglT8Z-qrjqjlCcw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YAruIgQ7h4TEe6yco4TcsA.png" /></figure><p>We added a separate variable that dictated how many of each item was needed to produce (1) roof or wall etc. And a way for the simulation to notify the user on whether they had enough material.</p><p>After this research, we inputted these parameters into Unity, through different methods.</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2F90cAgWySb0c%3Ffeature%3Doembed&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D90cAgWySb0c&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2F90cAgWySb0c%2Fhqdefault.jpg&amp;key=a19fcc184b9711e1b4764040d3dc5c07&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/7b1bf81d8b00ad58038a237c16400ee4/href">https://medium.com/media/7b1bf81d8b00ad58038a237c16400ee4/href</a></iframe><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*Kom17K8F24Mv1IvK0xEhbg.gif" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/706/1*AXIuEcg3_eS-KswwG6CNFA.png" /></figure><p>Through this simulation, we hope to:</p><ul><li>destigmatize waste</li><li>question the society’s need for vast amounts of domestic space</li><li>give regular civilians agency through the ability to DIY their own homes and write their own recipes</li></ul><p><strong>CODES</strong></p><blockquote>Code for UI notification of material quantity:</blockquote><pre>using UnityEngine;</pre><pre>using System.Collections;</pre><pre>using UnityEngine.UI;</pre><pre>public class ViewModel : MonoBehaviour</pre><pre>{</pre><pre>public Text buttonText;</pre><pre>public Text changeText;</pre><pre>public Dropdown selectDropdown;</pre><pre>public void Text_Changed(string newText)</pre><pre>{</pre><pre>float temp = float.Parse(newText);</pre><pre>if (selectDropdown.value == 1)</pre><pre>{</pre><pre>if (temp &lt; 3)</pre><pre>{</pre><pre>changeText.text = &quot;You need to collect more materials!&quot;;</pre><pre>}</pre><pre>else</pre><pre>{</pre><pre>changeText.text = &quot;Home Sweet Home!&quot;;</pre><pre>}</pre><pre>}</pre><pre>else</pre><pre>{</pre><pre>if (selectDropdown.value == 2)</pre><pre>{</pre><pre>if (temp &lt; 50)</pre><pre>{</pre><pre>changeText.text = &quot;You need to collect more materials!&quot;;</pre><pre>}</pre><pre>else</pre><pre>{</pre><pre>changeText.text = &quot;Home Sweet Home!&quot;;</pre><pre>}</pre><pre>}</pre><pre>else</pre><pre>{</pre><pre>if (selectDropdown.value == 3)</pre><pre>{</pre><pre>if (temp &lt; 10)</pre><pre>{</pre><pre>changeText.text = &quot;You need to collect more materials!&quot;;</pre><pre>}</pre><pre>else</pre><pre>{</pre><pre>changeText.text = &quot;Home Sweet Home!&quot;;</pre><pre>}</pre><pre>}</pre><pre>}</pre><pre>}</pre><pre>}</pre><pre>}</pre><blockquote>for the random generation of buildings:</blockquote><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>[CreateAssetMenu(menuName = &quot;Building Settings&quot;)]</pre><pre>public class BuildingGeneratorSettings : ScriptableObject</pre><pre>{</pre><pre>public Vector2Int dimensionRange;</pre><pre>public int maxTiles;</pre><pre>public bool divideWings = true;</pre><pre>[Range(1, 256)]</pre><pre>public int minWingSizeToDiv;</pre><pre>[Range(1, 128)]</pre><pre>public int wingDivMargin;</pre><pre>[Range(0f, 1f)]</pre><pre>public float wingDivProbabilityBase = 0.3f;</pre><pre>[Range(0f, 1f)]</pre><pre>public float wingDivProbabilityIncrease = 0.1f;</pre><pre>public int maxStories = 2;</pre><pre>public bool limitStoriesByWings = true;</pre><pre>public bool divideRooms = true;</pre><pre>[Range(1, 256)]</pre><pre>public int minRoomSizeToDiv;</pre><pre>[Range(1, 128)]</pre><pre>public int roomDivMargin;</pre><pre>[Range(0f, 1f)]</pre><pre>public float roomDivProbabilityBase = 0.3f;</pre><pre>[Range(0f, 1f)]</pre><pre>public float roomDivProbabilityIncrease = 0.1f;</pre><pre>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fspBBq4W14av87zdx8P_NQ.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=d605949d2b52" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/home-cooked-recipes-d605949d2b52">Home Cooked Recipes</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AirBnb: Customized Decision Tree and Recommendation Algorithm]]></title>
            <link>https://medium.com/data-mining-the-city/airbnb-customized-decision-tree-and-recommendation-algorithm-a553cc202700?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/a553cc202700</guid>
            <category><![CDATA[time]]></category>
            <category><![CDATA[android]]></category>
            <category><![CDATA[research]]></category>
            <category><![CDATA[simulation]]></category>
            <dc:creator><![CDATA[Guangwei Ren]]></dc:creator>
            <pubDate>Thu, 21 Nov 2019 12:27:00 GMT</pubDate>
            <atom:updated>2019-11-21T12:27:00.085Z</atom:updated>
            <content:encoded><![CDATA[<p>AirBnb is an online marketing for arranging homestays during a trip. However, the main interaction on the web page is through the price as the symbol showing each location. A lot of tourists don’t put the consideration of cost as first priority. So this proposal is to bring up a new interactive system for users to customize their own priority for choosing a place to stay overnight and the evaluation for level of recommendation is based on this.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vrskHr8ftkvUt7rxqoip1Q.png" /><figcaption>The web page of AirBnb when exploring the stays</figcaption></figure><p>The system diagram for the new recommendation system is composed by this:</p><p><strong>I want to have a trip.</strong></p><p><strong>Considering money, location, space and service,</strong></p><p><strong>How can I customize the recommendation?</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VpK1oTWHuX2AePsEG5SGuw.jpeg" /><figcaption>Factors in Priority</figcaption></figure><p>These four decision elements all have other detailed choice, either to have a parameter affecting the recommendation level or give a threshold value that excludes the choices users don’t want.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hdqwLLYfxx2e87_NHtXwIw.jpeg" /><figcaption>Division of Factors</figcaption></figure><p>In the actual UI system, the user can drag the bars to prioritize their choices. And the detailed divisions have checkbox that tell the user if he/she want this condition. The recommendation level is shown by the brightness and saturation of agents. Also when some choices are highly recommended, there will be a text box shows the detailed information (price, occupancy and review) to the user.</p><p>Below are the three gifs recording how the decision tree influences the result of recommendation. First gif is about the single element of influence. Second is telling how the combination of different powers affect the result. The last one shows what happens when changing the priority in decision tree.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FWioIDhxs-D4z3y2FSy7Ew.gif" /><figcaption>Influence of Single Factor</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*K-QEtR3GLl2G9CvR2Xk_Zw.gif" /><figcaption>Combination of Different Factors</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KJ-R9a1tGBng_EDEsotJUw.gif" /><figcaption>Influence of Priority</figcaption></figure><p>Code Snippet:</p><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>using UnityEngine.UI;</pre><pre>public class AirbnbScript : MonoBehaviour</pre><pre>{</pre><pre>static private List&lt;float&gt; ScoresHolder=new List&lt;float&gt;();</pre><pre>public float Price;</pre><pre>public int HoldGuests;</pre><pre>public float StarNo;</pre><pre>private float ToTarget=10000000;</pre><pre>private float ToStation=10000000;</pre><pre>static private float HighestScore=0;</pre><pre>private bool IsExcluded=false;</pre><pre>private float MyScore=0;</pre><pre>GameObject Info;</pre><pre>Canvas InfoBar;</pre><pre>Text myText;</pre><pre>private int MyCode;</pre><pre>void Start()</pre><pre>{</pre><pre>CalculateDistance();</pre><pre>if(!CheckValidity())</pre><pre>{</pre><pre>Object.Destroy(this);</pre><pre>Debug.Log(“An Invalid Agent Detected!”);</pre><pre>}</pre><pre>ScoresHolder.Add(MyScore);</pre><pre>MyCode=ScoresHolder.Count-1;</pre><pre>Info=new GameObject(“Information”);</pre><pre>InfoBar=Info.AddComponent&lt;Canvas&gt;();</pre><pre>InfoBar.renderMode=RenderMode.WorldSpace;</pre><pre>InfoBar.referencePixelsPerUnit=1;</pre><pre>Info.transform.position=this.transform.position;</pre><pre>Info.transform.rotation=this.transform.rotation;</pre><pre>Info.transform.Rotate(90.0f,0,0);</pre><pre>RectTransform Z=InfoBar.GetComponent&lt;RectTransform&gt;();</pre><pre>Z.sizeDelta=new Vector2(100,50);</pre><pre>Info.transform.position=this.transform.position+new Vector3(0,0.5f,18f);</pre><pre>myText = Info.AddComponent&lt;Text&gt;();</pre><pre>myText.transform.localScale=new Vector3(0.5f,0.5f,0.5f);</pre><pre>myText.fontSize=14;</pre><pre>myText.color=Color.white;</pre><pre>myText.alignment=TextAnchor.MiddleCenter;</pre><pre>myText.font=Resources.GetBuiltinResource(typeof(Font), “Arial.ttf”) as Font;</pre><pre>}</pre><pre>void CalculateDistance()</pre><pre>{</pre><pre>GameObject Target=GameObject.FindGameObjectWithTag(“Target”);</pre><pre>ToTarget=Vector3.Magnitude(this.transform.position-Target.transform.position);</pre><pre>GameObject[] Stations=GameObject.FindGameObjectsWithTag(“ToStation”);</pre><pre>for(int i=0;i&lt;Stations.Length;i++)</pre><pre>{</pre><pre>if(Vector3.Magnitude(this.transform.position-Stations[i].transform.position)&lt;ToStation)</pre><pre>{</pre><pre>ToStation=Vector3.Magnitude(this.transform.position-Stations[i].transform.position);</pre><pre>}</pre><pre>}</pre><pre>}</pre><pre>bool CheckValidity()</pre><pre>{</pre><pre>if(Price&lt;=0||HoldGuests&gt;10||HoldGuests&lt;=0||StarNo&gt;5||StarNo&lt;0||ToTarget&lt;0||ToStation&lt;0)</pre><pre>return false;</pre><pre>return true;</pre><pre>}</pre><pre>private void Update()</pre><pre>{</pre><pre>MyScore=GetLocationScore()+GetMoneyScore()+GetSpaceScore()+GetServiceScore();</pre><pre>if(IsExcluded)</pre><pre>MyScore=0;</pre><pre>ScoresHolder[MyCode]=MyScore;</pre><pre>//Debug.Log(MyScore);</pre><pre>HighestScore=0;</pre><pre>for(int i=0;i&lt;ScoresHolder.Count;i++)</pre><pre>{</pre><pre>if(ScoresHolder[i]&gt;HighestScore)</pre><pre>HighestScore=ScoresHolder[i];</pre><pre>}</pre><pre>ShadeTheAgent();</pre><pre>if(MyScore/HighestScore&gt;0.9f)</pre><pre>{</pre><pre>if(myText.text==””)</pre><pre>{</pre><pre>myText.text = “$”+Price+”\n”+HoldGuests+” Guests”+”\n”+StarNo+” ※”;</pre><pre>}</pre><pre>}</pre><pre>else</pre><pre>{</pre><pre>myText.text=””;</pre><pre>}</pre><pre>}</pre><pre>void ShadeTheAgent()</pre><pre>{</pre><pre>if(HighestScore&gt;0)</pre><pre>{</pre><pre>float x=MyScore/HighestScore;</pre><pre>{</pre><pre>this.gameObject.GetComponent&lt;Renderer&gt;().material.color=new Color(x*x*x*1f,x*x*x/4,x*x*x*0.6f,1);</pre><pre>this.gameObject.GetComponentInChildren&lt;Light&gt;().color=new Color(x*x*x*1f,x*x*x/2,x*x*x*0.8f,1);</pre><pre>this.gameObject.GetComponentInChildren&lt;Light&gt;().intensity=x*x*55;</pre><pre>this.gameObject.GetComponentInChildren&lt;Light&gt;().range=x*x*17;</pre><pre>}</pre><pre>}</pre><pre>else</pre><pre>{</pre><pre>this.gameObject.GetComponent&lt;Renderer&gt;().material.color=new Color(0,0,0,1);</pre><pre>this.gameObject.GetComponentInChildren&lt;Light&gt;().color=new Color(0,0,0,1);</pre><pre>this.gameObject.GetComponentInChildren&lt;Light&gt;().intensity=0;</pre><pre>}</pre><pre>}</pre><pre>float GetLocationScore()</pre><pre>{</pre><pre>float parameter=0.0f;</pre><pre>if(GameObject.Find(“Iv4”).transform.position.y==980)</pre><pre>{</pre><pre>parameter=10.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv4”).transform.position.y==860)</pre><pre>{</pre><pre>parameter=6.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv4”).transform.position.y==740)</pre><pre>{</pre><pre>parameter=3.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv4”).transform.position.y==620)</pre><pre>{</pre><pre>parameter=1.0f;</pre><pre>}</pre><pre>float PartScore=0;</pre><pre>GameObject Downtown, Station;</pre><pre>Toggle DowntownIsOn, StationIsOn;</pre><pre>Downtown=GameObject.Find(“Downtown”);</pre><pre>Station=GameObject.Find(“Subway”);</pre><pre>DowntownIsOn=Downtown.GetComponent&lt;Toggle&gt;();</pre><pre>StationIsOn=Station.GetComponent&lt;Toggle&gt;();</pre><pre>if(DowntownIsOn.isOn)</pre><pre>{</pre><pre>PartScore+=Mathf.Sqrt(1/ToTarget)*10;</pre><pre>}</pre><pre>if(StationIsOn.isOn)</pre><pre>{</pre><pre>PartScore+=Mathf.Sqrt(1/ToStation)*5;</pre><pre>}</pre><pre>return PartScore*parameter;</pre><pre>}</pre><pre>float GetMoneyScore()</pre><pre>{</pre><pre>float parameter=0.0f;</pre><pre>if(GameObject.Find(“Iv3”).transform.position.y==980)</pre><pre>{</pre><pre>parameter=16.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv3”).transform.position.y==860)</pre><pre>{</pre><pre>parameter=9.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv3”).transform.position.y==740)</pre><pre>{</pre><pre>parameter=4.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv3”).transform.position.y==620)</pre><pre>{</pre><pre>parameter=1.0f;</pre><pre>}</pre><pre>float PartScore=0;</pre><pre>GameObject Cheap, Value;</pre><pre>Toggle CheapIsOn, ValueIsOn;</pre><pre>Cheap=GameObject.Find(“Cheap”);</pre><pre>Value=GameObject.Find(“Value”);</pre><pre>CheapIsOn=Cheap.GetComponent&lt;Toggle&gt;();</pre><pre>ValueIsOn=Value.GetComponent&lt;Toggle&gt;();</pre><pre>if(CheapIsOn.isOn)</pre><pre>{</pre><pre>PartScore+=Mathf.Sqrt(10/Price);</pre><pre>}</pre><pre>if(ValueIsOn.isOn)</pre><pre>{</pre><pre>InputField input;</pre><pre>input=GameObject.Find(“MoneyBar”).GetComponent&lt;InputField&gt;();</pre><pre>float Bar = float.Parse(input.text);</pre><pre>if(Price&gt;=Bar)</pre><pre>IsExcluded=true;</pre><pre>else</pre><pre>IsExcluded=false;</pre><pre>}</pre><pre>else</pre><pre>IsExcluded=IsExcluded||false;</pre><pre>return PartScore*parameter;</pre><pre>}</pre><pre>float GetSpaceScore()</pre><pre>{</pre><pre>float parameter=0.0f;</pre><pre>if(GameObject.Find(“Iv2”).transform.position.y==980)</pre><pre>{</pre><pre>parameter=16.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv2”).transform.position.y==860)</pre><pre>{</pre><pre>parameter=9.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv2”).transform.position.y==740)</pre><pre>{</pre><pre>parameter=4.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv2”).transform.position.y==620)</pre><pre>{</pre><pre>parameter=1.0f;</pre><pre>}</pre><pre>float PartScore=0;</pre><pre>GameObject Large, Guests;</pre><pre>Toggle LargeIsOn, GuestsIsOn;</pre><pre>Large=GameObject.Find(“Large”);</pre><pre>Guests=GameObject.Find(“Guests”);</pre><pre>LargeIsOn=Large.GetComponent&lt;Toggle&gt;();</pre><pre>GuestsIsOn=Guests.GetComponent&lt;Toggle&gt;();</pre><pre>if(LargeIsOn.isOn)</pre><pre>{</pre><pre>float guests=HoldGuests;</pre><pre>PartScore+=Mathf.Sqrt(guests/10);</pre><pre>}</pre><pre>if(GuestsIsOn.isOn)</pre><pre>{</pre><pre>InputField input;</pre><pre>input=GameObject.Find(“GuestBar”).GetComponent&lt;InputField&gt;();</pre><pre>int Bar = int.Parse(input.text);</pre><pre>if(HoldGuests&lt;Bar)</pre><pre>IsExcluded=true;</pre><pre>else</pre><pre>IsExcluded=false;</pre><pre>}</pre><pre>else</pre><pre>IsExcluded=IsExcluded||false;</pre><pre>return PartScore*parameter;</pre><pre>}</pre><pre>float GetServiceScore()</pre><pre>{</pre><pre>float parameter=0.0f;</pre><pre>if(GameObject.Find(“Iv1”).transform.position.y==980)</pre><pre>{</pre><pre>parameter=16.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv1”).transform.position.y==860)</pre><pre>{</pre><pre>parameter=9.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv1”).transform.position.y==740)</pre><pre>{</pre><pre>parameter=4.0f;</pre><pre>}</pre><pre>if(GameObject.Find(“Iv1”).transform.position.y==620)</pre><pre>{</pre><pre>parameter=1.0f;</pre><pre>}</pre><pre>float PartScore=0;</pre><pre>GameObject Star, Rating;</pre><pre>Toggle StarIsOn, RatingIsOn;</pre><pre>Star=GameObject.Find(“Star”);</pre><pre>Rating=GameObject.Find(“Rating”);</pre><pre>StarIsOn=Star.GetComponent&lt;Toggle&gt;();</pre><pre>RatingIsOn=Rating.GetComponent&lt;Toggle&gt;();</pre><pre>if(StarIsOn.isOn)</pre><pre>{</pre><pre>PartScore+=StarNo/5;</pre><pre>}</pre><pre>if(RatingIsOn.isOn)</pre><pre>{</pre><pre>InputField input;</pre><pre>input=GameObject.Find(“RatingBar”).GetComponent&lt;InputField&gt;();</pre><pre>float Bar = float.Parse(input.text);</pre><pre>if(StarNo&lt;Bar)</pre><pre>IsExcluded=true;</pre><pre>else</pre><pre>IsExcluded=false;</pre><pre>}</pre><pre>else</pre><pre>IsExcluded=IsExcluded||false;</pre><pre>return PartScore*parameter;</pre><pre>}</pre><pre>}</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a553cc202700" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/airbnb-customized-decision-tree-and-recommendation-algorithm-a553cc202700">AirBnb: Customized Decision Tree and Recommendation Algorithm</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Shared Street]]></title>
            <link>https://medium.com/data-mining-the-city/shared-street-f39e1dbf55e5?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/f39e1dbf55e5</guid>
            <category><![CDATA[poem]]></category>
            <category><![CDATA[research]]></category>
            <dc:creator><![CDATA[Rw]]></dc:creator>
            <pubDate>Thu, 21 Nov 2019 12:26:57 GMT</pubDate>
            <atom:updated>2019-11-21T12:26:57.649Z</atom:updated>
            <content:encoded><![CDATA[<p>Rui Wang</p><h3><strong>A Poem</strong></h3><p>Roaring cars，</p><p>running pedestrians，</p><p>and decreasing greens;</p><p>How could we live in a shared street</p><p>with changing participants?</p><h3><strong>Poetry+</strong></h3><p>Power:</p><p>The street is always under control,</p><p>The speed of the cars;</p><p>The space for parking;</p><p>The red lights control;</p><p>The design of the path;</p><p>The street is the mixture of different rules exerted on it.</p><h3>Poetry in Motion</h3><ol><li>Competitive Shared Street System</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*n8rqlAngCLoTVmTcllWWYw.gif" /><figcaption>Street System Occupied by Different Participants</figcaption></figure><p>2. How participants are involved</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*20UwydSiFueoE5Xvq-l-0Q.gif" /><figcaption>Participants’ behavior and their influence</figcaption></figure><p>3. Example of how one participant influence an another</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ui3MFymdEZvtFcMU03vnXg.gif" /><figcaption>Framework Diagram</figcaption></figure><h3><strong>Gif Variation</strong></h3><ol><li>Change the sequence of the time- Red light, speed of pedestrians and cars</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lqBDkc13Q3thRXH1EATBWA.gif" /><figcaption>Time-By lowering the speed of cars, the pedestrians may run the red lights to save time</figcaption></figure><p>2. Change the power- the rules like the path of the cars and the design patterns of the street; set punishment for violations</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Lp9cubnh0TlquCDGxVwQtw.gif" /><figcaption>Power- Road patterns controlled by desingers and rules</figcaption></figure><p>3. Change the money- Increasing or lowering the parking fees</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*doe8QLDMkARhbThC533kew.gif" /><figcaption>Money: High parking fee would decrease the car use</figcaption></figure><h3><strong>Coded Poetry Vignette</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*JygpSRqKxUoV7-9RD0C0_Q.gif" /><figcaption>Fast-speed street</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*6suLUGyjxVSOevi0Gt-X0A.gif" /><figcaption>Low-speed street</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*F_ZVyT42k_Vw1lO7ZdHx4Q.png" /><figcaption>What would happen if the road pattern is changed?</figcaption></figure><pre>using System.Collections;<br>using System.Collections.Generic;<br>using System.Numerics;<br>using UnityEngine;<br>using Vector3 = UnityEngine.Vector3;<br><br>public class <strong>move </strong>: MonoBehaviour<br>{<br>public GameObject <strong>car1</strong>;<br><br>public GameObject <strong>car2</strong>;<br><br>public GameObject <strong>car3</strong>;<br><br>public GameObject <strong>car4</strong>;<br><br>public GameObject <strong>car5</strong>;<br>public GameObject <strong>pedestrian</strong>;<br>public float <strong>speed</strong>;<br>private float timer = 0.0f;<br>public float <strong>speed1</strong>;<br><br>public float <strong>speed2</strong>;<br><br>public float <strong>speed3</strong>;<br>    <em>// Start is called before the first frame update<br>    </em>void Start()<br>    {<br>        <br><br>    }<br><br>    <em>// Update is called once per frame<br>    </em>void Update()<br>    {<br>        pedestrian.transform.position+= Time.deltaTime*2*Vector3.forward;<br>        car4.transform.position += Time.deltaTime * speed * Vector3.left;<br>                car5.transform.position += Time.deltaTime * speed * Vector3.right;<br>                car1.transform.position += Time.deltaTime * speed1 * Vector3.left;<br>                Vector3 pedestrianPosition = pedestrian.transform.position;<br>                Vector3 car1Position = car1.transform.position;<br>                float distance1 = car1Position.x-pedestrianPosition.x;<br>                if  (distance1&lt;5 &amp;&amp; distance1&gt;0)<br>                {<br>                    speed1+=-20*Time.deltaTime;<br>                    if (speed1 &lt;= 0)<br>                    {<br>                        speed1 = 0;<br>                    }<br>        <br>                }<br>                <br>                car2.transform.position += Time.deltaTime * speed1 * Vector3.right;<br>                Vector3 car2Position = car2.transform.position;<br>                float distance2 = pedestrianPosition.x - car2Position.x;<br>                if  (distance2&lt;5)<br>                {<br>                    speed2+=-20*Time.deltaTime;<br>                    if (speed2 &lt;= 0)<br>                    {<br>                        speed2= 0;<br>                    }<br>                    <br>                }<br>                car3.transform.position += Time.deltaTime * speed3 * Vector3.right;<br>                                 Vector3 car3Position = car3.transform.position;<br>                                 float distance3 = car2Position.x - car3Position.x;<br>                                 if (distance3 &lt; 5)<br>                                 {<br>                                     speed3 += -20 * Time.deltaTime;<br>                                     if (speed3 &lt;= 0)<br>                                     {<br>                                         speed3 = 0;<br>                                     }<br>                                 }<br>                                 <br><br>    }<br>}</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f39e1dbf55e5" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/shared-street-f39e1dbf55e5">Shared Street</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Move to Target]]></title>
            <link>https://medium.com/data-mining-the-city/move-to-target-11452a33c146?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/11452a33c146</guid>
            <category><![CDATA[simulation]]></category>
            <category><![CDATA[dataminingthecity]]></category>
            <dc:creator><![CDATA[Yao Yao]]></dc:creator>
            <pubDate>Thu, 21 Nov 2019 12:26:27 GMT</pubDate>
            <atom:updated>2019-11-21T12:26:26.937Z</atom:updated>
            <content:encoded><![CDATA[<p>Datamining the City — <em>Individual Project</em></p><h4><strong>Poem~</strong></h4><p><em>-Before you have a target, you may often just wander.</em></p><p><em>-You can get to it faster if you become richer.</em></p><p>When we consider moving to a certain target, no matter a location or a moving spot. In some cases, it can be simplified as a chasing ball game. And there are many factors/parameters influence how we get to our destination, for example, we always try to arrive there faster, and the richer we are, the faster we can be.</p><h4>Agents Build</h4><p>Some times there is a decision tree frame.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/563/1*iccXPYC5l4Rqd384sQwnfA.jpeg" /></figure><p>Otherwise, we can have some factors that in a parallel structure to control the agent.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/563/1*M7qLBCxPYYo_021swXzhjA.jpeg" /></figure><p>It’s too early to say the more complex, the better the simulation is, but for this time we just based on a simple decision tree to do this.</p><h4>Simulation</h4><p>First, there is a basic simulation that is using a “typical” parameter set.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*Yv6t6YZvbZPic_5ZtuzLSQ.gif" /><figcaption>Move to Target</figcaption></figure><p>Then the “money” is changed, which means the moving speed of agents will increase when they are richer.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*-_hwZ_Co9ma73vgZKJ_9kA.gif" /><figcaption>Change the “Money”</figcaption></figure><p>And what if the attractivity of the targets? In real life, this could represent the willingness of moving to the destination.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*qoSAnGlhU6iiY_Or4MAF6w.gif" /><figcaption>Change the “Willingness”</figcaption></figure><p>The spatial limitation is also a factor. What if the targets are more likely to go to the edge area of the platform?</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*GHsbSim-G4FaxQdIAefncw.gif" /><figcaption>Going to “Edge Area”</figcaption></figure><h4>Code Vignette</h4><pre>using System.Collections;<br>using System.Collections.Generic;<br>using UnityEngine;</pre><pre>namespace BehaviorDesigner.Runtime.Tasks.Movement<br>{<br>[TaskCategory(&quot;AgentSystem&quot;)]<br>public Shared String tag;</pre><pre>[Tooltip(&quot;The speed of the agent&quot;)]<br>public SharedFloat speed;</pre><pre>[Tooltip(&quot;Search area&quot;)]<br>public SharedFloat search;</pre><pre>[Tooltip(&quot;Touched distance&quot;)]<br>public SharedFloat touchedDis;</pre><pre>private GameObject[] targetObjects;<br>private Vector3 prevDir;</pre><pre>public override void OnStart()<br>{<br>base.Onstart();</pre><pre>targetObjects = GameObject.FindGameObjectsWithTag(tag.Value);<br>}</pre><p>//Follow the target</p><pre>public override TaskeStatus OnUpdate()<br>{<br>if (target.Value == null)<br>}</pre><pre>var targetPosition = target.Value.transform.position;<br>if ((targetPosition - lastTargetPosition).magnitude &gt;= moveDistance.Value)<br>{<br>SetSestination(targetPosition);<br>lastTargetPosition = targetPosition;<br>hasMoved = true;<br>}<br>else<br>{<br>if  (hasMoved &amp;&amp; (targetPosition - transform.position).magnitude &lt; moveDistance.Value)<br>{<br>Stop();<br>hasMoved = false;<br>lastTargetPosition = targetPosition;<br>}<br>}<br>return TaskStatus.Running;<br>}</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=11452a33c146" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/move-to-target-11452a33c146">Move to Target</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[INFORMATION DISPERSION]]></title>
            <link>https://medium.com/data-mining-the-city/information-dispersion-fae976e0ae06?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/fae976e0ae06</guid>
            <category><![CDATA[data-mining-in-the-city]]></category>
            <category><![CDATA[research]]></category>
            <dc:creator><![CDATA[Joyce Zhou]]></dc:creator>
            <pubDate>Thu, 21 Nov 2019 12:26:24 GMT</pubDate>
            <atom:updated>2019-11-21T12:26:24.016Z</atom:updated>
            <content:encoded><![CDATA[<p>POEM:</p><p>with a quick flash of light</p><p>his phone notified him of more</p><p>picking it up and without thought</p><p>he swiped</p><p>right</p><p>Push notifications that pop up from your phone can be seen as a form of advertisement. In this instance, the poem is meant to point out how a notification from a dating app can cause people to make real life decisions (sometimes life altering) almost without thinking what one is doing or the repercussions it may have.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*zF6GKW6BYPy5SkZBbf3mYg.gif" /><figcaption>unsuspecting people just going through their everyday</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*jcL-4f5cdVmJNEejCd3xMQ.gif" /><figcaption>Targeted advertisements generated from data collected from you</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/480/1*KYWWTblw0wh2ejS0VaeZMQ.gif" /><figcaption>Targeted advertisements that then get translated to influence over your spending habits</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wNDTzJYSxphmKAyaheJ92w.gif" /><figcaption>a quick study of information dispersion generated by advertisements</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lrDp3Qb2P_akNX0G4ySbXw.gif" /><figcaption>simulation of data dispersion from three different forms of advertisement seen in the upper west side. (presence of storefronts, dedicated traditional ad space, “graffiti-ed” advertisement)</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*X7jpvaoSJKBS2vBHJYbKRA.gif" /><figcaption>Possible simulation of data/information dispersion if all advertisements were overseen by one group/ entity</figcaption></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=fae976e0ae06" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/information-dispersion-fae976e0ae06">INFORMATION DISPERSION</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Simulation: An Overnight Closure at MTA 42nd Street Station]]></title>
            <link>https://medium.com/data-mining-the-city/simulation-an-overnight-closure-at-mta-42nd-street-station-e4c92244b65d?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/e4c92244b65d</guid>
            <category><![CDATA[dataminingthecity]]></category>
            <dc:creator><![CDATA[Haoran Zhang]]></dc:creator>
            <pubDate>Thu, 21 Nov 2019 12:26:15 GMT</pubDate>
            <atom:updated>2019-11-21T12:26:15.510Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/500/1*coyrrkg4wKW3Y0Vf2al1yA.gif" /><figcaption>Figure 1: A collection of animated gifs from TED-Ed Original Lessons.</figcaption></figure><h3>Argument (Poem):</h3><p><em>It is party time on Friday night!</em></p><p><em>WOOHOO!</em></p><p><em>But what will happen if the MTA 42nd Street Station close this night?</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BDRCpdM0jrcEtpxJ5QqnCQ.png" /><figcaption>Figure 2: Digrams Drawn by the Author</figcaption></figure><p>After working hard the whole week, people would like to get a drink and party with friends. Bars around time square might be ideal choices.</p><p>However, …</p><p>What if the subway station is closed for a night?</p><p>How can people meet their friends at parties at 11 pm?</p><p>What are the changes in people’s travel patterns?</p><p>Let’s simulate them in Unity!!!</p><p>WOOHOO!</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*qmiSYSeaORUwVmH27vdV9A.gif" /><figcaption>Figure 3: Diagrams Drawn by the Author</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*G44cq-Q7r6m32KGcSDGVlw.gif" /><figcaption>Figure 4: Diagrams Drawn by the Author</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/979/1*2xIXdgjgf6-xWraIEmAF7A.gif" /><figcaption>With MTA</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/890/1*BmzqjMjb6G1oyZXx-gCrhQ.gif" /><figcaption>Without MTA 11 pm</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/908/1*vgRmyMGnltLhlbMeuSO3sg.gif" /><figcaption>without MTA 2:30 am, after party</figcaption></figure><h3>Pseudo-code and Unity Code:</h3><pre># Cube<br># Cube Spawn<br># Object Pooling<br>  # build an object pool<br>  # recycle when no more object</pre><pre>------------------------------------------</pre><pre># cube</pre><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>public class cube : MonoBehaviour</pre><pre>{</pre><pre>public float upForce = 1f;</pre><pre>public float sideForce = .1f;</pre><pre>// Start is called before the first frame update</pre><pre>void Start()</pre><pre>{</pre><pre>float xForce = Random.Range(-sideForce, sideForce);</pre><pre>float yForce = Random.Range(upForce / 2f, upForce);</pre><pre>float zForce = Random.Range(-sideForce, sideForce);</pre><pre>Vector3 force = new Vector3(xForce, yForce, zForce);</pre><pre>GetComponent&lt;Rigidbody&gt;().velocity = force;</pre><pre>}</pre><pre>// Update is called once per frame</pre><pre>void Update()</pre><pre>{</pre><pre>}</pre><pre>}<br>---------------------------------------------------------------</pre><pre>#Cube Spawn</pre><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>public class CubeSpawner : MonoBehaviour</pre><pre>{</pre><pre>public GameObject cubePrefab;</pre><pre>// Start is called before the first frame update</pre><pre>void FixedUpdate()</pre><pre>{</pre><pre>Instantiate(cubePrefab, transform.position, Quaternion.identity);</pre><pre>}</pre><pre>// Update is called once per frame</pre><pre>void Update()</pre><pre>{</pre><pre>}</pre><pre>}</pre><pre>------------------------------------------------------------------</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e4c92244b65d" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/simulation-an-overnight-closure-at-mta-42nd-street-station-e4c92244b65d">Simulation: An Overnight Closure at MTA 42nd Street Station</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Time Project]]></title>
            <link>https://medium.com/data-mining-the-city/time-project-8bc675e64a74?source=rss----83d0ee56d2e1---4</link>
            <guid isPermaLink="false">https://medium.com/p/8bc675e64a74</guid>
            <category><![CDATA[research]]></category>
            <dc:creator><![CDATA[Xutian Liu]]></dc:creator>
            <pubDate>Thu, 21 Nov 2019 12:26:11 GMT</pubDate>
            <atom:updated>2019-11-21T12:26:11.612Z</atom:updated>
            <content:encoded><![CDATA[<p>Online Dating APP Simulation; by<strong> Xutian Liu</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nlvZr6nJlGsy3DZPWSrLLw.png" /><figcaption>Online Dating Applications in the Market</figcaption></figure><p><strong>Argument:</strong> Can social dating app control who you will fall in love with, or will the design of the app change the result who you end up with?</p><p><strong>Types of Dating Apps:</strong></p><blockquote><strong>1. Geolocation matching</strong> dating apps aggregate potential matches based on geographic proximity. (Tinder, Bumble)</blockquote><blockquote><strong>2. Matching algorithm-based </strong>dating apps are powered by offline matching services or matching algorithms that base their choice on personal survey information. (eHarmony)</blockquote><blockquote><strong>3. Niche</strong> dating apps target specific groups of people. (The League, The Grade)</blockquote><p><strong>The Poem:</strong></p><h4>Modern Love</h4><blockquote>Is it closing the gap of distance;</blockquote><blockquote>Or is it pulling away different people;</blockquote><blockquote>Maybe we are asking too much, aren’t we?</blockquote><p><strong>Extraction &amp; Visualization:</strong></p><p>(change the sequence of events)</p><ol><li><em>Distance-based Geolocation matching</em></li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ojy0sKHBbQvEcQm0Pn9WkQ.gif" /><figcaption>choose the closest to date</figcaption></figure><p><em>Simulation:</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*xaWtoobcjXYmdycxPOeEBA.gif" /><figcaption>Dating the Distance</figcaption></figure><p><em>2. Similarity (match or not) Matching algorithm-based</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*kAKX40GzikQAQ4r27DoQOA.gif" /><figcaption>choose the similar to date</figcaption></figure><p><em>Simulation:</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*pXJnzYPNDwI5fuN-dfMKmw.gif" /><figcaption>Dating the Similarity</figcaption></figure><p><em>3. The score, the highest score will get the chance to judge other people directly.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3gRQWhMxhVai1EnzqL2ANQ.gif" /><figcaption>choose the best to date</figcaption></figure><p><em>Simulation:</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*h4mqQOU-cmYs3EcqoLm71g.gif" /><figcaption>Dating the Second Best First Ver.</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/1*LnJV1mS94JqAk_I0L3ak-w.gif" /><figcaption>Dating the Second Best Second Ver.</figcaption></figure><p><strong>Afterthoughts:</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6GBa_EicmuLEF37OWpQDqw.png" /><figcaption>Stable Marriage Problem</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/861/1*qH8UvcLc9jOr8XbVnCEzUA.gif" /><figcaption><a href="https://en.wikipedia.org/wiki/Stable_marriage_problem">https://en.wikipedia.org/wiki/Stable_marriage_problem</a></figcaption></figure><p>Coding of Dating the Distance:</p><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>public class cubechase : MonoBehaviour</pre><pre>{</pre><pre>public float speed;</pre><pre>public Material[] material;</pre><pre>Renderer rend;</pre><pre>private Transform target;</pre><pre>private Transform home;</pre><pre>// Start is called before the first frame update</pre><pre>void Start()</pre><pre>{</pre><pre>rend = GetComponent&lt;Renderer&gt;();</pre><pre>rend.enabled = true;</pre><pre>rend.sharedMaterial = material[0];</pre><pre>target = GameObject.FindGameObjectWithTag(&quot;cubetwo&quot;).GetComponent&lt;Transform&gt;();</pre><pre>home = GameObject.FindGameObjectWithTag(&quot;planeone&quot;).GetComponent&lt;Transform&gt;();</pre><pre>}</pre><pre>// Update is called once per frame</pre><pre>void Update()</pre><pre>{</pre><pre>if (Vector3.Distance(transform.position, target.position) &gt; 1.5) {</pre><pre>transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);</pre><pre>}</pre><pre>if (Vector3.Distance(transform.position, target.position) &lt; 2)</pre><pre>{</pre><pre>rend.sharedMaterial = material[1];</pre><pre>transform.position = Vector3.MoveTowards(transform.position, home.position, speed * Time.deltaTime);</pre><pre>}</pre><pre>Debug.DrawLine(transform.position, target.position, Color.red);</pre><pre>}</pre><pre>}</pre><p>Coding of Dating the Similarity:</p><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>public class cubechase : MonoBehaviour</pre><pre>{</pre><pre>public float speed;</pre><pre>private Transform target;</pre><pre>private Transform home;</pre><pre>// Start is called before the first frame update</pre><pre>void Start()</pre><pre>{</pre><pre>target = GameObject.FindGameObjectWithTag(&quot;cubetwo&quot;).GetComponent&lt;Transform&gt;();</pre><pre>home = GameObject.FindGameObjectWithTag(&quot;planeone&quot;).GetComponent&lt;Transform&gt;();</pre><pre>}</pre><pre>// Update is called once per frame</pre><pre>void Update()</pre><pre>{</pre><pre>if (Vector3.Distance(transform.position, target.position) &gt; 1.5) {</pre><pre>transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);</pre><pre>}</pre><pre>if (Vector3.Distance(transform.position, target.position) &lt; 2)</pre><pre>{</pre><pre>transform.position = Vector3.MoveTowards(transform.position, home.position, speed * Time.deltaTime);</pre><pre>}</pre><pre>}</pre><pre>}</pre><p>Coding of Dating the Second Best:</p><pre>using System.Collections;</pre><pre>using System.Collections.Generic;</pre><pre>using UnityEngine;</pre><pre>public class cylinderchase : MonoBehaviour</pre><pre>{</pre><pre>public float speed;</pre><pre>public Material[] material;</pre><pre>Renderer rend;<br></pre><pre>private Transform target;</pre><pre>private Transform home;</pre><pre>private Transform targeta;</pre><pre>private Transform targetb;</pre><pre>private Transform targetc;</pre><pre>private Transform targetd;</pre><pre>// Start is called before the first frame update</pre><pre>void Start()</pre><pre>{</pre><pre>rend = GetComponent&lt;Renderer&gt;();</pre><pre>rend.enabled = true;</pre><pre>rend.sharedMaterial = material[0];</pre><pre>target = GameObject.FindGameObjectWithTag(&quot;cylindertwo&quot;).GetComponent&lt;Transform&gt;();</pre><pre>home = GameObject.FindGameObjectWithTag(&quot;planefour&quot;).GetComponent&lt;Transform&gt;();</pre><pre>targeta = GameObject.FindGameObjectWithTag(&quot;cube&quot;).GetComponent&lt;Transform&gt;();</pre><pre>targetb = GameObject.FindGameObjectWithTag(&quot;cubetwo&quot;).GetComponent&lt;Transform&gt;();</pre><pre>targetc = GameObject.FindGameObjectWithTag(&quot;sphere&quot;).GetComponent&lt;Transform&gt;();</pre><pre>targetd = GameObject.FindGameObjectWithTag(&quot;spheretwo&quot;).GetComponent&lt;Transform&gt;();</pre><pre>}</pre><pre>// Update is called once per frame</pre><pre>void Update()</pre><pre>{</pre><pre>if (Vector3.Distance(targeta.position, targetb.position) &gt; 2)</pre><pre>{</pre><pre>transform.position = Vector3.MoveTowards(transform.position, targeta.position, speed * Time.deltaTime);</pre><pre>Debug.DrawLine(transform.position, targeta.position, Color.blue);</pre><pre>}</pre><pre>if (Vector3.Distance(targeta.position, targetb.position) &lt; 2)</pre><pre>{</pre><pre>if (Vector3.Distance(targetc.position, targetd.position) &gt; 2)</pre><pre>{</pre><pre>transform.position = Vector3.MoveTowards(transform.position, targetc.position, speed * Time.deltaTime);</pre><pre>Debug.DrawLine(transform.position, targetc.position, Color.green);</pre><pre>}</pre><pre>if (Vector3.Distance(targetc.position, targetd.position) &lt; 2)</pre><pre>{</pre><pre>if (Vector3.Distance(transform.position, target.position) &gt; 1.5)</pre><pre>{</pre><pre>transform.position = Vector3.MoveTowards(transform.position, target.position, speed * Time.deltaTime);</pre><pre>}</pre><pre>if (Vector3.Distance(transform.position, target.position) &lt; 2)</pre><pre>{</pre><pre>transform.position = Vector3.MoveTowards(transform.position, home.position, speed * Time.deltaTime);</pre><pre>rend.sharedMaterial = material[1];</pre><pre>}</pre><pre>Debug.DrawLine(transform.position, target.position, Color.red);</pre><pre>}</pre><pre>}</pre><pre>}</pre><pre>}</pre><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8bc675e64a74" width="1" height="1" alt=""><hr><p><a href="https://medium.com/data-mining-the-city/time-project-8bc675e64a74">Time Project</a> was originally published in <a href="https://medium.com/data-mining-the-city">Data Mining the City</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>