matlab求解方程 。。。。

18529人阅读
算法(22)
一、TSP问题
TSP问题(Travelling Salesman Problem)即旅行商问题,又译为旅行推销员问题、货郎担问题,是数学领域中著名问题之一。假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。
TSP问题是一个组合优化问题。该问题可以被证明具有NPC计算复杂性。TSP问题可以分为两类,一类是对称TSP问题(Symmetric TSP),另一类是非对称问题(Asymmetric TSP)。所有的TSP问题都可以用一个图(Graph)来描述:
V={c1, c2, …, ci, …, cn},i = 1,2, …, n,是所有城市的集合.ci表示第i个城市,n为城市的数目;
E={(r, s): r,s∈ V}是所有城市之间连接的集合;
C = {crs: r,s∈ V}是所有城市之间连接的成本度量(一般为城市之间的距离);
如果crs = csr, 那么该TSP问题为对称的,否则为非对称的。
一个TSP问题可以表达为:
求解遍历图G = (V, E, C),所有的节点一次并且回到起始节点,使得连接这些节点的路径成本最低。
二、遗传算法
遗传算法(Genetic Algorithms )是基于生物进化理论的原理发展起来的一种广为应用的、高效的随机搜索与优化的方法。其主要特点是群体搜索策略和群体中个体之间的信息交换,搜索不依赖于梯度信息。它是在70年代初期由美国密西根( Michigan )大学的霍兰( Holland )教授发展起来的。1975年霍兰教授发表了第一本比较系统论述遗传算法的专著《自然系统与人工系统中的适应性》(《 Adaptationin Natural and Artificial Systems 》)。遗传算法最初被研究的出发点不是为专门解决最优化问题而设计的,它与进化策略、进化规划共同构成了进化算法的主要框架,都是为当时人工智能的发展服务的。迄今为止,遗传算法是进化算法中最广为人知的算法。
&遗传火算法的实施步骤如下(以目标函数求最小为例)。
&&&&第一步:初始化 t←0进化代数计数器;T是最大进化代数;随机生成M个个体作为初始群体P(t);
&&&&第二步:个体评价 计算P(t)中各个个体的适应度;
&&&&第三步:选择运算 将选择算子作用于群体;
&&&&第四步:交叉运算 将交叉算子作用于群体;
&&&&第五步:变异运算 将变异算子作用于群体,并通过以上运算得到下一代群体P(t + 1);
&&&&第六步:终止条件判断& t≦T:t← t+1 转到步骤2;t&T:终止 输出解。
遗传算法应用步骤:
&&&&1)确定决策变量及各种约束条件,即个体的表现型X和问题的解空间;
&&&&2)建立优化模型 (目标函数最大OR 最小) 数学描述形式 量化方法;
&&&&3)染色体编码方法;
&&&&4)解码方法;
&&&&5)个体适应度的量化评价方法 F(x)
&&&&6)设计遗传算子;
&&&&7)确定有关运行参数。
三、遗传算法求解TSP问题
其实之前不大想写这个遗传算法求TSP,因为我之前已经有遗传算法求01背包了,但有些读者建议,加上确实tsp与01背包差别还是很大的,就再写一个。对于TSP之类的问题NP问题,使用启发式搜索算法是一个明智的选择,因为精确算发已经力不从心了。
使用遗传算法第一件事情就是确定染色编码方式,它根据不同的问题模型使用不同编码方式,有二进制编码也有整数编码和浮点数编码,面对TSP问题,我肯定选用整数编码,因为很简单,对于每个城市用一个整数来编号,例如有48个城市,就用0到47来标识每一个城市,然后一个路径就是一条染色体编码,染色体长度为48,如:0,1,2,3,4...47就是一个染色体,它表达的意思就是旅行者从0号城市出发,依次访问1,2,...47号城市再回到0号城市;遗传算法的第二个要点就是评价函数,TSP的评价函数很简单,就是染色体编码表达的路径总长度;最后很简单,其实在这个模型中就是将0到47这48个数进行全排列,从中找出最短的一条路径(想想48个数全排列,然后比较。。。)。清楚了解了这些,咱们就可以按照上面的遗传算法框架来进行编程了。
我们使用TSP问题依然来自于上的数据att48,这是一个对称TSP问题,城市规模为48,其最优值为10628.其距离计算方法下图所示:
具体代码如下:
import java.io.BufferedR
import java.io.FileInputS
import java.io.IOE
import java.io.InputStreamR
import java.util.R
public class GA {
// 种群规模
private int cityN // 城市数量,染色体长度
private int MAX_GEN; // 运行代数
private int[][] // 距离矩阵
private int bestT;// 最佳出现代数
private int bestL // 最佳长度
private int[] bestT // 最佳路径
// 初始种群,父代种群,行数表示种群规模,一行代表一个个体,即染色体,列表示染色体基因片段
private int[][] oldP
private int[][] newP// 新的种群,子代种群
private int[]// 种群适应度,表示种群中各个个体的适应度
private float[] Pi;// 种群中各个个体的累计概率
private float Pc;// 交叉概率
private float Pm;// 变异概率
// 当前代数
public GA() {
* constructor of GA
* @param s
* @param n
* @param g
* @param c
* @param m
public GA(int s, int n, int g, float c, float m) {
// 给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默
@SuppressWarnings(&resource&)
* 初始化GA算法类
* @param filename 数据文件名,该文件存储所有城市节点坐标数据
* @throws IOException
private void init(String filename) throws IOException {
// 读取数据
BufferedReader data = new BufferedReader(new InputStreamReader(
new FileInputStream(filename)));
distance = new int[cityNum][cityNum];
x = new int[cityNum];
y = new int[cityNum];
for (int i = 0; i & cityN i++) {
// 读取一行数据,数据格式1
strbuff = data.readLine();
// 字符分割
String[] strcol = strbuff.split(& &);
x[i] = Integer.valueOf(strcol[1]);// x坐标
y[i] = Integer.valueOf(strcol[2]);// y坐标
// 计算距离矩阵
// ,针对具体问题,距离计算方法也不一样,此处用的是att48作为案例,它有48个城市,距离计算方法为伪欧氏距离,最优值为10628
for (int i = 0; i & cityNum - 1; i++) {
distance[i][i] = 0; // 对角线为0
for (int j = i + 1; j & cityN j++) {
double rij = Math
.sqrt(((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j])
* (y[i] - y[j])) / 10.0);
// 四舍五入,取整
int tij = (int) Math.round(rij);
if (tij & rij) {
distance[i][j] = tij + 1;
distance[j][i] = distance[i][j];
distance[i][j] =
distance[j][i] = distance[i][j];
distance[cityNum - 1][cityNum - 1] = 0;
bestLength = Integer.MAX_VALUE;
bestTour = new int[cityNum + 1];
bestT = 0;
newPopulation = new int[scale][cityNum];
oldPopulation = new int[scale][cityNum];
fitness = new int[scale];
Pi = new float[scale];
random = new Random(System.currentTimeMillis());
* for(int i=0;i&cityNi++) { for(int j=0;j&cityNj++) {
* System.out.print(distance[i][j]+&,&); } System.out.println(); }
// 初始化种群
// 初始化种群
void initGroup() {
// Random random = new Random(System.currentTimeMillis());
for (k = 0; k & k++)// 种群数
oldPopulation[k][0] = random.nextInt(65535) % cityN
for (i = 1; i & cityN)// 染色体长度
oldPopulation[k][i] = random.nextInt(65535) % cityN
for (j = 0; j & j++) {
if (oldPopulation[k][i] == oldPopulation[k][j]) {
if (j == i) {
i++;
* for(i=0;i&i++) { for(j=0;j&cityNj++) {
* System.out.print(oldPopulation[i][j]+&,&); } System.out.println(); }
public int evaluate(int[] chromosome) {
int len = 0;
// 染色体,起始城市,城市1,城市2...城市n
for (int i = 1; i & cityN i++) {
len += distance[chromosome[i - 1]][chromosome[i]];
// 城市n,起始城市
len += distance[chromosome[cityNum - 1]][chromosome[0]];
// 计算种群中各个个体的累积概率,前提是已经计算出各个个体的适应度fitness[max],作为赌轮选择策略一部分,Pi[max]
void countRate() {
double sumFitness = 0;// 适应度总和
double[] tempf = new double[scale];
for (k = 0; k & k++) {
tempf[k] = 10.0 / fitness[k];
sumFitness += tempf[k];
Pi[0] = (float) (tempf[0] / sumFitness);
for (k = 1; k & k++) {
Pi[k] = (float) (tempf[k] / sumFitness + Pi[k - 1]);
* for(k=0;k&k++) { System.out.println(fitness[k]+& &+Pi[k]); }
// 挑选某代种群中适应度最高的个体,直接复制到子代中
// 前提是已经计算出各个个体的适应度Fitness[max]
public void selectBestGh() {
maxid = 0;
maxevaluation = fitness[0];
for (k = 1; k & k++) {
if (maxevaluation & fitness[k]) {
maxevaluation = fitness[k];
if (bestLength & maxevaluation) {
bestLength =
bestT =// 最好的染色体出现的代数;
for (i = 0; i & cityN i++) {
bestTour[i] = oldPopulation[maxid][i];
// System.out.println(&代数 & + t + & & + maxevaluation);
// 复制染色体,k表示新染色体在种群中的位置,kk表示旧的染色体在种群中的位置
copyGh(0, maxid);// 将当代种群中适应度最高的染色体k复制到新种群中,排在第一位0
// 复制染色体,k表示新染色体在种群中的位置,kk表示旧的染色体在种群中的位置
public void copyGh(int k, int kk) {
for (i = 0; i & cityN i++) {
newPopulation[k][i] = oldPopulation[kk][i];
// 赌轮选择策略挑选
public void select() {
int k, i, selectId;
float ran1;
// Random random = new Random(System.currentTimeMillis());
for (k = 1; k & k++) {
ran1 = (float) (random.nextInt(65535) % 1000 / 1000.0);
// System.out.println(&概率&+ran1);
// 产生方式
for (i = 0; i & i++) {
if (ran1 &= Pi[i]) {
selectId =
// System.out.println(&选中& + selectId);
copyGh(k, selectId);
//进化函数,正常交叉变异
public void evolution() {
// 挑选某代种群中适应度最高的个体
selectBestGh();
// 赌轮选择策略挑选scale-1个下一代个体
// Random random = new Random(System.currentTimeMillis());
// 交叉方法
for (k = 0; k & k = k + 2) {
r = random.nextFloat();// /产生概率
// System.out.println(&交叉率...& + r);
if (r & Pc) {
// System.out.println(k + &与& + k + 1 + &进行交叉...&);
//OXCross(k, k + 1);// 进行交叉
OXCross1(k, k + 1);
r = random.nextFloat();// /产生概率
// System.out.println(&变异率1...& + r);
if (r & Pm) {
// System.out.println(k + &变异...&);
OnCVariation(k);
r = random.nextFloat();// /产生概率
// System.out.println(&变异率2...& + r);
if (r & Pm) {
// System.out.println(k + 1 + &变异...&);
OnCVariation(k + 1);
//进化函数,保留最好染色体不进行交叉变异
public void evolution1() {
// 挑选某代种群中适应度最高的个体
selectBestGh();
// 赌轮选择策略挑选scale-1个下一代个体
// Random random = new Random(System.currentTimeMillis());
for (k = 1; k + 1 & scale / 2; k = k + 2) {
r = random.nextFloat();// /产生概率
if (r & Pc) {
OXCross1(k, k + 1);// 进行交叉
//OXCross(k,k+1);//进行交叉
r = random.nextFloat();// /产生概率
if (r & Pm) {
OnCVariation(k);
r = random.nextFloat();// /产生概率
if (r & Pm) {
OnCVariation(k + 1);
if (k == scale / 2 - 1)// 剩最后一个染色体没有交叉L-1
r = random.nextFloat();// /产生概率
if (r & Pm) {
OnCVariation(k);
// 类OX交叉算子
void OXCross(int k1, int k2) {
int i, j, k,
int ran1, ran2,
int[] Gh1 = new int[cityNum];
int[] Gh2 = new int[cityNum];
// Random random = new Random(System.currentTimeMillis());
ran1 = random.nextInt(65535) % cityN
ran2 = random.nextInt(65535) % cityN
// System.out.println();
// System.out.println(&-----------------------&);
// System.out.println(&----&+ran1+&----&+ran2);
while (ran1 == ran2) {
ran2 = random.nextInt(65535) % cityN
if (ran1 & ran2)// 确保ran1&ran2
temp = ran1;
ran1 = ran2;
// System.out.println();
// System.out.println(&-----------------------&);
// System.out.println(&----&+ran1+&----&+ran2);
// System.out.println(&-----------------------&);
// System.out.println();
flag = ran2 - ran1 + 1;// 删除重复基因前染色体长度
for (i = 0, j = ran1; i & i++, j++) {
Gh1[i] = newPopulation[k2][j];
Gh2[i] = newPopulation[k1][j];
// 已近赋值i=ran2-ran1个基因
for (k = 0, j = j & cityN)// 染色体长度
Gh1[j] = newPopulation[k1][k++];
for (i = 0; i & i++) {
if (Gh1[i] == Gh1[j]) {
if (i == flag) {
j++;
for (k = 0, j = j & cityN)// 染色体长度
Gh2[j] = newPopulation[k2][k++];
for (i = 0; i & i++) {
if (Gh2[i] == Gh2[j]) {
if (i == flag) {
j++;
for (i = 0; i & cityN i++) {
newPopulation[k1][i] = Gh1[i];// 交叉完毕放回种群
newPopulation[k2][i] = Gh2[i];// 交叉完毕放回种群
// System.out.println(&进行交叉--------------------------&);
// System.out.println(k1+&交叉后...&);
// for (i = 0; i & cityN i++) {
// System.out.print(newPopulation[k1][i] + &-&);
// System.out.println();
// System.out.println(k2+&交叉后...&);
// for (i = 0; i & cityN i++) {
// System.out.print(newPopulation[k2][i] + &-&);
// System.out.println();
// System.out.println(&交叉完毕--------------------------&);
// 交叉算子,相同染色体交叉产生不同子代染色体
public void OXCross1(int k1, int k2) {
int i, j, k,
int ran1, ran2,
int[] Gh1 = new int[cityNum];
int[] Gh2 = new int[cityNum];
// Random random = new Random(System.currentTimeMillis());
ran1 = random.nextInt(65535) % cityN
ran2 = random.nextInt(65535) % cityN
while (ran1 == ran2) {
ran2 = random.nextInt(65535) % cityN
if (ran1 & ran2)// 确保ran1&ran2
temp = ran1;
ran1 = ran2;
// 将染色体1中的第三部分移到染色体2的首部
for (i = 0, j = ran2; j & cityN i++, j++) {
Gh2[i] = newPopulation[k1][j];
flag =// 染色体2原基因开始位置
for (k = 0, j = j & cityN)// 染色体长度
Gh2[j] = newPopulation[k2][k++];
for (i = 0; i & i++) {
if (Gh2[i] == Gh2[j]) {
if (i == flag) {
j++;
flag = ran1;
for (k = 0, j = 0; k & cityN)// 染色体长度
Gh1[j] = newPopulation[k1][k++];
for (i = 0; i & i++) {
if (newPopulation[k2][i] == Gh1[j]) {
if (i == flag) {
j++;
flag = cityNum - ran1;
for (i = 0, j = j & cityN j++, i++) {
Gh1[j] = newPopulation[k2][i];
for (i = 0; i & cityN i++) {
newPopulation[k1][i] = Gh1[i];// 交叉完毕放回种群
newPopulation[k2][i] = Gh2[i];// 交叉完毕放回种群
// 多次对换变异算子
public void OnCVariation(int k) {
int ran1, ran2,
// 对换次数
// Random random = new Random(System.currentTimeMillis());
count = random.nextInt(65535) % cityN
for (int i = 0; i & i++) {
ran1 = random.nextInt(65535) % cityN
ran2 = random.nextInt(65535) % cityN
while (ran1 == ran2) {
ran2 = random.nextInt(65535) % cityN
temp = newPopulation[k][ran1];
newPopulation[k][ran1] = newPopulation[k][ran2];
newPopulation[k][ran2] =
* for(i=0;i&L;i++) { printf(&%d &,newGroup[k][i]); } printf(&\n&);
public void solve() {
// 初始化种群
initGroup();
// 计算初始化种群适应度,Fitness[max]
for (k = 0; k & k++) {
fitness[k] = evaluate(oldPopulation[k]);
// System.out.println(fitness[k]);
// 计算初始化种群中各个个体的累积概率,Pi[max]
countRate();
System.out.println(&初始种群...&);
for (k = 0; k & k++) {
for (i = 0; i & cityN i++) {
System.out.print(oldPopulation[k][i] + &,&);
System.out.println();
System.out.println(&----& + fitness[k] + & & + Pi[k]);
for (t = 0; t & MAX_GEN; t++) {
//evolution1();
evolution();
// 将新种群newGroup复制到旧种群oldGroup中,准备下一代进化
for (k = 0; k & k++) {
for (i = 0; i & cityN i++) {
oldPopulation[k][i] = newPopulation[k][i];
// 计算种群适应度
for (k = 0; k & k++) {
fitness[k] = evaluate(oldPopulation[k]);
// 计算种群中各个个体的累积概率
countRate();
System.out.println(&最后种群...&);
for (k = 0; k & k++) {
for (i = 0; i & cityN i++) {
System.out.print(oldPopulation[k][i] + &,&);
System.out.println();
System.out.println(&---& + fitness[k] + & & + Pi[k]);
System.out.println(&最佳长度出现代数:&);
System.out.println(bestT);
System.out.println(&最佳长度&);
System.out.println(bestLength);
System.out.println(&最佳路径:&);
for (i = 0; i & cityN i++) {
System.out.print(bestTour[i] + &,&);
* @param args
* @throws IOException
public static void main(String[] args) throws IOException {
System.out.println(&Start....&);
GA ga = new GA(30, 48, f, 0.9f);
ga.init(&c://data.txt&);
ga.solve();
运行结果截图:
看到上面两个结果差别还是相当大的,其实我代码里提供了两个进化函数,两种交叉算子,需要提醒的是上面比较好的结果其实是使用了evolution1()这个进化函数,较差的是使用了evolution()这个函数,他们的最大区别就是前者保留最好染色体不进行交叉变异,后者则是按照基本遗传算法框架的完全交叉变异操作的,其区别之大各位可以深入琢磨,两种交叉算子的区别是一个就是简单的类OX交叉算子,另外一个交叉算子改进了一下,相同染色体交叉产生不同子代染色体,实际上它两对结果影响并不是很大,以上是我的一点点简单的总结,还是那句话,或许你觉得遗传算法效率其实也不怎样,实际上基本的遗传算法是有很多不足的,如容易选入局部收敛,全局搜索能力不够强,但是基本的遗传算法是有很多可以改进的地方,如交叉算子的设计、变异算子的设计、选择策略等等,有关遗传算法个人觉得作为一种智能启发式搜索算法它甚至比别的普通算法(如动态规划)理解起来还容易,而且它特别容易与别的算法相结合,设计新的混合算法,另外在基本遗传算法的基础上还衍生出了很多别的算法,如免疫遗传算法,这些都是一些比较高级的算法。
注:本文部分内容来源于网络,但程序以及分析结果属于本人成果,转载请注明!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1112042次
积分:10896
积分:10896
排名:第1098名
原创:126篇
评论:581条
NAME:FCPlayer
CITY:Beijing
Degree:Master
Skills:Java、IOS、.NET
文章:11篇
阅读:98074
(1)(1)(1)(1)(1)(2)(2)(1)(1)(1)(2)(1)(1)(1)(1)(1)(3)(5)(6)(1)(5)(5)(5)(4)(2)(8)(5)(5)(8)(14)(16)(5)(5)(5)(3)(2)(1)(2)(3)查看: 1381|回复: 13
TA的每日心情衰 19:50签到天数: 34 天[LV.5]常住居民I主题帖子积分
手艺人, 积分 554, 距离下一级还需 446 积分
手艺人, 积分 554, 距离下一级还需 446 积分
求解中二部落里面焦糖色玻璃和蜂蜜灯怎么做
TA的每日心情无聊 00:49签到天数: 8 天[LV.3]偶尔看看II主题帖子积分
矿工, 积分 142, 距离下一级还需 58 积分
矿工, 积分 142, 距离下一级还需 58 积分
回帖奖励 +6
这都要找管理啊
TA的每日心情怒 18:08签到天数: 17 天[LV.4]偶尔看看III主题帖子积分
矿工, 积分 125, 距离下一级还需 75 积分
矿工, 积分 125, 距离下一级还需 75 积分
回帖奖励 +6
蜂蜜灯我记得可以在姜饼村庄挖~\(≧▽≦)/~啦啦啦
TA的每日心情开心 18:09签到天数: 39 天[LV.5]常住居民I主题帖子积分
手艺人, 积分 647, 距离下一级还需 353 积分
手艺人, 积分 647, 距离下一级还需 353 积分
回帖奖励 +6
...................
TA的每日心情怒 23:05签到天数: 2 天[LV.1]初来乍到主题帖子积分
采石工, 积分 42, 距离下一级还需 8 积分
采石工, 积分 42, 距离下一级还需 8 积分
回帖奖励 +6
不懂 我不怎么玩中2的
TA的每日心情怒 16:47签到天数: 38 天[LV.5]常住居民I主题帖子积分
农夫, 积分 412, 距离下一级还需 88 积分
农夫, 积分 412, 距离下一级还需 88 积分
回帖奖励 +6
焦糖说是要打糖果狗。蜂蜜灯在姜饼村庄
TA的每日心情慵懒 00:00签到天数: 131 天[LV.7]常住居民III主题帖子积分
获得水王真传的男人
牧场主, 积分 4759, 距离下一级还需 3241 积分
牧场主, 积分 4759, 距离下一级还需 3241 积分
焦糖说是要打糖果狗。蜂蜜灯在姜饼村庄
他问的是焦糖玻璃啊亲。。。&&蜜蜂灯貌似有那个矿物&&挖出来是碎片& &焦糖玻璃还得拿焦糖烧一遍
TA的每日心情慵懒 15:17签到天数: 24 天[LV.4]偶尔看看III主题帖子积分
农夫, 积分 316, 距离下一级还需 184 积分
农夫, 积分 316, 距离下一级还需 184 积分
回帖奖励 +6
水& && && && && && &
TA的每日心情开心 08:29签到天数: 30 天[LV.5]常住居民I主题帖子积分
手艺人, 积分 590, 距离下一级还需 410 积分
手艺人, 积分 590, 距离下一级还需 410 积分
玩了这么久中二,但我也不知道
TA的每日心情难过 13:04签到天数: 7 天[LV.3]偶尔看看II主题帖子积分
挖沙工, 积分 77, 距离下一级还需 23 积分
挖沙工, 积分 77, 距离下一级还需 23 积分
焦糖玻璃是烧糖块两次获得
蜂蜜灯是烧蜂蜜块一次获得
注:都是用糖工厂烧
Powered by求解呢呢。呢呢
求解呢呢。呢呢
求解呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢呢。
共1条医生回复
因不能面诊,医生的建议仅供参考
职称:医师
专长:内科
&&已帮助用户:83460
问题分析:你好,根据你发的这个图片来看的话这个HPV病毒检测结果是阴性的,是正常 的一个检查结果,代表体内是没有HPV病毒感染的意见建议:建议现在只要保持一个良好的心态即可,平常要配合医生定期复查一下,避免劳累和熬夜,多吃蛋类,豆类和蔬菜水果即可
问为什么总吐痰呢呢呢呢?
职称:药士
专长:前列腺炎,肾小球肾炎,手足口病,狂躁症,神经性头痛,高尿酸血症,山楂,六和茶,氯沙坦钾,静心口服液
&&已帮助用户:66845
指导意见:你好,考虑咽喉炎引起的,治疗时应以寻找病因,预防为主.应戒除烟酒,消除外界各种不良因素.用台漱剂漱口 ,局部涂碘 甘油.
问尿急怎么治呢呢呢呢呢
职称:医师
专长:妇产科;阴道炎;宫颈炎
&&已帮助用户:180628
意见建议:这种情况有可能是尿路感染引起的。可以口服药物如左氧氟沙星(尿中浓度高利于治疗),同时注意增加饮水量治疗下 ,饮食上建议注意忌下酒及辛辣刺激性食物,
问牙疼怎么办呢呢呢呢呢?
职称:医师
专长:不孕不育。阴道炎。月经不调
&&已帮助用户:31812
指导意见:牙疼一般与龋齿或其他牙齿疾病有关,建议你到专业牙科检查确诊后对症治疗,如有龋齿,应及时补牙。一般牙疼可口服阿莫西林、甲硝唑、布洛芬和复合维生素B。
问早泄怎么办呢呢呢呢呢
职称:医师
专长:消化疾病,心脑血管
&&已帮助用户:325854
病情分析: 引起早泄的原因可分为心理性早泄、器质性早泄和其他原因引起的早泄。引起早泄的原因不同,所以治疗方法也不同,想要治疗早泄就必须先检查确诊病因,再针对性的治疗。
问肚皮痛怎么办呢呢呢呢呢!
职称:药师
专长:肛肠疾病,心脑血管疾病
&&已帮助用户:80438
意见建议:排除胃肠疾病,末梢神经炎的可能,建议结合外科医生,做下检查
问早泄怎么治疗呢呢呢呢
职称:医师
专长:肠瘘,肛门直肠周围脓肿,直肠损伤,结肠类癌,肛周肿瘤,大肠腺瘤,直肠癌手术,直肠切除术,肛门脓肿,肛管癌
&&已帮助用户:19045
指导意见:您好,早泄要看您有没有基础疾病,比如前列腺炎,如果没有多数是心理因素,可以用辅助药物,如利多卡因乳膏控制敏感性。
关注此问题的人还看了
大家都在搜:
医生在线 - 免费健康咨询
随着亚健康人群的增加,各种莫名的病症都找上了门,严重时
“日出而作,日落而息”,随着社会的进展,这种良性的作息
现代社会发展节奏快,生存压力大,人的心理压力也很大,但很多
免费向百万名医生提问
填写症状 描述信息,如:小孩头不发烧,手脚冰凉,是怎么回事?
无需注册,10分钟内回答
百度联盟推广
百度联盟推广
搜狗联盟推广
评价成功!

我要回帖

更多关于 excel规划求解 的文章

 

随机推荐