我笔下的交大

第一次参试在OpenStreetMap画图,昨天花了一晚上完成西南交大犀浦校区。直接输出的图片如下

交大

使用退火算法快速计算较优解

退火算法主要是解决NP完成问题需要便利所有解空间才能计算出最优解

// SA.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <math.h>
#include <stdlib.h>
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
    double Test[100000];
    int i=0;
    for (i=0;i<100000;i++)
    {
        Test[i] = rand() % 1000;
    }

    int nStart = GetTickCount();
    double nMax = 0;
    for (i=0;i<100000;i++)
    {
        if (nMax<Test[i])
        {
            nMax = Test[i];
        }
    }
    int nEnd = GetTickCount();
    // 遍历得到的最大值
    printf( "Max is %f, use %d\n", nMax ,nEnd-nStart);


    nStart = GetTickCount();
    double nCur = 0; //当前解
    double nNext = 0; //下一解
    double T = 10000; //初始温度
    double T_min = 0.0001; //最终温度
    double r = 0.9; //温度衰减率
    double dE = 0;  //
    i=0;
    while( T > T_min )
    {
        nNext = Test[i+1]; //获取下一个解
        dE = nNext - nCur ;  //解的差值

        if ( dE >= 0 )  //表达移动后得到更优解,则总是接受移动
            nCur = nNext ;  //接受从Y(i)到Y(i+1)的移动
        else
        {
        // 函数exp( dE/T )的取值范围是(0,1) ,dE/T越大,则exp( dE/T )也越大
            double sd = exp( (double)dE/T );
            double ran = (double)rand() / RAND_MAX; // 这里使用随机数表示已一定的概率接受
            if ( sd > ran)
                nCur = nNext ;  //接受从Y(i)到Y(i+1)的移动
        }
        T = r * T ;  //降温退火 ,0<r<1 。r越大,降温越慢;r越小,降温越快
        /*
    * 若r过大,则搜索到全局最优解的可能会较高,但搜索的过程也就较长。若r过小,则搜索的过程会很快,但最终可能会达到一个局部最优值
        */
        i ++ ;
        if (i==100000)
        {
            break;
        }
    }
    nEnd = GetTickCount();
    // 模拟退火得到的
    printf( "SA Max is %f, use %d\n", nCur,nEnd-nStart );
    return 0;
}

参考资料

大白话解析模拟退火算法

http://www.cnblogs.com/heaad/archive/2010/12/20/1911614.html

模拟退火算法

http://baike.baidu.com/view/18185.htm

Rails初体验

系统环境Ubuntu

安装ruby(irb ri可选)

sudo apt-get install ruby ruby-dev

测试ruby

ruby -v

到这ruby就安装好了,不熟悉ruby的可以体验下

安装rails依赖的程序 sqlite3 nodejs

sudo apt-get install sqlite3 libsqlite3-dev nodejs

安装rails

sudo gem install rails

测试rails

rails -v

创建一个rails工程

rails new mytest

进入工程 cd mytest

启动服务(可以按Ctrl+C停止服务)

rails server

测试服务

http://localhost:3000

rails

停止服务

Ctrl+C

利用脚手架(scaffolded)建立一个叫Photo资源(scaffolded 非常方便)

rails generate scaffold Photo url:string source_id:integer votes:integer

整合数据库

rake db:migrate

启动服务

rails server

测试Photo资源

http://localhost:3000/photos

在这里你可以对photos表进行操作,我已经添加了两条记录。

rails

另外还可以通过 http://localhost:3000/photos.json 得到json格式的数据

我们好像什么代码页没写,就做出一个web程序。下面我们看看其实现原理

railsMVC结构的

model 一般就是数据结构

controller 是负责整个应用的逻辑

view 用于数据展示。

mytest目录下有下面几个重要的文件

app/models 里面 photo.rb ,里面是个对应photo表的类

rails

app/views 里面包含一个photos的文件夹,在里面就是显示、添加、修改、删除等html界面

rails

app/controllers 里面有个叫 photos_controller.rb,里面包含对 photo表的显示、添加、修改、删除等操作。

rails

这些就是完成上面功能的核心。

nginx初体验

nginx

检出最新代码

svn checkout svn://svn.nginx.org/nginx/trunk

进入代码目录

cd trunk

运行configure 最新代码要在auto目录外面运行,prefix参数看你自己需要设置

./auto/configure --prefix=/opt/hanchao/nginx/

编译

make

安装

make install

进入安装好的目录

cd /opt/hanchao/nginx/sbin

启动web服务

./nginx

提示80端口被使用修改conf/nginx.conf找到listen 80,改为listen 8010后重新启动 测试

http://10.15.5.51:8010/

nginx

关闭web服务

./nginx -s stop

超图导航该怎么走才好

最近部门出现一些坏味道,产品规划不清晰,人才流失严重。作为导航事业部的核心产品SNE,经过这么多年的发展,它的价值到底在哪,它能为部门带来什么,它的未来到底在哪?做平台,做大众,做行业,做在线,做运营?超图导航需要一次怎样的重构转型,公司又能给部门多少支持和时间?

最近重新翻出08年gis-thinker在3Snews发表的一篇文章《超图SNE的“死路”分析》,现在读来却相当值得思考。它说的可不是什么路径算法问题,而是产品定位和经营策略问题。

  • SNE是什么?

超图导航开发引擎,目的是开发一个导航领域的二次开发平台,用户能够借助这个二次开发平台来开发自己的导航软件和产品。这看上去很美,而在导航产业链中,从最基础的地图数据,到地图数据的渲染加工,再到导航软件的开发,到硬件产品的订制,数据加密,最后是数据和软件的灌装,再到发布,其中最没有发言权和市场份额的,就是这个导航引擎厂商了。

  • SNE的盈利模式是什么?

卖许可。可是在盗版这么猖獗的国度,做通用软件是注定不可能有大的发展的,金山苦撑了多少年?其他的通用软件,哪个真正发展壮大了?我们缺乏这样的土壤。超图目前的主打产品,走行业应用, 在各类政府及企业的信息化项目中应用,这样是可以的,但是一个通用软件靠卖许可来赚钱,在中国还没有一个先例。

  • 出路呢?

要么是向服务运营转型,比如金山现在做网游运营,要么就是朝项目的行业应用转型,变成导航类项目的平台软件。要么,就是被数据厂商或者硬件厂商收购,成为御用软件开发团队。

超图导航该怎么走才好?

向左走,向右走?