<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.edegan.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AbhiB</id>
	<title>edegan.com - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://www.edegan.com/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AbhiB"/>
	<link rel="alternate" type="text/html" href="http://www.edegan.com/wiki/Special:Contributions/AbhiB"/>
	<updated>2026-06-02T02:07:48Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19761</id>
		<title>Enclosing Circle Algorithm (Rework)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19761"/>
		<updated>2017-08-04T18:31:10Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* Step By Step Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=K-Means Based Algorithm=&lt;br /&gt;
==Location==&lt;br /&gt;
The script  and associated modules are located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
The algorithm relies on an object oriented implementation of a &amp;quot;cluster&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Each &amp;quot;cluster&amp;quot; has the following associated with it: &amp;lt;br&amp;gt;&lt;br /&gt;
   1. area of minimum circle enclosing points in the cluster&lt;br /&gt;
   2. points associated with the cluster&lt;br /&gt;
   3. minimum circle associated with the cluster (x-coord,y-coord,radius)&lt;br /&gt;
   4. &amp;quot;parent&amp;quot; cluster&lt;br /&gt;
   5. &amp;quot;children&amp;quot; cluster(s)&lt;br /&gt;
'''Inputs:''' &lt;br /&gt;
   1. n, the minimum number of points to include in a circle&lt;br /&gt;
   2. k, the amount of clusters to split the points into&lt;br /&gt;
   3. valid_nodes, an empty list to store the possible clusters to explore&lt;br /&gt;
   4. explored_nodes, an empty list to store the explored clusters&lt;br /&gt;
   5. cur_node, initialized to an object with all values set to none&lt;br /&gt;
   6. end_nodes, initialized to an empty list used to store the clusters which cannot be split further&lt;br /&gt;
'''Algorithm:'''&lt;br /&gt;
   1. Calculate the area of the minimum circle enclosing the total set of points&lt;br /&gt;
   2. Split initial points into &amp;quot;k&amp;quot; clusters of at least &amp;quot;n&amp;quot; points using Constrained-K-Means Algorithm&lt;br /&gt;
   3. construct minimum circles of &amp;quot;k&amp;quot; clusters and compute their total area&lt;br /&gt;
   4. if this area &amp;lt;= area of the area of the first circle&lt;br /&gt;
   5. Add all &amp;quot;k&amp;quot; clusters to &amp;quot;valid_nodes&amp;quot;&lt;br /&gt;
   6. for node in valid_nodes, add node to explored_nodes, change cur_node to node, and update respective areas, parents, children, circle, points&lt;br /&gt;
   7. run this algorithm again, change k = 2&lt;br /&gt;
   8. if the cur_node cannot be split into 2, or the cur_node cannot be split into 2 circles with smaller areas than its parent, add cur_node to end_nodes and resume algorithm with next valid_node not in &lt;br /&gt;
      explored_node as the cur_node      &lt;br /&gt;
   9. if all the valid_nodes are in explored_nodes, return end_nodes&lt;br /&gt;
   10. repeat the above algorithm for all k from 2 to int(#number of total points/n) and take the end_nodes with the lowest total area&lt;br /&gt;
'''Runtime:'''&lt;br /&gt;
The runtime of the minimum enclosing circle is O(n), and the runtime of constrained k-means depends on k itself. Here, the value of k is proportional to the total number of points. &amp;lt;br&amp;gt;&lt;br /&gt;
We would expect the algorithm to slow as the number of points increase. For reference, a set of 80 points with n =3, took about 30 minutes, with number of iterations at 100. &amp;lt;br&amp;gt;&lt;br /&gt;
Further improvements could implement an early-stopping method to converge to a local optima. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:runtime.png]]&lt;br /&gt;
&lt;br /&gt;
==Visualization ==&lt;br /&gt;
The K-Means based algorithm returns the optimal solution (left), and faster. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:houstonk.png]] [[File:houstonp.png]]&lt;br /&gt;
== Step By Step Use==&lt;br /&gt;
1. The file &amp;quot;vc_circles.py&amp;quot; contains the main script, &amp;quot;master_circles&amp;quot;, which takes in the following&lt;br /&gt;
   a. &amp;quot;textfile&amp;quot;, which is the filepath of the text data to read in. It must have fields &amp;quot;lattitude',&amp;quot;longitude&amp;quot;,&amp;quot;city&amp;quot;,&amp;quot;datefirstinv&amp;quot;&lt;br /&gt;
   b. &amp;quot;n&amp;quot;, which is the number of points to include in each circle&lt;br /&gt;
   c. &amp;quot;iterations&amp;quot;, the number of iterations to try and find a local optimum. Large numbers will slow the run time.&lt;br /&gt;
   d. &amp;quot;basefn&amp;quot;, the base file path of where to store the circles and points for each city,year pair &amp;lt;br&amp;gt;&lt;br /&gt;
        an example: &amp;quot;C:\\Users\\Name\\Documents&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
        the function will add on the city,year to this base file name and save it to this file directory &amp;lt;br&amp;gt;&lt;br /&gt;
        &amp;quot;C:\\Users\\Name\\Documents\\CityYear.txt&amp;quot;&lt;br /&gt;
   e. &amp;quot;outputfn&amp;quot;, the full file path of where to output the area of the circles for a given city,year &amp;lt;br&amp;gt;&lt;br /&gt;
2. To plot the circles,points for a given year onto google maps, use the function &amp;quot;googleplotter.py&amp;quot;&lt;br /&gt;
   a. This function takes in the filename used in 1d &amp;lt;br&amp;gt;&lt;br /&gt;
      an example: &amp;quot;C:\\Users\\Name\\Documents\\CityYearAreas.txt&amp;quot;&lt;br /&gt;
3. To plot just the circles do the following:&lt;br /&gt;
   a. go to command prompt and type in cd /d E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
   b. type in python plot_wrapper2.py&lt;br /&gt;
   c. follow the prompts&lt;br /&gt;
   d. file should pop up in the same directory&lt;br /&gt;
   *the data must have column headers 'latitude' and 'longitude'*&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
Is faster than both Brute Force and Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Is more accurate than Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Can plot to google maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Will return a tab delim text file of the following fields: city,year,total area &amp;lt;br&amp;gt;&lt;br /&gt;
Good for a large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Is not the optimal solution as number of points increases, but an approximation&lt;br /&gt;
&lt;br /&gt;
=Logical Enclosing Circle=&lt;br /&gt;
==Location==&lt;br /&gt;
The python script is located in :&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\Enclosing_Circle\EnclosingCircleRemake2.py&lt;br /&gt;
==Explanation==&lt;br /&gt;
The rationale is to take the furthest point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Take the furthest point from the initial point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Repeat until all points are enclosed. &amp;lt;br&amp;gt;&lt;br /&gt;
==Benefits==&lt;br /&gt;
Can plot to google maps &amp;lt;br&amp;gt;&lt;br /&gt;
Is faster than brute force &amp;lt;br&amp;gt;&lt;br /&gt;
Returns city, circles, year to a tab delimited text file &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Really slow for large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Offers an approximate solution that is worse than the Clustering based version &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Brute Force= &lt;br /&gt;
==Location==&lt;br /&gt;
The Julia Script is located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
The Python Script is located in:&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\enclosing_circle_brute_force.py&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
1) Find all combinations of two points in the total data set. &lt;br /&gt;
&lt;br /&gt;
2) For each of these combinations, draw a circle and figure out what other points are contained in a circle around those two points. If the circle contains at least n points, add it to a set of valid circles. There are Number of Points choose 2 possible circles. &lt;br /&gt;
&lt;br /&gt;
3) Combine the valid circles in all possible ways and see if the resulting scheme contains all of the points. If it does, add it to a set of valid schemes. I believe that the number of ways to do this is the sum from i = 1 to i = number of valid circles Number of Circles choose i. &lt;br /&gt;
&lt;br /&gt;
4) Iterate through the valid schemes and calculate the areas of the schemes. &lt;br /&gt;
&lt;br /&gt;
5) Return the scheme with the minimum area.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
Always gives you the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
For a small number of points (i.e., &amp;lt;7), this is OKAY to use. &amp;lt;br&amp;gt;&lt;br /&gt;
However, it becomes extremely slow as the number of points increases. &amp;lt;br&amp;gt;&lt;br /&gt;
The Julia/Python code does not have the capability to plot to google maps, but will plot to a normal figure. &amp;lt;br&amp;gt;&lt;br /&gt;
(will work on adding this implementation, if the need arises)&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19760</id>
		<title>Enclosing Circle Algorithm (Rework)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19760"/>
		<updated>2017-08-04T18:29:00Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* Step By Step Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=K-Means Based Algorithm=&lt;br /&gt;
==Location==&lt;br /&gt;
The script  and associated modules are located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
The algorithm relies on an object oriented implementation of a &amp;quot;cluster&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Each &amp;quot;cluster&amp;quot; has the following associated with it: &amp;lt;br&amp;gt;&lt;br /&gt;
   1. area of minimum circle enclosing points in the cluster&lt;br /&gt;
   2. points associated with the cluster&lt;br /&gt;
   3. minimum circle associated with the cluster (x-coord,y-coord,radius)&lt;br /&gt;
   4. &amp;quot;parent&amp;quot; cluster&lt;br /&gt;
   5. &amp;quot;children&amp;quot; cluster(s)&lt;br /&gt;
'''Inputs:''' &lt;br /&gt;
   1. n, the minimum number of points to include in a circle&lt;br /&gt;
   2. k, the amount of clusters to split the points into&lt;br /&gt;
   3. valid_nodes, an empty list to store the possible clusters to explore&lt;br /&gt;
   4. explored_nodes, an empty list to store the explored clusters&lt;br /&gt;
   5. cur_node, initialized to an object with all values set to none&lt;br /&gt;
   6. end_nodes, initialized to an empty list used to store the clusters which cannot be split further&lt;br /&gt;
'''Algorithm:'''&lt;br /&gt;
   1. Calculate the area of the minimum circle enclosing the total set of points&lt;br /&gt;
   2. Split initial points into &amp;quot;k&amp;quot; clusters of at least &amp;quot;n&amp;quot; points using Constrained-K-Means Algorithm&lt;br /&gt;
   3. construct minimum circles of &amp;quot;k&amp;quot; clusters and compute their total area&lt;br /&gt;
   4. if this area &amp;lt;= area of the area of the first circle&lt;br /&gt;
   5. Add all &amp;quot;k&amp;quot; clusters to &amp;quot;valid_nodes&amp;quot;&lt;br /&gt;
   6. for node in valid_nodes, add node to explored_nodes, change cur_node to node, and update respective areas, parents, children, circle, points&lt;br /&gt;
   7. run this algorithm again, change k = 2&lt;br /&gt;
   8. if the cur_node cannot be split into 2, or the cur_node cannot be split into 2 circles with smaller areas than its parent, add cur_node to end_nodes and resume algorithm with next valid_node not in &lt;br /&gt;
      explored_node as the cur_node      &lt;br /&gt;
   9. if all the valid_nodes are in explored_nodes, return end_nodes&lt;br /&gt;
   10. repeat the above algorithm for all k from 2 to int(#number of total points/n) and take the end_nodes with the lowest total area&lt;br /&gt;
'''Runtime:'''&lt;br /&gt;
The runtime of the minimum enclosing circle is O(n), and the runtime of constrained k-means depends on k itself. Here, the value of k is proportional to the total number of points. &amp;lt;br&amp;gt;&lt;br /&gt;
We would expect the algorithm to slow as the number of points increase. For reference, a set of 80 points with n =3, took about 30 minutes, with number of iterations at 100. &amp;lt;br&amp;gt;&lt;br /&gt;
Further improvements could implement an early-stopping method to converge to a local optima. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:runtime.png]]&lt;br /&gt;
&lt;br /&gt;
==Visualization ==&lt;br /&gt;
The K-Means based algorithm returns the optimal solution (left), and faster. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:houstonk.png]] [[File:houstonp.png]]&lt;br /&gt;
== Step By Step Use==&lt;br /&gt;
1. The file &amp;quot;vc_circles.py&amp;quot; contains the main script, &amp;quot;master_circles&amp;quot;, which takes in the following&lt;br /&gt;
   a. &amp;quot;textfile&amp;quot;, which is the filepath of the text data to read in. It must have fields &amp;quot;lattitude',&amp;quot;longitude&amp;quot;,&amp;quot;city&amp;quot;,&amp;quot;datefirstinv&amp;quot;&lt;br /&gt;
   b. &amp;quot;n&amp;quot;, which is the number of points to include in each circle&lt;br /&gt;
   c. &amp;quot;iterations&amp;quot;, the number of iterations to try and find a local optimum. Large numbers will slow the run time.&lt;br /&gt;
   d. &amp;quot;basefn&amp;quot;, the base file path of where to store the circles and points for each city,year pair &amp;lt;br&amp;gt;&lt;br /&gt;
        an example: &amp;quot;C:\\Users\\Name\\Documents&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
        the function will add on the city,year to this base file name and save it to this file directory &amp;lt;br&amp;gt;&lt;br /&gt;
        &amp;quot;C:\\Users\\Name\\Documents\\CityYear.txt&amp;quot;&lt;br /&gt;
   e. &amp;quot;outputfn&amp;quot;, the full file path of where to output the area of the circles for a given city,year &amp;lt;br&amp;gt;&lt;br /&gt;
2. To plot the circles,points for a given year onto google maps, use the function &amp;quot;googleplotter.py&amp;quot;&lt;br /&gt;
   a. This function takes in the filename used in 1d &amp;lt;br&amp;gt;&lt;br /&gt;
      an example: &amp;quot;C:\\Users\\Name\\Documents\\CityYearAreas.txt&amp;quot;&lt;br /&gt;
3. To plot just the circles do the following:&lt;br /&gt;
   a. go to command prompt and type in cd /d E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
   b. type in python plot_wrapper2.py&lt;br /&gt;
   c. follow the prompts&lt;br /&gt;
   d. file should pop up in the same directory&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
Is faster than both Brute Force and Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Is more accurate than Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Can plot to google maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Will return a tab delim text file of the following fields: city,year,total area &amp;lt;br&amp;gt;&lt;br /&gt;
Good for a large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Is not the optimal solution as number of points increases, but an approximation&lt;br /&gt;
&lt;br /&gt;
=Logical Enclosing Circle=&lt;br /&gt;
==Location==&lt;br /&gt;
The python script is located in :&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\Enclosing_Circle\EnclosingCircleRemake2.py&lt;br /&gt;
==Explanation==&lt;br /&gt;
The rationale is to take the furthest point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Take the furthest point from the initial point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Repeat until all points are enclosed. &amp;lt;br&amp;gt;&lt;br /&gt;
==Benefits==&lt;br /&gt;
Can plot to google maps &amp;lt;br&amp;gt;&lt;br /&gt;
Is faster than brute force &amp;lt;br&amp;gt;&lt;br /&gt;
Returns city, circles, year to a tab delimited text file &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Really slow for large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Offers an approximate solution that is worse than the Clustering based version &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Brute Force= &lt;br /&gt;
==Location==&lt;br /&gt;
The Julia Script is located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
The Python Script is located in:&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\enclosing_circle_brute_force.py&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
1) Find all combinations of two points in the total data set. &lt;br /&gt;
&lt;br /&gt;
2) For each of these combinations, draw a circle and figure out what other points are contained in a circle around those two points. If the circle contains at least n points, add it to a set of valid circles. There are Number of Points choose 2 possible circles. &lt;br /&gt;
&lt;br /&gt;
3) Combine the valid circles in all possible ways and see if the resulting scheme contains all of the points. If it does, add it to a set of valid schemes. I believe that the number of ways to do this is the sum from i = 1 to i = number of valid circles Number of Circles choose i. &lt;br /&gt;
&lt;br /&gt;
4) Iterate through the valid schemes and calculate the areas of the schemes. &lt;br /&gt;
&lt;br /&gt;
5) Return the scheme with the minimum area.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
Always gives you the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
For a small number of points (i.e., &amp;lt;7), this is OKAY to use. &amp;lt;br&amp;gt;&lt;br /&gt;
However, it becomes extremely slow as the number of points increases. &amp;lt;br&amp;gt;&lt;br /&gt;
The Julia/Python code does not have the capability to plot to google maps, but will plot to a normal figure. &amp;lt;br&amp;gt;&lt;br /&gt;
(will work on adding this implementation, if the need arises)&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19751</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19751"/>
		<updated>2017-08-04T16:51:50Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 8/3/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/1/2017==&lt;br /&gt;
I changed trueval to be a larger margin to see if the genetic algorithm changes. &amp;lt;br&amp;gt;&lt;br /&gt;
And it didn't do anything. The function value always remains at 0 and the variables retain their values. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed the market size, etc and now the function seems to change its values. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/2/2017==&lt;br /&gt;
Got the function to work and produce a different outcome. &amp;lt;br&amp;gt;&lt;br /&gt;
Seems to be a problem with the strip_mkt_resample. &amp;lt;br&amp;gt;&lt;br /&gt;
Got a lot of resulting &amp;quot;NaN&amp;quot; values, traced it to stderr. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed a value to an outer product in stderr and ran the code. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/3/2017==&lt;br /&gt;
Here is the output when incorporating the outer product instead. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monte_using_outer_product.png]]&lt;br /&gt;
&lt;br /&gt;
==8/4/2017==&lt;br /&gt;
All the master files will run appropriately with the proper &amp;quot;task&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
These files are located here:&lt;br /&gt;
   1. E:\McNair\Projects\MatchingEntrepsToVC\AdjustedCode&lt;br /&gt;
You literally open up the master.m file and press run.&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19714</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19714"/>
		<updated>2017-08-03T15:48:37Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 8/2/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/1/2017==&lt;br /&gt;
I changed trueval to be a larger margin to see if the genetic algorithm changes. &amp;lt;br&amp;gt;&lt;br /&gt;
And it didn't do anything. The function value always remains at 0 and the variables retain their values. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed the market size, etc and now the function seems to change its values. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/2/2017==&lt;br /&gt;
Got the function to work and produce a different outcome. &amp;lt;br&amp;gt;&lt;br /&gt;
Seems to be a problem with the strip_mkt_resample. &amp;lt;br&amp;gt;&lt;br /&gt;
Got a lot of resulting &amp;quot;NaN&amp;quot; values, traced it to stderr. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed a value to an outer product in stderr and ran the code. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/3/2017==&lt;br /&gt;
Here is the output when incorporating the outer product instead. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monte_using_outer_product.png]]&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=File:Monte_using_outer_product.png&amp;diff=19713</id>
		<title>File:Monte using outer product.png</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=File:Monte_using_outer_product.png&amp;diff=19713"/>
		<updated>2017-08-03T15:47:51Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19712</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19712"/>
		<updated>2017-08-03T15:47:25Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 8/3/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/1/2017==&lt;br /&gt;
I changed trueval to be a larger margin to see if the genetic algorithm changes. &amp;lt;br&amp;gt;&lt;br /&gt;
And it didn't do anything. The function value always remains at 0 and the variables retain their values. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed the market size, etc and now the function seems to change its values. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/2/2017==&lt;br /&gt;
Got the function to work and produce a different outcome. &amp;lt;br&amp;gt;&lt;br /&gt;
Seems to be a problem with the strip_mkt_resample. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed a value to an outer product in stderr and ran the code. &amp;lt;br&amp;gt;&lt;br /&gt;
==8/3/2017==&lt;br /&gt;
Here is the output when incorporating the outer product instead. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monte_using_outer_product.png]]&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=File:%22monte_using_outer_product.png%22.png&amp;diff=19711</id>
		<title>File:&quot;monte using outer product.png&quot;.png</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=File:%22monte_using_outer_product.png%22.png&amp;diff=19711"/>
		<updated>2017-08-03T15:46:17Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19710</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19710"/>
		<updated>2017-08-03T15:45:16Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 8/2/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/1/2017==&lt;br /&gt;
I changed trueval to be a larger margin to see if the genetic algorithm changes. &amp;lt;br&amp;gt;&lt;br /&gt;
And it didn't do anything. The function value always remains at 0 and the variables retain their values. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed the market size, etc and now the function seems to change its values. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/2/2017==&lt;br /&gt;
Got the function to work and produce a different outcome. &amp;lt;br&amp;gt;&lt;br /&gt;
Seems to be a problem with the strip_mkt_resample. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed a value to an outer product in stderr and ran the code. &amp;lt;br&amp;gt;&lt;br /&gt;
==8/3/2017==&lt;br /&gt;
Here is the output when incorporating the outer product instead. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:&amp;quot;monte using outer product.png&amp;quot;]]&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19676</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19676"/>
		<updated>2017-08-02T16:32:10Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 8/1/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/1/2017==&lt;br /&gt;
I changed trueval to be a larger margin to see if the genetic algorithm changes. &amp;lt;br&amp;gt;&lt;br /&gt;
And it didn't do anything. The function value always remains at 0 and the variables retain their values. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed the market size, etc and now the function seems to change its values. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/2/2017==&lt;br /&gt;
Got the function to work and produce a different outcome. &amp;lt;br&amp;gt;&lt;br /&gt;
Seems to be a problem with the strip_mkt_resample. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19660</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19660"/>
		<updated>2017-08-01T20:18:12Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 8/1/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/1/2017==&lt;br /&gt;
I changed trueval to be a larger margin to see if the genetic algorithm changes. &amp;lt;br&amp;gt;&lt;br /&gt;
And it didn't do anything. The function value always remains at 0 and the variables retain their values. &amp;lt;br&amp;gt;&lt;br /&gt;
We changed the market size, etc and now the function seems to change its values. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19651</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19651"/>
		<updated>2017-08-01T18:06:39Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 8/1/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/1/2017==&lt;br /&gt;
I changed trueval to be a larger margin to see if the genetic algorithm changes. &amp;lt;br&amp;gt;&lt;br /&gt;
And it didn't do anything. The function value always remains at 0 and the variables retain their values. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19650</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19650"/>
		<updated>2017-08-01T18:04:49Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 8/1/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/1/2017==&lt;br /&gt;
I changed trueval to be a larger margin to see if the genetic algorithm changes. &amp;lt;br&amp;gt;&lt;br /&gt;
And it didn't do anything. The function value always remains at 0. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19629</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19629"/>
		<updated>2017-08-01T14:48:03Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/31/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==8/1/2017==&lt;br /&gt;
I changed trueval to be a larger margin to see if the genetic algorithm changes. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19590</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19590"/>
		<updated>2017-07-31T19:31:08Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/31/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
James seems to think the &amp;quot;trueval&amp;quot; is already set close enough to the optimal. &amp;lt;br&amp;gt;&lt;br /&gt;
This seems correct&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19589</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19589"/>
		<updated>2017-07-31T18:51:59Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/31/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: either 1 or .0240&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19585</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19585"/>
		<updated>2017-07-31T17:27:03Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/32/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/31/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: always 1&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19581</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19581"/>
		<updated>2017-07-31T15:10:27Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/32/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/32/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the values of the key variables that determine the input of the genetic algorithm:&lt;br /&gt;
   1. mm: either .1111 or .2462&lt;br /&gt;
   2. M0: always .1111&lt;br /&gt;
   3. W: always 1&lt;br /&gt;
   4. L: always 9&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19580</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19580"/>
		<updated>2017-07-31T15:06:57Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/28/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/32/2017==&lt;br /&gt;
The value passed into the genetic algorithm is either 0 or .1642&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19579</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19579"/>
		<updated>2017-07-31T15:00:45Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/25/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
&lt;br /&gt;
==7/28/2017==&lt;br /&gt;
Fixed the monte with James' help and utilized integer linear programming inside the genetic algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Previously, the author was using a linear program and rounding the results (not advisable). &amp;lt;br&amp;gt;&lt;br /&gt;
We figure there must be some error in the monte because the genetic algorithm does not update. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19517</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19517"/>
		<updated>2017-07-26T13:54:43Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/25/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime2.png]] &amp;lt;br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
When comparing the two, it seems like changing the generation size just makes the function take longer to run, but even after one generation the fitness function does not improve its value. &amp;lt;br&amp;gt;&lt;br /&gt;
I don't understand why you'd need more than one generation. &lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19516</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19516"/>
		<updated>2017-07-26T13:51:13Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/25/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results&lt;br /&gt;
[[File:runtime2.png]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=File:Runtime2.png&amp;diff=19515</id>
		<title>File:Runtime2.png</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=File:Runtime2.png&amp;diff=19515"/>
		<updated>2017-07-26T13:50:21Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: AbhiB uploaded a new version of File:Runtime2.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19514</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19514"/>
		<updated>2017-07-26T13:49:40Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/25/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results&lt;br /&gt;
[[File:Example.jpg]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=File:Runtime2.png&amp;diff=19513</id>
		<title>File:Runtime2.png</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=File:Runtime2.png&amp;diff=19513"/>
		<updated>2017-07-26T13:48:33Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: AbhiB uploaded a new version of File:Runtime2.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19512</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19512"/>
		<updated>2017-07-26T13:47:55Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/25/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results&lt;br /&gt;
[[File:run time 2.png]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=File:Runtime2.png&amp;diff=19511</id>
		<title>File:Runtime2.png</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=File:Runtime2.png&amp;diff=19511"/>
		<updated>2017-07-26T13:47:13Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19510</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19510"/>
		<updated>2017-07-26T13:46:59Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/24/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
&lt;br /&gt;
==7/25/2017==&lt;br /&gt;
Did as suggested above. &amp;lt;br&amp;gt;&lt;br /&gt;
Here are the results&lt;br /&gt;
[[File:runtime2.png]]&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19495</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19495"/>
		<updated>2017-07-25T14:37:01Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/21/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
==7/24/2017==&lt;br /&gt;
Since the code actually runs now, thought about ways to add more info to what we know about the code. &amp;lt;br&amp;gt;&lt;br /&gt;
Still don't know how the function fed into the genetic algorithm actually relates to the documentation. &amp;lt;br&amp;gt;&lt;br /&gt;
Some ideas for tomorrow:&lt;br /&gt;
   1. use the actual generations and values from the original script and time it&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=File:Monteruntime.png&amp;diff=19485</id>
		<title>File:Monteruntime.png</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=File:Monteruntime.png&amp;diff=19485"/>
		<updated>2017-07-24T15:14:43Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19484</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19484"/>
		<updated>2017-07-24T15:14:23Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/21/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:monteruntime.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19483</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19483"/>
		<updated>2017-07-24T15:12:19Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/21/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
Ran the monte and timed the functions. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:runtime.png]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19462</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19462"/>
		<updated>2017-07-21T13:12:57Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/20/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
Matlab encountered an error which forced the closing of the script. &amp;lt;br&amp;gt; &lt;br /&gt;
Will re-run&lt;br /&gt;
&lt;br /&gt;
==7/21/2017==&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19417</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19417"/>
		<updated>2017-07-20T14:43:24Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/19/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/20/2017==&lt;br /&gt;
Currently timing each of the functions involved with this script. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19399</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19399"/>
		<updated>2017-07-19T14:55:45Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/19/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
Tried running the same program with the altered objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19398</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19398"/>
		<updated>2017-07-19T14:43:34Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/18/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/19/2017==&lt;br /&gt;
Created a separate script for gmm_2stage_estimation which is used to implement gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Was able to implement the lower bound,upper bound of the variables using gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
Am finding it difficult to describe the objective function in terms of the variables themselves. &amp;lt;br&amp;gt;&lt;br /&gt;
If I could do that, this would be a whole lot easier. &amp;lt;br&amp;gt;&lt;br /&gt;
The objective function does not match the readme.pdf the author has provided. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19397</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19397"/>
		<updated>2017-07-19T14:14:05Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/17/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
==7/18/2017==&lt;br /&gt;
Helped Diana learn how to implement the circle plotter for startup locations. &amp;lt;br&amp;gt;&lt;br /&gt;
Read up more about the genetic algorithm function in matlab. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19393</id>
		<title>Enclosing Circle Algorithm (Rework)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19393"/>
		<updated>2017-07-18T20:59:37Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* Step By Step Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=K-Means Based Algorithm=&lt;br /&gt;
==Location==&lt;br /&gt;
The script  and associated modules are located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
The algorithm relies on an object oriented implementation of a &amp;quot;cluster&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Each &amp;quot;cluster&amp;quot; has the following associated with it: &amp;lt;br&amp;gt;&lt;br /&gt;
   1. area of minimum circle enclosing points in the cluster&lt;br /&gt;
   2. points associated with the cluster&lt;br /&gt;
   3. minimum circle associated with the cluster (x-coord,y-coord,radius)&lt;br /&gt;
   4. &amp;quot;parent&amp;quot; cluster&lt;br /&gt;
   5. &amp;quot;children&amp;quot; cluster(s)&lt;br /&gt;
'''Inputs:''' &lt;br /&gt;
   1. n, the minimum number of points to include in a circle&lt;br /&gt;
   2. k, the amount of clusters to split the points into&lt;br /&gt;
   3. valid_nodes, an empty list to store the possible clusters to explore&lt;br /&gt;
   4. explored_nodes, an empty list to store the explored clusters&lt;br /&gt;
   5. cur_node, initialized to an object with all values set to none&lt;br /&gt;
   6. end_nodes, initialized to an empty list used to store the clusters which cannot be split further&lt;br /&gt;
'''Algorithm:'''&lt;br /&gt;
   1. Calculate the area of the minimum circle enclosing the total set of points&lt;br /&gt;
   2. Split initial points into &amp;quot;k&amp;quot; clusters of at least &amp;quot;n&amp;quot; points using Constrained-K-Means Algorithm&lt;br /&gt;
   3. construct minimum circles of &amp;quot;k&amp;quot; clusters and compute their total area&lt;br /&gt;
   4. if this area &amp;lt;= area of the area of the first circle&lt;br /&gt;
   5. Add all &amp;quot;k&amp;quot; clusters to &amp;quot;valid_nodes&amp;quot;&lt;br /&gt;
   6. for node in valid_nodes, add node to explored_nodes, change cur_node to node, and update respective areas, parents, children, circle, points&lt;br /&gt;
   7. run this algorithm again, change k = 2&lt;br /&gt;
   8. if the cur_node cannot be split into 2, or the cur_node cannot be split into 2 circles with smaller areas than its parent, add cur_node to end_nodes and resume algorithm with next valid_node not in &lt;br /&gt;
      explored_node as the cur_node      &lt;br /&gt;
   9. if all the valid_nodes are in explored_nodes, return end_nodes&lt;br /&gt;
   10. repeat the above algorithm for all k from 2 to int(#number of total points/n) and take the end_nodes with the lowest total area&lt;br /&gt;
'''Runtime:'''&lt;br /&gt;
The runtime of the minimum enclosing circle is O(n), and the runtime of constrained k-means depends on k itself. Here, the value of k is proportional to the total number of points. &amp;lt;br&amp;gt;&lt;br /&gt;
We would expect the algorithm to slow as the number of points increase. For reference, a set of 80 points with n =3, took about 30 minutes, with number of iterations at 100. &amp;lt;br&amp;gt;&lt;br /&gt;
Further improvements could implement an early-stopping method to converge to a local optima. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:runtime.png]]&lt;br /&gt;
&lt;br /&gt;
==Visualization ==&lt;br /&gt;
The K-Means based algorithm returns the optimal solution (left), and faster. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:houstonk.png]] [[File:houstonp.png]]&lt;br /&gt;
== Step By Step Use==&lt;br /&gt;
1. The file &amp;quot;vc_circles.py&amp;quot; contains the main script, &amp;quot;master_circles&amp;quot;, which takes in the following&lt;br /&gt;
   a. &amp;quot;textfile&amp;quot;, which is the filepath of the text data to read in. It must have fields &amp;quot;lattitude',&amp;quot;longitude&amp;quot;,&amp;quot;city&amp;quot;,&amp;quot;datefirstinv&amp;quot;&lt;br /&gt;
   b. &amp;quot;n&amp;quot;, which is the number of points to include in each circle&lt;br /&gt;
   c. &amp;quot;iterations&amp;quot;, the number of iterations to try and find a local optimum. Large numbers will slow the run time.&lt;br /&gt;
   d. &amp;quot;basefn&amp;quot;, the base file path of where to store the circles and points for each city,year pair &amp;lt;br&amp;gt;&lt;br /&gt;
        an example: &amp;quot;C:\\Users\\Name\\Documents&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
        the function will add on the city,year to this base file name and save it to this file directory &amp;lt;br&amp;gt;&lt;br /&gt;
        &amp;quot;C:\\Users\\Name\\Documents\\CityYear.txt&amp;quot;&lt;br /&gt;
   e. &amp;quot;outputfn&amp;quot;, the full file path of where to output the area of the circles for a given city,year &amp;lt;br&amp;gt;&lt;br /&gt;
2. To plot the circles,points for a given year onto google maps, use the function &amp;quot;googleplotter.py&amp;quot;&lt;br /&gt;
   a. This function takes in the filename used in 1d &amp;lt;br&amp;gt;&lt;br /&gt;
      an example: &amp;quot;C:\\Users\\Name\\Documents\\CityYearAreas.txt&amp;quot;&lt;br /&gt;
3. To plot just the circles do the following:&lt;br /&gt;
   a. go to command prompt and type in cd /d E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
   b. type in python plot_wrapper.py&lt;br /&gt;
   c. follow the prompts&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
Is faster than both Brute Force and Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Is more accurate than Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Can plot to google maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Will return a tab delim text file of the following fields: city,year,total area &amp;lt;br&amp;gt;&lt;br /&gt;
Good for a large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Is not the optimal solution as number of points increases, but an approximation&lt;br /&gt;
&lt;br /&gt;
=Logical Enclosing Circle=&lt;br /&gt;
==Location==&lt;br /&gt;
The python script is located in :&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\Enclosing_Circle\EnclosingCircleRemake2.py&lt;br /&gt;
==Explanation==&lt;br /&gt;
The rationale is to take the furthest point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Take the furthest point from the initial point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Repeat until all points are enclosed. &amp;lt;br&amp;gt;&lt;br /&gt;
==Benefits==&lt;br /&gt;
Can plot to google maps &amp;lt;br&amp;gt;&lt;br /&gt;
Is faster than brute force &amp;lt;br&amp;gt;&lt;br /&gt;
Returns city, circles, year to a tab delimited text file &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Really slow for large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Offers an approximate solution that is worse than the Clustering based version &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Brute Force= &lt;br /&gt;
==Location==&lt;br /&gt;
The Julia Script is located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
The Python Script is located in:&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\enclosing_circle_brute_force.py&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
1) Find all combinations of two points in the total data set. &lt;br /&gt;
&lt;br /&gt;
2) For each of these combinations, draw a circle and figure out what other points are contained in a circle around those two points. If the circle contains at least n points, add it to a set of valid circles. There are Number of Points choose 2 possible circles. &lt;br /&gt;
&lt;br /&gt;
3) Combine the valid circles in all possible ways and see if the resulting scheme contains all of the points. If it does, add it to a set of valid schemes. I believe that the number of ways to do this is the sum from i = 1 to i = number of valid circles Number of Circles choose i. &lt;br /&gt;
&lt;br /&gt;
4) Iterate through the valid schemes and calculate the areas of the schemes. &lt;br /&gt;
&lt;br /&gt;
5) Return the scheme with the minimum area.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
Always gives you the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
For a small number of points (i.e., &amp;lt;7), this is OKAY to use. &amp;lt;br&amp;gt;&lt;br /&gt;
However, it becomes extremely slow as the number of points increases. &amp;lt;br&amp;gt;&lt;br /&gt;
The Julia/Python code does not have the capability to plot to google maps, but will plot to a normal figure. &amp;lt;br&amp;gt;&lt;br /&gt;
(will work on adding this implementation, if the need arises)&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19390</id>
		<title>Enclosing Circle Algorithm (Rework)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19390"/>
		<updated>2017-07-18T20:46:14Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* Step By Step Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=K-Means Based Algorithm=&lt;br /&gt;
==Location==&lt;br /&gt;
The script  and associated modules are located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
The algorithm relies on an object oriented implementation of a &amp;quot;cluster&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Each &amp;quot;cluster&amp;quot; has the following associated with it: &amp;lt;br&amp;gt;&lt;br /&gt;
   1. area of minimum circle enclosing points in the cluster&lt;br /&gt;
   2. points associated with the cluster&lt;br /&gt;
   3. minimum circle associated with the cluster (x-coord,y-coord,radius)&lt;br /&gt;
   4. &amp;quot;parent&amp;quot; cluster&lt;br /&gt;
   5. &amp;quot;children&amp;quot; cluster(s)&lt;br /&gt;
'''Inputs:''' &lt;br /&gt;
   1. n, the minimum number of points to include in a circle&lt;br /&gt;
   2. k, the amount of clusters to split the points into&lt;br /&gt;
   3. valid_nodes, an empty list to store the possible clusters to explore&lt;br /&gt;
   4. explored_nodes, an empty list to store the explored clusters&lt;br /&gt;
   5. cur_node, initialized to an object with all values set to none&lt;br /&gt;
   6. end_nodes, initialized to an empty list used to store the clusters which cannot be split further&lt;br /&gt;
'''Algorithm:'''&lt;br /&gt;
   1. Calculate the area of the minimum circle enclosing the total set of points&lt;br /&gt;
   2. Split initial points into &amp;quot;k&amp;quot; clusters of at least &amp;quot;n&amp;quot; points using Constrained-K-Means Algorithm&lt;br /&gt;
   3. construct minimum circles of &amp;quot;k&amp;quot; clusters and compute their total area&lt;br /&gt;
   4. if this area &amp;lt;= area of the area of the first circle&lt;br /&gt;
   5. Add all &amp;quot;k&amp;quot; clusters to &amp;quot;valid_nodes&amp;quot;&lt;br /&gt;
   6. for node in valid_nodes, add node to explored_nodes, change cur_node to node, and update respective areas, parents, children, circle, points&lt;br /&gt;
   7. run this algorithm again, change k = 2&lt;br /&gt;
   8. if the cur_node cannot be split into 2, or the cur_node cannot be split into 2 circles with smaller areas than its parent, add cur_node to end_nodes and resume algorithm with next valid_node not in &lt;br /&gt;
      explored_node as the cur_node      &lt;br /&gt;
   9. if all the valid_nodes are in explored_nodes, return end_nodes&lt;br /&gt;
   10. repeat the above algorithm for all k from 2 to int(#number of total points/n) and take the end_nodes with the lowest total area&lt;br /&gt;
'''Runtime:'''&lt;br /&gt;
The runtime of the minimum enclosing circle is O(n), and the runtime of constrained k-means depends on k itself. Here, the value of k is proportional to the total number of points. &amp;lt;br&amp;gt;&lt;br /&gt;
We would expect the algorithm to slow as the number of points increase. For reference, a set of 80 points with n =3, took about 30 minutes, with number of iterations at 100. &amp;lt;br&amp;gt;&lt;br /&gt;
Further improvements could implement an early-stopping method to converge to a local optima. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:runtime.png]]&lt;br /&gt;
&lt;br /&gt;
==Visualization ==&lt;br /&gt;
The K-Means based algorithm returns the optimal solution (left), and faster. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:houstonk.png]] [[File:houstonp.png]]&lt;br /&gt;
== Step By Step Use==&lt;br /&gt;
1. The file &amp;quot;vc_circles.py&amp;quot; contains the main script, &amp;quot;master_circles&amp;quot;, which takes in the following&lt;br /&gt;
   a. &amp;quot;textfile&amp;quot;, which is the filepath of the text data to read in. It must have fields &amp;quot;lattitude',&amp;quot;longitude&amp;quot;,&amp;quot;city&amp;quot;,&amp;quot;datefirstinv&amp;quot;&lt;br /&gt;
   b. &amp;quot;n&amp;quot;, which is the number of points to include in each circle&lt;br /&gt;
   c. &amp;quot;iterations&amp;quot;, the number of iterations to try and find a local optimum. Large numbers will slow the run time.&lt;br /&gt;
   d. &amp;quot;basefn&amp;quot;, the base file path of where to store the circles and points for each city,year pair &amp;lt;br&amp;gt;&lt;br /&gt;
        an example: &amp;quot;C:\\Users\\Name\\Documents&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
        the function will add on the city,year to this base file name and save it to this file directory &amp;lt;br&amp;gt;&lt;br /&gt;
        &amp;quot;C:\\Users\\Name\\Documents\\CityYear.txt&amp;quot;&lt;br /&gt;
   e. &amp;quot;outputfn&amp;quot;, the full file path of where to output the area of the circles for a given city,year &amp;lt;br&amp;gt;&lt;br /&gt;
2. To plot the circles,points for a given year onto google maps, use the function &amp;quot;googleplotter.py&amp;quot;&lt;br /&gt;
   a. This function takes in the filename used in 1d &amp;lt;br&amp;gt;&lt;br /&gt;
      an example: &amp;quot;C:\\Users\\Name\\Documents\\CityYearAreas.txt&amp;quot;&lt;br /&gt;
3. To plot just the circles do the following:&lt;br /&gt;
   a. go to command prompt and type in cd /d E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
   b. type in python-plot_wrapper&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
Is faster than both Brute Force and Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Is more accurate than Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Can plot to google maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Will return a tab delim text file of the following fields: city,year,total area &amp;lt;br&amp;gt;&lt;br /&gt;
Good for a large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Is not the optimal solution as number of points increases, but an approximation&lt;br /&gt;
&lt;br /&gt;
=Logical Enclosing Circle=&lt;br /&gt;
==Location==&lt;br /&gt;
The python script is located in :&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\Enclosing_Circle\EnclosingCircleRemake2.py&lt;br /&gt;
==Explanation==&lt;br /&gt;
The rationale is to take the furthest point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Take the furthest point from the initial point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Repeat until all points are enclosed. &amp;lt;br&amp;gt;&lt;br /&gt;
==Benefits==&lt;br /&gt;
Can plot to google maps &amp;lt;br&amp;gt;&lt;br /&gt;
Is faster than brute force &amp;lt;br&amp;gt;&lt;br /&gt;
Returns city, circles, year to a tab delimited text file &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Really slow for large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Offers an approximate solution that is worse than the Clustering based version &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Brute Force= &lt;br /&gt;
==Location==&lt;br /&gt;
The Julia Script is located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
The Python Script is located in:&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\enclosing_circle_brute_force.py&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
1) Find all combinations of two points in the total data set. &lt;br /&gt;
&lt;br /&gt;
2) For each of these combinations, draw a circle and figure out what other points are contained in a circle around those two points. If the circle contains at least n points, add it to a set of valid circles. There are Number of Points choose 2 possible circles. &lt;br /&gt;
&lt;br /&gt;
3) Combine the valid circles in all possible ways and see if the resulting scheme contains all of the points. If it does, add it to a set of valid schemes. I believe that the number of ways to do this is the sum from i = 1 to i = number of valid circles Number of Circles choose i. &lt;br /&gt;
&lt;br /&gt;
4) Iterate through the valid schemes and calculate the areas of the schemes. &lt;br /&gt;
&lt;br /&gt;
5) Return the scheme with the minimum area.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
Always gives you the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
For a small number of points (i.e., &amp;lt;7), this is OKAY to use. &amp;lt;br&amp;gt;&lt;br /&gt;
However, it becomes extremely slow as the number of points increases. &amp;lt;br&amp;gt;&lt;br /&gt;
The Julia/Python code does not have the capability to plot to google maps, but will plot to a normal figure. &amp;lt;br&amp;gt;&lt;br /&gt;
(will work on adding this implementation, if the need arises)&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19357</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19357"/>
		<updated>2017-07-17T16:20:49Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/13/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/14/2017==&lt;br /&gt;
Started running the enclosing circle for the PhD students. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for using the enclosing circle algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Started looking at how to attack the MATLAB monte carlo problem using Gurobi. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/17/2017==&lt;br /&gt;
Looked at the optimization function for the Monte. &amp;lt;br&amp;gt;&lt;br /&gt;
It is called readme.pdf &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that the output of msmf_corr_coeff.m contains the appropriate objective function. &amp;lt;br&amp;gt;&lt;br /&gt;
It seems that nonlinearcons_msm.m outputs the appropriate constraints. &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look at how to implement this in Gurobi for Matlab. &lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19336</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19336"/>
		<updated>2017-07-14T14:46:40Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/12/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/13/2017==&lt;br /&gt;
Ran enclosing circle and saw that it used 2.6% of the CPU and ~200 MB of memory. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked to Oliver about parallelizing the code in C++ or Java. &amp;lt;br&amp;gt;&lt;br /&gt;
Talked about using the highest K, with the lowest error to run the algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made an interactive command line tool for plotting the google maps circles&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19286</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19286"/>
		<updated>2017-07-13T16:12:19Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 7/11/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==7/12/2017==&lt;br /&gt;
Ran the enclosing circle and plotted run time vs. number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Received an exponential graph. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished deriving the areas for the test vc data using enclosing circle &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on modularizing the google plotting functions &amp;lt;br&amp;gt;&lt;br /&gt;
Need to make the code a command line tool &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19257</id>
		<title>Enclosing Circle Algorithm (Rework)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19257"/>
		<updated>2017-07-12T20:39:56Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* Step By Step Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=K-Means Based Algorithm=&lt;br /&gt;
==Location==&lt;br /&gt;
The script  and associated modules are located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
The algorithm relies on an object oriented implementation of a &amp;quot;cluster&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Each &amp;quot;cluster&amp;quot; has the following associated with it: &amp;lt;br&amp;gt;&lt;br /&gt;
   1. area of minimum circle enclosing points in the cluster&lt;br /&gt;
   2. points associated with the cluster&lt;br /&gt;
   3. minimum circle associated with the cluster (x-coord,y-coord,radius)&lt;br /&gt;
   4. &amp;quot;parent&amp;quot; cluster&lt;br /&gt;
   5. &amp;quot;children&amp;quot; cluster(s)&lt;br /&gt;
'''Inputs:''' &lt;br /&gt;
   1. n, the minimum number of points to include in a circle&lt;br /&gt;
   2. k, the amount of clusters to split the points into&lt;br /&gt;
   3. valid_nodes, an empty list to store the possible clusters to explore&lt;br /&gt;
   4. explored_nodes, an empty list to store the explored clusters&lt;br /&gt;
   5. cur_node, initialized to an object with all values set to none&lt;br /&gt;
   6. end_nodes, initialized to an empty list used to store the clusters which cannot be split further&lt;br /&gt;
'''Algorithm:'''&lt;br /&gt;
   1. Calculate the area of the minimum circle enclosing the total set of points&lt;br /&gt;
   2. Split initial points into &amp;quot;k&amp;quot; clusters of at least &amp;quot;n&amp;quot; points using Constrained-K-Means Algorithm&lt;br /&gt;
   3. construct minimum circles of &amp;quot;k&amp;quot; clusters and compute their total area&lt;br /&gt;
   4. if this area &amp;lt;= area of the area of the first circle&lt;br /&gt;
   5. Add all &amp;quot;k&amp;quot; clusters to &amp;quot;valid_nodes&amp;quot;&lt;br /&gt;
   6. for node in valid_nodes, add node to explored_nodes, change cur_node to node, and update respective areas, parents, children, circle, points&lt;br /&gt;
   7. run this algorithm again, change k = 2&lt;br /&gt;
   8. if the cur_node cannot be split into 2, or the cur_node cannot be split into 2 circles with smaller areas than its parent, add cur_node to end_nodes and resume algorithm with next valid_node not in &lt;br /&gt;
      explored_node as the cur_node      &lt;br /&gt;
   9. if all the valid_nodes are in explored_nodes, return end_nodes&lt;br /&gt;
   10. repeat the above algorithm for all k from 2 to int(#number of total points/n) and take the end_nodes with the lowest total area&lt;br /&gt;
'''Runtime:'''&lt;br /&gt;
The runtime of the minimum enclosing circle is O(n), and the runtime of constrained k-means depends on k itself. Here, the value of k is proportional to the total number of points. &amp;lt;br&amp;gt;&lt;br /&gt;
We would expect the algorithm to slow as the number of points increase. For reference, a set of 80 points with n =3, took about 30 minutes, with number of iterations at 100. &amp;lt;br&amp;gt;&lt;br /&gt;
Further improvements could implement an early-stopping method to converge to a local optima. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:runtime.png]]&lt;br /&gt;
&lt;br /&gt;
==Visualization ==&lt;br /&gt;
The K-Means based algorithm returns the optimal solution (left), and faster. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:houstonk.png]] [[File:houstonp.png]]&lt;br /&gt;
== Step By Step Use==&lt;br /&gt;
1. The file &amp;quot;vc_circles.py&amp;quot; contains the main script, &amp;quot;master_circles&amp;quot;, which takes in the following&lt;br /&gt;
   a. &amp;quot;textfile&amp;quot;, which is the filepath of the text data to read in. It must have fields &amp;quot;lattitude',&amp;quot;longitude&amp;quot;,&amp;quot;city&amp;quot;,&amp;quot;datefirstinv&amp;quot;&lt;br /&gt;
   b. &amp;quot;n&amp;quot;, which is the number of points to include in each circle&lt;br /&gt;
   c. &amp;quot;iterations&amp;quot;, the number of iterations to try and find a local optimum. Large numbers will slow the run time.&lt;br /&gt;
   d. &amp;quot;basefn&amp;quot;, the base file path of where to store the circles and points for each city,year pair &amp;lt;br&amp;gt;&lt;br /&gt;
        an example: &amp;quot;C:\\Users\\Name\\Documents&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
        the function will add on the city,year to this base file name and save it to this file directory &amp;lt;br&amp;gt;&lt;br /&gt;
        &amp;quot;C:\\Users\\Name\\Documents\\CityYear.txt&amp;quot;&lt;br /&gt;
   e. &amp;quot;outputfn&amp;quot;, the full file path of where to output the area of the circles for a given city,year &amp;lt;br&amp;gt;&lt;br /&gt;
2. To plot the circles,points for a given year onto google maps, use the function &amp;quot;googleplotter.py&amp;quot;&lt;br /&gt;
   a. This function takes in the filename used in 1d &amp;lt;br&amp;gt;&lt;br /&gt;
      an example: &amp;quot;C:\\Users\\Name\\Documents\\CityYearAreas.txt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
Is faster than both Brute Force and Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Is more accurate than Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Can plot to google maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Will return a tab delim text file of the following fields: city,year,total area &amp;lt;br&amp;gt;&lt;br /&gt;
Good for a large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Is not the optimal solution as number of points increases, but an approximation&lt;br /&gt;
&lt;br /&gt;
=Logical Enclosing Circle=&lt;br /&gt;
==Location==&lt;br /&gt;
The python script is located in :&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\Enclosing_Circle\EnclosingCircleRemake2.py&lt;br /&gt;
==Explanation==&lt;br /&gt;
The rationale is to take the furthest point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Take the furthest point from the initial point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Repeat until all points are enclosed. &amp;lt;br&amp;gt;&lt;br /&gt;
==Benefits==&lt;br /&gt;
Can plot to google maps &amp;lt;br&amp;gt;&lt;br /&gt;
Is faster than brute force &amp;lt;br&amp;gt;&lt;br /&gt;
Returns city, circles, year to a tab delimited text file &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Really slow for large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Offers an approximate solution that is worse than the Clustering based version &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Brute Force= &lt;br /&gt;
==Location==&lt;br /&gt;
The Julia Script is located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
The Python Script is located in:&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\enclosing_circle_brute_force.py&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
1) Find all combinations of two points in the total data set. &lt;br /&gt;
&lt;br /&gt;
2) For each of these combinations, draw a circle and figure out what other points are contained in a circle around those two points. If the circle contains at least n points, add it to a set of valid circles. There are Number of Points choose 2 possible circles. &lt;br /&gt;
&lt;br /&gt;
3) Combine the valid circles in all possible ways and see if the resulting scheme contains all of the points. If it does, add it to a set of valid schemes. I believe that the number of ways to do this is the sum from i = 1 to i = number of valid circles Number of Circles choose i. &lt;br /&gt;
&lt;br /&gt;
4) Iterate through the valid schemes and calculate the areas of the schemes. &lt;br /&gt;
&lt;br /&gt;
5) Return the scheme with the minimum area.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
Always gives you the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
For a small number of points (i.e., &amp;lt;7), this is OKAY to use. &amp;lt;br&amp;gt;&lt;br /&gt;
However, it becomes extremely slow as the number of points increases. &amp;lt;br&amp;gt;&lt;br /&gt;
The Julia/Python code does not have the capability to plot to google maps, but will plot to a normal figure. &amp;lt;br&amp;gt;&lt;br /&gt;
(will work on adding this implementation, if the need arises)&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19252</id>
		<title>Enclosing Circle Algorithm (Rework)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19252"/>
		<updated>2017-07-12T20:33:46Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* Step By Step Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=K-Means Based Algorithm=&lt;br /&gt;
==Location==&lt;br /&gt;
The script  and associated modules are located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
The algorithm relies on an object oriented implementation of a &amp;quot;cluster&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Each &amp;quot;cluster&amp;quot; has the following associated with it: &amp;lt;br&amp;gt;&lt;br /&gt;
   1. area of minimum circle enclosing points in the cluster&lt;br /&gt;
   2. points associated with the cluster&lt;br /&gt;
   3. minimum circle associated with the cluster (x-coord,y-coord,radius)&lt;br /&gt;
   4. &amp;quot;parent&amp;quot; cluster&lt;br /&gt;
   5. &amp;quot;children&amp;quot; cluster(s)&lt;br /&gt;
'''Inputs:''' &lt;br /&gt;
   1. n, the minimum number of points to include in a circle&lt;br /&gt;
   2. k, the amount of clusters to split the points into&lt;br /&gt;
   3. valid_nodes, an empty list to store the possible clusters to explore&lt;br /&gt;
   4. explored_nodes, an empty list to store the explored clusters&lt;br /&gt;
   5. cur_node, initialized to an object with all values set to none&lt;br /&gt;
   6. end_nodes, initialized to an empty list used to store the clusters which cannot be split further&lt;br /&gt;
'''Algorithm:'''&lt;br /&gt;
   1. Calculate the area of the minimum circle enclosing the total set of points&lt;br /&gt;
   2. Split initial points into &amp;quot;k&amp;quot; clusters of at least &amp;quot;n&amp;quot; points using Constrained-K-Means Algorithm&lt;br /&gt;
   3. construct minimum circles of &amp;quot;k&amp;quot; clusters and compute their total area&lt;br /&gt;
   4. if this area &amp;lt;= area of the area of the first circle&lt;br /&gt;
   5. Add all &amp;quot;k&amp;quot; clusters to &amp;quot;valid_nodes&amp;quot;&lt;br /&gt;
   6. for node in valid_nodes, add node to explored_nodes, change cur_node to node, and update respective areas, parents, children, circle, points&lt;br /&gt;
   7. run this algorithm again, change k = 2&lt;br /&gt;
   8. if the cur_node cannot be split into 2, or the cur_node cannot be split into 2 circles with smaller areas than its parent, add cur_node to end_nodes and resume algorithm with next valid_node not in &lt;br /&gt;
      explored_node as the cur_node      &lt;br /&gt;
   9. if all the valid_nodes are in explored_nodes, return end_nodes&lt;br /&gt;
   10. repeat the above algorithm for all k from 2 to int(#number of total points/n) and take the end_nodes with the lowest total area&lt;br /&gt;
'''Runtime:'''&lt;br /&gt;
The runtime of the minimum enclosing circle is O(n), and the runtime of constrained k-means depends on k itself. Here, the value of k is proportional to the total number of points. &amp;lt;br&amp;gt;&lt;br /&gt;
We would expect the algorithm to slow as the number of points increase. For reference, a set of 80 points with n =3, took about 30 minutes, with number of iterations at 100. &amp;lt;br&amp;gt;&lt;br /&gt;
Further improvements could implement an early-stopping method to converge to a local optima. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:runtime.png]]&lt;br /&gt;
&lt;br /&gt;
==Visualization ==&lt;br /&gt;
The K-Means based algorithm returns the optimal solution (left), and faster. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:houstonk.png]] [[File:houstonp.png]]&lt;br /&gt;
== Step By Step Use==&lt;br /&gt;
1. The file &amp;quot;vc_circles.py&amp;quot; contains the main script, &amp;quot;master_circles&amp;quot;, which takes in the following&lt;br /&gt;
   a. &amp;quot;textfile&amp;quot;, which is the filepath of the text data to read in. It must have fields &amp;quot;lattitude',&amp;quot;longitude&amp;quot;,&amp;quot;city&amp;quot;,&amp;quot;datefirstinv&amp;quot;&lt;br /&gt;
   b. &amp;quot;n&amp;quot;, which is the number of points to include in each circle&lt;br /&gt;
   c. &amp;quot;iterations&amp;quot;, the number of iterations to try and find a local optimum. Large numbers will slow the run time.&lt;br /&gt;
   d. &amp;quot;basefn&amp;quot;, the base file path of where to store the circles and points for each city,year pair &amp;lt;br&amp;gt;&lt;br /&gt;
        an example: &amp;quot;C:\\Users\\Name\\Documents&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
        the function will add on the city,year to this base file name and save it to this file directory &amp;lt;br&amp;gt;&lt;br /&gt;
        &amp;quot;C:\\Users\\Name\\Documents\\CityYear.txt&amp;quot;&lt;br /&gt;
   e. &amp;quot;outputfn&amp;quot;, the full file path of where to output the area of the circles for a given city,year &amp;lt;br&amp;gt;&lt;br /&gt;
2. To plot the circles,points for a given year onto google maps, use the function &amp;quot;googleplotter.py&amp;quot;&lt;br /&gt;
   a. This function takes in the filename used in 1d&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
Is faster than both Brute Force and Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Is more accurate than Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Can plot to google maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Will return a tab delim text file of the following fields: city,year,total area &amp;lt;br&amp;gt;&lt;br /&gt;
Good for a large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Is not the optimal solution as number of points increases, but an approximation&lt;br /&gt;
&lt;br /&gt;
=Logical Enclosing Circle=&lt;br /&gt;
==Location==&lt;br /&gt;
The python script is located in :&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\Enclosing_Circle\EnclosingCircleRemake2.py&lt;br /&gt;
==Explanation==&lt;br /&gt;
The rationale is to take the furthest point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Take the furthest point from the initial point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Repeat until all points are enclosed. &amp;lt;br&amp;gt;&lt;br /&gt;
==Benefits==&lt;br /&gt;
Can plot to google maps &amp;lt;br&amp;gt;&lt;br /&gt;
Is faster than brute force &amp;lt;br&amp;gt;&lt;br /&gt;
Returns city, circles, year to a tab delimited text file &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Really slow for large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Offers an approximate solution that is worse than the Clustering based version &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Brute Force= &lt;br /&gt;
==Location==&lt;br /&gt;
The Julia Script is located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
The Python Script is located in:&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\enclosing_circle_brute_force.py&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
1) Find all combinations of two points in the total data set. &lt;br /&gt;
&lt;br /&gt;
2) For each of these combinations, draw a circle and figure out what other points are contained in a circle around those two points. If the circle contains at least n points, add it to a set of valid circles. There are Number of Points choose 2 possible circles. &lt;br /&gt;
&lt;br /&gt;
3) Combine the valid circles in all possible ways and see if the resulting scheme contains all of the points. If it does, add it to a set of valid schemes. I believe that the number of ways to do this is the sum from i = 1 to i = number of valid circles Number of Circles choose i. &lt;br /&gt;
&lt;br /&gt;
4) Iterate through the valid schemes and calculate the areas of the schemes. &lt;br /&gt;
&lt;br /&gt;
5) Return the scheme with the minimum area.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
Always gives you the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
For a small number of points (i.e., &amp;lt;7), this is OKAY to use. &amp;lt;br&amp;gt;&lt;br /&gt;
However, it becomes extremely slow as the number of points increases. &amp;lt;br&amp;gt;&lt;br /&gt;
The Julia/Python code does not have the capability to plot to google maps, but will plot to a normal figure. &amp;lt;br&amp;gt;&lt;br /&gt;
(will work on adding this implementation, if the need arises)&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19251</id>
		<title>Enclosing Circle Algorithm (Rework)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19251"/>
		<updated>2017-07-12T20:32:39Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* Step By Step Use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=K-Means Based Algorithm=&lt;br /&gt;
==Location==&lt;br /&gt;
The script  and associated modules are located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
The algorithm relies on an object oriented implementation of a &amp;quot;cluster&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Each &amp;quot;cluster&amp;quot; has the following associated with it: &amp;lt;br&amp;gt;&lt;br /&gt;
   1. area of minimum circle enclosing points in the cluster&lt;br /&gt;
   2. points associated with the cluster&lt;br /&gt;
   3. minimum circle associated with the cluster (x-coord,y-coord,radius)&lt;br /&gt;
   4. &amp;quot;parent&amp;quot; cluster&lt;br /&gt;
   5. &amp;quot;children&amp;quot; cluster(s)&lt;br /&gt;
'''Inputs:''' &lt;br /&gt;
   1. n, the minimum number of points to include in a circle&lt;br /&gt;
   2. k, the amount of clusters to split the points into&lt;br /&gt;
   3. valid_nodes, an empty list to store the possible clusters to explore&lt;br /&gt;
   4. explored_nodes, an empty list to store the explored clusters&lt;br /&gt;
   5. cur_node, initialized to an object with all values set to none&lt;br /&gt;
   6. end_nodes, initialized to an empty list used to store the clusters which cannot be split further&lt;br /&gt;
'''Algorithm:'''&lt;br /&gt;
   1. Calculate the area of the minimum circle enclosing the total set of points&lt;br /&gt;
   2. Split initial points into &amp;quot;k&amp;quot; clusters of at least &amp;quot;n&amp;quot; points using Constrained-K-Means Algorithm&lt;br /&gt;
   3. construct minimum circles of &amp;quot;k&amp;quot; clusters and compute their total area&lt;br /&gt;
   4. if this area &amp;lt;= area of the area of the first circle&lt;br /&gt;
   5. Add all &amp;quot;k&amp;quot; clusters to &amp;quot;valid_nodes&amp;quot;&lt;br /&gt;
   6. for node in valid_nodes, add node to explored_nodes, change cur_node to node, and update respective areas, parents, children, circle, points&lt;br /&gt;
   7. run this algorithm again, change k = 2&lt;br /&gt;
   8. if the cur_node cannot be split into 2, or the cur_node cannot be split into 2 circles with smaller areas than its parent, add cur_node to end_nodes and resume algorithm with next valid_node not in &lt;br /&gt;
      explored_node as the cur_node      &lt;br /&gt;
   9. if all the valid_nodes are in explored_nodes, return end_nodes&lt;br /&gt;
   10. repeat the above algorithm for all k from 2 to int(#number of total points/n) and take the end_nodes with the lowest total area&lt;br /&gt;
'''Runtime:'''&lt;br /&gt;
The runtime of the minimum enclosing circle is O(n), and the runtime of constrained k-means depends on k itself. Here, the value of k is proportional to the total number of points. &amp;lt;br&amp;gt;&lt;br /&gt;
We would expect the algorithm to slow as the number of points increase. For reference, a set of 80 points with n =3, took about 30 minutes, with number of iterations at 100. &amp;lt;br&amp;gt;&lt;br /&gt;
Further improvements could implement an early-stopping method to converge to a local optima. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:runtime.png]]&lt;br /&gt;
&lt;br /&gt;
==Visualization ==&lt;br /&gt;
The K-Means based algorithm returns the optimal solution (left), and faster. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:houstonk.png]] [[File:houstonp.png]]&lt;br /&gt;
== Step By Step Use==&lt;br /&gt;
1. The file &amp;quot;vc_circles.py&amp;quot; contains the main script, &amp;quot;master_circles&amp;quot;, which takes in the following&lt;br /&gt;
   a. &amp;quot;textfile&amp;quot;, which is the filepath of the text data to read in. It must have fields &amp;quot;lattitude',&amp;quot;longitude&amp;quot;,&amp;quot;city&amp;quot;,&amp;quot;datefirstinv&amp;quot;&lt;br /&gt;
   b. &amp;quot;n&amp;quot;, which is the number of points to include in each circle&lt;br /&gt;
   c. &amp;quot;iterations&amp;quot;, the number of iterations to try and find a local optimum. Large numbers will slow the run time.&lt;br /&gt;
   d. &amp;quot;basefn&amp;quot;, the base file path of where to store the circles and points for each city,year pair &amp;lt;br&amp;gt;&lt;br /&gt;
        an example: &amp;quot;C:\\users\\Name\\Documents&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
        the function will add on the city,year to this base file name and save it to this file directory &amp;lt;br&amp;gt;&lt;br /&gt;
   e. &amp;quot;outputfn&amp;quot;, the full file path of where to output the area of the circles for a given city,year &amp;lt;br&amp;gt;&lt;br /&gt;
2. To plot the circles,points for a given year onto google maps, use the function &amp;quot;googleplotter.py&amp;quot;&lt;br /&gt;
   a. This function takes in the filename used in 1d&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
Is faster than both Brute Force and Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Is more accurate than Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Can plot to google maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Will return a tab delim text file of the following fields: city,year,total area &amp;lt;br&amp;gt;&lt;br /&gt;
Good for a large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Is not the optimal solution as number of points increases, but an approximation&lt;br /&gt;
&lt;br /&gt;
=Logical Enclosing Circle=&lt;br /&gt;
==Location==&lt;br /&gt;
The python script is located in :&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\Enclosing_Circle\EnclosingCircleRemake2.py&lt;br /&gt;
==Explanation==&lt;br /&gt;
The rationale is to take the furthest point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Take the furthest point from the initial point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Repeat until all points are enclosed. &amp;lt;br&amp;gt;&lt;br /&gt;
==Benefits==&lt;br /&gt;
Can plot to google maps &amp;lt;br&amp;gt;&lt;br /&gt;
Is faster than brute force &amp;lt;br&amp;gt;&lt;br /&gt;
Returns city, circles, year to a tab delimited text file &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Really slow for large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Offers an approximate solution that is worse than the Clustering based version &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Brute Force= &lt;br /&gt;
==Location==&lt;br /&gt;
The Julia Script is located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
The Python Script is located in:&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\enclosing_circle_brute_force.py&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
1) Find all combinations of two points in the total data set. &lt;br /&gt;
&lt;br /&gt;
2) For each of these combinations, draw a circle and figure out what other points are contained in a circle around those two points. If the circle contains at least n points, add it to a set of valid circles. There are Number of Points choose 2 possible circles. &lt;br /&gt;
&lt;br /&gt;
3) Combine the valid circles in all possible ways and see if the resulting scheme contains all of the points. If it does, add it to a set of valid schemes. I believe that the number of ways to do this is the sum from i = 1 to i = number of valid circles Number of Circles choose i. &lt;br /&gt;
&lt;br /&gt;
4) Iterate through the valid schemes and calculate the areas of the schemes. &lt;br /&gt;
&lt;br /&gt;
5) Return the scheme with the minimum area.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
Always gives you the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
For a small number of points (i.e., &amp;lt;7), this is OKAY to use. &amp;lt;br&amp;gt;&lt;br /&gt;
However, it becomes extremely slow as the number of points increases. &amp;lt;br&amp;gt;&lt;br /&gt;
The Julia/Python code does not have the capability to plot to google maps, but will plot to a normal figure. &amp;lt;br&amp;gt;&lt;br /&gt;
(will work on adding this implementation, if the need arises)&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=File:Runtime.png&amp;diff=19243</id>
		<title>File:Runtime.png</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=File:Runtime.png&amp;diff=19243"/>
		<updated>2017-07-12T20:10:29Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19242</id>
		<title>Enclosing Circle Algorithm (Rework)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Enclosing_Circle_Algorithm_(Rework)&amp;diff=19242"/>
		<updated>2017-07-12T20:10:03Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* Explanation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=K-Means Based Algorithm=&lt;br /&gt;
==Location==&lt;br /&gt;
The script  and associated modules are located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
The algorithm relies on an object oriented implementation of a &amp;quot;cluster&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
Each &amp;quot;cluster&amp;quot; has the following associated with it: &amp;lt;br&amp;gt;&lt;br /&gt;
   1. area of minimum circle enclosing points in the cluster&lt;br /&gt;
   2. points associated with the cluster&lt;br /&gt;
   3. minimum circle associated with the cluster (x-coord,y-coord,radius)&lt;br /&gt;
   4. &amp;quot;parent&amp;quot; cluster&lt;br /&gt;
   5. &amp;quot;children&amp;quot; cluster(s)&lt;br /&gt;
'''Inputs:''' &lt;br /&gt;
   1. n, the minimum number of points to include in a circle&lt;br /&gt;
   2. k, the amount of clusters to split the points into&lt;br /&gt;
   3. valid_nodes, an empty list to store the possible clusters to explore&lt;br /&gt;
   4. explored_nodes, an empty list to store the explored clusters&lt;br /&gt;
   5. cur_node, initialized to an object with all values set to none&lt;br /&gt;
   6. end_nodes, initialized to an empty list used to store the clusters which cannot be split further&lt;br /&gt;
'''Algorithm:'''&lt;br /&gt;
   1. Calculate the area of the minimum circle enclosing the total set of points&lt;br /&gt;
   2. Split initial points into &amp;quot;k&amp;quot; clusters of at least &amp;quot;n&amp;quot; points using Constrained-K-Means Algorithm&lt;br /&gt;
   3. construct minimum circles of &amp;quot;k&amp;quot; clusters and compute their total area&lt;br /&gt;
   4. if this area &amp;lt;= area of the area of the first circle&lt;br /&gt;
   5. Add all &amp;quot;k&amp;quot; clusters to &amp;quot;valid_nodes&amp;quot;&lt;br /&gt;
   6. for node in valid_nodes, add node to explored_nodes, change cur_node to node, and update respective areas, parents, children, circle, points&lt;br /&gt;
   7. run this algorithm again, change k = 2&lt;br /&gt;
   8. if the cur_node cannot be split into 2, or the cur_node cannot be split into 2 circles with smaller areas than its parent, add cur_node to end_nodes and resume algorithm with next valid_node not in &lt;br /&gt;
      explored_node as the cur_node      &lt;br /&gt;
   9. if all the valid_nodes are in explored_nodes, return end_nodes&lt;br /&gt;
   10. repeat the above algorithm for all k from 2 to int(#number of total points/n) and take the end_nodes with the lowest total area&lt;br /&gt;
'''Runtime:'''&lt;br /&gt;
The runtime of the minimum enclosing circle is O(n), and the runtime of constrained k-means depends on k itself. Here, the value of k is proportional to the total number of points. &amp;lt;br&amp;gt;&lt;br /&gt;
We would expect the algorithm to slow as the number of points increase. For reference, a set of 80 points with n =3, took about 30 minutes, with number of iterations at 100. &amp;lt;br&amp;gt;&lt;br /&gt;
Further improvements could implement an early-stopping method to converge to a local optima. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:runtime.png]]&lt;br /&gt;
&lt;br /&gt;
==Visualization ==&lt;br /&gt;
The K-Means based algorithm returns the optimal solution (left), and faster. &amp;lt;br&amp;gt;&lt;br /&gt;
[[File:houstonk.png]] [[File:houstonp.png]]&lt;br /&gt;
== Step By Step Use==&lt;br /&gt;
The input filepath should be a tab delimited text file with the entries as follows: year, startup locations &amp;lt;br&amp;gt;&lt;br /&gt;
The location information should be formatted as such: [(lat1,lon1),(lat2,lon2),.....)] &amp;lt;br&amp;gt;&lt;br /&gt;
The file is located:&amp;quot;E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&amp;quot;&lt;br /&gt;
   1. Open up the file &amp;quot;googleplotter.py&amp;quot; &lt;br /&gt;
   2. where it says  with open(&amp;quot;C:\....&amp;quot;) replace the filepath in the parentheses with your filepath enclosed in quotes.&lt;br /&gt;
   3. Replace the city name in the &amp;quot;circles&amp;quot; function with the appropriate city name&lt;br /&gt;
   4. Press ctrl+s to save the file&lt;br /&gt;
   5. open up the command line&lt;br /&gt;
   6. type:  python googleplotter.py&lt;br /&gt;
   7. your resulting text file and html google plots will be outputted to:&lt;br /&gt;
      E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
Is faster than both Brute Force and Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Is more accurate than Logical Enclosing Circle. &amp;lt;br&amp;gt;&lt;br /&gt;
Can plot to google maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Will return a tab delim text file of the following fields: city,year,total area &amp;lt;br&amp;gt;&lt;br /&gt;
Good for a large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Is not the optimal solution as number of points increases, but an approximation&lt;br /&gt;
&lt;br /&gt;
=Logical Enclosing Circle=&lt;br /&gt;
==Location==&lt;br /&gt;
The python script is located in :&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\Enclosing_Circle\EnclosingCircleRemake2.py&lt;br /&gt;
==Explanation==&lt;br /&gt;
The rationale is to take the furthest point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Take the furthest point from the initial point, draw a circle with its nearest n-1 points. &amp;lt;br&amp;gt;&lt;br /&gt;
Repeat until all points are enclosed. &amp;lt;br&amp;gt;&lt;br /&gt;
==Benefits==&lt;br /&gt;
Can plot to google maps &amp;lt;br&amp;gt;&lt;br /&gt;
Is faster than brute force &amp;lt;br&amp;gt;&lt;br /&gt;
Returns city, circles, year to a tab delimited text file &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
Really slow for large number of points &amp;lt;br&amp;gt;&lt;br /&gt;
Offers an approximate solution that is worse than the Clustering based version &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Brute Force= &lt;br /&gt;
==Location==&lt;br /&gt;
The Julia Script is located in:&lt;br /&gt;
 E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
The Python Script is located in:&lt;br /&gt;
 E:\McNair\Projects\Accelerators\Enclosing_Circle\enclosing_circle_brute_force.py&lt;br /&gt;
&lt;br /&gt;
==Explanation==&lt;br /&gt;
1) Find all combinations of two points in the total data set. &lt;br /&gt;
&lt;br /&gt;
2) For each of these combinations, draw a circle and figure out what other points are contained in a circle around those two points. If the circle contains at least n points, add it to a set of valid circles. There are Number of Points choose 2 possible circles. &lt;br /&gt;
&lt;br /&gt;
3) Combine the valid circles in all possible ways and see if the resulting scheme contains all of the points. If it does, add it to a set of valid schemes. I believe that the number of ways to do this is the sum from i = 1 to i = number of valid circles Number of Circles choose i. &lt;br /&gt;
&lt;br /&gt;
4) Iterate through the valid schemes and calculate the areas of the schemes. &lt;br /&gt;
&lt;br /&gt;
5) Return the scheme with the minimum area.&lt;br /&gt;
&lt;br /&gt;
==Benefits==&lt;br /&gt;
Always gives you the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Drawbacks==&lt;br /&gt;
For a small number of points (i.e., &amp;lt;7), this is OKAY to use. &amp;lt;br&amp;gt;&lt;br /&gt;
However, it becomes extremely slow as the number of points increases. &amp;lt;br&amp;gt;&lt;br /&gt;
The Julia/Python code does not have the capability to plot to google maps, but will plot to a normal figure. &amp;lt;br&amp;gt;&lt;br /&gt;
(will work on adding this implementation, if the need arises)&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19181</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19181"/>
		<updated>2017-07-11T16:18:17Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 6/30/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
&lt;br /&gt;
==7/10/2017==&lt;br /&gt;
Ran the MATLAB code for the monte carlo after fixing the bugs. &amp;lt;br&amp;gt;&lt;br /&gt;
Installed the MATLAB interface for Gurobi &amp;lt;br&amp;gt;&lt;br /&gt;
Worked on finishing some test cases for the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==7/11/2017==&lt;br /&gt;
The code ran and worked just fine. &amp;lt;br&amp;gt;&lt;br /&gt;
Now I need to figure out how to replace the optimization in the code with a Gurobi optimization. &amp;lt;br&amp;gt;&lt;br /&gt;
Finished the code for test cases on the enclosing circle. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19101</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19101"/>
		<updated>2017-06-30T20:56:59Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 6/30/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Went over a few methods to speed up the code:&lt;br /&gt;
 1. Use gurobi for the solver&lt;br /&gt;
 2. run the sampling on a bunch of clusters&lt;br /&gt;
Downloaded gurobi:&lt;br /&gt;
 password: amount&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19099</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19099"/>
		<updated>2017-06-30T20:50:40Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 6/20/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
	<entry>
		<id>http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19098</id>
		<title>Abhijit Brahme (Work Log)</title>
		<link rel="alternate" type="text/html" href="http://www.edegan.com/mediawiki/index.php?title=Abhijit_Brahme_(Work_Log)&amp;diff=19098"/>
		<updated>2017-06-30T20:50:22Z</updated>

		<summary type="html">&lt;p&gt;AbhiB: /* 6/20/2017 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Abhijit Brahme]] [[Work Logs]]&lt;br /&gt;
[[Abhijit Brahme (Work Log) | (log page)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==6/5/2017==&lt;br /&gt;
Downloaded Atom IDE along with Juno, a Julia specific console. &amp;lt;br&amp;gt;&lt;br /&gt;
Began looking at MATLAB code for the Entrepreneurship Matching Project and trying to understand it &amp;lt;br&amp;gt;&lt;br /&gt;
Began translating enclosing circle algorithm from python to julia &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/6/2017==&lt;br /&gt;
Looked through MATLAB code for Entrepreneurshp Matching with James, Ed in-depth &amp;lt;br&amp;gt;&lt;br /&gt;
Understood the general idea of the code; Going to call original author for more details. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the Julia implementation of Brute Force Enclosing Circle. (had to install &amp;quot;Combinatorics&amp;quot;) &amp;lt;br&amp;gt;&lt;br /&gt;
There are small errors with the number of valid circles; still need to implement plotting circles on map.&lt;br /&gt;
&lt;br /&gt;
==6/7/2017==&lt;br /&gt;
FIXED the errors involved with translating Python to Julia for Enclosing Circle (Brute Force) &amp;lt;br&amp;gt;&lt;br /&gt;
Implemented the plots in Julia using PyPlot and Plots (need to Pkg.add(&amp;quot;Plots&amp;quot;) and Pkg.add(&amp;quot;PyPlot&amp;quot;)) &amp;lt;br&amp;gt; &lt;br /&gt;
Run time in the Julia implementation is actually 2x as slow for the small test set ( 1.12 s for Julia, .55 for Python) &amp;lt;br&amp;gt;&lt;br /&gt;
Need to look into vectorizing some of the code &amp;lt;br&amp;gt;&lt;br /&gt;
Steps Forward:&lt;br /&gt;
     1) The code might not be optimized for Julia, so try doing that &lt;br /&gt;
     2) The code for Julia for overhead might be great so it might be slower on a smaller set; try on a bigger set of test points&lt;br /&gt;
     3) Come up with a better algorithm&lt;br /&gt;
Code Location:&lt;br /&gt;
     E:\McNair\Software\CodeBase\Julia Code for enclosing circle&lt;br /&gt;
&lt;br /&gt;
==6/8/2017==&lt;br /&gt;
Ran the &amp;quot;bigexample&amp;quot; for Julia and Python Brute Force.... still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Only got through about 7 combinations in about 8 hours...not very promising. &amp;lt;br&amp;gt;&lt;br /&gt;
Quit the program. It started taking up about 50% memory &amp;lt;br&amp;gt;&lt;br /&gt;
Began working on enclosing circle algorithm. Found promising information regarding a constrained K-means algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
working on implementing the constrained K-means with the smallest enclosing circle to solve the Enclosing Circle Problem &amp;lt;br&amp;gt;&lt;br /&gt;
Code Location for New Enclosing Circle:&lt;br /&gt;
    E:\McNair\Software\CodeBase\New Implement of Enclosing Circle (Constrained K Means, Smallest Circle)&lt;br /&gt;
&lt;br /&gt;
==6/9/2017==&lt;br /&gt;
Wrote up the code for the new algorithm. It runs blazing fast. &amp;lt;br&amp;gt;&lt;br /&gt;
We are worried about the optimality of the solution. I don't take into account border points. &amp;lt;br&amp;gt;&lt;br /&gt;
These are points that could be shared by circles. An idea is to add border points into both clusters, then run the smallest enclosing circle on those sets of points. &amp;lt;br&amp;gt;&lt;br /&gt;
I'll include a full Algorithm write-up on Monday once I have all the kinks worked out. &lt;br /&gt;
&lt;br /&gt;
==6/12/2017==&lt;br /&gt;
Solved the issue of points not being shared by iterating through all possible splits (ie k = 1:floor(numpoints/n)) &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm runs much slower due to iterating through all K, but it is still faster than others &amp;lt;br&amp;gt;&lt;br /&gt;
I tried a version where I don't keep &amp;quot;K&amp;quot; constant throughout the loop. This converged to a better solution &amp;lt;br&amp;gt; &lt;br /&gt;
I ended up changing K to 2 after the first split. (first split points into 10 points then split those ten points into 2, etc) &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/13/2017==&lt;br /&gt;
Will run previous algorithm (Peter and Christy's) and compare to mine &amp;lt;br&amp;gt;&lt;br /&gt;
If not the same, will update [[Enclosing Circle Algorithm]] page with my algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/14/2017==&lt;br /&gt;
Ran Christy and Peter's algorithm on a small data sample. It worked faster than mine, and achieved the correct answer. &amp;lt;br&amp;gt;&lt;br /&gt;
Currently running their algorithm on a much larger data sample. It is still running, and exhibits slower run time than mine. &amp;lt;br&amp;gt;&lt;br /&gt;
Will leave it running to see what it converges to. &lt;br /&gt;
&lt;br /&gt;
== 6/15/2017==&lt;br /&gt;
Built a html scraper in Python to scrape Accelerator data from [http://gan.co/members]&lt;br /&gt;
The code and resulting tab-separated text file is located in:&lt;br /&gt;
     E:\McNair\Projects\Accelerators\Web Scraping for Accelerators&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
== 6/16/2017 == &lt;br /&gt;
Attempted to try and plot the circles for Houston to Google Maps. &amp;lt;br&amp;gt;&lt;br /&gt;
Succeeded in plotting the points themselves but not the circles &amp;lt;br&amp;gt;&lt;br /&gt;
This is a bit strange considering I reused code from the previous project. &lt;br /&gt;
==6/19/2017==&lt;br /&gt;
Succeeded in plotting the circles for Houston on Google Maps &amp;lt;br&amp;gt;&lt;br /&gt;
Algorithm is faster than previous algorithm. &amp;lt;br&amp;gt;&lt;br /&gt;
Made new page for the project &amp;lt;br&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==6/20/2017==&lt;br /&gt;
Created a script in python to concatenate 162 excel files&lt;br /&gt;
The file is located in the following location:&lt;br /&gt;
 &amp;quot;E:\McNair\Projects\SBIR\Aggregate SBIR&amp;quot;&lt;br /&gt;
It is titled &amp;quot;concat_excel.py&amp;quot; &amp;lt;br&amp;lt;&lt;br /&gt;
The text file is in the folder, titled &amp;quot;SBIR&amp;quot; &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/23/2017==&lt;br /&gt;
fixed some bugs in the k-means based enclosing circle algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
updated [[Enclosing Circle Algorithm (Rework)]] &amp;lt;br&amp;gt;&lt;br /&gt;
started running the algorithm on list of houston city coords &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/26/2017==&lt;br /&gt;
For a total of 41 coordinate sets, the algorithm completed the plots in about 32 hours. &amp;lt;br&amp;gt;&lt;br /&gt;
Average run time at a little over an hour per coordinate set &amp;lt;br&amp;gt;&lt;br /&gt;
Added functionality that would save the area of the total circles to a text file &amp;lt;br&amp;gt;&lt;br /&gt;
Running this now and will be completed end of the day tomorrow. &amp;lt;br&amp;gt;&lt;br /&gt;
Worked through the MATLAB code for the monte carlo &amp;lt;br&amp;gt;&lt;br /&gt;
Stripped the code for MSM,Monte Data, Industry 4, and Genetic Algorithm &amp;lt;br&amp;gt;&lt;br /&gt;
Will run tomorrow and adjust the data locations to try and debug &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/27/2017==&lt;br /&gt;
Identified some key errors in the stripped code for the Monte&lt;br /&gt;
 1. The genetic algorithm is not returning a scalar value&lt;br /&gt;
 2. The problem is the objective function is returning an empty vector, instead of a scalar&lt;br /&gt;
Made a plotter for Diana so she can visualize Houston Start-Up Data&lt;br /&gt;
==6/28/2017==&lt;br /&gt;
Fixed the bug. It was because we didn't have a global variable in the master script. &amp;lt;br&amp;gt;&lt;br /&gt;
James helped figure this out. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/29/2017==&lt;br /&gt;
Figured out there was another bug in the code. After the optimization finished, there is a problem of mismatched dimensions. &amp;lt;br&amp;gt;&lt;br /&gt;
The code itself still takes a very long time to run. &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==6/30/2017==&lt;br /&gt;
Fixed the mismatched dimensions problem, but the code is still running. &amp;lt;br&amp;gt;&lt;br /&gt;
Updated the plotter to include heatmaps. &amp;lt;br&amp;gt;&lt;br /&gt;
The geocode might be erroneous. &lt;br /&gt;
[[Category: Work Log]]&lt;/div&gt;</summary>
		<author><name>AbhiB</name></author>
		
	</entry>
</feed>