精华内容
下载资源
问答
  • 知识点:伯努利分布、二项式分布、多项式分布、先验概率,后验概率,共轭分布、贝塔分布、贝塔-二项分布、负二项分布、狄里克雷分布,伽马函数、分布 一,伯努利分布(bernouli distribution) 又叫做0-1分布,...

    知识点:伯努利分布、二项式分布、多项式分布、先验概率,后验概率,共轭分布、贝塔分布、贝塔-二项分布、负二项分布、狄里克雷分布,伽马函数、分布

    一,伯努利分布(bernouli distribution)


    又叫做0-1分布,指一次随机试验,结果只有两种。也就是一个随机变量的取值只有0和1。
    记为:0-1分布 或 B(1,p),其中p表示一次伯努利实验中结果为正或为1的概率。
    概率计算:

    P(X=0)=p0
    P(X=1)=p1

    期望计算:
    E(X)=0p0+1p1=p1

    最简单的例子就是,抛一次硬币,预测结果为正还是反。

    二,二项式分布(binomial distrubution)


    表示n次伯努利实验的结果。
    记为:XBn,p,其中n表示实验次数,p表示每次伯努利实验的结果为1的概率,X表示n次实验中成功的次数。
    概率计算:

    P(X=k)=Cknpk(1p)nk,k=0,1,2,...,n

    期望计算:
    E(X)=np

    例子就是,求多次抛硬币,预测结果为正面的次数。

    三,多项式分布(multinomial distribution)


    多项式分布是二项式分布的扩展,不同的是多项式分布中,每次实验有n种结果。
    概率计算:

    P(X1=n1,...,Xk=nk)=n!i=1kpniini!,i=1kni=n0,otherwise
    期望计算:
    E(Xi)=npi

    最简单的例子就是多次抛筛子,统计各个面被掷中的次数。

    四,先验概率,后验概率,共轭分布


    先验概率和后验概率 :

    先验概率和后验概率的概念是相对的,后验的概率通常是在先验概率的基础上加入新的信息后得到的概率,所以也通常称为条件概率。比如抽奖活动,5个球中有2个球有奖,现在有五个人去抽,小名排在第三个,问题小明抽到奖的概率是多少?初始时什么都不知道,当然小明抽到奖的概率P(X=1)=25。但当知道第一个人抽到奖后,小明抽到奖的概率就要发生变化,P(X=1|Y1=1)=14。再比如自然语言处理中的语言模型,需要计算一个单词被语言模型产生的概率P(w)。当没有看到任何语料库的时候,我们只能猜测或者平经验,或者根据一个文档中单词w的占比,来决定单词的先验概率P(w)=11000。之后根据获得的文档越多,我们可以不断的更新P(w)=count(w)old+count(w)new|Dold|+|Dnew|。也可以写成P(w|Dnew)=count(w)old+count(w)new|Dold|+|Dnew|。再比如,你去抓娃娃机,没抓之前,你也可以估计抓到的概率,大致在15150之间,它不可能是1100012。然后你可以通过投币,多次使用娃娃机,更据经验来修正,你对娃娃机抓到娃娃的概率推断。后验概率有时候也可以认为是不断学习修正得到的更精确,或者更符合当前情况下的概率。

    共轭分布 :

    通常我们可以假设先验概率符合某种规律或者分布,然后根据增加的信息,我们同样可以得到后验概率的计算公式或者分布。如果先验概率和后验概率的符合相同的分布,那么这种分布叫做共轭分布。共轭分布的好处是可以清晰明了的看到,新增加的信息对分布参数的影响,也即概率分布的变化规律。
    这里有个疑问是,如何由先验分布得到后验分布,如何选择?下面举例beta分布进行详解。

    p(θ|X)=p(X|θ)p(θ),通常我们称p(θ|X)为后验概率,即添加观测X后的概率。p(X|θ)为似然函数,为模型。p(θ)为先验概率。通常p(X|θ)修正求解的模型,θ为模型的参数。参数θ不是一个固定的值,也是服从某种分布p(θ)。我们可以通过贝叶斯后验公式来更新θ。如果θ的先验概率p(θ)和后验概率p(θ|X)是同一种分布,那么似然函数p(X|θ)和先验概率p(θ)共轭,因为求出来后验概率和先验概率是同一种分布。

    五,贝塔分布(beta distribution)

    计算公式:

    P(x)=Beta(x;α,β)=xα1(1x)β110μα1(1μ)β1dμ=Γ(α+β)Γ(α)Γ(β)xα1(1x)β1=1B(α,β)xα1(1x)β1
    其中,B(a,b)是beta函数。
    期望:
    E(p)=aa+b

    首先,现实生活中我们通常需要估计一件事情发生的概率,如抛一次硬币为正面的概率。我们可以进行统计的方式给出答案,比如抛了100次硬币,其中有30次向上,我们就可以说这个硬币为正面的概率是0.3。当然我们可以从另外一个角度回答问题,比我对实验的公信度进行怀疑,我就可以说为正面的概率是0.3的可能性是0.5,为0.2的可能性是0.2,为0.4的概率是0.3,给出硬币为正面的概率的分布,即伯努利实验中p的分布。给出参数的分布,而不是固定值,的好处有很多。

    • 一,如抛100次中,30次向上,和抛100000次中30000次向上,两者估计p的值都是0.3。但后者更有说服力。如果前者实验得到p为0.3的置信度是0.5的话,后者实验得到p为0.3的置信度就有可能是0.9,更让人信服。
    • 二,估计一个棒球运动员的击球命中率。如果我们统计一个新棒球运动员的比赛次数,发现,3场比赛中,他击中2次,那么我们可以说他的击球命中率是23么?显然不合理,因为因为根据棒球的历史信息,我们知道这个击球率应该是0.215到0.36之间才对。但如果我们给出的是击球明中率的分布,而不是固定的值,就可以表示我们对当前击球命中率估计的置信度,提供了更加丰富的信息。因为只观察了三次比赛,所以我们得到运动员命中率为23的概率是0.1,表示我们对这个命中率值不确定。

    接着进入正题:由前面可知,我们的需求是为了模拟模型参数的模型,beta分布是来模拟”取值范围是从0到1时的模型的参数的分布”。比如就求抛硬币为正的概率p为例。如果我们知道p的取值,我们就可以计算抛10次硬币,其中有1次向上的概率是P(X=1)=C1np(1p)9,有3次向上的概率是P(X=1)=C3np3(1p)7,有6次向上的概率是P(X=6)=C6np3(1p)7。那么我们如何求p值呢?
    前面说的有两种方法,一个是给固定的值 ,一个给值的密度分布函数。我们这里介绍后者,假设p值符合Beta分布。即P(p)=Beta(p;a,b)=pa1(1p)b1B(a,b)。那么现在我们又做了10次实验,其中4次为正,6次为反,称为信息X。那么我们现在要计算得到信息X后概率p的分布,即P(p|X),根据贝叶斯条件概率计算公式

    P(p|X)=P(X|p)P(p)P(X)
    =P(X|p)P(p)10P(X|pi)P(pi)dpi
    =(C410p4(1p)6)(pa1(1p)b1B(a,b))10(C410p4i(1pi)6)(pa1i(1pi)b1B(a,b))dpi
    =(p4(1p)6)(pa1(1p)b1)10(p4i(1pi)6)(pa1i(1pi)b1)dpi
    =p4+a1(1p)6+b110p4+a1i(1pi)6+b1dpi
    =p4+a1(1p)6+b1B(4+a,6+b)
    =Beta(p;4+a,6+b)
    ,这里使用最大似然估计计算P(X|p),即P(X|p)=C410p4(1p)6P(p)P(pi)使用的是先验概率(贝叶斯概率本来就是用先验概率计算后验概率的公式)。其中分子分母中C410B(a,b)函数是常数项可以约去,最后得到:P(p|X)=Beta(p,a+4,b+6),p[0,1]
    重新解释下整个过程,目的是计算得到p的概率分布,而不是固定的值。首先根据之前的经验或者统计,假设p服从Beta(a,b)分布,a表示之前统计中为正的次数,b为之前统计中为负的次数。接着,根据新做的实验或者新到达的信息X,来修正p的分布,修正后的p同样是服从Beta分布,只不过是参数由(a,b)变成(a+m,b+n),m表示新得到的信息中为正的次数,n表示新得到的信息中为负的次数。这样的修正过程可以很直观的被理解,而且修改前后是兼容的,很好的体现了一个学习修正的过程。

    贝塔分布的pdf图:
    这里写图片描述

    六,贝塔-二项分布(beta-binomial distribution)

    The beta-binomial distribution is the binomial distribution in which the probability of success at each trial is not fixed but random and follows the beta distribution.
    贝塔-二项分布是指,二项分布中的参数p不是固定的值,是服从Beta(a,b)分布。
    计算公式:

    P(X=k|p,n)=L(p|k)=Cknpk(1p)nk
    其中L(p|k)表示二项式分布的最大似然估计计算方式。然后将π(p|a,b)=Beta(a,b)整合到p得,
    P(X=k|p,n)=10L(p|k)π(p|a,b)dp
    =CknB(a,b)10pk+a1(1p)nk+b1dp
    =CknB(k+a,nk+b)B(a,b)
    期望:
    E(X)=na(a+b)

    七,负二项分布(negative binomial distribution)

    Suppose there is a sequence of independent Bernoulli trials. Thus, each trial has two potential outcomes called “success” and “failure”. In each trial the probability of success is p and of failure is (1 − p). We are observing this sequence until a predefined number r of failures has occurred. Then the random number of successes we have seen, X, will have the negative binomial (or Pascal) distribution。
    一次伯努利实验分为成功和失败两个结果。现在观察连续伯努利实验,直到r次失败事件产生为止,我们观察到成功的个数。记为:XNB(r,p)。比如我们可以用来模拟机器在出故障前可以工作的天数的分布,即一个新机器可以运行多少天不出故障。
    计算公式:

    f(k;r,p)=Pr(X=k)=Ckk+r1pk(1p)r=Cr1k+r1pk(1p)r,k=0,1,2...
    (注意:是k+r-1个种选取k个,不是k+r,因为最后一个是固定的1-p。)
    期望:
    E(N)=r(1p),N表示要想观察到r次失败,需要进行试验的总次数。
    E(K)=Nr=r(1p)r=rp(1p),相当于成功和失败的比例是Kr=p1p

    八.零,伽马函数,伽马分布(gamma distribution),贝塔函数

    伽马函数

    Γ(n)=(n1)!nΓ(z)=0xz1exdxz0

    下图是伽马函数在复数域和实数域上的图像:
    这里写图片描述
    这里写图片描述

    有了伽马函数我们就可以计算2.5!0.3!(1.1+2.4i)!
    贝塔函数
    贝塔函数是01区间上的积分:

    B(x,y)=10tx1(1t)y1dt=Γ(x)Γ(y)Γ(x+y)

    在狄里克雷中我们定义:
    B(α)=Kk=1Γ(αk)Γ(Kk=1αk)


    从统计学或者概率论角度来说,指数分布,正态分布,泊松分布,卡方分布,均匀分布等等,其根源(我是指数学根源,而非实际问题根源),都是来自于这两个函数。


    伽马分布

    f(x;αβ)=βαxα1eβxΓ(α)Γ(α)=0tα1etdtt=βx,Γ(α,β)=βα0xα1exβdx

    假设随机变量X为等到第α件事发生所需之等候时间。(不是很理解,之后在学习吧)
    这里写图片描述

    怎么来理解伽玛(gamma)分布? - T Yuan的回答 - 知乎
    https://www.zhihu.com/question/34866983/answer/60541847

    八,狄里克雷分布(Dirichlet distribution)

    由前面的介绍可以知道,当前后验概率相同共轭时,有两个关键的部分,即Beta分布的推导过程中,先是参数个数是一个,p,而且求P(X|p)是采用二项分布的计算公式。现在进行推广,将参数有1个推广到多个,求P(X|p*)采用多项式分布的计算公式。
    计算公式:

    p(π|α)=Γ(Kk=1αk)Kk=1Γ(αk)k=1Kπαk1k
    期望:
    E(πk)=αk(α1+α2+...+αK)

    简单举例,beta分布是模型抛硬币为正的概率的分布,Dirichlet可以是掷骰子模型中的参数的分布。刚刚开始假设筛子个个面被掷中概率服从Dirichlet(π|10,10,20,20,20,20))。现在又做了100次掷骰子实验,假设为1的次数是20,为2的次数是10,为3的次数是40,为4的次数是10,为5的次数是10,为6的次数是10。所以根据贝叶斯后验概率公式和多项式分布更新得到筛子个个面被掷中概率服从Dirichlet(π|(30,20,60,30,30,30))

    贝塔分布和狄里克雷分布一般都作为参数的分布。
    贝塔分布可以写成:
    P(x1,x2)=Beta(x1,x2;α,β)=xα11xβ1210μα1(1μ)β1dμ
    其中x1+x2=1。公式很容易记住,上面就是每个x与其对应的参数减一的指数,相乘,然后分母就是01区间上积分,相当于归一化处理。
    狄里克雷分布也同样写成:
    p(π1,π2,...,πK|α)=Γ(Kk=1αk)Kk=1Γ(αk)Kk=1παk1k=Kk=1παk1kB(α1,α2,...αK)
    其中π1+π2+...+πK=1。和贝塔分布一样,分子是每个x与其对应的参数减一的指数,相乘,然后分母就是01区间上积分,相当于归一化处理。

    狄里克雷的pdf图:
    这里写图片描述

    九,几何分布(Geometric distribution)

    几何分布(Geometric distribution)是离散型概率分布。其中一种定义为:在n次伯努利试验中,试验k次才得到第一次成功的机率。或者定义为:在n次伯努利试验中,需要失败k次才得到第一次成功的机率。两者的区别在于前者k取值从1到无穷,后者k取值从0到无穷。(后面的公式以第一种定义为例)
    根据定义显然几何分布表示前k-1次试验都失败,只要最后第k次试验成功即可。
    计算公式:

    p(X=k)=(1p)k1p
    期望:
    E(X)=1p
    方差:
    VAR(X)=1pp2

    参考:

    https://www.zhihu.com/question/23749913?f=41824312

    http://nooverfit.com/wp/%E7%94%A8python%E5%81%9A%E8%B4%9D%E5%8F%B6%E6%96%AFab%E6%B5%8B%E8%AF%95-%E8%B4%9D%E5%8F%B6%E6%96%AFab%E6%B5%8B%E8%AF%95%E5%85%A5%E9%97%A8-%E4%BB%A5%E5%8F%8A%E5%85%B1%E8%BD%AD/

    https://www.zhihu.com/question/41846423

    https://www.zhihu.com/question/39004744

    https://www.zhihu.com/question/30269898

    https://en.wikipedia.org/wiki/Beta-binomial_distribution

    https://en.wikipedia.org/wiki/Negative_binomial_distribution

    展开全文
  • 读书笔记-六项精进

    千次阅读 2019-06-21 19:26:36
    六项精进-稻盛和夫 前言 1956年,稻盛和夫在一家陶瓷企业打工,时年24岁。 我们现代人的机会很多,这位大人物24岁的时候还在打工,他的人生仍然取得了如此成就,说明我们的成就更不可限量 稻盛哲学: 人生·工作...

    六项精进-稻盛和夫

    前言

    1956年,稻盛和夫在一家陶瓷企业打工,时年24岁。

    我们现代人的机会很多,这位大人物24岁的时候还在打工,他的人生仍然取得了如此成就,说明我们的成就更不可限量

    稻盛哲学:
    人生·工作结果=人格理念 x 热情 x 能力

    正确思考的威力

    稻盛刚入职打工的时候,该企业连续十年赤字,他当时也怨天尤人。

    但当身为技术员的稻盛先生正确思考一个优秀的技术员应该如何开展研究工作,并全身心投入时,奇迹出现了。

    之后稻盛创造了“阿米巴经营”模式,实现了真正的全员经营

    孙正义也是稻盛创办的“盛和塾”的塾生

    思考是人的显意识在发挥作用,但如果你怀抱善念,针对某一难题,朝思暮想、左思右想、前思后想、苦思冥想,一天24小时思考,反复地、深入地、强烈地思考,这样你的愿望会渗入潜意识,在不经意间,潜意识会突然给你灵感,让你心中一亮,立即抓住事物的核心,问题顷刻间迎刃而解

    目录

    第一章:六项精进:

    • 前言
    • 一、付出不亚于任何人的努力
    • 二、要谦虚,不要骄傲
    • 三、要每天反省
    • 四、活着,就要感谢
    • 五、积善行、思利他
    • 六、不要有感性的烦恼

    第二章:超越经济变动,实现企业持续发展
    第三章:忍受萧条、伺机出动
    第四章:稻盛和夫论谦虚
    第五章:盛和塾塾生心得

    第一章:六项精进

    前言

    如果你想拥有幸福的、美好的、平和的人生,如果你想把你的企业经营得有声有色,如果你想让你公司的员工幸福快乐,那么,你就忠实地实践“六项精进”吧。

    一、付出不亚于任何人的努力

    1.1拼命工作是一切生命都在承担的义务

    • 稍微有了点成绩就偷懒,想舒服,这种浅薄的想法也就是我们人类才有
    • 在自然界:动植物都在竭尽全力、拼命地求生存
    • 夏天烈日炎炎下:杂草会从柏油马路的裂缝中发芽生长
    • 沙漠里:有些植物趁着一场雨,很快发芽、长叶、开花、结果然后枯萎,只为了留下子孙,只要有一点雨水,他们就会开花结果
    • 这是自然哲理

    自称是在努力工作是不够的,实际上你的努力还远远不够。如果你不更加认真,不更加努力,那么公司也好,个人的人生也好,都不会有理想的结果,这就是“付出不亚于任何人的努力”的含义。

    1.2只要你喜欢你的工作,再努力也不觉其苦

    拼命工作是辛苦的事情,辛苦的事情要一天天持续下去,必须有个条件,那就是让自己喜欢上现在所从事的工作。

    稻盛和夫从小时候起就这么想:努力让自己喜欢自己从事的工作。

    当时入职的时候,抱着满腹牢骚从事研究工作,工作根本无法顺利进展,因此,他决定让自己喜欢这项工作,之后创造了…

    据说成功有许多方法,但稻盛和夫看来,抛弃“竭尽全力、拼命工作”这一条,就不可能有什么成功。

    1.3全力投入工作就会产生创意

    当你每天聚精会神、全身心投入工作的时候,低效的、漫不经心的现象就会消失。

    稻盛不认为自己有多大能耐,但是,在每天努力工作的同时,他会开动脑筋,孜孜以求,推敲更好的工作方法。为了增加销售,还有没有更好的促销方案呢?为了提高效率,还有没有更好的生产方式呢?这样不断专研的结果,往往会出现自己都竟想不到的进展。

    1.4拼命工作可以磨练灵魂

    古话说“小人闲居不为善”,人这种动物,一旦有了闲暇,就会动不正经的念头,干不正经的事。但如果忙忙碌碌、专注于工作,就不会有非分之想,没有时间考虑多余的东西了。

    禅宗的和尚:他们在刻苦修行的过程中磨练自己的灵魂。将心思集中到一点,抑制杂念狂想,不给它们作祟的空间,通过这样的修行,整理自己的心绪,磨练自己的心智,造就纯粹而优秀的人格。同理,全身心投入工作,就没有胡思乱想,也就是说,竭尽全力、拼命工作就会磨练人的灵魂。

    磨练了自己的灵魂,铸就美好的心灵就可以自然地去想好事,做好事。虽然我们并不知晓自己被赋予了怎样的命运,但是,想好事,做好事,这种念头,这种实践,会形成一种力量,促使我们的命运朝着更好的方向转变。

    六项精进的第一项:“付出不亚于任何人的努力”,就是“竭尽全力、拼命工作”这一条,对经营企业也好,对度过美好的人生也好,都是必不可少的。

    二、要谦虚,不要骄傲

    稻盛认为,谦虚是最重要的人格要素。我们常说,那个人的人格很高尚,意思是说,那个人的人格中具备了谦虚的美德。

    不仅仅要求大企业和成功的人谦虚,而且是要求经营者在小企业成长为大企业的整个过程中,始终保持谦虚的态度。

    中国一句古话:“惟谦受福”。不谦虚就得不到幸福,能得到幸福的人都很谦虚。

    “惟谦受福”是一句非常重要的格言。真正的成功者,尽管胸怀火一般的热情,有斗志、有斗魂,但他们同时也是谦虚的人、谨慎的人。

    骄傲的样子其实一点都不好,还记得B站上有人做的装逼界四大天王嘛?看他们的样子,并不是很酷,并不是很威风,反而很恶心。

    三、每天要反省

    一天结束后,回顾这一天,进行自我反省是非常重要的。比如今天有没有让人感到不愉快?待人是否亲切?是否傲慢?有没有卑怯的举止?有没有自私的言行?回顾自己的一天,对照做人的原则,确认言行是否正确,这样的作业十分必要。

    和第一条一样,每天反省也能磨练灵魂、提升人格。为了获得美好的人生,通过每天的反省,来磨练自己的灵魂和心志是非常重要的

    “竭尽全力、拼命工作”,再加上“天天反省”,我们的灵魂就会被净化,就会变得更美丽,更高尚。

    3.1所谓反省就是耕耘、整理心灵的庭园

    人的心灵像庭园。
    这庭园,既可理智地耕耘,也可放任它荒芜,
    无论是耕耘还是荒芜,庭园不会空白。
    如果自己的庭园里没有播种美丽的花草,
    那么无数杂草的种子必将飞落
    茂盛的杂草将占满你的庭园。

    出自:詹姆斯·埃伦,接下来又说道:

    出色的园艺师会翻耕庭园,除去杂草,
    播种美丽的花草,不断培育
    如果我们想要一个美好的人生,
    我们就要翻耕自己心灵的庭园,将不纯的思想一扫而光,
    然后栽上清纯的、正确的思想,
    并将它培育下去。

    我们选择正确的思想,并让它在头脑里扎根,
    我们就能升华为高尚的人。
    我们选择错误的思想,并让它在头脑里扎根,
    我们就会堕落为禽兽。
    播种在心灵中的一切思想的种子,
    只会生长出同类的东西,
    或迟或早,它们必将开出行为之花,结出环境之果。
    好思想结善果,坏思想结恶果。

    心怀善意就会结出善果,心怀恶意就会结出恶果,他就这样描述。
    因此:

    请拨除自己心灵的杂草,
    播种自己希望的、美丽的花草,
    精心地浇灌,施肥,管理。

    这里的比喻就是自我反省。通过反省,可以磨练自己的心志,从而给我们带来无限的幸福。

    3.2抑制邪恶的自我,让善良的真我伸展

    所谓良心就是“真我”,也就是利他之心,怜爱他们,同情他人,愿他人过得好,如何做到良心呢?反省

    “自我”指的是利己心,只要自己好,不管别人。无耻的贪婪之心就属于“自我”。

    泰戈尔:

    我只身来到神的面前。
    可是,那里已经站着另一个我。
    那个黑暗中的我,究竟是谁呢?
    为了避开他,
    我躲进岔道,
    但是,我无法摆脱他。
    他公然在大道上迈步,
    卷起地面的沙尘,
    我谦恭地私语,
    他高声地复述。
    他是我身上的卑微的小我,
    就是自我。
    主啊,他不知耻辱。
    我却深感羞愧。
    伴随这卑微的小我,
    我来到您的门前。

    内心中,小我和我们同居,正因为如此,我们就有必要天天反省,对着邪恶、贪婪、卑微的自我说:“请稍微安静一点吧!你也应该知足了”。这样来抑制自我,通过这样的反省,我们可以磨练自己的灵魂,磨练自己的心志。

    提高心性,就能扩展经营,也就是说,不磨练自己的灵魂,就无法搞好经营。

    四、活着,就要感谢

    对一切都要说“谢谢”

    我们要感谢周围的一切,这是理所当然的,因为我们不可能单身一人活在这个世上,有了感谢之心,我们就能感受到人生的幸福。

    不要满腹牢骚,要对现状无条件地表示感谢,在此之上,再朝着更高的目标努力奋斗。

    不管多么微不足道的事情,我们都要表示感谢,这是最优先、最重要的。感谢的话语威力很大,它能将自己带进一个高尚的境界,也能给周围的人带来好心情。

    感谢的话语温暖大家的心

    谢谢这个词能在你的周围营造出一种和谐的氛围。

    五、积善行、思利他

    积善之家有余庆

    多行善,多做好事就会有回报,不仅当事人,就连家人,亲戚也能有回报。

    世间存在着因果报应的法则。

    利他的行为,就是以亲切、同情、友善、慈悲之心去待人接物,非常重要。因为这种行为,一定会给你带来莫大的幸运。

    多做好事,就能使命运朝着好的方向转变,使自己的工作朝着好的反向转变,这是稻盛和夫的信念

    一味的积善,就是说,为他人、为社会竭尽全力,这是使人生、也是使经营朝着更好方向转变的唯一的方法。

    同情并非只为他人

    举个例子:为了帮朋友解脱困境,去充当他的贷款连带保证人,本以为做了善事,想不到除了麻烦,以至连自己的财产也丧失殆尽,还有一种情况,朋友有困难开口借钱,你借给他了,他却迟迟不还,让你陷入困境。

    不是说好人有好报嘛?为什么做了善事却得到了恶报?这种说法不对?

    在那样的场合,只凭感情,只凭同情,就慷慨解囊,或当他的连带保证人,这本身就是一个问题。

    善有大小之分:
    朋友手头紧,找上门求你帮忙,仅仅因为他来求你,你就同情他,不假思索就出钱帮助,表面上看是你帮了他,实际是害了他,使这位不负责任的朋友变得更加不负责任,这是小善,方式不对,是帮他的倒忙,让他越陷越深。

    借钱应该问清楚事情的来龙去脉,要认真调查,如果是由于他做事不检点,乃至挥霍浪费才导致了今天的结果,那么你应该果断地拒绝他,明确告诉他,这个钱不能借,而且还要劝导他正视眼前的困难,接受教训,重新振作起来。

    为了让人生更幸福,为了让经营更出色,希望大家多做善事,多做对他人有益的事。

    六、不要有感性的烦恼

    反省之后,把过去的失败坚决忘掉,将精力投进新的工作

    担心、烦恼、失败等等,是人生的常事,但是,覆水难收,总为曾经的失败而悔恨,毫无意义。老师闷闷不乐会引起心病,接下来会引发身体的毛病,最终给自己的人生带来不幸。不要让已经过去的事再困扰自己,心里要想新的事情,新的想法要转移到新的行动上去,这一点很重要。

    已经发生的事情,既然无法改变,就干脆把它忘掉,将全副精力投入到新的工作中去,这是最要紧的。

    不管怎么样失面子,都要拿出勇气正视现实,重振旗鼓。不要心灰意冷,总是痛苦个没完。

    担雪老师的话拯救了我

    京瓷公司研制了陶瓷膝关节,效果非常好,有人写新闻稿投诉,在没有得到厚生省批准的情况下,销售陶瓷膝关节赚钱,在人命关天的医疗领域,为做生意而销售未经许可的产品,这样的企业太缺德了。

    他的老师说:你之所以会感受到这样的苦恼,那是因为你还活着。如果你死了的话,那就没什么苦恼了,正因为或者才会有苦恼,这不是件好事嘛?

    一切恶果都是有原因的,接受就是一种忏悔,是为了清楚自己身上的污垢所必须的。

    第二章 超越经济变动,实现企业持续发展

    二战后日本经济经过好几次变动,但是京瓷公司却没有亏损过:重要的是经营者的态度,这种态度就是所谓“慎重坚实的经营”,这是极为单纯的。

    关于经营方面,最近读了两篇丁磊相关的文章,推荐下:
    丁磊相关1
    丁磊相关2

    回顾变化频繁的日本战后经济产业的历史:

    • 1945年,日本战败,全体国民团结一致着手经济的复兴
    • 但是千疮百孔,甚至出现通货膨胀和粮食危机
    • 全体国民为了追求富裕而拼命工作
    • 1964东京奥运会
    • 1970大阪世博会开幕
    • 1971美元日元汇率变化,日本企业努力削减成本以维持价格竞争力、同时提高产品质量、开发独创性产品、日本的产业结构被迫向高附价值的方向转变
    • 这一过程,很多企业被淘汰出局
    • 然后石油危机,日美的贸易摩擦一直存在
    • 1985年,美国再次薅羊毛,日本企业彻底地提升效率,取得了更大的经营成果
    • 然后日本低价大幅度提升,坊间传闻东京23个区的地价足以买下整个美国国土
    • 这属于泡沫经济,之后抑制经济过热,股价、低价暴跌,不良债权非常多
    • 所以银行惨淡经营,中小型企业连锁型倒闭
    • 2001,美国IT泼墨破碎,日本电子产业备受打击
    • 所以企业的经济环境变动是十分频繁的

    为了企业的长期繁荣,经营者无论如何都必须小心谨慎,要保持“如履薄冰、如临深渊”的心境

    也算是我不明白不认同的一个理论:企业在能还清利息的情况下,完全可以连续贷款,加大投资

    在其谨慎经营下,利润有时超过40%,使京瓷集团称为日本最有代表性的高收益企业,同时还将利润作为企业内部留存不断积累,使京瓷集团称为日本最有代表性的、值得自豪的财务体制宽裕的无贷款企业。

    京瓷能批量制造当时谁也做不了的精密陶瓷产品。

    当时京瓷集团自有资本比例太高,美国企业都将自有资本拿出去,并购企业,加大投资。但是稻盛说我们要考虑企业的长期繁荣,而不是一时的盈利,只有足够的储备,才能承受的住任何萧条的冲击。

    贷款应该今早归坏银行,打造高收益的企业体制,这样努力的结果,不仅实现了无贷款经营,而且因不断积累内部留存,又建立了极其健全的财务体制,至于设备投资,没有回收的把握绝不进行,半个世纪依赖,我固执地坚持了这种慎重经营的态度。

    周围人都说:“这样去经营,企业不可能发展壮大”。但也正式上述原因,使得京瓷集团能超越多次经济变动,持续了长达半个世纪的成长发展。

    经营者不能只顾自己个人的私利,不能只顾满足自己的欲望,而必须考虑员工、客户、交易对象、企业所在社区等等,必须与企业相关的一切利害关系者和谐相处,必须以关爱之心、利他之心经营企业。

    经营者的贪婪,可能会毁掉企业。

    因为忘却谦虚、一味利己而导致企业破灭的事例,不只是美国,古往今来,国内国外不胜枚举。

    创建企业的动机一定是好的,不是想赚钱叭?动机至善、私心了无

    稻盛的第二家公司KDDI为何能在当时的竞争环境下取得成功?因为他们的初心:“为民众降低通信费用”,就是因为这种信念。

    心地肮胀的人因为害怕失败而不敢涉足的领域,心灵纯洁的人随意踏入就轻易获胜,这样的实例并不鲜见。原因是,心灵纯洁的人总是气定神闲,他们总是以更为明确、更强有力的目的意识,来引导自己能量发挥的方向。

    利他是最强有力的。让对方高兴,与人为善,这样的行为最终一定会带来成功。这是这个世界俨然存在的真理,因为利他的行为会让我们获得超越自己的伟大力量。

    积善之家,必有余庆 — 《易经》

    如果企业经营者只顾满足自己的私利私欲,就必将招致员工的叛离,时区客户、交易对象的支持,还会受到社会的责难,结局就是企业遭到淘汰的命运。

    所以一定要努力提升心性。

    第三章 忍受萧条、伺机出手

    演讲能力、号召力很重要,比如Linus当时能号召优秀的工程师一起写Linux就很了不起。

    涉及马云和稻盛的交流,不记了!

    第四章 稻盛和夫论谦虚

    不要骄傲,要意识到“有了大家才会有自己”,保持谦虚的态度,这是非常重要的。

    谦虚使人进步

    中国古语“惟谦受福”,人,往往因为没有内涵,才需要自吹自擂,借此来满足自己的显示欲。谦虚的人有时会被认为是傻瓜,其实觉得谦虚的人是傻瓜的人才是真正的傻瓜。

    企业经营者必须使团队团结一致,统一方向,始终保持心心相印的和谐气氛,才能最有效地开展工作,要养成这样良好的企业风气,首先领导要保持谦虚的态度,只有领导以身作则,下属才会跟着一起前进。

    如果企业的中层管理人员摆架子,上层领导骄傲自满,那么团队配合就搞不好,形不成团队合力。职位越高的人越应该谦虚谨慎,深入群众,向大家传递企业的理想,努力营造良好的工作氛围。如果公司领导和一般员工都有谦虚的姿态,那么就能营造出和谐的人际关系,在此基础上,企业一定能发展壮大。

    历史上凡是失却谦虚的文明,全部消灭了。别管是帝王将相还是实业家,不管取得过怎么样的丰功伟绩,一旦失却谦虚,傲慢起来,那就必然灭亡。

    人类孕育了卓越的科技,但人类也因此滋生了傲慢,现在的人类正在错误的道路上加速奔跑。

    我们现代人,也应该对自然的伟大力量保持敬畏的态度,才能稍稍节制人类的傲慢。

    自己思考:在大国之间,如果全是利他之心,那不得被利用,羊毛被薅光?利他之心是好的,不过我觉得有其适用范围的。

    仔细想想,人类所掌握的知识还不是知识海洋里的冰山一角

    一个人掌握的财富再多又有何价值呢?富可敌国,可敌全世界嘛?可敌全宇宙嘛?

    第五章 盛和塾塾生心得

    第一节 改心之道

    公司是自己赚钱的场所,员工就是为公司赚钱的工具,这种想法是错误的。

    之后改变了这种想法,员工可以放心的将未来托付给公司!

    并且实施了透明式经营,不向公司隐瞒数据,将利润等信息都毫不保留的告知员工。

    一定想办法让员工幸福。

    第二节 稻盛和夫经营哲学探源

    笛卡尔提出,征服自然是人类最大的幸福,这种想法不对!

    人类欲望的特点是只可以被不断地被刺激,而永远无法被满足。金钱只会不断刺激对金钱的渴望,美食只会不断此即对美食的渴望。科学技术让我们上天入地之后,又刺激人类的欲望进一步膨胀。

    拯救人类的哲学就是要将欲望人还原为良心人,即自利利他,在考虑自身利益的同时,兼顾他人和地球的利益。

    精进努力:精华灵魂
    布施奉献:利他之心
    荣辱不惊:失败是磨练,成功更是磨练
    镇定自若:镇定下来就可以发现被隐藏在现象背后的真相,就能发现故事背后的故事,就能发现天理和天道,就能奉天道而行
    智慧磨练:循天理而动,必得天助

    展开全文
  • Abaqus 二次开发 基本概念

    千次阅读 多人点赞 2019-12-12 16:30:14
    Abaqus二次开发......前后处理层次的Python......求解器层次的Fortran......有限单元法......偏微分方程的近似解......GUI二次开发......

    Documentation:



    • 本人对本文基本没有原创性贡献,所列内容仅为备忘之用,无其他用途,如有版权问题,联系本人删除。
    • 本文本应设置为私密文章,但考虑到总能为有需要的人提供些许帮助,特此公开。
    • 所列内容的原文出处详见文中超链接或文末的参考文献。


    Blog Links






    一、前沿



    1.1. 二次开发简介


      Abaqus 软件包包括两大部分: 用来进行前后处理的 Abaqus/CAE 和用来对有限元模型进行求解计算的 求解器


      Abaqus/CAE包括:Abaqus/GUIAbaqus/Kernel


      求解器包括: Abaqus/StandardAbaqus/ExplicitAbaqus/CFD 等。


      Abaqus 软件包为用户提供了二次开发的接口程序,方便用户定制适合自己的 Abaqus 程序。


      Abaqus 允许用户通过如下方式自定义软件的功能:

        - User subroutines:用户子程序允许用户更改求解器的求解方式;

        - Environment files:允许用户更改各种默认设置;

        - Kernel scripts:内核脚本允许用户创建新功能以方便建模及结果处理;

        - GUI scripts:图形界面脚本允许用户创建新的图形界面或更改 Abaqus 默认的图形界面。


      对于用户而言,可以且有价值的 Abaqus 二次开发主要有两种,求解器层次的 Fortran 前后处理层次的 Python 。前者对应用户子程序开发,后者对应用户图形界面程序开发。


      Abaqus 用户子程序开发基于 Fortran 语言,用户可以根据实际需求编写材料本构关系 (UMAT/VUMAT)、自定义单元 UEL 等。


      用户图形界面开发则基于 Python 语言,主要是根据需求对原有 Abaqus/CAE 功能组件进行扩展,开发专用的前后处理模块及 GUI 工具等。用户子程序的开发影响的是 CAE 分析过程中的求解环节,GUI 开发主要是方便用户根据自身的需求开发前后处理工具或者辅助用户实现参数化的建模及数据处理等工作,其影响的是 CAE 分析过程中的前后处理环节。[1]



    1.2. 有限元分析流程


      有限元究竟是干啥的? 它就求解偏微分方程近似解的一种数学方法。


        人类目前理解的物理世界,即 三维空间一维时间,通常可以用偏微分方程 (PDE) 来完整描述。然而,遗憾的是,数学中的解析方法往往不能解决我们现实世界中的复杂问题,这些复杂性通常源自 几何结构的复杂物理场的复杂 ,也就是说,难以求出实际问题的解析解。


        有限单元法的诞生,将现实世界 “ 时空离散化、数字化 ” ,构造出这些偏微分方程组的近似数值方程,并用数值方法求解。从此,我们可以在数位世界模拟现实物理世界了。[3]


    在这里插入图片描述


      Abaqus 有限元分析的完整分析流程为: 建立有限元模型 → 求解计算 → 分析结果,如下图:


    在这里插入图片描述



        (1). 前处理 (Abaqus/Pre)


        建立的 Abaqus 模型通常包括如下信息:几何形状、单元局部特性、材料数据、荷载和边界条件、分析类型、输出要求等。

        建模的过程是把待分析问题的模型图形化的过程,建模的最终目的是生成一个 Abaqus 求解器能识别的输入文件即 inp 文件。

        inp 文件不是编程语言,只是按照 Abaqus 求解器的计算要求,而形成的输入文件。

        Abaqus 输入文件是前处理 (Abaqus/Pre) 和求解器 (Abaqus/Standard) 之间的交流工具,它包含了对分析模型的完整描述。



         (2). 模拟计算 (Simulation)


        模拟计算即选择适当的求解器求解 inp 文件所确定的数值问题,求解器的求解过程实际上就是求解大型偏微分方程组的过程。

        计算速度(解方程的速度)和计算精度是评价有限元软件性能的两个重要方面。

        Abaqus/Standard 和 Abaqus/Explicit 就是用来求解大型方程组的求解器。

        - Abaqus/Standard 通用分析模块/隐式分析求解器,能够求解线性和非线性问题,包括静力、动力、热和电问题等的响应。

        - Abaqus/Explicit 特殊分析模块/显示分析求解器,采用显式动力有限元列式,适用于冲击、爆炸等短暂、瞬时的动态事件的分析。



         (3). 后处理 (Abaqus/Post)


        后处理一般是由 Abaqus/Post 或其他后处理程序实现的,Abaqus/Post 读入二进制文件,可以用各种各样方式显示结果,如彩色等值线图、动画、应力云图、位移云图及x-y平面绘图等。求解器计算求解后的分析结果主要存储在 .odb, .dat, .res, .fil 文件中。


        前处理的最终目的是生成 .inp 文件,求解器根据 inp 文件的有关要求进行求解计算并输出计算结果,后处理根据输出的结果 (.odb文件) 进行数据的二次加工供工程人员参考。前处理及后处理用户起主导作用,计算任务提交后计算机自动完成模拟计算。



    1.3. Abaqus/CAE


        Abaqus/CAE (Complete Abaqus Environment) 是完整的 Abaqus 运行环境,它为生成 Abaqus 模型、交互式提交和监控 Abaqus 作业及评估 Abaqus 模拟结果提供了一个风格简明、一致的界面,用户通过主窗口与 Abaqus/CAE 进行交互。


        Abaqus/CAE包括: Abaqus/GUIAbaqus/Kernel


      Abaqus/CAE启动后会产生三个进程: abq2016se.exe (取决于软件版本)、ABQcaeG.exe (Abaqus/CAE GUI) 和 ABQcaeK.exe (Abaqus/CAE Kernel) 。



    在这里插入图片描述



        主窗口内包含: 标题栏、菜单栏、工具栏、环境栏、模型树/结果树、工具箱区、画布和作图区、视口 (Viewport)、提示区 (Prompt area)、信息区和命令行接口。

        信息区 (Message area): Abaqus/CAE 在信息区显示状态信息和警告。

        命令行接口 (Command line interface): 用户可以在此处输入 Python 命令 (代码) 或数学表达式。

                           Abaqus/CAE 内置的 Python 解释器将执行用户的上述输入。


    在这里插入图片描述

    Abaqus主界面及命令行窗口


    1.4. GUI与Kernel


    术语 含义
    Abaqus/GUI 图形界面
    Abaqus/Kernel 内核

      用户通过主窗口与 Abaqus/CAE 进行交互,主窗口是 Abaqus 图形界面的集中体现。

      主窗口内层层叠叠的菜单、各种按钮等控件构成了 Abaqus 图形界面的全体。

      用户在 Abaqus/CAE 中进行的各种操作,都会被转化为 Python 语句,通过执行这些语句/命令,就可完成一系列繁杂的前后处理操作。Abaqus 中每一个功能的实现,都离不开内核脚本的顺利运行。


      Abaqus/Kernel 即内核采用 Python 语言编写,内核在继承继承 Python 语言自身类模型的基础上,进行了扩展。新增了三个大类模型,分别为 Session 类、Mdb 类以及 Odb 类,对应视图、模型数据库和计算结果数据库三类对象。


      GUI 的作用 是收集用户输入,以命令流的形式将其打包并发送给 Kernel 执行。

      Kernel 的作用 是根据 GUI 传递过来的参数/请求,访问、创建或修改相应的数据库。


      The kernel is the brains behind Abaqus/CAE. The GUI is the interface between the user and the kernel.


      GUI 对于 Abaqus 各种功能的实现不是必不缺少的,是可有可无的。图形界面的存在很大程度上只是降低了用户的使用难度,用户可通过编辑内核脚本的形式,越过 Abaqus/GUI,直接完成有限元模型的前后处理和分析工作。


      尽管,理论上可直接越过 GUI,完成相关分析工作,但这种做法没有十分地必要。事实上,对于一个真正有意义的前后处理层面上的二次开发,GUI 和 Kernel 是分不开的,通过Kernel脚本实现某些特定的功能,再通过 Abaqus GUI Toolkit 将各种功能封装起来实现外层的 GUI 展现,这样完成的二次开发才更有价值,这种定制化开发可以大大降低用户的使用门槛。[3]



    1.5. .rpy文件与.jnl文件


      为了实现某个功能,用户需在特定的 GUI (图形界面) 中输入相关参数,点击 “OK” 或 “Continue” 按钮后,程序后台将输入参数打包并生成与实现该功能相对应的 Python 语句,该语句会进一步传递给 Kernel 执行,这就是这个实现这个功能的完整流程。


      这一条条 Python 语句,就是要发送给内核执行的一条条命令。


      在 Abaqus 功能实现的过程中,后台程序实时记录用户在 Abaqus/CAE 中各种操作所对应的 Python 语句,并将其记录在当前工作目录下的 abaqus.rpy 文件中,abaqus.rpy 文件是实时更新的,也就是说,在 Abaqus/CAE 中,每完成一步操作,它所对应的Python语句都会立即出现在abaqus.rpy文件中,用户可以用任何一款文本编剧软件打开 abaqus.rpy 文件,查看操作对应的 Python 语句,并根据自身需要进行修改,这就为 Abaqus 的二次开发提供了很大的便利,只要用户能够在 Abaqus/CAE 中实现某一功能,那么它所对应的 Python 语句可直接查看 abaqus.rpy 文件得到,而不需要在帮助文档中查找,这就大大降低了二次开发的难度。


      Abaqus/CAE records its commands as a Python script in the replay (.rpy) file.


      另外,当每次对 CAE 模型进行保存时,文件保存目录下都会自动保存一个与模型名称同名的 .jnl 文件, .jnl 文件记录了已存储的模型数据库的 Abaqus/CAE 命令。


      .rpy 中记录着用户在 Abaqus/CAE 中所有操作,对应的 Pyhton 语句,包括视图的变化、模块的切换以及误操作等对应的 Python 语句,而 .jnl 文件仅记录着最终有效的操作。


      当你开发一些自定义的功能时,通常开始于创建实现这些功能的内核命令 (Python语句) 。这些命令可以通过在 Abaqus /CAE 中命令行接口 (CLI) 中执行来进行调试。一旦从 CLI 中确定内核命令可以准确运行,那么你就可以设计图形用户界面 (GUI) 来收集内核命令所需要的用户输入。




    二、Python简介


      Abaqus/Kernel 采用 Python 语言编写,Abaqus/Kernel 是 Abaqus/CAE 的重要组成部分,它是保证前后处理顺利实现的核心模块。因此,用户要想实现前后处理层面的二次开发,就必须掌握基本的 Python 编程规则。对于小白,可从如下几个网站开始 Python 语言的学习:



    序号 网站名称 连接
    1 jackfrued - Python-100-Days https://github.com/jackfrued/Python-100-Days
    2 廖雪峰 - Python教程 https://www.liaoxuefeng.com/wiki/1016959663602400
    3 菜鸟教程 - Python 3 教程 https://www.runoob.com/python3/python3-tutorial.html
    4 白月黑羽教Python - Python基础 http://www.python3.vip/doc/tutorial/python/0001/


    Hello, World!



    2.1. Python解释器


      Python 代码的执行最终是由计算机的 CPU (中央处理器) 来完成的。但 CPU 能且只能直接识别并执行机器指令,它的表现形式是二进制编码,形如:


    在这里插入图片描述

    二进制代码

      采用二进制代码直接编写程序,不但易读性差、出错率高、维护困难,而且也不能直观地反映用计算机解决问题的基本思路。为了克服这些缺点,程序猿们开发了各种各样程序,能自动将 Python 代码转换成 CPU 能识别的二进制代码,这些转换程序就叫 Python 解释器。Python 解释器不止一种,官方的 Python 解释器是用 C 语言实现的,也是使用最为广泛的 Python 解释器,通常称之为 CPython 。除此之外,Python 解释器还有 Java 语言实现的 Jython、C# 语言实现的 IronPython 以及 PyPy、Brython、Pyston 等版本。


      这里没有严格区分编译器和解释器,详见:python第一篇------编译型语言和解释型语言


      Python 解释器本质上就是个翻译,它将 Python 语句翻译成 CPU 能其唯一能识别的二进制代码,从而实现 Python 语句的顺利执行。Python 解释器本身也是个程序, 可以由 C 语言、 Java 语言、 C# 语言等编写,它用来向 CPU 解释 Python 代码,我们运行 Python 程序时,首先启动 Python 解释器,解释器逐行读取要执行的 Python 程序文件,然后翻译成机器指令并发送给 CPU,CPU 按指令进行执行,并以二进制代码的形式反馈执行结果给解释器,经解释器的翻译后,呈现出程序猿能看懂的运行结果。其原理如下图所示:


    在这里插入图片描述


      因此,Python 程序能顺利运行的必要前提是你的电脑上存在至少一款 Python 解释器,安装教程,详见:Python解释器的安装



    2.2. Python交互式命令行


      Python 解释器安装完成后,可按如下步骤, 进入解释器的交互式命令行:


      Step 1. windows 开始 >> 运行 >> 打开(O): 中输入 cmd >> 确定,启动 windows 命令提示符窗口(命令行窗口)。

      Step 2. 在 Windows 命令行中输入 Python 后回车,即进入了 Python 的交互式环境,所谓交互是指用户与 Python 解释器间的交互。



    在这里插入图片描述

      成功进入到 Python 交互模式环境的标志是命令行中出现提示符 >>>,它是 Python 的主提示符,用户可在其后输入 Python 语句,按回车,语句将被执行。当定义函数时,命令行将出现次提示符 ,它主要提示用户随后输入的 Python 代码要按照 Python 的语法进行缩进,连续按两次回车后,将重新回到 >>> 提示符下。



    2.3. Python的编程模式


      Python 的编程模式分为两种: 交互式编程模式脚本式编程模式


    1. 交互式编程模式

      在 Windows 命令行中输入 Python,按回车后, 便进入到 Python 交互模式。在提示符 >>> 后,直接输入 Python 语句,按回车,语句被执行,执行结果立刻被呈现出来,然后在提示符 >>> 后继续输入 Python 语句,按回车执行,依次进行,直到所有 Python 语句被执行完毕,这一过程用户与 Python 解释器实时交互,输入一条 Python 语句,按回车,语句被执行,执行结果在交互式命令行中被呈现,这一编程模式就是交互式编程。



    1. 脚本式编程模式

      Python脚本: 使用 Python 语言编写的一整段 Python 程序,保存在以 .py 结尾的文件中, 这个以 .py 结尾的文件就是 Python 脚本。

      通过脚本参数调用解释器开始执行脚本,直到脚本执行完毕。当脚本执行完成后,解释器不再有效,这就是脚本式编程。具体操作如下:


      Step 1. 将要执行的 Python 语句,全部放直到一个以 .py 结尾的文本文件中,不是一般性,该文件暂且命名为 test.py 。

      Step 2. 启动 Windows 命令行窗口。

      Step 3. 在 Windows 命令行中输入 Python test.py (注意空格)。


      在 Windows 命令行中输入 Python test.py,其含义是,告诉 Windows 操作系统,python 脚本 test.py 采用 Python 解释器解释,解释器逐行将文件 test.py 中的Python语句翻译成二进制代码,发送给 CPU 执行,代码全部执行完后,Python 解释器就被关闭。



    小结

      在命令行 (指 Windows 命令行) 中,可以执行 Python 进入 Python 交互式环境,也可以执行 Python test.py 运行一个 .py 文件。前者对应交互式编程模式,后者对应脚本式编程模式。


      此外,在命令行模式运行 .py 文件和在 Python 交互式环境下直接运行 Python 代码有所不同。Python 交互式环境会把每一行 Python 代码的结果自动打印出来,但是,直接运行 Python 代码却不会。


      最后,Python 交互模式的代码是输入一行,执行一行,而命令行模式下直接运行 .py 文件是一次性执行该文件内的所有代码。可见,Python 交互模式主要是为了调试 Python 代码用的,也便于初学者学习,它不是正式运行 Python 代码的环境!




    2.4. Python代码的运行


      Python 代码有如下三种运行方式:交互式解释器、命令行脚本和集成开发环境


    序号 运行方式 说明
    1 交互式解释器 交互式编程模式代码的执行方式,逐行输入代码,输一行,执行一行。
    2 命令行脚本 脚本式编程模式代码的执行方式,直接执行 .py 文件,文件内的全部代码一起执行。
    3 集成开发环境 PyCharm 等,就是一款降低 Python 编程难度的软件。

      集成开发环境 (IDE: Integrated Development Environment): 是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。


      PyCharm 具备一般 Python IDE 的功能,比如:调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试、版本控制等。




    三、Abaqus脚本


      Abaqus/kernel 是 Abaqus/CAE 的大脑,Abaqus/GUI 是用户和 Abaqus/kernel 间的接口。Abaqus Scripting Interface 允许用户越过 Abaqus/CAE GUI,直接和 Abaqus/CAE kernel 交流。包含 Abaqus Scripting Interface 命令的文件被称为脚本,使用脚本可以完成如下功能:


      - 重复任务自动化

      - 开展参数化研究

      - 创建和修改模型数据库

      - 访问结果数据库中的数据


      Abaqus Scripting Interface 是 Python 的延伸,通常,任何关于 Abaqus Scripting Interface 的讨论都同样适用于 Python , Python 语言是 Abaqus 的官方接口语言。



    3.1. Abaqus中的Python


      Abaqus 中的 Python 并不是标准版本的 Python ,它是经过达索公司再开发的版本。达索公司在原生 Python 的基础上增加了增了三大类约 500 个新的类模型。因此,在标准版本的 Python 中可以顺利运行的代码,在 Abaqus 中一定可以运行,反之,不一定。


      在 Abaqus/CAE 主界面的菜单栏中,依次点击 Help >> About Abaqus 可查看当前 Python 的版本。


    在这里插入图片描述


    Abaqus版本 Python版本
    Abaqus/CAE 6.14-1 Python Version 2.7.3
    Abaqus/CAE 2019 Python Version 2.7.3


    3.2. 脚本的执行方式


      在 Abaqus 中,脚本 (.py文件) 有如下几种执行方式:


      在Abaqus/CAE未启动的前提下:


       - 方式一:启动 Abaqus Command,在命令行中输入 abaqus cae script=test.py,则 Abaqus/CAE 被启动且显示GUI ,脚本 test.py 被执行。


       - 方式二:启动 Abaqus Command,在命令行中输入 abaqus cae noGUI=test.py,则 Abaqus/CAE 被启动且不显示 GUI , 脚本 test.py 被执行。


      在Abaqus/CAE启动的前提下:


       - 方式三:在 CAE 主界面菜单栏中单击 File >> Run Script >> test.py 。


       - 方式四:在命令行接口 (CLI) 中,Python 提示符 >>> 后,输入 execfile(‘test.py’) ,按回车后执行脚本。


       - 方式五:运行宏文件,在 CAE 主界面菜单栏中单击 File >> Macro Manager 。


       - 方式六:在 Abaqus/PDE 中运行脚本。



    3.3. 命令行接口


      命令行接口 (Command Line Interface) 位于主界面底部,与信息区共用一个窗格,窗格左侧的两个按钮用于这两个功能间的快捷切换。


      Abaqus/CAE 在命令行接口显示 Python 提示符 >>>


      利用 Abaqus/CAE 内置的 Python 解释器,可以使用命令行接口输入 Python 命令和数学计算表达式。主提示符 >>> 为 Python 语言的提示符,次提示符 用于提示用户,随之输入的代码需要进行缩进。函数定义结束后需要按两次回车重新回到 >>> 提示符下。



    示例:


    在这里插入图片描述

    命令区KCLI中定义函数
    KCLI - Kernel Command Line Interface



      所谓的命令行接口接的是 Abaqus 中内置的 Python 解释器,它就是 Abaqus/CAE 中实时运行的 Python 的交互式命令行,在此处可进行 Python 交互式编程。




    3.4. Abaqus脚本接口命令与Abaqus/Kernel的交互


      Figure illustrates how Abaqus Scripting Interface commands interact with the Abaqus/CAE kernel.


    在这里插入图片描述

    Abaqus Scripting Interface commands and Abaqus/CAE
    命令流与Abaqus/CAE内核的关系



      Abaqus 脚本接口可以通过以下多种方式与 Abaqus/CAE 内核程序进行交互:


       - 图形用户界面 (GUI):在自定义对话框中设置或选择参数,适用于复杂、系统、完整功能的实现。

       - 命名行接口:适用于单句或多句简单指令的执行。

       - 执行脚本文件 (script):适用于相同指令重复执行或复杂指令执行的情况。


      The graphical user interface (GUI). For example, when you click OK or Apply in a dialog box, the GUI generates a command based on your options and settings in the dialog box. You can use the Macro Manager to record a sequence of the generated Abaqus Scripting Interface commands in a macro file. (宏文件记录GUI产生的命令)



    3.5. Abaqus Python 集成开发环境


      Abaqus PDE —— Abaqus Python development environment

      The Abaqus PDE provides a simple interface that you can use to develop—create, edit, test, and debug—Python scripts. The Abaqus PDE is primarily intended for use with Abaqus/CAE user interface (GUI) and kernel scripts, including plug-ins, but you can also use it to work on scripts that function independently from Abaqus/CAE.

      Abaqus PDE 不需要额外安装,已经包含于 Abaqus 的安装程序中。Abaqus PDE 具有语法高亮和缩进,不具备自动补全功能。



    3.5.1. PDE的启动


       Abaqus PDE有三种启动方式:


       - 在当前运行的 Abaqus/CAE 主窗口的菜单栏中,依次点击 File >> Abaqus PDE 。

       - 在 Abaqus Command 中输入 abaqus cae -pde

       - 在 Abaqus Command 中输入 abaqus pde


      前两种方法打开的 Abaqus/PDE 和对应的 Abaqus/CAE 位于相同的 session ,可以方便的将 Abaqus/CAE 的各步骤操作命令录制到 guiLog 文件中,加快开发的速度;最后一种方法单独打开 Abaqus/PDE ,并不与 Abaqus/CAE 工作区相关联,但是由于不打开Abaqus/CAE ,因而不占用许可证,具有较快的启动速度。


    在这里插入图片描述

    Abaqus/Python 集成开发环境的启动



    3.5.2. PDE的使用


    1. 生成 .guiLog 文件

      To record a .guiLog from Abaqus/CAE:


      Step 1. 在 Abaqus PDE 主菜单栏中,依次点击 File >> New,即在主窗口中完成空白文件的新建。

      Step 2. 单击 Start Recording 图标,开始记录来自Abaqus/CAE的各步操作。

      Step 3. 在 Abaqus/CAE 中完成全部操作。

      Step 4. 单击 Stop Recording 图标,停止记录。

      Step 5. 使用标准文本编辑技术可编辑在主窗口中自动生成的各行代码。

      Step 6. 若要继续记录 Abaqus/CAE 的操作,单击 End of Main File 按钮,以将光标置于文末,重复步骤 2~4 。

      Step 7. 保存文件,文件默认名称为 " _abaqus1_.guiLog " ,默认路径为工作路径。


    在这里插入图片描述

    .guiLog文件的生成


    1. Abaqus/PDE中脚本的运行

      The Abaqus PDE runs scripts using one of three processes—GUI, kernel, or local. By default, .guiLog files are run in the Abaqus/CAE GUI process. If the Abaqus PDE was opened from within Abaqus/CAE, .py files and all other file types are run in the Abaqus/CAE kernel process by default. If the Abaqus PDE was opened without Abaqus/CAE, .py files are run in the local process by default.


      The local process runs the script without Abaqus/CAE, using Python in the local (PDE) process. You can change the process by selecting Settings → Run Script In and choosing the desired process, or by clicking the GUI, Kernel, or Local radio buttons located above the main window. If the Abaqus PDE was opened without Abaqus/CAE and you run a script with the GUI or Kernel process, Abaqus PDE will start Abaqus/CAE to run the script.



      -  Play: 代码一次性全部执行完;

      -  Next Line: 代码一只执行一行。



      调试器与断点:设置/清除断点 —— 快捷键 / F9




    四、宏文件


      To manage macros containing a set of Abaqus Scripting Interface commands, select File → Macro Manager from the main menu bar. When you create a macro, Abaqus/CAE records a sequence of Abaqus Scripting Interface commands in a macro file while you interact with Abaqus/CAE. Each command corresponds to an interaction with Abaqus/CAE, and replaying the macro reproduces the sequence of interactions.



    4.1. 宏的录制


      为了方便查找,所创建宏的存放路径均设置为工作路径,即 Directory 项选择 Work 。第一个宏创建完成后在工作路径中会自动生成一个名为 "abaqusMacros.py " 的 Python 文件,宏录制完成后以定义函数的形式存储在 abaqusMacros.py 文件中,所有创建的宏按生成的先后顺序存储在 abaqusMacros.py 这一文件中。


      例如:依次在 Abaqus/CAE 中录制 3 个宏,采用默认名称,分别为:Macro1、Macro2 和 Macro3,在工作目录中找到 abaqusMacros.py 文件,并将其打开,可以看到创建的 3 个宏是以函数的形式存在的,如下图:


    在这里插入图片描述

    宏的录制及其在abaqusMacros.py文件中的表达方式



    4.2. 宏的运行


       - 方式一: File >> Macro Manager >> Run 。

       - 方式二: Run Script >> abaqusMacros.py >> 在命令区 KCLI 调用。

                 若宏的名称为 Macro1,则在命令区 KCLI 输入 Macro1(),即实现宏 Macro1 的运行。




    五、inp文件




    5.1. inp文件的构成


      inp 文件是前处理 (Abaqus/Pre) 和求解器 (Abaqus/Standard等) 之间的交流工具,它包含了对分析模型的完整描述。inp 文件是一个直观的、基于由关键字格式组成的字符文件。


       - 注释行:两个星号 ( ** ) 开始的行为注释行。

       - 关键字行:一个星号 ( * ) 开始的行为关键字行。

       - 数据行:关键字行下面紧接着的通常为数据行。


      inp 文件中的每一行不能超过 80 个字符。


    在这里插入图片描述

    inp文件的构成


    5.2. 定义分析标题


      inp 文件的开始必须冠以 *HEADING,在 *HEADING 下面的数据是用字符来说明所模拟的问题,它将提供对 inp 文件的准确描述,以便以后对该文件进行识别。此外,最好明确地说明量纲系统和总体坐标系的方向等。


      *HEADING 下面的字符块仅第一行出现在 odb 文件显示界面的 title block 中,其余均不显示,如下图:


    在这里插入图片描述

    字符块的显示


      由上可知,创建作业时 Description 里输入的内容、inp 文件中 *HEADING 下的第一行字符和 odb 文件显示界面中 title block 的第一行为同一内容。




    六、GUI 二次开发


    • GUI —— Graphical User Interface 图形用户界面

    • 参考资料Python GUI之tkinter概述 (了解 GUI 的基本组成即可) 。



    6.1. Abaqus GUI 工具包


      Abaqus GUI Toolkit —— Abaqus GUI 工具包/箱


      图形用户界面的二次开发主要是依靠 Abaqus GUI Toolkit 来实现的,Abaqus GUI Toolkit 是 Abaqus 自动处理工具之一,它能修改和拓展 Abaqus/CAE GUI 的功能,提供更高效的问题解决方法。Abaqus GUI Toolkit 不能脱离 Abaqus/CAE 独立运行,须与 Abaqus/CAE 协同运行。


      通过 Abaqus GUI Toolkit,用户可以创建或修改 Abaqus/CAE GUI 的组件 (控件),该工具包允许用户进行如下操作:


      - 创建新的 GUI 模块,诸如创建像 Abaqus/CAE 中 Part 这样的模块。

      - 创建新的 GUI 工具箱。

      - 移除 Abaqus/CAE GUI 中的模块或工具箱。

      - 移除某个顶级菜单或其中的某个下拉项。

      - 部分更改 Abaqus/CAE GUI 的模块或工具箱。


      GUI 的终极目标是发送命令给 Kernel 执行。


      Abaqus GUI Toolkit 是 FOX GUI Toolkit 的延伸。以 FX 开头的类来自于标准 FOX 库,例如:FXButton;以 AFX 开头的类来自于 Abaqus 对 FOX 库的拓展,例如:AFXDialog;当具有相同功能的类具有两个前缀时,例如:FXTable 和 AFXTable,推荐使用前缀是 AFX 的类。



    6.2. Abaqus/GUI应用程序中的控件


      Abaqus 图形界面程序 (GUI) 开发过程中会用到各种各样的控件 (widget) ,例如对话框、文本框、按钮、单选框、复选框、下拉框、表格等等。控件是 GUI 应用程序的最基本组成元素,用户可以使用各类控件从图形界面程序中收集参数、显示结果以及发送指令等。


       详见: 《Abaqus GUI 程序开发指南 Python语言》. 第四章 常用控件使用方法 。


    在这里插入图片描述

    An overview of an Abaqus GUI application


    6.3. 插件程序与自定义应用程序


      用户可以通过以下两种方式使用 Abaqus GUI Toolkit :


      - 插件架构的使用 —— the use of the plug-in architecture.

      - 创建自定义应用程序 —— create a custom application.


      当 Abaqus/CAE 启动时,插件工具包 (Plug-in toolset) 依次搜索特定的文件路径,将用户创建的插件加载到顶层菜单 Plug-ins 内。因此,用户创建的插件必须放置于特定的文件路径下。如果仅仅是为标准的 Abaqus/CAE 程序增加某些功能,那么通过创建插件的方式,便可基本满足用户的需求。


    在这里插入图片描述

    新建插件程序的位置


      相比之下,通过创建自定义应用程序,用户除了可以为为 Abaqus/CAE 增加新的功能,还可以修改 Abaqus/CAE 的某些标准特征。虽然,创建自定义程序提供了最大的灵活性,但是,这就意味着它将比创建插件消耗更多的工作量。然而,自定义程序可以实现许多插件程序实现不了的功能,例如:


      - Remove Abaqus/CAE modules or toolsets.

      - Modify Abaqus/CAE modules or toolsets.

      - Change the application name and version numbers.

      - Control the startup command and license token used.



       SIMULIA Learning Community



    6.4. 插件程序开发


      插件程序是 Abaqus GUI 开发中较为简单的一类,一般适用于功能简单、界面单一的程序开发。

      插件程序分为 内核插件程序 GUI插件程序

      内核插件程序通过编写脚本实现,内核插件没有图形界面,即通过直接运行脚本的形式为 Abaqus/CAE 增加新的功能。

      GUI 插件程序通过 Abaqus GUI 工具包创建图形界面,并将命令传递给内核程序执行。

    编写脚本实现,内核插件没有图形界面,即通过直接运行脚本的形式为 Abaqus/CAE 增加新的功能。




    1. 插件程序的创建方法

      Abaqus 中的插件可以直接通过编写脚本得到,也可以通过 Really Simple GUI (RSG) Dialog Builder 可视化设计得到。直接使用脚本编程需要比较全面了解 Abaqus GUI Toolkit 中的对象和函数,而使用 RSG 比较直观简单,不需要了解 Abaqus GUI Toolkit 中的对象。使用 RSG 编写插件的缺点在于 RSG 仅能部分替代 GUI Toolkit 对象的创建任务,使用它只能建立比较简单的插件,利用 RSG 编写的插件都是一次性提供所有输入,单击“ OK ”按钮运行即得结果。当需要插件和用户能相互多次交互时,就必须借助 Abaqus GUI Toolkit 中的一些对象来实现。


      - RSG Dialog Builder 编写单步执行插件


         示例: 标准化钢箱梁abaqus模型建立,使用RSG的插件二次开发

      - Abaqus GUI Toolkit 编写多步执行插件




    1. 插件程序的保存方式

       使用 RSG 对话框构造器创建的插件程序,有两种保存方式: RSG plug-in Standard plug-in.

       RSG plug-in 可以在重新启动 RSG 对话框构造器时再次加载并编辑图形界面,Standard plug-in 无法进行重新加载,无法快速预览插件的图形界面,控件的增加修改及排列布置都需要手动输入代码来完成。

       但是 RSG plug-in 所包含的控件种类有很大的局限性,而 Standard plug-in 控件类别以及库函数丰富,可以实现较大规模复杂程序的开发,Abaqus 帮助文档中的资料基本是按照 Standard plug-in 方式提供的。

       推荐将插件程序保存为 Standard plug-in

       另外,插件的保存目录又分为 Home directory Current directory 两者分别代表用户主目录和 Abaqus 当前的工作目录。




    1. 插件程序的使用方法

       插件程序的使用方法简单,无须安装。将编写好的插件程序直接拷贝到 Abaqus 安装目录或者当前工作目录下的 abaqus_plugins 文件夹内,便可实现对插件程序的自动加载。再次启动 Abaqus/CAE 时,在CAE主窗口界面下的 Plug - ins 菜单内会自动出现相应的插件工具菜单。

       插件程序可以放置在如下目录中:

      - abaqus_dir\abaqus_plugins,该插件可被所有用户使用。

      - home_dir\abaqus_plugins,该插件仅被特定用户使用。

      - current_dir\abaqus_plugins,该插件可以被有当前目录权限的用户使用。

      - abaqus_v6.env 文件中定义的plugin_dir,该插件可以被有该目录访问权限的用户调用。




    1. 插件程序的组成

       一般插件由 注册文件 图形界面文件 内核执行文件 组成 。


      - 注册文件

       一般以 ×××_plugin.py 命名,其主要作用是注册各类控件关键字,检查数据合法性,并将插件工具注册到 Plug-ins 菜单或者自定义工具条中。决定所创建的插件程序出现在 Abaqus/CAE 中的哪个位置处,是 Plug-in 菜单下,还是主菜单栏上,还是其他。


      - 图形界面文件

       一般以 ×××_DB.py 命名,其主要作用是定义图形界面框架、各类控件,并关联各控件的执行目标、执行动作。决定图形界面长什么样,要收集什么样的参数,参数搜集完成后发送给哪个内核函数等。


      - 内核执行文件

       一般 用户自定义 文件名称,内核执行文件是插件程序的核心,包含了一些列驱动 Abaqus/CAE 内核的指令,通过执行这些指令完成 CAE 建模以及数据处理等功能。决定该插件程序能实现什么功能。



       上述程序为插件程序的主要组成文件,除了上述文件外,用户还可以指定多种格式的图片文件作为工具图标或者截面插图。




    1. 插件程序的管理

       当插件程序较多时,可以将插件进行分类管理,将具有类似功能的插件放在统一的菜单或者工具条中,方便用户调用。

      - 通过菜单进行管理,即将插件工具注册到主菜单下。

      - 通过工具条进行管理,即将插件工具注册到工具条中。




    6.5. 自定义程序开发


    · · · 待续 · · ·



    七、用户子程序二次开发



    详见: abaqus二次开发概述



    八、Abaqus的文件系统


    文件类型 文件名称及拓展名 说明 默认名称
    数据库文件 模型数据库文件 .cae - 用户自定义名称
    数据库文件 输出数据库文件 .odb - job_name.odb
    保存命令的文件 .rpy
    (python脚本)
    记录几乎每一步 GUI 操作所对应的内核函数命令 abaqus.rpy
    保存命令的文件 .jnl
    (python脚本)
    包含用于复制已存储的模型数据库的 Abaqus/CAE 命令 与.cae文件的名称保持一致


    文件类型 文件名称及拓展名 说明 默认名称
    - .guiLog 记录使用者在CAE软件中的每一步 GUI 操作 _abaqus1_.guiLog
    宏文件 .py
    (python脚本)
    - abaqusMacros.py



    九、总结


      清晰而深刻的理解上述概念,有助于理清二次开发的思路,提升开发的效率。为了更深刻的理解 Abaqus 的二次开发,现作如下概括:


      物理世界通常可以用偏微分方程来完整描述,对于复杂问题,偏微分方程很难且往往不能求得解析解。采用有限单元法便可以离散求解,求解的精度取决于离散的程度,求解域被离散的越细小,求解精度越高,得到的离散方程组中方程的个数就越多。为了满足必要的解答精度,方程组的规模往往是相当巨大的,这就为手动求解带来挑战。随着计算机技术的迅速发展,使大型方程组的求解变得更加高效、快捷,许多有限元软件由此应运而生,Abaqus 就是其中较为成功的一款。


      作为一款商业通用的有限元分析软件, Abaqus 不可能很细致地囊括所有物理问题的分析。因此, Abaqus 允许用户自定义一些功能,以为模型的建立、计算结果的分析及特殊问题的求解提供最大方便。用户添加原生 Abaqus 版本所不具备的功能的这个过程,就是 Abaqus 的二次开发。


      在 Abaqus 中,一个物理问题的最终解答,主要包括前处理、求解计算和后处理三个过程。前、后处理主要依靠 Abaqus/CAE 实现,求解计算主要依靠 Abaqus 的求解器完成。 Abaqus/CAE 是由 Python 语言编写的, Abaqus 求解器是由 Fortran 语言编写的。因此, Abaqus 的二次开发有两种,前后处理层次的 Python 和求解器层次的 Fortran 。


      前处理的终极目标是生成 .inp 文件,.inp文件是求解器的输入文件,其中包含了对分析模型的完整描述, .inp 文件有其自身的特定格式。所有关于前处理方面的二次开发,最终目的都是为了方便、快速地生成 .inp 文件。.inp 文件确定了方程组的规模,规定了求解方式,定义了输出的物理量等,求解器根据 .inp 的请求,采用各种数学方法,在不显著降低求解精度的前提下,尽可能快速的求解方程,并将计算结果存储在 .odb 文件中。后处理主要是从 .odb 中读取数据,以待后续的数据二次加工,诸如绘制各种云图等。所有关于后处理方面的二次开发,最终目的也都是快速高效地处理计算结果。由上我们可知,.inp 文件确定了方程组具体形式,求解器完成了方程组的求解,.odb 文件存储计算结果 (方程组的解) 。


      在前后处理层次的二次开发中, GUI 二次开发是我们经常遇到且有意义的, GUI 二次开发主要是为 Abaqus/CAE 修改或添加图形界面以实现各种功能,它能显著降低用户使用 Abaqus 的难度。开发的图像界面位于何处,菜单栏还是工具条中,这是注册文件要完成的工作;图形界面长什么样,有几个按钮,搜集什么样的数据,这是图形界面文件要完成的工作;具体功能的实现,则是内核执行文件要完成的工作。




    十、尾声


      以上,便是关于 Abaqus 二次开发 一些基本概念的简单介绍。

      因篇幅有限,某些内容未做详细介绍,如有疑问,欢迎邮件交流。

      Email: liyang@alu.hit.edu.cn

      仅以此文为我断断续续近 1 个月的 Abaqus 二次开发工作做一个总结。

      与此同时,也希望能够为初学者/有需要的人提供多一点参考。

      本文仅用于个人学习,除此之外,无其他任何用途。

      因个人水平有限,文中难免有所疏漏,还请各位大神不吝批评指正。

      胸藏文墨怀若谷,腹有诗书气自华,希望各位都能在知识的 pāo 子里快乐徜徉。

      本文逻辑清楚,内容详实,引例丰富。

      欢迎大家点赞、评论及转载,转载请注明出处!

      为我打call,不如为我打款!

      最后,祝各位攻城狮们,珍爱生命,保护发际线!



    在这里插入图片描述




    十一、参考文献


    [1]. Abaqus GUI 程序开发指南 Python语言. 贾利勇 富琛阳子 贺高 周正光 编著.

    [2]. ABAQUS Python 二次开发 攻略. 苏景鹤 江丙云 编著.

    [3]. 理解多物理场有限元底层机理:偏微分方程——物理世界模拟器. 科技千里眼.

    [4]. ABAQUS/Standard 有限元软件入门指南. 庄茁 等 译.

    [5]. 使用python进行ABAQUS的二次开发的简要说明. young2203.




    展开全文
  • 还有一些程序通过搜索目标和目标作出决策,如斯坦福大学为控制机器人Shakey而开发的STRIPS系统。 自然语言 AI研究的一个重要目标是使计算机能够通过自然语言(例如英语)进行交流。早期的一个成功范例是...

    https://www.toutiao.com/a6654718358287548932/

     

    2019-02-06 11:05:58

    人工智能的诞生:1943 – 1956

    在20世纪40年代和50年代,来自不同领域(数学,心理学,工程学,经济学和政治学)的一批科学家开始探讨制造人工大脑的可能性。1956年,人工智能被确立为一门学科。

    控制论与早期神经网络

    最初的人工智能研究是30年代末到50年代初的一系列科学进展交汇的产物。神经学研究发现大脑是由神经元组成的电子网络,其激励电平只存在“有”和“无”两种状态,不存在中间状态。维纳的控制论描述了电子网络的控制和稳定性。克劳德•香农提出的信息论则描述了数字信号(即高低电平代表的二进制信号)。图灵的计算理论证明数字信号足以描述任何形式的计算。这些密切相关的想法暗示了构建电子大脑的可能性。

    人工智能史上的二次低谷——第一次低谷

    IBM 702:第一代AI研究者使用的电脑

    这一阶段的工作包括一些机器人的研发,例如W。Grey Walter的“乌龟(turtles)”,还有“约翰霍普金斯兽”(Johns Hopkins Beast)。这些机器并未使用计算机,数字电路和符号推理;控制它们的是纯粹的模拟电路。

    Walter Pitts和Warren McCulloch分析了理想化的人工神经元网络,并且指出了它们进行简单逻辑运算的机制。他们是最早描述所谓“神经网络”的学者。马文•闵斯基是他们的学生,当时是一名24岁的研究生。1951年他与Dean Edmonds一道建造了第一台神经网络机,称为SNARC。在接下来的五十年中,闵斯基是AI领域最重要的领导者和创新者之一。

    游戏AI

    1951年,Christopher Strachey使用曼彻斯特大学的Ferranti Mark 1机器写出了一个西洋跳棋(checkers)程序;Dietrich Prinz则写出了一个国际象棋程序。Arthur Samuel在五十年代中期和六十年代初开发的国际象棋程序的棋力已经可以挑战具有相当水平的业余爱好者。游戏AI一直被认为是评价AI进展的一种标准。

    图灵测试

    1950年,图灵发表了一篇划时代的论文,文中预言了创造出具有真正智能的机器的可能性。由于注意到“智能”这一概念难以确切定义,他提出了著名的图灵测试:如果一台机器能够与人类展开对话(通过电传设备)而不能被辨别出其机器身份,那么称这台机器具有智能。这一简化使得图灵能够令人信服地说明“思考的机器”是可能的。论文中还回答了对这一假说的各种常见质疑。图灵测试是人工智能哲学方面第一个严肃的提案。

    人工智能史上的二次低谷——第一次低谷

    图灵测试

    符号推理与“逻辑理论家”程序

    50年代中期,随着数字计算机的兴起,一些科学家直觉地感到可以进行数字操作的机器也应当可以进行符号操作,而符号操作可能是人类思维的本质。这是创造智能机器的一条新路。

    1955年,Newell和(后来荣获诺贝尔奖的)Simon在J. C. Shaw的协助下开发了“逻辑理论家(Logic Theorist)”。这个程序能够证明《数学原理》中前52个定理中的38个,其中某些证明比原著更加新颖和精巧。Simon认为他们已经“解决了神秘的心/身问题,解释了物质构成的系统如何获得心灵的性质。” (这一断言的哲学立场后来被John Searle称为“强人工智能”,即机器可以像人一样具有思想。)

    1956年达特茅斯会议:AI的诞生

    1956年达特矛斯会议的组织者是Marvin Minsky,约翰•麦卡锡和另两位资深科学家Claude Shannon以及Nathan Rochester,后者来自IBM。会议提出的断言之一是“学习或者智能的任何其他特性的每一个方面都应能被精确地加以描述,使得机器可以对其进行模拟。” 与会者包括Ray Solomonoff,Oliver Selfridge,Trenchard More,Arthur Samuel,Newell和Simon,他们中的每一位都将在AI研究的第一个十年中作出重要贡献。会上纽厄尔和西蒙讨论了“逻辑理论家”,而麦卡锡则说服与会者接受“人工智能”一词作为本领域的名称。1956年达特矛斯会议上AI的名称和任务得以确定,同时出现了最初的成就和最早的一批研究者,因此这一事件被广泛承认为AI诞生的标志。

    黄金年代:1956 – 1974

    达特茅斯会议之后的数年是大发现的时代。对许多人而言,这一阶段开发出的程序堪称神奇:计算机可以解决代数应用题,证明几何定理,学习和使用英语。当时大多数人几乎无法相信机器能够如此“智能”。研究者们在私下的交流和公开发表的论文中表达出相当乐观的情绪,认为具有完全智能的机器将在二十年内出现。 ARPA(国防高等研究计划署)等政府机构向这一新兴领域投入了大笔资金。从50年代后期到60年代涌现了大批成功的AI程序和新的研究方向。下面列举其中最具影响的几个。

    搜索式推理

    许多AI程序使用相同的基本算法。为实现一个目标(例如赢得游戏或证明定理),它们一步步地前进,就像在迷宫中寻找出路一般;如果遇到了死胡同则进行回溯。这就是“搜索式推理”。

    这一思想遇到的主要困难是,在很多问题中,“迷宫”里可能的线路总数是一个天文数字(所谓“指数爆炸”)。研究者使用启发式算法去掉那些不太可能导出正确答案的支路,从而缩小搜索范围。Newell和Simon试图通过其“通用解题器(General Problem Solver)”程序,将这一算法推广到一般情形。另一些基于搜索算法证明几何与代数问题的程序也给人们留下了深刻印象,例如Herbert Gelernter的几何定理证明机(1958)和Minsky的学生James Slagle开发的SAINT(1961)。还有一些程序通过搜索目标和子目标作出决策,如斯坦福大学为控制机器人Shakey而开发的STRIPS系统。

    自然语言

    AI研究的一个重要目标是使计算机能够通过自然语言(例如英语)进行交流。早期的一个成功范例是Daniel Bobrow的程序STUDENT,它能够解决高中程度的代数应用题。 如果用节点表示语义概念(例如“房子”,“门”),用节点间的连线表示语义关系(例如“有 — 一个”),就可以构造出“语义网(semantic net)”。第一个使用语义网的AI程序由Ross Quillian开发;[54] 而最为成功(也是最有争议)的一个则是Roger Schank的“概念关联(Conceptual Dependency)”。Joseph Weizenbaum的ELIZA是第一个聊天机器人,可能也是最有趣的会说英语的程序。与ELIZA“聊天”的用户有时会误以为自己是在和人类,而不是和一个程序,交谈。但是实际上ELIZA根本不知道自己在说什么。它只是按固定套路作答,或者用符合语法的方式将问题复述一遍。

    人工智能史上的二次低谷——第一次低谷

    自然语言

    微世界

    60年代后期,麻省理工大学AI实验室的Marvin Minsky和Seymour Papert建议AI研究者们专注于被称为“微世界”的简单场景。他们指出在成熟的学科中往往使用简化模型帮助基本原则的理解,例如物理学中的光滑平面和完美刚体。许多这类研究的场景是“积木世界”,其中包括一个平面,上面摆放着一些不同形状,尺寸和颜色的积木。在这一指导思想下,Gerald Sussman(研究组长),Adolfo Guzman,David Waltz(“约束传播(constraint propagation)”的提出者),特别是Patrick Winston等人在机器视觉领域作出了创造性贡献。同时,Minsky和Papert制作了一个会搭积木的机器臂,从而将“积木世界”变为现实。微世界程序的最高成就是Terry Winograd的SHRDLU,它能用普通的英语句子与人交流,还能作出决策并执行操作。

    乐观思潮

    第一代AI研究者们曾作出了如下预言:

    1958年,H. A. Simon,Allen Newell:“十年之内,数字计算机将成为国际象棋世界冠军。” “十年之内,数字计算机将发现并证明一个重要的数学定理。”

    1965年,H. A. Simon:“二十年内,机器将能完成人能做到的一切工作。”

    1967年,Marvin Minsky:“一代之内……创造‘人工智能’的问题将获得实质上的解决。”

    1970年,Marvin Minsky:“在三到八年的时间里我们将得到一台具有人类平均智能的机器。”

    经费

    1963年6月,MIT从新建立的ARPA(即后来的DARPA,国防高等研究计划局)获得了二百二十万美元经费,用于资助MAC工程,其中包括Minsky和McCarthy五年前建立的AI研究组。此后ARPA每年提供三百万美元,直到七十年代为止。ARPA还对Newell和Simon在卡内基梅隆大学的工作组以及斯坦福大学AI项目(由John McCarthy于1963年创建)进行类似的资助。另一个重要的AI实验室于1965年由Donald Michie在爱丁堡大学建立。[65]在接下来的许多年间,这四个研究机构一直是AI学术界的研究(和经费)中心。经费几乎是无条件地提供的:时任ARPA主任的J. C. R. Licklider相信他的组织应该“资助人,而不是项目”,并且允许研究者去做任何感兴趣的方向。这导致了MIT无约无束的研究氛围及其hacker文化的形成,但是好景不长。

    第一次AI低谷:1974 – 1980

    到了70年代,AI开始遭遇批评,随之而来的还有资金上的困难。AI研究者们对其课题的难度未能作出正确判断:此前的过于乐观使人们期望过高,当承诺无法兑现时,对AI的资助就缩减或取消了。同时,由于Marvin Minsky对感知器的激烈批评,联结主义(即神经网络)销声匿迹了十年。70年代后期,尽管遭遇了公众的误解,AI在逻辑编程,常识推理等一些领域还是有所进展。

    问题

    70年代初,AI遭遇了瓶颈。即使是最杰出的AI程序也只能解决它们尝试解决的问题中最简单的一部分,也就是说所有的AI程序都只是“玩具”。AI研究者们遭遇了无法克服的基础性障碍。尽管某些局限后来被成功突破,但许多至今仍无法满意地解决。

    计算机的运算能力

    当时的计算机有限的内存和处理速度不足以解决任何实际的AI问题。例如,Ross Quillian在自然语言方面的研究结果只能用一个含二十个单词的词汇表进行演示,因为内存只能容纳这么多。1976年Hans Moravec指出,计算机离智能的要求还差上百万倍。他做了个类比:人工智能需要强大的计算能力,就像飞机需要大功率动力一样,低于一个门限时是无法实现的;但是随着能力的提升,问题逐渐会变得简单。

    计算复杂性和指数爆炸

    1972年Richard Karp根据Stephen Cook于1971年提出的Cook-Levin理论证明,许多问题只可能在指数时间内获解(即,计算时间与输入规模的幂成正比)。除了那些最简单的情况,这些问题的解决需要近乎无限长的时间。这就意味着AI中的许多玩具程序恐怕永远也不会发展为实用的系统。

    常识与推理。许多重要的AI应用,例如机器视觉和自然语言,都需要大量对世界的认识信息。程序应该知道它在看什么,或者在说些什么。这要求程序对这个世界具有儿童水平的认识。研究者们很快发现这个要求太高了:1970年没人能够做出如此巨大的数据库,也没人知道一个程序怎样才能学到如此丰富的信息。

    莫拉维克悖论

    证明定理和解决几何问题对计算机而言相对容易,而一些看似简单的任务,如人脸识别或穿过屋子,实现起来却极端困难。这也是70年代中期机器视觉和机器人方面进展缓慢的原因。

    框架和资格问题

    采取逻辑观点的AI研究者们(例如John McCarthy)发现,如果不对逻辑的结构进行调整,他们就无法对常见的涉及自动规划(planning or default reasoning)的推理进行表达。为解决这一问题,他们发展了新逻辑学(如非单调逻辑(non-monotonic logics)和模态逻辑(modal logics))。

    停止拨款

    由于缺乏进展,对AI提供资助的机构(如英国政府,DARPA和NRC)对无方向的AI研究逐渐停止了资助。早在1966年ALPAC(Automatic Language Processing Advisory Committee,自动语言处理顾问委员会)的报告中就有批评机器翻译进展的意味,预示了这一局面的来临。NRC(National Research Council,美国国家科学委员会)在拨款二千万美元后停止资助。1973年Lighthill针对英国AI研究状况的报告批评了AI在实现其“宏伟目标”上的完全失败,并导致了英国AI研究的低潮(该报告特别提到了指数爆炸问题,以此作为AI失败的一个原因)。DARPA则对CMU的语音理解研究项目深感失望,从而取消了每年三百万美元的资助。到了1974年已经很难再找到对AI项目的资助。

    Hans Moravec将批评归咎于他的同行们不切实际的预言:“许多研究者落进了一张日益浮夸的网中”。还有一点,自从1969年Mansfield修正案通过后,DARPA被迫只资助“具有明确任务方向的研究,而不是无方向的基础研究”。60年代那种对自由探索的资助一去不复返;此后资金只提供给目标明确的特定项目,比如自动坦克,或者战役管理系统。

    来自大学的批评

    一些哲学家强烈反对AI研究者的主张。其中最早的一个是John Lucas,他认为哥德尔不完备定理已经证明形式系统(例如计算机程序)不可能判断某些陈述的真理性,但是人类可以。Hubert Dreyfus讽刺六十年代AI界那些未实现的预言,并且批评AI的基础假设,认为人类推理实际上仅涉及少量“符号处理”,而大多是具体的,直觉的,下意识的“窍门(know how)”。 John Searle于1980年提出“中文房间”实验,试图证明程序并不“理解”它所使用的符号,即所谓的“意向性(intentionality)”问题。Searle认为,如果符号对于机器而言没有意义,那么就不能认为机器是在“思考”。

    AI研究者们并不太把这些批评当回事,因为它们似乎有些离题,而计算复杂性和“让程序具有常识”等问题则显得更加紧迫和严重。对于实际的计算机程序而言,“常识”和“意向性”的区别并不明显。Minsky提到Dreyfus和Searle时说,“他们误解了,所以应该忽略”。在MIT任教的Dreyfus遭到了AI阵营的冷遇:他后来说,AI研究者们“生怕被人看到在和我一起吃中饭”。 ELIZA程序的作者Joseph Weizenbaum感到他的同事们对待Dreyfus的态度不太专业,而且有些孩子气。虽然他直言不讳地反对Dreyfus的论点,但他“清楚地表明了他们待人的方式不对”。

    Weizenbaum后来开始思考AI相关的伦理问题,起因是Kenneth Colby开发了一个模仿医师的聊天机器人DOCTOR,并用它当作真正的医疗工具。二人发生争执;虽然Colby认为Weizenbaum对他的程序没有贡献,但这于事无补。1976年Weizenbaum出版著作《计算机的力量与人类的推理》,书中表示人工智能的滥用可能损害人类生命的价值。

    展开全文
  • 函数编程

    千次阅读 2017-09-20 14:13:40
    "函数编程", 又称泛函编程, 是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。它的基础是 λ 演算(lambda calculus)。λ演算可以接受函数当作输入(参数)和输出(返回值)。
  • WPF教程(进制资源

    千次阅读 2018-08-06 20:36:51
    进制资源其实是一些传统的资源,比如位图,音频文件,视频文件,松散文件(LooseFile)等等。对于这些资源我们可以将其存储为松散文件,或者编译进程序集中。 如何向程序集添加进制文件,先讲讲添加字符串...
  • Revit二次开发从入门到精通学习之路 Autodesk Joe Ye叶雄进 Mar. 20 2013 MSN:yexiongjin@hotmail.comRevit在国内的应用越来越广泛, Revit 2013在速度和功能上有显著的提高,所以现在对Revit应用关注更多。...
  • 如何动态添加菜单/菜单菜单、右键菜单  有关菜单的操作主要用到CMenu类,当然也可用相应API函数,CMenu类只是MFC对API中操作菜单的函数的封装而已。 不过能用类就尽量用类,类的组织方式好呗,代码看着也...
  • 文件上传漏洞之绕狗一句话原理和绕过安全狗() [网络安全自学篇] 三十四.Windows系统漏洞之5Shift漏洞启动计算机 [网络安全自学篇] 三十五.恶意代码攻击溯源及恶意样本分析 [网络安全自学篇] 三十.WinRAR漏洞...
  • ①固定生成器 G,优化判别器 D, 则上可以写成如下形式:    可以转化为最小化形式:  我们编写的代码中,d_loss_real = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logi
  • 前言:这篇是一篇番外篇,没有太多代码与逻辑,完全是一种”软“技巧,但是它对于你如何成为一名合构的架构设计人员很重要...其中有一能力就叫做”文档写作能力“。一、Soft Skill与Hard Skill作为一名架构师除了是一
  • 章:基于给定的文档生成倒排索引的编码与实践作者:July、yansha。出处:结构之法算法之道引言 本周实现倒排索引。实现过程中,寻找资料,结果发现找份资料诸多不易:1、网上搜倒排索引实现,结果千篇一律...
  • python级真题--共十二套--后套--选择题

    万次阅读 多人点赞 2020-02-27 15:50:26
    Python 不需要显式声明变量类型,在第一变量赋值时由值决定变量的类型 B 变量通过变量名访问 C 变量必须在创建和赋值后使用 D 变量 PI 与变量 Pi 被看作相同的变量 正确答案: D 以下 Python 语句...
  • MFC傻瓜教程

    万次阅读 多人点赞 2017-04-20 22:57:26
    种方式 第七种方式 总结 对话框伸缩功能的实现 输入焦点的传递 法一 法 法三 法四 文件和注册表操作 C语言对文件操作的支持 文件的打开和写入 文件的关闭 文件指针定位 文件的读取 进制文件和文本文件 文本...
  • Git Pro深入浅出(

    万次阅读 多人点赞 2016-07-03 18:53:58
    、Git工具1. 选择修订版本Git允许通过几种方法来指明特定的或者一定范围内的提交。git show git show <简短的SHA-1>SHA-1 的前几个字符就可以获得对应的那提交,当然你提供的 SHA-1 字符数量不得少于4个,并且...
  • 、最长递增序列 和上一问题一样,这是数组序列中的问题,比如 arr={1,5,8,2,3,4} 的最长递增序列是 1,2,3,4 1 、动态规划法  结合上一题的思路,在数组的这类问题里面使用动态规划还是很常见的,...
  • 级C语言考试知识点(很全)

    万次阅读 多人点赞 2018-11-30 01:38:14
    级公共基础知识作为必考内容出现,出题形式为选择题前10道,占考试总分的10%。 考试其它比重: 1、C语言程序的结构 占总分1% 2、数据类型及其运算 占总分4% 3、选择结构程序设计 占比分的3% 4、循环结构 占比分的5...
  • 数字竞赛抢答器(8人抢答)

    千次阅读 多人点赞 2020-07-11 09:47:16
    文章目录数字竞赛抢答器一、设计任务与要求、方案设计与论证三、单元电路设计与参数计算3.3.1抢答电路设计:3.3.2 定时电路设计3.3.4 时序控制电路四、总原理图及元器件清单4.1.总原理图4.2.元件清单五、安装...
  • liferay二次开发指南

    万次阅读 2008-03-03 17:52:00
    二次开发 ... 36 第三章 开发自己的Portlet . 36 第一节   重要的基类: GenericPortlet 36 第节  Portlet 标签 ... 37 3.2.1 defineObjects 标签 ... 37 3.2.2 renderURL 标签 ... 37 ...
  • Windows系统及应用技巧

    万次阅读 2006-08-25 11:55:00
    目录: 一:详细的xp修复控制台命令和用法 :常见文件扩展名和它们的说明 三:GHOST怎么用? 四:如何防范恶意网站 五:win2000/xp忘记密码的方法 :Windows XP 自带小工具 七:windows中有关网络的几...
  • 论电子病历文本编辑器

    万次阅读 2015-06-28 11:32:34
    笔者觉得这对于正规的HIT企业来说没多大作用,因为改造这些代码并进行二次开发的过程差不多等于走回自主研发EMRE的老路。 另外购买编辑器代码并没有多少实际意义。HIT企业购买代码无非担心EMRE企业倒闭转行,使得...
  • GIS二次开发(C#+AE)

    万次阅读 多人点赞 2015-01-06 13:49:35
    GIS二次开发(C#+AE)    此过程说明适合那些使用.NET建立和部署应用的开发者,它描述了使用ArcGIS控件建立和部署应用的方法和步骤。  你可以在下面的目录下找到相应的样例程序:  安装...
  • 深度学习入门笔记():神经网络基础

    万次阅读 多人点赞 2019-09-14 20:57:49
    所以分类问题中,最终的目标就是习得一个分类器,以图片特征向量作输入,预测输出结果 y y y 是1还是0,即预测图片中是否有猫。 符号定义 : x x x :表示一个 n x n_x n x ​ 维数据,为输入数据,维度...
  • 电子现金圈存(转)

    万次阅读 2013-06-08 16:16:23
    PBOC/EMV规范要求圈存交易也是必须有联机认证的, 并不是开机初始化时候进行一,而是每一笔交易都要有这样一个规范流程. 这样一来, 圈存时SAM卡就可以不要了, 取之而来的是更安全的操作. 你可能会说,这样圈存...
  • 电子工程师硬件面试试题100 题

    千次阅读 2020-07-09 16:10:00
    滤波:滤波是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一重要措施。 33、什么是竞争与冒险? 逻辑电路中,由于门的输入信号经过不同的延时,到达门的时间不一致,这种情况叫竞争。由于竞争而导致输出...
  • 电子工程师最全面试题大全

    千次阅读 多人点赞 2018-09-10 17:03:19
    解决方法:一是添加布尔的消去是在芯片外部加电容。 名词:SRAM、SSRAM、SDRAM SRAM:静态RAM DRAM:动态RAM SSRAM:Synchronous Static Random Access Memory同步静态随机访问存储器。它的一种类型的...
  • 剑指Offer66题之每日6题 - 第

    千次阅读 2017-12-29 20:44:25
    原题链接: 第一题:斐波那契数列;... 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n。 n&lt;=39。 解析: 斐波拉契数列的定义: F0=0,F1=1F0...
  • .总结 在大数据分析领域中,传统的大数据分析需要不同框架和技术组合才能达到最终的效果,在人力成本,技术能力和硬件成本上以及维护成本让大数据分析变得成为昂贵的事情。让很多中小型企业非常苦恼,不得不...
  • 可穿戴计算机(Wearable computer)

    千次阅读 2014-01-28 02:24:31
    最近在研究基于可穿戴设备的异常声音检测,此文章翻译自维基百科Wearable computer条目。  可穿戴计算机,也叫body-borne计算机或wearables,是指可佩戴在人身上或衣服上的微信电子设备[1]。这类可穿戴技术是为...
  • 思维导图☆三招十八

    万次阅读 2009-08-11 01:52:00
    思维导图三招十八http://www.795.com.cn/wz/55075.html思维导图三招十八之一:思维导图进行资料整理学习力的革命系列暂时结束,从今天开始转载三招十八系列,这个系列都是讲思维导图的各种应用技巧。...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,078
精华内容 22,031
关键字:

六次二项式的式子